/* Fuentes de la marca en woff2 (carpeta fuentes/).
   Según el manual de marca (19 · Activos de marca y 20 · Tono y mensajes): Dingos para títulos, Bricolage Condensed para subtítulos,
   botones y menú, Garet para el cuerpo y Fonetika Mono para datos.
   Fonetika Mono es versión de prueba: mientras llega la licencia se usa Space Mono. */
@font-face{font-family:"Dingos";src:url("../fonts/dingos-black.woff2") format("woff2");font-weight:900;font-display:swap}
@font-face{font-family:"Dingos";src:url("../fonts/dingos-extrabold.woff2") format("woff2");font-weight:800;font-display:swap}
@font-face{font-family:"Bricolage Condensed";src:url("../fonts/bricolage-condensed-extrabold.woff2") format("woff2");font-weight:800;font-display:swap}
@font-face{font-family:"Bricolage Condensed";src:url("../fonts/bricolage-condensed-semibold.woff2") format("woff2");font-weight:600 700;font-display:swap}
@font-face{font-family:"Bricolage Condensed";src:url("../fonts/bricolage-condensed-regular.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Garet";src:url("../fonts/garet-book.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Garet";src:url("../fonts/garet-heavy.woff2") format("woff2");font-weight:800;font-display:swap}

/* TORUMMA · web pública · sistema visual v2.0 (11 oct 2026), según el mockup aprobado por la fundadora.
   Todo sobre crema: fotos con esquinas redondeadas, tarjetas crema montadas encima de la foto,
   titulares verde oscuro muy gruesos, un solo acento amarillo en los botones, naranja solo en logo y mascota.
   Página de un solo tema (la marca es crema), sin modo oscuro. */
:root{
  color-scheme: light;
  --tm-crema:#F3E8CC; --tm-amarillo:#FFC926; --tm-naranja:#F86015;
  --tm-rojo:#D52518; --tm-lima:#9ABC06; --tm-verde:#19532B;
  --tm-tarjeta:#FAF3DE;              /* superficie de tarjeta: tinte de crema, no es color de marca */
  --tm-linea:rgba(25,83,43,.22);     /* bordes finos de tarjeta: verde oscuro al 22% */
  --tm-texto-suave:rgba(25,83,43,.78); /* texto secundario: verde oscuro al 78% (≥ 4,5:1 sobre crema) */
  --tm-titular:"Dingos","Arial Black",sans-serif;
  --tm-subtitular:"Bricolage Condensed","Arial Narrow",Arial,sans-serif;
  --tm-cuerpo:"Garet","Helvetica Neue",Arial,sans-serif;
  --tm-dato:"Space Mono",ui-monospace,"Courier New",monospace; /* → "Fonetika Mono" con licencia */
  --tm-mano:"Caveat","Bradley Hand",cursive;                     /* temporal: van SVG escritos a mano */
  --tm-fs-hero:clamp(3rem,6.4vw,5.6rem);
  --tm-fs-h2:clamp(2.1rem,4.6vw,3.9rem);
  --tm-fs-h3:clamp(1.25rem,1.7vw,1.5rem);
  --tm-fs-cuerpo:1.0625rem;
  --tm-radio:18px; --tm-radio-s:14px; --tm-pildora:999px;
  --tm-max:1240px; --tm-gutter:clamp(16px,3vw,28px);
  /* Alto de la cabecera sticky medido con sus propias medidas (aire + logo), para que el ancla
     nunca se desincronice si mañana cambia el logo o el aire del encabezado. */
  --tm-aire-header:clamp(10px,1.4vw,14px); --tm-alto-logo:clamp(20px,2.2vw,26px);
  --tm-alto-cabecera:calc(var(--tm-aire-header) * 2 + var(--tm-alto-logo));
  --tm-ancla:calc(var(--tm-alto-cabecera) + 10px); /* 10 px de respiro para la línea de tema */
}
*{box-sizing:border-box}
/* El encabezado es sticky: al llegar por ancla (#como-funciona, #recetas…) el titular no puede
   quedar debajo de él, pero la sección tampoco puede caer más abajo de la cuenta o se ve el final
   de la sección anterior (el botón o la tarjeta cortados). Por eso la compensación va SOLO aquí,
   en el contenedor que hace scroll.
   ⚠️ `scroll-padding` (en html) y `scroll-margin` (en la sección) SE SUMAN: si vuelven a estar los
   dos, la sección cae 84 px de más. No volver a poner `scroll-margin-top` en `.tm-seccion[id]`. */
html{scroll-padding-top:var(--tm-ancla)}
.tm{background:var(--tm-crema);color:var(--tm-verde);font-family:var(--tm-cuerpo);font-size:var(--tm-fs-cuerpo);line-height:1.55;-webkit-font-smoothing:antialiased}
.tm img{max-width:100%;display:block}
.tm a{color:inherit;text-underline-offset:3px}
.tm :focus-visible{outline:2px solid var(--tm-verde);outline-offset:2px}
.tm-contenedor{max-width:var(--tm-max);margin-inline:auto;padding-inline:var(--tm-gutter)}
.tm-seccion{padding-block:clamp(40px,5vw,72px)}
.tm h1,.tm h2,.tm h3{font-family:var(--tm-subtitular);font-weight:800;margin:0;text-wrap:balance;letter-spacing:-.01em}
.tm h1,.tm h2{font-family:var(--tm-titular);font-weight:900;letter-spacing:0;line-height:.95}
.tm h1{font-size:var(--tm-fs-hero);line-height:.92}
.tm h2{font-size:var(--tm-fs-h2);line-height:1}
.tm h3{font-size:var(--tm-fs-h3);line-height:1.12;letter-spacing:-.01em}
.tm p{margin:0}
.tm-etiqueta{font-family:var(--tm-dato);font-size:.74rem;letter-spacing:.06em;text-transform:uppercase}
.tm-bajada{font-family:var(--tm-subtitular);font-weight:700;font-size:clamp(1.15rem,1.6vw,1.45rem);line-height:1.15;letter-spacing:-.01em}
.tm-suave{color:var(--tm-texto-suave)}
.tm-cabeza{display:grid;gap:8px;margin-bottom:clamp(20px,3vw,32px)}
/* Línea de tema (27-oct): cada sección arranca con la misma marca —nace en mango, sigue en
   verde suave y se apaga— para que se vea dónde empieza un tema y dónde termina el anterior.
   Se dibuja con ::before para que salga sola en todas las secciones sin tocar su HTML. */
:root{--tm-divisor:rgba(25,83,43,.20)}
.tm-seccion .tm-cabeza::before,
.tm-con-divisor::before{content:"";display:block;height:2px;border-radius:2px;margin-bottom:clamp(14px,1.8vw,22px);background:linear-gradient(90deg,var(--tm-amarillo) 0 clamp(44px,5vw,56px),transparent clamp(44px,5vw,56px)),linear-gradient(90deg,var(--tm-divisor) 0 82%,transparent 100%)}
.tm-boton{display:inline-flex;align-items:center;justify-content:center;gap:.45em;font-family:var(--tm-subtitular);font-weight:800;font-size:1rem;letter-spacing:-.01em;padding:.85em 1.6em;border-radius:var(--tm-pildora);border:0;text-decoration:none;cursor:pointer;transition:transform .15s}
.tm-boton:hover{transform:translateY(-2px)}
.tm .tm-boton--amarillo{background:var(--tm-amarillo);color:var(--tm-verde)}  /* 5,89:1 */
.tm .tm-boton--verde{background:var(--tm-verde);color:var(--tm-crema)}        /* 7,45:1 */
.tm .tm-boton--linea{background:transparent;color:var(--tm-verde);box-shadow:inset 0 0 0 2px var(--tm-verde)}
/* B02-septies (1-nov): los modificadores también valen fuera de `.tm` — el
   body del admin no lleva esa clase y sus botones tm-boton--* salían sin color.
   Mismas declaraciones que arriba; en el sitio público gana la regla con .tm. */
.tm-boton--amarillo{background:var(--tm-amarillo);color:var(--tm-verde)}
.tm-boton--verde{background:var(--tm-verde);color:var(--tm-crema)}
.tm-boton--linea{background:transparent;color:var(--tm-verde);box-shadow:inset 0 0 0 2px var(--tm-verde)}
.tm-boton--naranja{background:transparent;color:var(--tm-naranja);box-shadow:inset 0 0 0 2px var(--tm-naranja)}
/* Guía «?» con globito (botones del detalle de reclamo; la puede usar
   cualquier página que cargue este CSS). En los extremos de .tm-rc-acciones
   el globito se alinea al borde para no cortarse. */
.tm-guia{display:inline-flex;align-items:center;justify-content:center;width:1.15em;height:1.15em;margin-left:.45em;border-radius:50%;background:rgba(127,127,127,.24);color:inherit;font-size:.68em;font-weight:800;cursor:help;position:relative;vertical-align:middle}
.tm-guia::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:var(--tm-verde);color:var(--tm-crema);font-family:var(--tm-cuerpo);font-size:.82rem;font-weight:500;letter-spacing:0;text-transform:none;line-height:1.4;text-align:left;padding:8px 10px;border-radius:8px;width:max-content;max-width:min(240px,calc(100vw - 48px));white-space:normal;opacity:0;pointer-events:none;transition:opacity .15s ease;z-index:90;box-shadow:0 6px 16px rgba(26,18,8,.2)}
.tm-guia:hover::after,.tm-guia:focus-visible::after{opacity:1}
.tm-rc-acciones .tm-guia::after{left:0;transform:none}
.tm-rc-acciones>:last-child .tm-guia::after{left:auto;right:0;transform:none}
@media (prefers-reduced-motion:reduce){.tm-guia::after{transition:none}}
.tm-enlace{font-weight:800;text-decoration:underline;text-decoration-thickness:2px}

/* Encabezado */
.tm-header{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:var(--tm-crema)}
.tm-header .tm-contenedor{display:flex;align-items:center;gap:clamp(14px,2.6vw,44px);padding-block:var(--tm-aire-header)}
.tm-header .tm-logo{flex:none}
.tm-header .tm-logo img{height:var(--tm-alto-logo);width:auto}
/* El menú no se parte ni se apila: si el ancho aprieta, encogen el aire y la letra, nunca la línea.
   Letra del menú subida el 28-oct a pedido de la clienta (de 13,4–15,7 px a 16,0–18,4 px);
   medido en Chrome de 861 a 1920 px: una sola fila y de sobra 150+ px de aire antes de las acciones. */
.tm-nav{display:flex;align-items:center;flex:1 1 auto;min-width:0;flex-wrap:nowrap;gap:clamp(10px,1.5vw,22px);font-family:var(--tm-subtitular);font-weight:700;font-size:clamp(1rem,1.2vw,1.15rem);white-space:nowrap}
.tm-nav a{text-decoration:none;flex:none;white-space:nowrap}
.tm-nav a:hover{text-decoration:underline}
.tm-header-acciones{display:flex;align-items:center;flex:none;gap:clamp(9px,1.2vw,16px);font-family:var(--tm-subtitular);font-weight:700;font-size:clamp(1rem,1.2vw,1.15rem);margin-left:auto;white-space:nowrap}
.tm-header-acciones a:not(.tm-boton){text-decoration:none}
.tm-header .tm-boton{padding:.6em 1.25em;font-size:1.08rem;white-space:nowrap}
@media (max-width:1120px){.tm-header .tm-boton{padding:.55em 1em}}
/* Celular (8-nov-2026): el menú se oculta, pero «Ingresar» SE QUEDA a la vista al
   lado de «Crear cuenta». Antes se ocultaba y quien ya tenía cuenta no encontraba
   cómo entrar desde el teléfono (el único enlace estaba al final del formulario de
   /registro, después de ocho campos). Para que quepa a 360 px se aprieta SOLO la
   cabecera (aire, logo 18 px y botón) y el contador pierde la palabra «Tu »
   (clase .tm-solo-pc); el aria-label de la bolsa sigue diciendo «Tu mercado». */
@media (max-width:860px){.tm-nav{display:none}.tm-header .tm-ingresar{font-size:.9rem}.tm-header .tm-solo-pc{display:none}.tm-header .tm-abre-bolsa{text-transform:capitalize}}
@media (max-width:480px){.tm-header .tm-contenedor{gap:10px;padding-inline:12px}.tm-header .tm-logo img{height:18px}.tm-header .tm-boton{padding:.45em .7em;font-size:.85rem}.tm-header-acciones{gap:8px;font-size:.85rem}.tm-header .tm-ingresar{font-size:.85rem}}

/* Hero */
.tm-hero{position:relative;border-radius:var(--tm-radio);overflow:hidden;min-height:clamp(480px,46vw,580px);display:flex;align-items:center;isolation:isolate}
.tm-hero-fondo{position:absolute;inset:0;z-index:-2;background-size:cover;background-position:center;filter:blur(22px) saturate(1.1);transform:scale(1.15)}
.tm-hero-foto{position:absolute;right:0;top:0;bottom:0;width:62%;z-index:-1;object-fit:cover;object-position:50% 22%;width:62%;height:100%;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 18%);mask-image:linear-gradient(90deg,transparent 0,#000 18%)}
.tm-hero-tarjeta{background:var(--tm-tarjeta);border-radius:var(--tm-radio);padding:clamp(24px,3.4vw,40px);margin:clamp(14px,3vw,28px);max-width:470px;display:grid;gap:14px}
.tm-hero-tarjeta .tm-boton{justify-self:start;margin-top:10px}
.tm-hero-linea{font-family:var(--tm-dato);font-size:.72rem;letter-spacing:.03em;color:var(--tm-texto-suave)}
@media (max-width:720px){
  .tm-hero{display:block;min-height:0}
  .tm-hero-fondo{display:none}
  .tm-hero-foto{position:relative;width:100%;height:360px;-webkit-mask-image:none;mask-image:none;border-radius:var(--tm-radio)}
  .tm-hero-tarjeta{margin:-64px 10px 0;position:relative}
}

/* Mercado */
.tm-productos{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(12px,1.6vw,20px)}
@media (max-width:980px){.tm-productos{grid-template-columns:repeat(2,minmax(0,1fr))}}
.tm-producto{background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);overflow:hidden;display:grid;grid-template-rows:auto 1fr}
.tm-producto img{aspect-ratio:1/1;object-fit:cover;width:100%;height:auto}
.tm-producto-cuerpo{padding:14px 14px 16px;display:flex;flex-direction:column;gap:4px}
.tm-producto h3{font-size:1.15rem}
.tm-producto-venta{display:none}
#tm-capas{background:none;padding:0;min-height:0;display:contents}
.tm-producto-pie{display:flex;flex-direction:column;align-items:stretch;gap:10px;margin-top:auto;padding-top:10px}.tm-producto-pie .tm-precio{min-width:0}.tm-producto-pie .tm-ctrl{display:block}.tm-producto-pie .tm-anadir{width:100%}.tm-producto-pie .tm-paso-cant{justify-content:space-between}.tm-producto-pie .tm-paso-cant output{flex:1}
.tm-precio{font-family:var(--tm-subtitular);font-weight:800;font-size:1.15rem;line-height:1.05;font-variant-numeric:tabular-nums}
.tm-precio.tm-precio-sin{font-weight:400;font-size:.95rem;line-height:1.35;letter-spacing:0;font-variant-numeric:normal}
.tm-ficha .tm-precio.tm-precio-sin{font-size:1rem}
.tm-precio small{display:block;font-family:var(--tm-dato);font-weight:400;font-size:.66rem;margin-top:3px;color:var(--tm-texto-suave)}
/* 5-nov · esqueleto del precio mientras Firebase confirma la sesión: una raya
   suave en vez de la puerta «Crea tu cuenta» (el parpadeo que vio la clienta).
   Mismas alturas que el precio real → cero salto de layout. */
.tm-precio-pend{display:block;width:96px;max-width:60%;height:14px;border-radius:7px;background:linear-gradient(90deg,#e9e3d4 25%,#f6f2e7 50%,#e9e3d4 75%);background-size:200% 100%;animation:tm-pend 1.4s linear infinite}
.tm-precio-pend-sm{display:block;width:62px;height:8px;margin-top:5px;border-radius:4px;background:linear-gradient(90deg,#efeadd 25%,#faf7ee 50%,#efeadd 75%);background-size:200% 100%;animation:tm-pend 1.4s linear infinite}
.tm-anadir.tm-anadir-pend{display:block;height:34px;padding:0;background:linear-gradient(90deg,#e9e3d4 25%,#f6f2e7 50%,#e9e3d4 75%);background-size:200% 100%;animation:tm-pend 1.4s linear infinite;cursor:default}
@keyframes tm-pend{0%{background-position:200% 0}100%{background-position:-200% 0}}
.tm .tm-anadir{background:var(--tm-amarillo);color:var(--tm-verde);border:0;border-radius:var(--tm-pildora);font-family:var(--tm-subtitular);font-weight:800;font-size:.88rem;padding:.55em 1em;cursor:pointer}
.tm-mercado-pie{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-top:22px}
.tm-mercado-pie p{font-size:.9rem;color:var(--tm-texto-suave);max-width:60ch}

/* Así funciona · 4 tarjetas */
.tm-pasos{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(12px,1.6vw,20px);list-style:none;margin:0;padding:0}
@media (max-width:1060px){.tm-pasos{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr}}
@media (max-width:600px){.tm-pasos{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:84%;grid-auto-rows:auto;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:10px}.tm-paso{scroll-snap-align:start}}
.tm-paso{position:relative;border-radius:var(--tm-radio-s);overflow:hidden;display:flex;flex-direction:column;background:var(--tm-tarjeta);border:1px solid var(--tm-linea)}
.tm-paso-foto{aspect-ratio:var(--foto,1/1);flex:none;position:relative}
.tm-paso-foto .tm-sticker{right:10px;bottom:30px;top:auto;z-index:3}
.tm-paso-cal .tm-sticker{top:10px;right:10px;bottom:auto;--s:72px}
.tm-paso-foto > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.tm-paso-foto{min-height:0;overflow:hidden}
.tm-paso-numero{position:absolute;top:8px;left:16px;z-index:2;font-family:var(--tm-mano);font-weight:500;font-size:4.2rem;line-height:1;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.25)}
.tm-paso-tarjeta{position:relative;z-index:2;background:var(--tm-tarjeta);border-radius:var(--tm-radio-s) var(--tm-radio-s) 0 0;margin-top:-22px;padding:16px 16px 16px;display:flex;flex-direction:column;gap:8px;flex:1}
.tm-paso-botones{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto}
.tm-paso-tarjeta .tm-paso-botones .tm-boton{margin-top:0}
.tm-paso-tarjeta p{font-size:.93rem;color:var(--tm-texto-suave)}
.tm-paso-tarjeta .tm-paso-alterno{font-size:.8rem}
.tm-paso-tarjeta p b{color:var(--tm-verde)}
.tm-paso-tarjeta .tm-boton{margin-top:auto;align-self:flex-start;font-size:1.02rem;padding:.85em 1.5em}
.tm-paso-cal{display:flex;align-items:flex-end;justify-content:center;padding:0 18px 34px;overflow:hidden}
.tm-paso-cal .tm-calendario{position:relative;z-index:2;width:100%;max-width:212px;color:var(--tm-verde);margin:0;background:rgba(250,243,222,.95);border-radius:14px;padding:9px 11px 10px;box-shadow:0 8px 22px rgba(25,83,43,.22)}
.tm-paso-foto > img.tm-paso-iso{inset:auto;top:16px;right:16px;left:auto;width:34px;height:auto;z-index:2;filter:drop-shadow(0 1px 2px rgba(0,0,0,.25))}
.tm-paso-cal .tm-calendario-grilla{font-size:.68rem}
.tm-paso-cal .tm-calendario-grilla b{font-size:.62rem}
.tm-calendario-cabeza{display:flex;justify-content:space-between;align-items:baseline}
.tm-paso-cal .tm-calendario-mes{color:var(--tm-verde);font-size:1.05rem}
.tm-paso-cal .tm-calendario-anio{color:var(--tm-naranja);font-size:.78rem}
.tm-paso-cal .tm-calendario-grilla{gap:1px 2px;font-size:.74rem}
.tm-paso-cal .tm-calendario-grilla span{width:1.55em;height:1.55em}
.tm-paso-cal .tm-calendario{gap:3px}
.tm-paso-cal .tm-calendario-grilla .elegido{background:var(--tm-amarillo);color:var(--tm-verde);box-shadow:none}
.tm-paso-cal .tm-calendario-grilla .festivo{opacity:.4}
.tm-paso-tarjeta .tm-paso-alterno{margin-top:auto}
.tm-paso-tarjeta .tm-paso-botones + .tm-paso-alterno{margin-top:0}
.tm-paso-tarjeta p:not(.tm-paso-alterno){min-height:5.6em}
.tm-calendario{font-family:var(--tm-cuerpo);font-size:.8rem;display:grid;gap:6px;margin-top:4px}
.tm-calendario-anio{font-family:var(--tm-subtitular);font-weight:800;font-size:.72rem;color:var(--tm-naranja)}
.tm-calendario-mes{font-family:var(--tm-subtitular);font-weight:800;font-size:1.2rem;line-height:1;margin-top:-4px}
.tm-calendario-grilla{display:grid;grid-template-columns:repeat(6,1fr);gap:4px 2px;text-align:center;font-variant-numeric:tabular-nums}
.tm-calendario-grilla b{font-family:var(--tm-subtitular);font-size:.72rem}
.tm-calendario-grilla span{width:2em;height:2em;margin:auto;display:grid;place-items:center;border-radius:50%}
.tm-calendario-grilla .festivo{opacity:.35;text-decoration:line-through}
.tm-calendario-grilla .elegido{box-shadow:inset 0 0 0 2px var(--tm-amarillo);font-weight:800}
.tm-calendario-nota{font-size:.72rem;color:var(--tm-texto-suave)}
.tm-sticker{position:absolute;z-index:3;width:var(--s,96px);aspect-ratio:1;pointer-events:none}
.tm-sticker > img{width:100%;height:100%;object-fit:contain;display:block;filter:drop-shadow(0 3px 6px rgba(25,83,43,.18))}
.tm-paso-ilus{background:var(--tm-amarillo)}
.tm-paso-foto.tm-paso-ilus > img{inset:9% 6% 34px 6%;width:88%;height:auto;max-height:calc(100% - 9% - 34px);object-fit:contain;margin:auto}
.tm-sticker-pendiente{width:100%;height:100%;border-radius:50%;border:2px dashed var(--tm-naranja);background:var(--tm-tarjeta);display:grid;place-items:center;text-align:center;font-family:var(--tm-dato);font-size:.56rem;line-height:1.2;color:var(--tm-naranja);padding:10px;text-transform:uppercase}
.tm-sticker-pendiente img{width:22px;margin:0 auto 4px}
.tm-sticker .tm-sticker-pendiente span{display:block;font:inherit;color:inherit;margin:0}
.tm-paso .tm-sticker{right:10px;bottom:12px;--s:84px}


/* El mercado */
.tm [hidden]{display:none!important}
/* 1-nov · /admin, /contabilidad, /fruver y /logistica NO llevan la clase .tm, así que
   `.tm-al-cuerpo{display:grid}` le ganaba al `hidden` del navegador y las secciones
   salían TODAS apiladas (medido: 13 de 13 visibles en /admin, página de 7.893 px).
   El `hidden` es del navegador, no decorativo: se respeta en todo el sitio. */
[hidden]{display:none!important}
/* A05 (1-nov, Fase 2) · Mientras el panel carga (aria-busy="true") NO se enseña el
   esqueleto vacío («Hola.», fecha «…», tarjetas en blanco): las secciones quedan
   invisibles y solo se ve la barra «Cargando los datos del panel…». Con visibility
   el alto se conserva (la página no salta) y al quitar el atributo aparece todo ya
   con datos. Si el JS falla, initAdmin quita aria-busy igual porque va en finally. */
#s-admin[aria-busy="true"] [data-solo]{visibility:hidden}
.tm-cat-cabeza{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap}
.tm .tm-cat-titulo{font-size:clamp(2.6rem,6vw,4.6rem)}
.tm-cat-datos{list-style:none;margin:0;padding:0;display:flex;gap:10px;flex-wrap:wrap}
.tm-cat-datos li{background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:14px;padding:10px 14px;font-size:.8rem;color:var(--tm-texto-suave);display:grid}
.tm-cat-datos b{font-family:var(--tm-titular);font-size:1.35rem;color:var(--tm-verde);line-height:1}
.tm .tm-cat-ayuda{display:flex;align-items:center;gap:14px;margin:22px 0 18px;padding:14px 18px;border-radius:16px;background:var(--tm-amarillo);color:var(--tm-verde);text-decoration:none;flex-wrap:wrap}
.tm-cat-ayuda > span:nth-child(2){flex:1;min-width:220px}
.tm-sticker-mini{width:44px;height:44px;border-radius:50%;background:var(--tm-crema);display:grid;place-items:center;flex:none}
.tm-sticker-mini img{width:16px}
.tm-cat-filtros{position:sticky;top:62px;z-index:5;background:var(--tm-crema);padding:10px 0;display:grid;gap:10px}
.tm-buscar input{width:100%;font:inherit;color:var(--tm-verde);background:#fff;border:1.5px solid var(--tm-linea);border-radius:999px;padding:.75em 1.2em}
.tm-cat-pildoras{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}
.tm-cat-pildoras button{flex:none;border:0;border-radius:999px;padding:.62em 1.1em;font-family:var(--tm-subtitular);font-weight:700;font-size:1rem;letter-spacing:-.01em;background:var(--tm-tarjeta);color:var(--tm-verde);box-shadow:inset 0 0 0 1px var(--tm-linea);cursor:pointer}
.tm-cat-pildoras button[aria-selected="true"]{background:var(--tm-verde);color:var(--tm-crema);box-shadow:none}
.tm-cat-pildoras small{font-size:.85em;opacity:.8;margin-left:5px;font-weight:600}
.tm .tm-cat-grupo h2{font-size:clamp(1.8rem,3.4vw,2.6rem);margin:26px 0 12px}
.tm-cat-grupo .tm-productos{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:980px){.tm-cat-grupo .tm-productos{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:600px){.tm-cat-grupo .tm-productos{grid-template-columns:repeat(2,minmax(0,1fr))}.tm-cat-grupo .tm-producto-pie{flex-direction:column;align-items:stretch}.tm-cat-grupo .tm-paso-cant{justify-content:space-between}}
.tm-producto .tm-abre-ficha{all:unset;cursor:pointer;display:block}
.tm-cat-nota{color:var(--tm-texto-suave);font-size:.92rem;margin:-6px 0 14px}
.tm-recetas-m{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(440px,100%),1fr));gap:clamp(12px,1.6vw,20px)}
.tm-receta-m{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);overflow:hidden}
.tm-receta-m-foto{position:relative;display:block;min-width:0;min-height:220px;aspect-ratio:1/1;background:var(--tm-crema);overflow:hidden}
.tm-receta-m-foto img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.tm-receta-m-pend{display:none}
.tm-receta-m-foto.sin-foto{background:var(--tm-amarillo) radial-gradient(circle at 50% 50%,rgba(243,232,204,.6) 0 40%,transparent 41%)}
.tm-receta-m-foto.sin-foto .tm-receta-m-pend{position:absolute;inset:0;display:grid;place-content:center;gap:6px;text-align:center;padding:18px;color:var(--tm-verde);font-family:var(--tm-subtitular);font-size:1.15rem;line-height:1.15}
.tm-receta-m-pend strong{font-family:var(--tm-dato);font-size:.72rem;letter-spacing:.08em}
.tm-receta-m-pend small{font-family:var(--tm-dato);font-size:.66rem;opacity:.8}
.tm-receta-m-cuerpo{padding:16px;display:flex;flex-direction:column;gap:6px}
.tm-receta-m-cuerpo h3{font-size:1.3rem}
.tm-receta-m-cuerpo p{font-size:.88rem;color:var(--tm-texto-suave);margin:0}
.tm .tm-receta-m-caso{font-family:var(--tm-dato);font-size:.74rem;color:var(--tm-verde)}
.tm-receta-m-cuerpo .tm-boton{margin-top:auto;align-self:flex-start;font-size:.9rem;padding:.7em 1.2em}
@media (max-width:600px){.tm-recetas-m{grid-template-columns:1fr}.tm-receta-m{grid-template-columns:1fr}.tm-receta-m-foto{min-height:0;aspect-ratio:4/3}}
.tm-producto .tm-abre-ficha:focus-visible{outline:2px solid var(--tm-verde)}
.tm-paso-cant{display:flex;align-items:center;gap:6px;background:var(--tm-amarillo);border-radius:999px;padding:3px;flex:none}
.tm-paso-cant button{width:30px;height:30px;border-radius:50%;border:0;background:var(--tm-crema);color:var(--tm-verde);font-weight:800;cursor:pointer}
.tm-paso-cant output{font-family:var(--tm-subtitular);font-weight:800;font-size:.78rem;min-width:4.6em;text-align:center;color:var(--tm-verde)}
.tm-cat-vacio,.tm-cat-nota{color:var(--tm-texto-suave);font-size:.85rem;margin-top:22px}
.tm-barra-bolsa{position:sticky;bottom:0;z-index:15;background:var(--tm-verde);color:var(--tm-crema)}
.tm-barra-bolsa .tm-contenedor{display:flex;align-items:center;gap:14px;padding-block:12px;flex-wrap:wrap}
.tm-barra-bolsa .tm-suave{color:var(--tm-amarillo)}
.tm-barra-bolsa .tm-boton{margin-left:auto}
@media (max-width:600px){.tm-barra-bolsa .tm-contenedor{gap:6px;padding-block:8px;font-size:.85rem}.tm-barra-bolsa .tm-boton{padding:.6em 1em}}
.tm-velo{position:fixed;inset:0;background:rgba(25,83,43,.45);z-index:90}
.tm-bolsa{position:fixed;top:0;right:0;bottom:0;width:min(440px,100%);background:var(--tm-crema);z-index:91;display:flex;flex-direction:column;box-shadow:-10px 0 30px rgba(0,0,0,.12)}
.tm-bolsa-cabeza{display:flex;justify-content:space-between;align-items:center;padding:18px 20px;border-bottom:1px solid var(--tm-linea)}
.tm .tm-bolsa-cabeza h2{font-size:1.8rem}
.tm-cerrar{width:38px;height:38px;border-radius:50%;border:0;background:var(--tm-tarjeta);color:var(--tm-verde);font-size:1.4rem;cursor:pointer}
.tm-bolsa-lineas{flex:1;overflow:auto;padding:8px 20px}
.tm-linea{display:grid;grid-template-columns:56px minmax(0,1fr) auto;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid var(--tm-linea)}
.tm-linea img{width:56px;height:56px;border-radius:10px;object-fit:cover}
.tm-linea b{display:block;font-family:var(--tm-subtitular)}
.tm-linea small{display:block;color:var(--tm-texto-suave);font-size:.75rem}
.tm-linea .quitar{border:0;background:none;color:var(--tm-verde);text-decoration:underline;font-size:.75rem;cursor:pointer;padding:0;margin-top:4px}
.tm-linea .der{display:grid;justify-items:end;gap:4px}
.tm-bolsa-vacia{padding:24px 20px;flex:1}
.tm-bolsa-pie{padding:14px 20px 20px;border-top:1px solid var(--tm-linea);display:grid;gap:10px;background:var(--tm-tarjeta)}
.tm-minimo-barra{height:8px;border-radius:99px;background:rgba(25,83,43,.12);overflow:hidden}
.tm-minimo-barra span{display:block;height:100%;background:var(--tm-amarillo);width:0}
.tm-minimo p{font-size:.82rem;margin:6px 0 0}
.tm-totales{margin:0;display:grid;gap:4px;font-size:.9rem}
.tm-totales div{display:flex;justify-content:space-between}
.tm-totales dd{margin:0;font-variant-numeric:tabular-nums}
.tm-totales .total{font-family:var(--tm-titular);font-size:1.3rem;margin-top:6px}
.tm-bolsa-nota{font-size:.72rem;color:var(--tm-texto-suave);margin:0}
.tm-continuar{width:100%}
.tm-continuar[aria-disabled="true"]{opacity:.45;cursor:not-allowed}
.tm-ficha-velo{position:fixed;inset:0;background:rgba(25,83,43,.45);z-index:92;display:grid;place-items:center;padding:16px}
.tm-ficha{position:relative;background:var(--tm-crema);border-radius:22px;max-width:860px;width:100%;max-height:92vh;overflow:auto;padding:22px}
.tm-ficha .tm-cerrar{position:absolute;top:12px;right:12px}
.tm-ficha-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);grid-template-areas:"foto info" "extra info";grid-template-rows:auto 1fr;gap:20px 28px;align-items:start}
.tm-ficha-grid > figure{grid-area:foto}.tm-ficha-info{grid-area:info}.tm-ficha-extra{grid-area:extra;display:grid;gap:12px}
@media (max-width:700px){.tm-ficha-grid{grid-template-columns:minmax(0,1fr);grid-template-areas:"foto" "info" "extra";grid-template-rows:auto}}
.tm-ficha-grid figure{margin:0}
.tm-ficha-grid figure img{width:100%;height:auto;aspect-ratio:1;border-radius:16px;object-fit:cover;display:block}
.tm-ficha-extra h3{margin-top:0}
.tm-ficha-grid figcaption{font-size:.72rem;color:var(--tm-texto-suave);margin-top:6px}
.tm .tm-ficha h2{font-size:clamp(1.9rem,4vw,2.6rem)}
.tm .tm-ficha h3{font-size:1.3rem;line-height:1.1;margin:20px 0 6px}
.tm-ficha p{margin:0;color:var(--tm-texto-suave);font-size:.92rem}
.tm-ficha .tm-precio{font-size:1.6rem;margin:10px 0}
.tm-ficha-accion{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:14px 0 6px}
.tm .tm-ficha .tm-anadir{font-size:1.15rem;padding:.85em 2.6em}
.tm-ficha .tm-paso-cant{padding:5px}.tm-ficha .tm-paso-cant button{width:42px;height:42px;font-size:1.15rem}.tm-ficha .tm-paso-cant output{font-size:1rem;min-width:7em}
.tm-co2{position:relative;display:grid;grid-template-columns:auto 1fr auto;gap:4px 14px;align-items:center;background:var(--tm-verde);color:var(--tm-crema);border-radius:16px;padding:16px 16px 16px 18px;margin:0;overflow:hidden}
.tm-co2::after{content:"";position:absolute;right:-26px;bottom:-30px;width:110px;height:110px;border-radius:50%;background:rgba(255,201,38,.13)}
.tm-co2-cifra{font-family:var(--tm-titular);font-weight:900;color:var(--tm-amarillo);font-size:2.3rem;line-height:.9;white-space:nowrap}
.tm-co2-cifra small{font-size:.5em;margin-left:3px}
.tm-co2-txt{font-size:.86rem;line-height:1.35;color:var(--tm-crema)}
.tm-co2-txt small{opacity:.75}
.tm .tm-q{position:relative;z-index:1;border:0;background:var(--tm-amarillo);color:var(--tm-verde);border-radius:50%;width:30px;height:30px;font-family:var(--tm-subtitular);font-weight:800;font-size:1rem;cursor:pointer;flex:none}
.tm .tm-q[aria-expanded="true"]{background:var(--tm-crema)}
.tm-pop{grid-column:1/-1;margin:8px 0 0;background:var(--tm-crema);color:var(--tm-verde);border-radius:12px;padding:12px 14px;font-size:.84rem;line-height:1.45;position:relative;z-index:1}
.tm-ficha .tm-co2 p.tm-pop{color:var(--tm-verde);font-size:.84rem;margin-top:8px}
.tm-ficha .tm-guardar{background:var(--tm-tarjeta);border-radius:12px;padding:14px 16px;margin:0}
.tm-ficha-extra .tm-guardar h3{margin:0 0 6px}
.tm-ficha .tm-guardar b{color:var(--tm-verde)}
.tm-co2 button{border:0;background:var(--tm-verde);color:var(--tm-crema);border-radius:50%;width:20px;height:20px;font-size:.7rem;cursor:pointer;margin-left:4px}
.tm-pide{max-width:520px;display:grid;gap:12px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.tm-faq-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:clamp(18px,3vw,36px);align-items:start}
@media (max-width:900px){.tm-faq-grid{grid-template-columns:minmax(0,1fr)}}
.tm-faq-grid .tm-faq{max-width:none}
.tm-faq-lado{position:sticky;top:90px;display:grid;gap:14px}
.tm-faq-lado figure{margin:0;position:relative}
.tm-faq-lado figure > img{width:100%;height:auto;aspect-ratio:1;object-fit:cover;border-radius:var(--tm-radio);display:block}
.tm-faq-lado .tm-sticker{right:-10px;bottom:-16px;--s:96px}
.tm-faq-contacto{background:var(--tm-verde);color:var(--tm-crema);border-radius:var(--tm-radio-s);padding:20px;display:grid;gap:10px;justify-items:start}
.tm .tm-faq-contacto h3{color:var(--tm-crema);font-size:1.35rem}
.tm-faq-contacto p{color:var(--tm-crema);opacity:.9;font-size:.92rem;margin:0}
.tm .tm-faq-contacto .tm-enlace{color:var(--tm-amarillo)}
.tm-impacto{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);align-items:center;gap:clamp(18px,3vw,36px);background:var(--tm-verde);color:var(--tm-crema);border-radius:var(--tm-radio);padding:clamp(22px,3.4vw,42px);position:relative;overflow:hidden}
@media (max-width:900px){.tm-impacto{grid-template-columns:minmax(0,1fr)}}
.tm-impacto .tm-etiqueta{color:var(--tm-amarillo)}
.tm-impacto-cifra{position:relative;display:grid;gap:14px;align-content:start}
.tm-impacto-der{display:flex;flex-direction:column;gap:14px;justify-content:center}
.tm-odo{display:flex;align-items:flex-end;gap:5px;flex-wrap:wrap}
.tm-odo span{display:grid;place-items:center;min-width:1.15em;padding:.08em .12em .02em;background:var(--tm-crema);color:var(--tm-verde);border-radius:10px;font-family:var(--tm-titular);font-weight:900;font-size:clamp(2.6rem,5.6vw,4.2rem);line-height:1;box-shadow:inset 0 -6px 0 rgba(25,83,43,.12)}
.tm-odo i{font-family:var(--tm-titular);font-style:normal;font-size:2.6rem;line-height:1;color:var(--tm-crema)}
.tm-odo em{font-style:normal;font-family:var(--tm-subtitular);font-weight:800;font-size:1.5rem;margin-left:6px;color:var(--tm-crema)}
.tm-impacto-co2{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.tm-impacto-co2 b{font-family:var(--tm-titular);font-weight:900;color:var(--tm-amarillo);font-size:clamp(2.4rem,5vw,3.6rem);line-height:.9}
.tm-impacto-co2 span{font-family:var(--tm-subtitular);font-weight:800;font-size:1.2rem;line-height:1.1}
.tm-impacto-co2 small{display:block;font-family:var(--tm-cuerpo);font-weight:400;font-size:.78rem;opacity:.75}
.tm-impacto .tm-pop{margin:0}
.tm .tm-impacto .tm-enlace{color:var(--tm-amarillo)}
.tm-impacto-masc{align-self:flex-end;width:150px;height:auto;transform:rotate(-4deg);margin:-4px 6px -18px 0}
.tm-impacto-productos{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-content:center}
.tm-impacto-productos li{background:var(--tm-crema);color:var(--tm-verde);border-radius:999px 18px 18px 999px;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:12px;padding:8px 14px 8px 8px}
.tm-impacto-productos img{width:76px;height:76px;border-radius:50%;object-fit:cover;display:block}
.tm-impacto-productos b{display:block;font-family:var(--tm-titular);font-size:1.55rem;line-height:1}
.tm-impacto-productos span{display:block;font-size:.78rem;color:var(--tm-texto-suave);line-height:1.3;margin-top:3px}
@media (max-width:600px){.tm-impacto-productos{grid-template-columns:1fr}.tm-impacto-masc{width:120px}}
/* ---------- Los puntos (plan de lealtad) ---------- */
.tm-puntos{background:var(--tm-tarjeta);border-radius:var(--tm-radio);padding:clamp(22px,3.4vw,42px);display:grid;gap:22px;position:relative;overflow:hidden}
.tm-puntos-cabeza{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:22px;align-items:end}
@media (max-width:860px){.tm-puntos-cabeza{grid-template-columns:1fr}}
.tm .tm-puntos h2{font-size:clamp(2.4rem,5vw,3.8rem)}
.tm-puntos-cabeza p{color:var(--tm-texto-suave);max-width:48ch;margin:0}
.tm-puntos-cabeza p b{color:var(--tm-verde)}
.tm-niveles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;list-style:none;margin:0;padding:0}
@media (max-width:860px){.tm-niveles{grid-template-columns:1fr}}
.tm-nivel{position:relative;border-radius:18px;padding:18px 110px 20px 18px;min-height:220px;display:flex;flex-direction:column;gap:6px;overflow:hidden}
.tm-nivel--biche{background:var(--tm-lima);color:var(--tm-verde)}
.tm-nivel--pinton{background:var(--tm-amarillo);color:var(--tm-verde)}
.tm-nivel--punto{background:var(--tm-naranja);color:var(--tm-crema)}
.tm-nivel .tm-etiqueta{opacity:.85}
.tm .tm-nivel h3{font-family:var(--tm-titular);font-weight:900;font-size:clamp(2rem,3.4vw,2.6rem);line-height:.95;max-width:9ch}
.tm-nivel p{margin:0;font-size:.9rem;max-width:24ch;position:relative;z-index:1}
.tm-nivel img{position:absolute;right:-8px;bottom:-10px;width:118px;height:auto;transform:rotate(5deg)}
/* En portátiles la tarjeta del nivel es más angosta: el sticker se achica para que el texto respire. */
@media (max-width:1100px){.tm-nivel{padding-right:86px}.tm-nivel img{width:96px}}
.tm-pasalo{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:18px;align-items:center;background:var(--tm-verde);color:var(--tm-crema);border-radius:18px;padding:16px 22px}
.tm-pasalo img{width:92px;height:auto}
.tm .tm-pasalo h3{font-family:var(--tm-titular);font-weight:900;font-size:2rem;color:var(--tm-amarillo)}
.tm-pasalo p{margin:2px 0 0;font-size:.92rem}
@media (max-width:700px){.tm-pasalo{grid-template-columns:1fr}.tm-pasalo img{width:80px}}
.tm-puntos-nota{font-size:.8rem;color:var(--tm-texto-suave);margin:0}
.tm-tres{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;list-style:none;margin:0;padding:0}
@media (max-width:860px){.tm-tres{grid-template-columns:1fr}}
.tm-tres li{background:var(--tm-crema);border-radius:18px;padding:18px;display:grid;gap:12px;align-content:start;box-shadow:inset 0 0 0 1px var(--tm-linea)}
.tm .tm-tres h4{font-family:var(--tm-titular);font-weight:900;font-size:1.55rem;line-height:1.05;margin:4px 0 0}
.tm-tres p{margin:0;font-size:.9rem;color:var(--tm-texto-suave);line-height:1.55}
.tm-tres .pts{justify-self:start;font-family:var(--tm-dato);font-size:.74rem;background:var(--tm-amarillo);color:var(--tm-verde);border-radius:999px;padding:.3em .8em}

/* ---------- Página /puntos (28-oct: piezas del prototipo 23a, textos v1.6.6) ---------- */
.tm-suma{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;list-style:none;margin:0;padding:0}
@media (max-width:1199px){.tm-suma{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:700px){.tm-suma{grid-template-columns:1fr}}
.tm-suma li{background:var(--tm-tarjeta);box-shadow:inset 0 0 0 1px var(--tm-linea);border-radius:16px;padding:16px;display:grid;gap:4px;align-content:start}
.tm-suma b{font-family:var(--tm-titular);font-weight:900;font-size:2.2rem;line-height:1;color:var(--tm-naranja)}
.tm-suma span{font-size:.88rem;color:var(--tm-texto-suave);line-height:1.5}
.tm-charms{background:var(--tm-tarjeta);border-radius:var(--tm-radio);padding:clamp(22px,3.4vw,42px);display:grid;gap:18px}
.tm-charms-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media (max-width:860px){.tm-charms-grid{grid-template-columns:1fr}}
.tm .tm-charms-grid h4{font-family:var(--tm-subtitular);font-weight:800;font-size:1.15rem;margin:0 0 4px;line-height:1.2}
.tm-charms-grid p{margin:0;font-size:.9rem;color:var(--tm-texto-suave)}
.tm-charms-num{display:block;font-family:var(--tm-titular);font-weight:900;font-size:1.7rem;line-height:1;color:var(--tm-naranja);margin-bottom:4px}
.tm-especiales{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;list-style:none;margin:0;padding:0}
@media (max-width:860px){.tm-especiales{grid-template-columns:1fr}}
.tm-especiales li{background:var(--tm-verde);color:var(--tm-crema);border-radius:16px;padding:16px;display:grid;gap:4px}
.tm-especiales li:last-child{background:var(--tm-amarillo);color:var(--tm-verde)}
.tm-especiales b{font-family:var(--tm-titular);font-weight:900;font-size:1.35rem;line-height:1}
.tm-especiales span{font-size:.88rem}
.tm-encuentros{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media (max-width:860px){.tm-encuentros{grid-template-columns:1fr}}
.tm-encuentros article{border-radius:16px;padding:18px;box-shadow:inset 0 0 0 2px var(--tm-verde)}
.tm .tm-encuentros h4{font-family:var(--tm-titular);font-weight:900;font-size:1.5rem;margin:0 0 6px;line-height:1}
.tm-encuentros p{margin:0;font-size:.9rem;color:var(--tm-texto-suave)}
/* Las reglas de /puntos van en lista de dos columnas. La home usa .tm-reglas con h3/p:
   por eso estas reglas van encogidas bajo .tm-puntosp y no tocan el resto del sitio. */
.tm-puntosp .tm-reglas{display:block;list-style:none;margin:0;padding:0;columns:2;column-gap:clamp(24px,4vw,44px)}
.tm-puntosp .tm-puntos-nota{font-size:.95rem;line-height:1.4}
@media (max-width:760px){.tm-puntosp .tm-reglas{columns:1}}
.tm-puntosp .tm-reglas li{position:relative;padding-left:26px;margin:0 0 12px;font-size:.92rem;line-height:1.5;color:var(--tm-texto-suave);break-inside:avoid}
.tm-puntosp .tm-reglas li::before{content:"";position:absolute;left:0;top:.42em;width:11px;height:11px;border-radius:50%;background:var(--tm-naranja)}

/* Lo de adentro */
.tm-adentro{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(20px,4vw,48px);align-items:stretch}
@media (max-width:860px){.tm-adentro{grid-template-columns:1fr}}
.tm-adentro-foto{position:relative;border-radius:var(--tm-radio);overflow:hidden}
.tm-adentro-foto img{width:100%;height:100%;aspect-ratio:1/1;object-fit:cover;display:block}
.tm-mano{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.tm-mano-trazo{fill:none;stroke:#fff;stroke-width:4.5;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 1px 3px rgba(25,83,43,.75))}
.tm-mano-trazo text{fill:#fff;stroke:none;font-family:var(--tm-mano);font-weight:600;font-size:52px}
.tm-adentro-texto{display:flex;flex-direction:column;justify-content:center;gap:16px}
.tm .tm-adentro-texto h2{font-size:clamp(2.2rem,4vw,3.4rem)}
.tm-adentro-texto p{color:var(--tm-texto-suave);max-width:46ch}
.tm-adentro-texto p b{color:var(--tm-verde)}
.tm-listas{display:grid;grid-template-columns:1fr 1fr;gap:10px 18px;font-size:.88rem;margin-top:4px}
.tm-listas h3{font-size:1rem;margin-bottom:6px}
.tm-listas ul{margin:0;padding:0;list-style:none;display:grid;gap:4px}
.tm-listas li{padding-left:1.4em;position:relative;color:var(--tm-texto-suave)}
.tm-listas .si li::before{content:"✓";position:absolute;left:0;font-weight:800;color:var(--tm-verde)}
.tm-listas .no li::before{content:"✕";position:absolute;left:0;font-weight:800;color:var(--tm-rojo)}

/* Lo que pagas */
.tm-cifras{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(12px,1.6vw,20px)}
@media (max-width:900px){.tm-cifras{grid-template-columns:repeat(2,minmax(0,1fr))}}
.tm-cifra{position:relative;background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);padding:20px 18px;display:grid;gap:6px;align-content:start;min-height:170px}
.tm-cifra b{font-family:var(--tm-titular);font-weight:800;font-size:clamp(1.8rem,3vw,2.4rem);line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.tm-cifra span{font-size:.9rem;color:var(--tm-texto-suave)}
.tm-cifra .tm-sticker{right:-8px;top:-44px;--s:78px}
.tm-reglas{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 40px;margin-top:28px}
@media (max-width:760px){.tm-reglas{grid-template-columns:1fr}}
.tm-reglas h3{font-size:1.15rem;margin-bottom:4px}
.tm-reglas p{color:var(--tm-texto-suave);font-size:.95rem}

/* Zona */
.tm-zona{position:relative;background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio);padding:clamp(22px,4vw,40px);display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,4vw,48px);align-items:center}
@media (max-width:860px){.tm-zona{grid-template-columns:1fr}}
.tm-zona .tm-sticker{right:24px;top:-44px;--s:92px}
.tm-campo{display:grid;gap:6px}
.tm-campo label{font-family:var(--tm-subtitular);font-weight:700;font-size:.92rem}
.tm-campo input{font:inherit;font-size:1rem;color:var(--tm-verde);background:#fff;border:1.5px solid var(--tm-linea);border-radius:12px;padding:.8em 1em;width:100%}
.tm-campo input:focus{border-color:var(--tm-verde)}
/* Desplegables de la marca (Municipio, «¿Cómo nos conociste?»). Hasta el 8-nov el
   <select> caía al estilo del navegador: borde gris de 1 px, esquinas rectas y más
   bajo que el input de al lado (en /registro se veía «Chico» más alto que «Bogotá»).
   Ahora es la misma caja que los inputs, con la flecha verde dibujada por nosotros. */
.tm-campo select{font:inherit;font-size:1rem;line-height:1.2;color:var(--tm-verde);background-color:#fff;border:1.5px solid var(--tm-linea);border-radius:12px;padding:.8em 2.6em .8em 1em;width:100%;min-height:48px;appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1.5 7 7.5l6-6' fill='none' stroke='%2319532B' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1.1em center;background-size:14px 9px;cursor:pointer}
.tm-campo select:focus{border-color:var(--tm-verde);outline:2px solid rgba(25,83,43,.18);outline-offset:1px}
.tm-campo select option{color:var(--tm-verde);background:#fff}
/* Mientras siga en «Elige una opción» el texto va en verde suave, como un placeholder. */
.tm-campo select:has(option[value=""]:checked){color:var(--tm-texto-suave)}
/* Barrio y Municipio, a la misma altura (el campo de texto y el desplegable). */
.tm-campo input:not([type="checkbox"]):not([type="radio"]),.tm-campo select{min-height:48px}
/* La casilla de la autorización (T12) no es un campo de texto: sin esto hereda el
   `width:100%` de arriba y, dentro del flex de su etiqueta, se lleva media línea
   y empuja el texto a la derecha. */
.tm-campo input[type="checkbox"]{width:18px;height:18px;min-height:0;flex:0 0 auto;margin:2px 0 0;padding:0;border-radius:4px;accent-color:var(--tm-verde)}
.tm-fila{display:flex;gap:10px;flex-wrap:wrap}
.tm-fila input{flex:1 1 220px}
/* Fila de dos campos iguales (Barrio · Municipio): dos columnas que se apilan solas
   en celular, sin que el desplegable se aplaste. */
.tm-fila-doble{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:430px){.tm-fila-doble{grid-template-columns:1fr}}
.tm-resultado{border-radius:12px;padding:12px 14px;background:var(--tm-crema);font-weight:800;font-size:.95rem}

/* Mini-formulario de expansión (dirección fuera de cobertura). Se abre SOLO
   cuando la dirección revisada no está en la zona y vuelve al estado inicial
   cuando se guarda o cuando la nueva búsqueda sí tiene cobertura. */
#zona-espera{display:grid;gap:10px;padding:14px;border:1.5px dashed var(--tm-amarillo);border-radius:14px;background:rgba(255,201,38,.14)}
#zona-espera[hidden]{display:none!important}
.tm-espera-titulo{font-family:var(--tm-subtitular);font-weight:800;font-size:1.02rem;line-height:1.35;margin:0;color:var(--tm-verde)}

/* Preguntas */
.tm-faq{display:grid;gap:10px;max-width:900px}
.tm-faq details{border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);background:var(--tm-tarjeta)}
/* Los títulos de las preguntas van más grandes (28-oct, pedido de la clienta): 1,08rem → 1,34–1,48rem. */
.tm-faq summary{cursor:pointer;list-style:none;padding:16px 52px 16px 20px;font-family:var(--tm-subtitular);font-weight:800;font-size:clamp(1.34rem,1.25vw,1.48rem);position:relative;letter-spacing:-.01em;line-height:1.3}
.tm-faq summary::-webkit-details-marker{display:none}
.tm-faq summary::after{content:"+";position:absolute;right:16px;top:50%;transform:translateY(-50%);width:28px;height:28px;border-radius:50%;background:var(--tm-amarillo);display:grid;place-items:center;font-size:1.1rem}
.tm-faq details[open] summary::after{content:"–"}
.tm-faq details p{padding:0 20px 18px;color:var(--tm-texto-suave);max-width:70ch}

/* Recetas: la tarjeta es .tm-receta-m (arriba, junto al catálogo) y se usa también en el inicio. */

/* Pie */
.tm-pie{padding-block:24px 36px;font-size:.8rem}
.tm-pie hr{border:0;border-top:1px solid var(--tm-linea);margin:0 0 26px}
.tm-pie-fila{position:relative;display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.tm-pie-marca{display:flex;align-items:center;gap:14px;padding-right:18px;border-right:1px solid var(--tm-linea)}
.tm-pie-marca .iso{height:44px;width:auto}
.tm-pie-marca .logo{height:22px;width:auto}
.tm-pie-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}
.tm .tm-pie-links a{text-decoration:none;font-family:var(--tm-subtitular);font-weight:800;font-size:.95rem;color:var(--tm-verde);padding:.6em 1.15em;border-radius:var(--tm-pildora);box-shadow:inset 0 0 0 2px var(--tm-verde);transition:background .15s,color .15s}
.tm .tm-pie-links a:hover{background:var(--tm-verde);color:var(--tm-crema)}
.tm .tm-pie-links a.tm-pie-principal{background:var(--tm-amarillo);box-shadow:none}
.tm-pie-base{margin-top:28px;padding-top:18px;border-top:1px solid var(--tm-linea);display:grid;gap:10px}
.tm-pie-legales{display:flex;flex-wrap:wrap;align-items:center;gap:6px 0}
.tm .tm-pie-legales a{color:var(--tm-verde);font-family:var(--tm-dato);font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;text-decoration:none;padding:2px 0}
.tm .tm-pie-legales a + a::before{content:"·";display:inline-block;margin:0 12px;color:var(--tm-naranja);font-weight:700}
.tm .tm-pie-legales a:hover{color:var(--tm-naranja)}
.tm-pie-legal{margin:0;color:var(--tm-texto-suave);font-size:.75rem}
.tm-pie .tm-sticker{right:0;top:-70px;--s:90px}

/* Fotos y stickers que faltan: marcador provisional */
.tm-foto-pendiente{background:#e9ddba repeating-linear-gradient(45deg,rgba(25,83,43,.06) 0 10px,transparent 10px 20px);color:var(--tm-verde);display:grid;place-items:center;text-align:center;font-family:var(--tm-dato);font-size:.7rem;padding:14px;width:100%;height:100%}
.tm-foto-pendiente strong{display:block;font-size:.9rem}

/* Ventana de registro */
.tm-modal{position:relative;max-width:920px;margin:auto;background:var(--tm-tarjeta);border-radius:22px;overflow:hidden;display:grid;grid-template-columns:.9fr 1.1fr;box-shadow:0 0 0 1px var(--tm-linea)}
@media (max-width:820px){.tm-modal{grid-template-columns:1fr}}
.tm-modal-foto{position:relative;min-height:280px}
.tm-modal-foto > img{width:100%;height:100%;object-fit:cover;object-position:var(--tm-foto-pos,50% 50%);position:absolute;inset:0}
.tm-modal-foto .tm-sticker{left:16px;bottom:16px;--s:110px}
.tm-modal-cuerpo{padding:clamp(22px,3.4vw,36px);display:grid;gap:12px;align-content:start}
.tm-modal-cerrar{position:absolute;top:12px;right:12px;z-index:4;width:38px;height:38px;border-radius:50%;border:0;background:var(--tm-crema);color:var(--tm-verde);font-size:1.2rem;font-weight:800;cursor:pointer}
.tm-modal h2{font-size:clamp(2.2rem,4vw,3rem)}
.tm-paso-alterno{font-size:.8rem;color:var(--tm-texto-suave);margin-top:8px}
.tm-paso-alterno .tm-enlace{font-weight:600}
.tm-calif-banner{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 22px;align-items:center;background:var(--tm-tarjeta);border-radius:22px;box-shadow:0 0 0 1px var(--tm-linea);padding:22px 26px;margin-top:10px}
.tm-calif-banner .tm-sticker{position:static;--s:100px;grid-row:span 2}
.tm-calif-banner h3{font-size:1.45rem}
.tm-calif-banner p{color:var(--tm-texto-suave);margin:4px 0 0}
.tm-calif-banner .tm-pregunta{grid-column:2}
.tm-calif-acciones{grid-column:3;grid-row:1 / span 2;display:grid;gap:10px;justify-items:center}
@media (max-width:820px){.tm-calif-banner{grid-template-columns:minmax(0,1fr);padding:20px}.tm-calif-banner .tm-sticker{position:absolute;right:12px;top:-30px;--s:70px}.tm-calif-banner .tm-pregunta,.tm-calif-acciones{grid-column:1;grid-row:auto;justify-items:start}.tm-calif-banner-texto{padding-right:64px}}
.tm-boton-texto{background:none;border:0;color:var(--tm-verde);font:inherit;font-size:.9rem;cursor:pointer}
.tm-pregunta{border:0;margin:0;padding:0;display:grid;gap:8px}
.tm-pregunta legend{font-family:var(--tm-subtitular);font-weight:800;font-size:1.05rem;margin-bottom:8px;padding:0}
.tm-escala{gap:6px;background:none;padding:0}
.tm-pregunta .tm-interruptor{justify-self:start;width:max-content;max-width:100%;flex-wrap:wrap}
.tm-pregunta .tm-interruptor button{font-size:.92rem}
.tm .tm-escala button{width:46px;height:46px;border-radius:50%;background:var(--tm-crema);box-shadow:inset 0 0 0 1.5px var(--tm-linea);font-size:1.1rem;font-weight:800;padding:0}
.tm-escala-extremos{display:flex;justify-content:space-between;gap:12px;width:254px;max-width:100%;font-family:var(--tm-dato);font-size:.68rem;color:var(--tm-texto-suave)}
.tm-calif{max-width:760px}
.tm-calif-form{display:grid;gap:26px;margin:22px 0 28px;background:var(--tm-tarjeta);border-radius:22px;padding:clamp(20px,3vw,32px);box-shadow:0 0 0 1px var(--tm-linea)}
.tm-calif-form textarea{font:inherit;color:var(--tm-verde);background:#fff;border:1.5px solid var(--tm-linea);border-radius:12px;padding:.8em 1em;width:100%;resize:vertical}
.tm-calif-aviso{background:var(--tm-crema);border-radius:12px;padding:12px 14px;font-size:.9rem;margin:0}
.tm-calif-gracias{max-width:520px}
.tm-chips{display:flex;flex-wrap:wrap;gap:6px}
.tm-chip{background:var(--tm-crema);border-radius:999px;padding:.4em .85em;font-family:var(--tm-subtitular);font-weight:700;font-size:.78rem}
.tm-ayuda{font-size:.78rem;color:var(--tm-texto-suave)}
.tm-casilla{display:grid;grid-template-columns:20px 1fr;gap:10px;font-size:.76rem;line-height:1.45;align-items:start;color:var(--tm-texto-suave)}
/* Casillas de autorización con la caja de la marca (8-nov): 20 px, esquinas de 6 px
   y, al marcar, fondo verde oscuro con el ✓ en crema. Reemplaza el checkbox nativo,
   que se veía de otro sistema al lado de los campos redondeados. El texto legal de
   cada casilla no cambia: esto es solo el dibujo de la casilla. */
.tm-casilla input{width:20px;height:20px;margin:1px 0 0;flex:0 0 auto;appearance:none;-webkit-appearance:none;border:1.5px solid var(--tm-linea);border-radius:6px;background-color:#fff;cursor:pointer;transition:background-color .15s ease,border-color .15s ease}
.tm-casilla input:hover{border-color:var(--tm-verde)}
.tm-casilla input:checked{background-color:var(--tm-verde);border-color:var(--tm-verde);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='10' viewBox='0 0 12 10'%3E%3Cpath d='M1 5.2 4.3 8.5 11 1.5' fill='none' stroke='%23F3E8CC' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:center;background-size:12px 10px}
.tm-casilla input:focus-visible{outline:2px solid rgba(25,83,43,.35);outline-offset:2px}
.tm-casilla b{color:var(--tm-verde)}
/* Grupo de casillas (las 4 del registro): respiran juntas y se separan del botón. */
.tm-casillas{display:grid;gap:10px;margin-top:4px;padding-top:14px;border-top:1px solid var(--tm-linea)}
/* 30-oct: blindaje — si el texto o los enlaces quedan sueltos como hijos del
   label (sin el <span>), siguen cayendo en la columna del texto; nunca se
   parten en columnitas de 20px como pasaba con la página vieja de /registro. */
.tm-casilla > *:not(input){grid-column:2}
.tm-letra-pie{font-size:.74rem;color:var(--tm-texto-suave);text-align:center}
.tm-listo{background:var(--tm-tarjeta);border-radius:22px;padding:clamp(22px,3vw,32px);display:grid;gap:12px;box-shadow:0 0 0 1px var(--tm-linea);position:relative;align-content:start}
.tm-listo h3{font-size:1.6rem}
.tm-listo p{color:var(--tm-texto-suave);font-size:.95rem}
.tm-local{background:var(--tm-amarillo);border-radius:14px;padding:14px 16px;font-weight:800}

/* Página de receta */
.tm-receta-hero{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(20px,3vw,40px);align-items:start}
@media (max-width:900px){.tm-receta-hero{grid-template-columns:1fr}}
.tm-receta-foto{border-radius:var(--tm-radio);overflow:hidden;aspect-ratio:4/3}
.tm-calculadora{background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio);padding:clamp(18px,2.6vw,28px);display:grid;gap:14px}
.tm-contador{display:flex;align-items:center;justify-content:space-between;gap:10px}
.tm-contador span{font-family:var(--tm-subtitular);font-weight:700}
.tm-contador div{display:flex;align-items:center;gap:10px}
.tm-contador button{width:36px;height:36px;border-radius:50%;border:0;background:var(--tm-crema);color:var(--tm-verde);font-weight:800;font-size:1.1rem;cursor:pointer}
.tm-contador output{font-family:var(--tm-subtitular);font-weight:800;font-size:1.3rem;min-width:1.4em;text-align:center}
.tm-sino{display:flex;justify-content:space-between;align-items:center;font-size:.92rem}
.tm-interruptor{display:inline-flex;background:var(--tm-crema);border-radius:999px;padding:3px}
.tm-interruptor button{border:0;background:transparent;border-radius:999px;padding:.35em .9em;font-family:var(--tm-subtitular);font-weight:700;color:var(--tm-verde);cursor:pointer}
.tm-interruptor button[aria-pressed="true"]{background:var(--tm-verde);color:var(--tm-crema)}
/* v2.7 · calificación: bloques, chips de selección y puntos */
.tm .tm-calif-bloque{font-family:var(--tm-titular);font-weight:900;font-size:1.6rem;line-height:1;padding-top:6px;border-top:1px solid var(--tm-linea)}
.tm .tm-calif-bloque:first-child{border-top:0;padding-top:0}
.tm .tm-pregunta .tm-chips-sel{display:flex;flex-wrap:wrap;gap:8px;background:none;padding:0;width:auto}
.tm .tm-chips-sel button{background:var(--tm-crema);box-shadow:inset 0 0 0 1.5px var(--tm-linea);padding:.5em 1em}
.tm .tm-calif-puntos{font-family:var(--tm-dato);font-size:.8rem;color:var(--tm-verde);background:var(--tm-amarillo);border-radius:12px;padding:.7em 1em;justify-self:start}
.tm .tm-calif-form .tm-campo label{font-size:1.15rem;line-height:1.2}
.tm .tm-calif-form .tm-campo label .tm-suave{font-size:.9rem;font-weight:400}
.tm-lineas{list-style:none;margin:0;padding:0;display:grid;gap:8px;font-size:.92rem}
.tm-lineas li{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:baseline;border-bottom:1px dashed var(--tm-linea);padding-bottom:6px;font-variant-numeric:tabular-nums}
.tm-lineas small{grid-column:1/-1;color:var(--tm-texto-suave);font-size:.75rem;margin-top:-4px}
.tm-total{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--tm-titular);font-weight:800;font-size:1.3rem}
.tm-total span:last-child{font-size:.9rem;font-weight:700;color:var(--tm-texto-suave)}
.tm-receta-selector{display:flex;gap:8px;flex-wrap:wrap;align-items:center;font-size:.9rem;color:var(--tm-texto-suave)}
.tm-calc-nota{font-size:.75rem;color:var(--tm-texto-suave);margin:0}
.tm-aviso{background:var(--tm-crema);border-radius:12px;padding:10px 12px;font-size:.85rem}
.tm-receta-cuerpo{display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,3vw,40px);margin-top:clamp(28px,4vw,48px)}
@media (max-width:860px){.tm-receta-cuerpo{grid-template-columns:1fr}}
.tm-ingredientes{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:.93rem}
.tm-ingredientes li{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid var(--tm-linea);padding-bottom:6px}
.tm-ingredientes li span:last-child{color:var(--tm-texto-suave);text-align:right}
.tm-pasos-receta{margin:0;padding-left:1.3em;display:grid;gap:10px;font-size:.95rem}
.tm-despensa{font-size:.85rem;font-style:italic;color:var(--tm-texto-suave);margin-top:8px}
.tm-no-vendemos{font-style:normal;color:var(--tm-naranja,#F86015);font-weight:700}
.tm-calc-despensa{font-size:.95rem;margin:0}

/* Páginas legales */
.tm-pol{background:#fff;border-radius:var(--tm-radio);overflow:hidden;box-shadow:0 0 0 1px var(--tm-linea)}
.tm-pol .pol-cabeza{background:var(--tm-verde);color:var(--tm-crema);padding:28px clamp(18px,5vw,48px) 36px}
.tm-pol .kicker{font-family:var(--tm-subtitular);font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--tm-amarillo);font-size:.85rem}
.tm .tm-pol h1{font-family:var(--tm-titular);font-size:clamp(2rem,5vw,3.6rem);line-height:1.02;margin:8px 0 14px;color:var(--tm-crema)}
.tm-pol .vigencia{font-size:.92rem;opacity:.9}
.tm-pol nav.indice{background:var(--tm-crema);padding:20px clamp(18px,5vw,48px)}
.tm-pol nav.indice p{font-family:var(--tm-subtitular);font-weight:800;text-transform:uppercase;letter-spacing:.06em;font-size:.8rem;margin:0 0 10px}
.tm-pol nav.indice ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.tm .tm-pol nav.indice a{display:inline-block;background:#fff;color:var(--tm-verde);text-decoration:none;border:2px solid var(--tm-verde);border-radius:999px;padding:4px 13px;font-size:.85rem}
.tm .tm-pol nav.indice a:hover{background:var(--tm-verde);color:var(--tm-crema)}
.tm-pol .botones{padding:18px clamp(18px,5vw,48px) 0;display:flex;gap:10px;flex-wrap:wrap}
.tm .tm-pol .botones button,.tm .tm-pol .botones a{font-family:var(--tm-subtitular);font-weight:800;font-size:.88rem;background:var(--tm-amarillo);color:var(--tm-verde);border:0;border-radius:999px;padding:9px 18px;cursor:pointer;text-decoration:none}
.tm-pol main{padding:6px clamp(18px,5vw,48px) 40px;max-width:1000px}
.tm-pol .intro{margin:20px 0 8px}
.tm-pol details{border-bottom:2px solid var(--tm-crema)}
.tm-pol details summary{list-style:none;cursor:pointer;padding:16px 44px 16px 0;position:relative;font-family:var(--tm-subtitular);font-weight:800;font-size:1.3rem;line-height:1.25}
.tm-pol details summary::-webkit-details-marker{display:none}
.tm-pol details summary::after{content:"+";position:absolute;right:6px;top:10px;font-family:var(--tm-titular);font-size:1.8rem;color:var(--tm-naranja)}
.tm-pol details[open] summary::after{content:"–"}
.tm-pol .cuerpo{padding:0 0 16px}
.tm-pol .cuerpo p,.tm-pol .cuerpo li{margin:0 0 10px}
.tm .tm-pol h3{font-family:var(--tm-subtitular);font-size:1.1rem;margin:20px 0 6px}
.tm-pol blockquote{margin:14px 0;padding:14px 18px;background:var(--tm-crema);border-radius:10px}
.tm-pol .tabla{overflow-x:auto}
.tm-pol table{border-collapse:collapse;width:100%;margin:14px 0;font-size:.9rem;min-width:480px}
.tm-pol th{background:var(--tm-verde);color:var(--tm-crema);text-align:left;padding:8px 10px}
.tm-pol td{border-bottom:1px solid var(--tm-crema);padding:8px 10px;vertical-align:top}
.tm-legal{display:grid;grid-template-columns:260px minmax(0,1fr);gap:clamp(20px,3vw,40px);align-items:start}
@media (max-width:900px){.tm-legal{grid-template-columns:minmax(0,1fr)}}
.tm-legal-pestanas{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px}
.tm-legal-pestanas button{border:0;border-radius:999px;padding:.6em 1.1em;font-family:var(--tm-subtitular);font-weight:700;font-size:.9rem;background:var(--tm-tarjeta);color:var(--tm-verde);box-shadow:inset 0 0 0 1px var(--tm-linea);cursor:pointer}
.tm-legal-pestanas button[aria-selected="true"]{background:var(--tm-verde);color:var(--tm-crema);box-shadow:none}
.tm-indice{position:sticky;top:80px;background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);padding:16px;font-size:.82rem;max-height:calc(100vh - 110px);overflow:auto}
@media (max-width:900px){.tm-indice{position:static;max-height:260px}}
.tm-indice ol{margin:8px 0 0;padding-left:0;list-style:none;display:grid;gap:6px}
.tm-indice a{text-decoration:none;color:var(--tm-texto-suave)}
.tm-indice a:hover{color:var(--tm-verde);text-decoration:underline}
.tm-documento{background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio);padding:clamp(20px,4vw,48px);font-size:.98rem;line-height:1.65;min-width:0}
.tm-documento h1{font-size:clamp(1.9rem,3.4vw,2.6rem);line-height:1.05;margin-bottom:12px}
.tm-documento h2{font-size:clamp(1.35rem,2.2vw,1.7rem);margin:34px 0 10px}
.tm-documento h3{font-size:1.12rem;margin:22px 0 6px}
.tm-documento p,.tm-documento li{max-width:72ch;color:var(--tm-verde)}
.tm-documento p{margin:0 0 12px}
.tm-documento ul,.tm-documento ol{margin:0 0 14px;padding-left:1.3em}
.tm-documento .tabla{overflow-x:auto;margin:6px 0 18px}
.tm-documento table{border-collapse:collapse;width:100%;font-size:.88rem;min-width:520px}
.tm-documento th,.tm-documento td{border:1px solid var(--tm-linea);padding:8px 10px;text-align:left;vertical-align:top}
.tm-documento thead tr:first-child th{background:var(--tm-crema)}
.tm-documento colgroup{display:none}
.tm-legal-meta{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;font-family:var(--tm-dato);font-size:.72rem;color:var(--tm-texto-suave);margin-bottom:18px}

/* v2.8 · políticas: columna con foto y lo más importante; letras más grandes */
.tm-legal-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:28px;align-items:start}
@media (max-width:980px){.tm-legal-grid{grid-template-columns:1fr}.tm-legal-lado{order:-1}}
.tm-legal-lado{position:sticky;top:96px;display:grid;gap:16px}
.tm-legal-lado img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:var(--tm-radio);display:block}
@media (max-width:980px){.tm-legal-lado img{aspect-ratio:16/9}}
.tm-legal-caja{background:var(--tm-tarjeta);border-radius:20px;padding:20px 22px;box-shadow:0 0 0 1px var(--tm-linea);display:grid;gap:10px}
.tm-legal-caja ul{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.tm .tm-legal-caja li b{display:block;font-family:var(--tm-subtitular);font-size:1.25rem;line-height:1.1}
.tm-legal-caja li span{font-size:.95rem;color:var(--tm-texto-suave);line-height:1.45}
.tm-legal-caja--verde{background:var(--tm-verde);color:var(--tm-crema);box-shadow:none}
.tm .tm-legal-caja--verde b{font-family:var(--tm-subtitular);font-size:1.35rem}
.tm .tm-legal-caja--verde a{color:var(--tm-amarillo);font-weight:700}
.tm-legal-caja--verde span{font-size:.9rem;opacity:.9}
.tm .tm-pol{background:var(--tm-tarjeta)}
.tm .tm-pol main{max-width:none;overflow-x:auto}
.tm .tm-legal-pestanas button{font-size:1.12rem;padding:.7em 1.3em}
.tm .tm-pol .botones button,.tm .tm-pol .botones a{font-size:1.08rem;padding:12px 22px}
.tm .tm-pol nav.indice a{font-size:1rem;padding:6px 15px}
.tm .tm-pol nav.indice p{font-size:.9rem}
.tm .tm-pol details summary{font-size:1.5rem}

/* 404 */
.tm-error{display:grid;place-items:center;text-align:center;gap:14px;padding-block:clamp(48px,8vw,110px)}
.tm-error .tm-sticker{position:static;--s:150px}

@media (prefers-reduced-motion:reduce){.tm-boton{transition:none}.tm-boton:hover{transform:none}}

/* ===== Portal de la aliada (/admin-pedidos, /admin-rutas, /ruta, /aliada-recibos) · v1.0 · 12 oct 2026
   Misma marca de la web pública. Prefijo tm-al-. Pensado primero para celular: la aliada lo usa en la bodega y en la ruta. */
.tm-al{background:var(--tm-crema);color:var(--tm-verde);font-family:var(--tm-cuerpo);font-size:1.0625rem;line-height:1.55;padding-bottom:48px}
.tm-al-cab{background:var(--tm-verde);color:var(--tm-crema)}
.tm-al-cab-in{max-width:1100px;margin:auto;padding:14px var(--tm-gutter);display:flex;align-items:center;gap:14px 22px;flex-wrap:wrap}
.tm-al-cab img{height:22px;width:auto;display:block}
.tm-al-cab-rol{font-family:var(--tm-dato);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--tm-amarillo)}
.tm-al-nav{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
.tm-al-nav a{font-family:var(--tm-subtitular);font-weight:700;font-size:1.05rem;color:var(--tm-crema);text-decoration:none;padding:.45em 1em;border-radius:var(--tm-pildora)}
.tm-al-nav a[aria-current="page"]{background:var(--tm-amarillo);color:var(--tm-verde)}
.tm-al-nav a:hover{background:rgba(243,232,204,.14)}
.tm-al-cuerpo{max-width:1100px;margin:auto;padding:28px var(--tm-gutter) 0;display:grid;gap:24px}
.tm-al-titulo h1{font-family:var(--tm-titular);font-weight:900;font-size:clamp(2rem,4.4vw,3rem);line-height:1;letter-spacing:-.02em;margin:.15em 0 .2em}
.tm-al-titulo p{margin:0;color:var(--tm-texto-suave);max-width:62ch}
.tm-al h2{font-family:var(--tm-subtitular);font-weight:800;font-size:1.65rem;line-height:1.1;margin:0}
.tm-al h3{font-family:var(--tm-subtitular);font-weight:800;font-size:1.3rem;line-height:1.15;margin:0}
.tm-al-tarjeta{background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio);padding:clamp(18px,3vw,26px);display:grid;gap:14px}
.tm-al-dato{font-family:var(--tm-dato)}
/* Línea del día: los tiempos del acuerdo */
.tm-al-reloj{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.tm-al-reloj li{background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);padding:12px;display:grid;gap:2px;font-size:.95rem}
.tm-al-reloj b{font-family:var(--tm-dato);font-size:1.05rem}
.tm-al-reloj li.ya{opacity:.6}
.tm-al-reloj li.ahora{background:var(--tm-amarillo);border-color:var(--tm-amarillo)}
@media (max-width:820px){.tm-al-reloj{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Acuse */
.tm-al-acuse{background:var(--tm-verde);color:var(--tm-crema);border:0}
.tm-al-acuse .tm-etiqueta{color:var(--tm-amarillo)}
.tm-al-acuse-cifras{display:flex;gap:10px 28px;flex-wrap:wrap}
.tm-al-acuse-cifras div{display:grid}
.tm-al-acuse-cifras b{font-family:var(--tm-titular);font-size:2.2rem;line-height:1}
.tm-al-acuse .tm-boton{justify-self:start}
.tm-al-acuse-ok{display:flex;gap:10px;align-items:center;font-family:var(--tm-subtitular);font-weight:700;font-size:1.15rem}
/* Cifras del día */
.tm-al-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.tm-al-kpis button{all:unset;cursor:pointer;background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);padding:14px 16px;display:grid;gap:2px}
.tm-al-kpis button[aria-pressed="true"]{box-shadow:inset 0 0 0 2px var(--tm-verde)}
.tm-al-kpis b{font-family:var(--tm-titular);font-size:2rem;line-height:1}
.tm-al-kpis span{font-size:.95rem;color:var(--tm-texto-suave)}
.tm-al-kpis div{background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);padding:14px;display:grid;gap:2px}
.tm-al-chips{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}
.tm-al-chips button{all:unset;cursor:pointer;background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:999px;padding:8px 14px;font-family:var(--tm-subtitular);font-weight:800;font-size:.95rem}
.tm-al-chips button[aria-pressed="true"]{background:var(--tm-amarillo);border-color:var(--tm-amarillo)}
@media (max-width:640px){.tm-al-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Lista de pedidos */
.tm-al-zona{display:grid;gap:10px}
.tm-al-zona>h3 small{font-family:var(--tm-cuerpo);font-weight:400;font-size:1rem;color:var(--tm-texto-suave)}
.tm-al-ped{background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);padding:14px 16px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 16px;align-items:center}
.tm-al-ped-nombre{font-family:var(--tm-subtitular);font-weight:800;font-size:1.2rem}
.tm-al-ped-info{font-size:.98rem;color:var(--tm-texto-suave)}
.tm-al-ped-acc{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.tm-al-ped-acc .tm-boton{min-width:150px;padding:.7em 1.2em}
@media (max-width:640px){.tm-al-ped{grid-template-columns:minmax(0,1fr)}.tm-al-ped-acc{justify-content:stretch}.tm-al-ped-acc .tm-boton{flex:1 1 0}}
/* Productos en lista (Próximas entregas · 10-nov): nombre a la izquierda, kilos a la derecha */
.tm-al-prods{list-style:none;margin:8px 0 0;padding:0;border-top:1px solid var(--tm-linea)}
.tm-al-prods li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;padding:7px 0;border-bottom:1px dashed var(--tm-linea);font-size:.98rem}
.tm-al-prods li .nom{color:var(--tm-texto-suave)}
.tm-al-prods li .kg{font-family:var(--tm-dato);font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.tm-al-prods li.tot{border-bottom:0;border-top:1px solid var(--tm-linea);margin-top:2px;padding-top:9px;font-family:var(--tm-subtitular);font-weight:800}
.tm-al-prods li.tot .nom{color:inherit}
/* 10-nov · «Ver los N productos» y pasador de página de Próximas entregas:
   la tarjeta se queda corta (2 productos) y el resto se abre a demanda, así
   el Fruver no tiene que hacer scroll por listas que no necesita ver. */
.tm-al-prods li.tm-al-prods-mas{grid-template-columns:minmax(0,1fr);border-bottom:0;padding:6px 0 2px}
.tm-al-prods-mas .tm-cta-mas-boton{font-size:.95rem;font-weight:700;color:var(--tm-verde)}
.tm-al-prox-pag{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:center;padding:10px 0 2px}
.tm-al-prox-pag span{font-family:var(--tm-dato);font-size:.9rem;color:var(--tm-texto-suave)}
.tm-al-pag-btn{font-family:var(--tm-dato);font-size:.9rem;font-weight:700;color:var(--tm-verde);background:var(--tm-tarjeta);border:2px solid var(--tm-linea);border-radius:var(--tm-pildora);padding:.45em 1.1em;cursor:pointer;box-sizing:border-box}
.tm-al-pag-btn:hover:not([disabled]),.tm-al-pag-btn:focus-visible{border-color:var(--tm-verde)}
.tm-al-pag-btn:focus-visible{outline:2px solid var(--tm-verde);outline-offset:2px}
.tm-al-pag-btn[disabled]{opacity:.4;cursor:default}
/* Estados */
.tm-al-estado{display:inline-flex;align-items:center;gap:6px;font-family:var(--tm-dato);font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;padding:.35em .8em;border-radius:var(--tm-pildora);background:rgba(25,83,43,.1);white-space:nowrap}
.tm-al-estado::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}
.tm-al-estado--armar{background:#FFE9A8}
.tm-al-estado--ruta{background:#E4EEC0}
.tm-al-estado--entregado,.tm-al-estado--cerrado{background:var(--tm-verde);color:var(--tm-crema)}
.tm-al-estado--falta,.tm-al-estado--detenido{background:#FDD9C6;color:#9A3208}
.tm-al-estado--pagado{background:var(--tm-lima);color:var(--tm-verde)}
/* Armar un pedido */
.tm-al-armar{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:20px;align-items:start}
@media (max-width:860px){.tm-al-armar{grid-template-columns:minmax(0,1fr)}}
.tm-al-linea{border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);background:#fff;padding:14px 16px;display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:4px 14px;align-items:center}
.tm-al-linea-nombre{font-family:var(--tm-subtitular);font-weight:800;font-size:1.15rem}
.tm-al-linea-rango{font-size:.95rem;color:var(--tm-texto-suave)}
.tm-al-linea label{grid-column:2;grid-row:1/span 2;display:grid;gap:4px;font-size:.85rem;font-family:var(--tm-dato);text-transform:uppercase;letter-spacing:.04em}
.tm-al-linea input{font:700 1.25rem var(--tm-dato);color:var(--tm-verde);border:2px solid var(--tm-linea);border-radius:12px;padding:.45em .6em;width:100%;box-sizing:border-box;background:var(--tm-crema)}
.tm-al-linea-msg{grid-column:1/-1;font-size:.95rem;font-weight:700}
.tm-al-linea.ok input{border-color:var(--tm-lima)}
.tm-al-linea.ok .tm-al-linea-msg{color:#3d5a00}
.tm-al-linea.fuera{border-color:var(--tm-naranja)}
.tm-al-linea.fuera input{border-color:var(--tm-naranja)}
.tm-al-linea.fuera .tm-al-linea-msg{color:#9A3208}
.tm-al-linea.cortesia{background:#FFF7DC;border-style:dashed}
@media (max-width:520px){.tm-al-linea{grid-template-columns:minmax(0,1fr)}.tm-al-linea label{grid-column:1;grid-row:auto}}
.tm-al-foto{border:2px dashed var(--tm-linea);border-radius:var(--tm-radio-s);background:#fff;min-height:170px;display:grid;place-items:center;text-align:center;padding:18px;gap:8px;cursor:pointer}
.tm-al-foto b{font-family:var(--tm-subtitular);font-size:1.15rem}
.tm-al-foto.lista{border-style:solid;padding:0;overflow:hidden}
.tm-al-foto.lista img{width:100%;height:220px;object-fit:cover;display:block}
.tm-al-falta{background:#FDD9C6;color:#7a2806;border-radius:var(--tm-radio-s);padding:12px 14px;font-size:.98rem}
.tm-al-falta b{display:block;font-family:var(--tm-subtitular);font-size:1.1rem}
.tm-al-boton-bloq{opacity:.45;pointer-events:none}
.tm-al-grupo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.tm-al-grupo>.tm-boton{width:100%}
@media (max-width:520px){.tm-al-grupo{grid-template-columns:minmax(0,1fr)}}
/* Entregar */
.tm-al-entregar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start}
@media (max-width:860px){.tm-al-entregar{grid-template-columns:minmax(0,1fr)}}
.tm-al-campo{display:grid;gap:6px}
.tm-al-campo>span{font-family:var(--tm-dato);font-size:.82rem;letter-spacing:.05em;text-transform:uppercase}
.tm-al-campo input[type=text],.tm-al-campo select,.tm-al-campo textarea{font:1.05rem var(--tm-cuerpo);color:var(--tm-verde);border:2px solid var(--tm-linea);border-radius:12px;padding:.6em .75em;background:#fff}
.tm-al-firma{height:110px;border:2px solid var(--tm-linea);border-radius:12px;background:#fff;position:relative}
.tm-al-firma::after{content:"Firma aquí";position:absolute;left:14px;bottom:10px;font-size:.9rem;color:rgba(25,83,43,.45)}
.tm-al-check{display:flex;gap:10px;align-items:center;font-size:1rem}
.tm-al-check input{width:20px;height:20px;accent-color:var(--tm-verde)}
/* Recibos */
.tm-al-recibos{display:grid;gap:10px}
.tm-al-rec{display:grid;grid-template-columns:minmax(0,1.3fr) repeat(3,minmax(0,1fr)) auto;gap:6px 16px;align-items:center;background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);padding:14px 16px}
.tm-al-rec small{display:block;font-size:.85rem;color:var(--tm-texto-suave)}
.tm-al-rec .tm-al-dato{font-size:1.05rem;font-weight:700}
.tm-al-rec.head{background:none;border:0;padding:0 16px;font-family:var(--tm-dato);font-size:.78rem;letter-spacing:.05em;text-transform:uppercase}
@media (max-width:760px){.tm-al-rec{grid-template-columns:minmax(0,1fr);gap:4px}.tm-al-rec.head{display:none}.tm-al-rec [data-l]::before{content:attr(data-l) " · ";font-family:var(--tm-cuerpo);font-weight:400;font-size:.92rem;color:var(--tm-texto-suave)}.tm-al-rec>div:last-child{margin-top:6px}}
.tm .tm-al .tm-boton{font-size:1.2rem}
.tm-al-foto b{font-size:1.25rem}
.tm-al-recibo{background:#fff;border:1px solid var(--tm-linea);border-radius:var(--tm-radio);padding:clamp(18px,3vw,30px);display:grid;gap:16px}
.tm-al-recibo-cab{display:flex;justify-content:space-between;gap:12px 24px;flex-wrap:wrap;align-items:flex-start;border-bottom:2px solid var(--tm-verde);padding-bottom:14px}
.tm-al-recibo-cab img{height:22px}
.tm-al-recibo-cab dl{margin:0;display:grid;grid-template-columns:auto auto;gap:2px 14px;font-size:.95rem}
.tm-al-recibo-cab dt{color:var(--tm-texto-suave)}
.tm-al-recibo-cab dd{margin:0;font-family:var(--tm-dato);font-weight:700;text-align:right}
.tm-al-tabla{width:100%;border-collapse:collapse;font-size:.98rem}
.tm-al-tabla th{font-family:var(--tm-dato);font-size:.76rem;letter-spacing:.05em;text-transform:uppercase;text-align:left;padding:8px 10px;border-bottom:1px solid var(--tm-linea);font-weight:700}
.tm-al-tabla td{padding:9px 10px;border-bottom:1px dashed var(--tm-linea);vertical-align:top}
.tm-al-tabla td.n,.tm-al-tabla th.n{text-align:right;font-family:var(--tm-dato);white-space:nowrap}
.tm-al-tabla tr.ped td{font-family:var(--tm-subtitular);font-weight:800;font-size:1.05rem;background:var(--tm-tarjeta);border-bottom:0}
.tm-al-tabla tr.desc td{color:#9A3208}
.tm-al-tabla-env{overflow-x:auto}
.tm-al-totales{display:grid;gap:6px;justify-self:end;min-width:min(100%,360px)}
.tm-al-totales div{display:flex;justify-content:space-between;gap:16px;font-size:1rem}
.tm-al-totales div span:last-child{font-family:var(--tm-dato)}
.tm-al-totales .total{border-top:2px solid var(--tm-verde);padding-top:8px;font-family:var(--tm-subtitular);font-weight:800;font-size:1.45rem}
.tm-al-aviso{background:var(--tm-tarjeta);border-left:4px solid var(--tm-amarillo);border-radius:8px;padding:12px 14px;font-size:.98rem}
.tm-al-factura{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
@media (max-width:640px){.tm-al-factura{grid-template-columns:minmax(0,1fr)}}
/* Contadora */
.tm-al-cont{display:grid;grid-template-columns:28px minmax(0,1.2fr) minmax(0,1fr) minmax(0,.8fr) minmax(0,1fr);gap:6px 14px;align-items:center;background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);padding:12px 16px}
.tm-al-cont.head{background:none;border:0;font-family:var(--tm-dato);font-size:.78rem;letter-spacing:.05em;text-transform:uppercase;padding:0 16px}
.tm-al-cont input[type=text]{font:1rem var(--tm-dato);border:2px solid var(--tm-linea);border-radius:10px;padding:.4em .6em;width:100%;box-sizing:border-box;background:#fff;color:var(--tm-verde)}
@media (max-width:760px){.tm-al-cont{grid-template-columns:28px minmax(0,1fr)}.tm-al-cont>*:nth-child(n+3){grid-column:2}.tm-al-cont.head{display:none}}
/* ===== Panel de administración (/admin y sus pantallas) · v1.0 · 12 oct 2026. Prefijo tm-ad-; usa también las piezas tm-al-. */
.tm-ad-marco{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100%}
.tm-ad-lado{background:var(--tm-verde);color:var(--tm-crema);padding:22px 14px;display:grid;align-content:start;gap:4px}
.tm-ad-lado img{height:20px;width:auto;margin:0 8px 18px}
.tm-ad-lado small{font-family:var(--tm-dato);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--tm-amarillo);margin:14px 8px 4px}
.tm-ad-lado a{font-family:var(--tm-subtitular);font-weight:700;font-size:1.08rem;color:var(--tm-crema);text-decoration:none;padding:.5em .8em;border-radius:12px}
.tm-ad-lado a[aria-current="page"]{background:var(--tm-amarillo);color:var(--tm-verde)}
.tm-ad-lado a:hover{background:rgba(243,232,204,.12)}
.tm-ad-lado a b{float:right;font-family:var(--tm-dato);font-size:.8rem;background:var(--tm-naranja);color:#fff;border-radius:999px;padding:.1em .55em}
@media (max-width:900px){.tm-ad-marco{grid-template-columns:minmax(0,1fr)}.tm-ad-lado{display:flex;overflow-x:auto;gap:6px;padding:12px}.tm-ad-lado img,.tm-ad-lado small{display:none}.tm-ad-lado a{white-space:nowrap}}
.tm-ad .tm-al-cuerpo{max-width:1180px;margin:0}
.tm-ad-barra{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.tm-ad-pills{display:flex;gap:6px;flex-wrap:wrap}
.tm-ad-pills button{font-family:var(--tm-subtitular);font-weight:700;font-size:1.05rem;color:var(--tm-verde);background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:999px;padding:.45em 1em;cursor:pointer}
.tm-ad-pills button[aria-pressed="true"]{background:var(--tm-verde);color:var(--tm-crema);border-color:var(--tm-verde)}
.tm-ad-barra .tm-boton{margin-left:auto}
.tm-ad-tabla{background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio);overflow-x:auto}
.tm-ad-tabla table{width:100%;border-collapse:collapse;font-size:1rem;min-width:720px}
.tm-ad-tabla th{font-family:var(--tm-dato);font-size:.76rem;letter-spacing:.05em;text-transform:uppercase;text-align:left;padding:12px 14px;border-bottom:1px solid var(--tm-linea)}
.tm-ad-tabla td{padding:12px 14px;border-bottom:1px dashed var(--tm-linea);vertical-align:middle}
.tm-ad-tabla tr:last-child td{border-bottom:0}
.tm-ad-tabla td.n,.tm-ad-tabla th.n{text-align:right;font-family:var(--tm-dato);white-space:nowrap}
.tm-ad-tabla td b{font-family:var(--tm-subtitular);font-size:1.08rem}
.tm-ad-tabla small{display:block;color:var(--tm-texto-suave);font-size:.88rem}
.tm-ad-acc{display:flex;gap:6px;flex-wrap:wrap}
.tm-ad-mini{font-family:var(--tm-subtitular);font-weight:700;font-size:.98rem;color:var(--tm-verde);background:transparent;border:2px solid var(--tm-verde);border-radius:999px;padding:.3em .9em;cursor:pointer;white-space:nowrap;text-decoration:none}
.tm-ad-mini--amarillo{background:var(--tm-amarillo);border-color:var(--tm-amarillo)}
.tm-ad-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.tm-ad-kpis div{background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);padding:14px 16px;display:grid;gap:2px}
.tm-ad-kpis span{font-family:var(--tm-dato);font-size:.74rem;letter-spacing:.05em;text-transform:uppercase}
.tm-ad-kpis b{font-family:var(--tm-titular);font-size:2rem;line-height:1.05}
.tm-ad-kpis small{font-size:.9rem;color:var(--tm-texto-suave)}
@media (max-width:760px){.tm-ad-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
.tm-ad-dos{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:18px;align-items:start}
@media (max-width:980px){.tm-ad-dos{grid-template-columns:minmax(0,1fr)}}
.tm-ad-alertas{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.tm-ad-alertas li a{display:flex;justify-content:space-between;gap:12px;align-items:center;background:#fff;border:1px solid var(--tm-linea);border-radius:12px;padding:12px 14px;color:var(--tm-verde);text-decoration:none}
.tm-ad-alertas li a b{font-family:var(--tm-titular);font-size:1.5rem;min-width:1.6em}
.tm-ad-alertas li.urge a{border-color:var(--tm-naranja);background:#FFF1E8}
.tm-ad-top{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.tm-ad-top li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;font-size:1rem}
.tm-ad-top i{grid-column:1/-1;height:8px;border-radius:99px;background:rgba(25,83,43,.12);overflow:hidden}
.tm-ad-top i::before{content:"";display:block;height:100%;width:var(--w);background:var(--tm-lima)}
.tm-ad-roles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.tm-ad-roles div{background:#fff;border:1px solid var(--tm-linea);border-radius:12px;padding:12px 14px;font-size:.95rem}
.tm-ad-roles b{display:block;font-family:var(--tm-subtitular);font-size:1.1rem}
@media (max-width:760px){.tm-ad-roles{grid-template-columns:minmax(0,1fr)}}
.tm-ad select{font:1rem var(--tm-cuerpo);color:var(--tm-verde);border:2px solid var(--tm-linea);border-radius:10px;padding:.35em .5em;background:#fff}

/* ===== PLANIFICADOR (extraído de la 23a) ===== */
.tm-paso-botones>.tm-boton,.tm-cta-acciones>.tm-boton,.tm-bolsa-pie>.tm-boton,.tm-pl-acciones>*,.tm-pl-nav>*{white-space:nowrap}
/* v2.7 · el planificador */
.tm-pl{max-width:880px}
.tm-pl-barra{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;font-family:var(--tm-dato);font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:var(--tm-texto-suave);margin-bottom:8px}
.tm-pl-barra span{text-align:center}
.tm-pl-barra span.on{color:var(--tm-verde);font-weight:700}
.tm-pl-progreso{height:8px;border-radius:999px;background:var(--tm-crema);box-shadow:inset 0 0 0 1px var(--tm-linea);overflow:hidden;margin-bottom:26px}
.tm-pl-progreso i{display:block;height:100%;width:0;background:var(--tm-naranja);border-radius:999px;transition:width .3s ease}
.tm-pl-paso{background:var(--tm-tarjeta);border-radius:24px;padding:clamp(22px,4vw,40px);box-shadow:0 0 0 1px var(--tm-linea);display:grid;gap:18px}
.tm .tm-pl-paso h2{font-size:clamp(1.9rem,3.4vw,2.6rem);line-height:1}
.tm-pl-num{font-family:var(--tm-dato);font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;color:var(--tm-naranja)}
.tm-pl-entrada{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:clamp(20px,4vw,44px);align-items:start}
.tm-pl-entrada>div{display:grid;gap:14px}
.tm-pl-entrada p{color:var(--tm-texto-suave);line-height:1.6}
.tm-pl-entrada p b{color:var(--tm-verde)}
.tm-pl-promesas{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.tm-pl-promesas li{background:var(--tm-crema);border-radius:16px;padding:16px 18px;display:grid;gap:6px}
.tm .tm-pl-promesas b{font-family:var(--tm-subtitular);font-size:1.3rem;line-height:1.1}
.tm-pl-promesas span{font-size:.92rem;color:var(--tm-texto-suave);line-height:1.5}
.tm-pl-corto{justify-self:start;font-size:.92rem}
.tm-pl-acciones,.tm-pl-nav{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:12px;width:max-content;max-width:100%}
.tm-pl-acciones>*,.tm-pl-nav>*{width:100%}
.tm-pl-nav{margin-top:6px}
.tm-pl-contador{display:inline-flex;align-items:center;gap:14px}
.tm-pl-contador button{width:48px;height:48px;border-radius:50%;border:0;background:var(--tm-crema);box-shadow:inset 0 0 0 2px var(--tm-verde);color:var(--tm-verde);font-family:var(--tm-cuerpo);font-weight:700;font-size:1.6rem;cursor:pointer;line-height:1;display:grid;place-items:center;padding:0}
.tm-pl-contador button:disabled{opacity:.35;cursor:default}
.tm-pl-contador output{font-family:var(--tm-titular);font-weight:900;font-size:2.6rem;min-width:1.4em;text-align:center;color:var(--tm-verde);line-height:1;padding-top:.12em}
.tm-pl-contador span,.tm-pl-contador small{font-family:var(--tm-subtitular);font-size:1.15rem;color:var(--tm-verde)}
.tm-pl-edades,.tm-pl-comidas{display:grid;gap:10px}
.tm-pl-edad{display:flex;justify-content:space-between;align-items:center;gap:14px;background:var(--tm-crema);border-radius:16px;padding:10px 14px 10px 18px}
.tm .tm-pl-edad>span{font-family:var(--tm-subtitular);font-size:1.25rem;color:var(--tm-verde)}
.tm-pl-edad .tm-pl-contador{gap:10px}
.tm-pl-edad .tm-pl-contador button{width:40px;height:40px;font-size:1.4rem}
.tm-pl-edad .tm-pl-contador output{font-size:1.9rem}
.tm-pl-opciones{display:flex;flex-wrap:wrap;gap:10px}
.tm-pl-opciones button,.tm-pl-grupo{border:0;background:var(--tm-crema);box-shadow:inset 0 0 0 1.5px var(--tm-linea);border-radius:999px;padding:.7em 1.2em;font-family:var(--tm-subtitular);font-weight:700;font-size:1.05rem;color:var(--tm-verde);cursor:pointer}
.tm-pl-opciones button[aria-pressed="true"],.tm-pl-grupo[aria-pressed="true"]{background:var(--tm-verde);color:var(--tm-crema);box-shadow:none}
/* P9: la opción excluyente marcada bloquea el resto del grupo (data-excluye). */
.tm-pl-opciones button:disabled,.tm-pl-grupos button:disabled{opacity:.45;cursor:not-allowed;background:var(--tm-crema);color:var(--tm-texto-suave);box-shadow:inset 0 0 0 1.5px var(--tm-linea)}
.tm-pl-grupos{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.tm-pl-grupo{border-radius:16px;padding:10px;display:grid;gap:8px;text-align:left;align-content:start;font-size:.98rem;line-height:1.15}
.tm-pl-grupo img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:10px;display:block}
.tm-pl-grupos--no .tm-pl-grupo[aria-pressed="true"]{background:var(--tm-rojo)}
.tm-pl-buscar{position:relative}
.tm-pl-sugeridos{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.tm-pl-sugeridos button{border:0;background:var(--tm-crema);border-radius:999px;padding:.45em .9em;font:inherit;font-size:.9rem;color:var(--tm-verde);cursor:pointer;box-shadow:inset 0 0 0 1px var(--tm-linea)}
.tm-pl-elegidos{display:flex;flex-wrap:wrap;gap:8px}
.tm-pl-elegidos:empty{display:none}
.tm-pl-chip{display:inline-flex;align-items:center;gap:8px;background:var(--tm-verde);color:var(--tm-crema);border-radius:999px;padding:.45em .5em .45em 1em;font-family:var(--tm-subtitular);font-weight:700}
.tm-pl-chip button{border:0;background:var(--tm-crema);color:var(--tm-verde);border-radius:999px;padding:.2em .7em;font:inherit;font-size:.8rem;cursor:pointer}
.tm-pl-chip button[aria-pressed="true"]{background:var(--tm-rojo);color:var(--tm-crema)}
.tm-pl-chip .tm-pl-x{background:transparent;color:var(--tm-crema);font-size:1rem;padding:.1em .4em}
/* P8 · grupo completo y campo de condición de salud */
.tm-pl-chip--grupo{box-shadow:inset 0 0 0 2px var(--tm-amarillo)}
.tm-pl-chip small{font-family:inherit;font-weight:400;font-size:.72rem;opacity:.85}
.tm-pl-sug-grupo small{display:block;font-size:.72rem;color:var(--tm-texto-suave)}
.tm-pl-salud{margin:16px 0;padding:14px 16px;border-radius:16px;background:var(--tm-crema);box-shadow:inset 0 0 0 1.5px var(--tm-linea);display:grid;gap:10px}
.tm-pl-salud .tm-suave{margin:0;font-size:.92rem;line-height:1.5}
.tm-pl-anota{display:flex;gap:10px;flex-wrap:wrap;align-items:stretch}
.tm-pl-anota input{flex:1 1 240px;min-width:0}
.tm-pl-anota .tm-boton{flex:0 0 auto}
/* P8 · chip de categoría entera («Frutas»), de guía de salud y de lo que se revisa a mano */
.tm-pl-chip--cat{box-shadow:inset 0 0 0 2px var(--tm-amarillo);outline:2px dashed var(--tm-crema);outline-offset:-6px}
.tm-pl-chip--cond{background:var(--tm-verde);box-shadow:inset 0 0 0 2px var(--tm-crema)}
.tm-pl-chip--manual{background:transparent;color:var(--tm-texto);box-shadow:inset 0 0 0 2px var(--tm-linea)}
.tm-pl-chip--manual button{background:var(--tm-verde);color:var(--tm-crema)}
.tm-pl-chip--manual .tm-pl-x{background:transparent;color:var(--tm-texto-suave)}
.tm-pl-cruz{background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:16px;padding:14px 16px;margin-top:12px;display:grid;gap:10px}
.tm-pl-cruz p{margin:0;font-size:.95rem;line-height:1.55;color:var(--tm-verde)}
.tm-pl-cruz .tm-suave{color:var(--tm-texto-suave);font-size:.88rem}
.tm-pl-msg{background:var(--tm-crema);border-left:4px solid var(--tm-amarillo);border-radius:10px;padding:12px 16px;font-size:.95rem;color:var(--tm-verde)}
.tm-pl-msg[hidden]{display:none}
.tm-pl-nota{margin:0;background:var(--tm-crema);border-left:4px solid var(--tm-amarillo);border-radius:10px;padding:12px 16px;font-size:.95rem;color:var(--tm-verde)}
.tm-error-form{margin:0;color:var(--tm-rojo);font-size:.88rem;font-weight:600}
.tm-error-form[hidden]{display:none}
.tm-pl-legal{background:var(--tm-crema);border-radius:14px;padding:16px 18px;font-size:.95rem;line-height:1.6;color:var(--tm-verde)}
.tm-pl-nav--igual{grid-auto-columns:minmax(0,1fr)}
.tm-pl-resumen{display:grid;gap:0;margin:0}
.tm-pl-resumen>div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr) auto;gap:14px;align-items:baseline;padding:12px 0;border-bottom:1px dashed var(--tm-linea)}
.tm .tm-pl-resumen dt{font-family:var(--tm-subtitular);font-size:1.1rem;color:var(--tm-verde)}
.tm-pl-resumen dd{margin:0;color:var(--tm-texto-suave);font-size:.95rem}
.tm-pl-resumen button{border:0;background:none;color:var(--tm-verde);text-decoration:underline;text-underline-offset:3px;font:inherit;font-size:.88rem;cursor:pointer}
.tm-pl-aviso{font-size:.88rem;color:var(--tm-texto-suave);background:var(--tm-crema);border-radius:12px;padding:12px 16px}
.tm-pl-res{display:grid;gap:18px}
.tm-pl-res-cab{display:grid;gap:8px}
.tm .tm-pl-orientativa{font-family:var(--tm-dato);font-size:.78rem;color:var(--tm-verde);background:var(--tm-amarillo);border-radius:10px;padding:.6em .9em;justify-self:start}
.tm-pl-lineas{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.tm-pl-lineas li{display:grid;grid-template-columns:56px minmax(0,1fr) auto;gap:14px;align-items:center;background:var(--tm-crema);border-radius:14px;padding:8px 14px 8px 8px}
.tm-pl-lineas img{width:56px;height:56px;border-radius:10px;object-fit:cover;display:block}
.tm .tm-pl-lineas b{font-family:var(--tm-subtitular);font-size:1.15rem;display:block;line-height:1.1}
.tm-pl-lineas small{display:block;font-size:.84rem;color:var(--tm-texto-suave);margin-top:3px}
.tm-pl-lineas .val{text-align:right;font-family:var(--tm-dato);font-size:.85rem;color:var(--tm-verde)}
.tm-pl-lineas .val em{display:block;font-style:normal;color:var(--tm-texto-suave);font-size:.75rem}
.tm-pl-sep{font-family:var(--tm-dato);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--tm-naranja);background:none !important;padding:8px 0 0 !important;display:block !important}
.tm-pl-avisos{display:grid;gap:8px}
.tm-pl-avisos:empty{display:none}
.tm-pl-suma{display:grid;gap:6px;margin:0;border-top:2px solid var(--tm-verde);padding-top:12px}
.tm-pl-suma>div{display:flex;justify-content:space-between;gap:12px;font-size:.95rem;color:var(--tm-texto-suave)}
.tm-pl-suma dd{margin:0;font-family:var(--tm-dato);color:var(--tm-verde)}
.tm-pl-suma .total{font-family:var(--tm-titular);font-weight:900;font-size:1.5rem;color:var(--tm-verde)}
.tm-pl-suma .total dd{font-family:var(--tm-titular);font-size:1.5rem}
.tm-pl-m10{font-size:.92rem;color:var(--tm-verde);font-weight:600}
@media (max-width:700px){
  .tm-pl-entrada{grid-template-columns:1fr}
.tm-pl-barra{font-size:.56rem}
.tm-pl-acciones,.tm-pl-nav{grid-auto-flow:row;width:100%}
.tm-pl-resumen>div{grid-template-columns:1fr auto}
.tm-pl-resumen dd{grid-column:1/-1;grid-row:2}
.tm-pl-grupos{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ===== Ventana de registro (modal) ===== */
/* El velo es suave a propósito: la web tiene que seguir viéndose detrás. */
.tm-ventana-overlay{position:fixed;inset:0;z-index:1200;background:rgba(26,18,8,.38);display:flex;align-items:flex-start;justify-content:center;padding:24px;overflow-y:auto}
.tm-ventana-overlay[hidden]{display:none}
/* Balanceo lento («un banner que flota y se mueve un poquito»): 6 px en 8 s.
   Con `prefers-reduced-motion` se queda quieto (ver el final del bloque). */
@keyframes tm-ventana-flota{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
/* `hidden` no basta aquí: .tm-modal-cuerpo trae display:grid y le gana al estilo
   del navegador, así que el panel de «cuenta creada» se pintaba como una franja
   vacía de 40 px debajo del formulario. */
.tm-ventana-overlay .tm-modal [hidden]{display:none}
/* Tarjeta compacta: 920 → 760 → 600 px, y con alto máximo para que nunca ocupe
   la pantalla entera (así se ve la web arriba, abajo y a los lados). `margin:auto`
   la centra; la foto se queda quieta y solo baja el formulario. */
.tm-ventana-overlay .tm-modal{width:100%;max-width:600px;margin:auto;border-radius:18px;grid-template-columns:.72fr 1.28fr;grid-template-rows:minmax(0,1fr);max-height:min(88dvh,720px);overflow:hidden;box-shadow:0 22px 55px rgba(26,18,8,.28),0 0 0 1px var(--tm-linea);animation:tm-ventana-flota 8s ease-in-out infinite}
.tm-ventana-overlay .tm-modal-cuerpo{padding:clamp(14px,1.8vw,20px);gap:6px;min-height:0;overflow-y:auto;overscroll-behavior:contain}
.tm-ventana-overlay .tm-modal h2{font-size:clamp(1.9rem,3.1vw,2.5rem);line-height:.98}
/* La etiqueta del momento es larga y el ✕ vive encima: se le deja el hueco
   a la derecha para que no pase por debajo del botón. */
.tm-ventana-overlay .tm-modal-cuerpo > .tm-etiqueta{padding-right:26px}
/* Los tres chips del momento van en una sola fila. Con la letra del prototipo
   (.78rem) los tres pedían 360px y el renglón solo tiene ~334px en la tarjeta
   de 600px, así que «Pausas cuando quieras» se caía a una segunda fila. Se baja
   la letra un punto y se aprieta el relleno: entran los tres en una fila sin
   partir ninguna pastilla por la mitad. Si algún día no cupieran, el contenedor
   sigue partiendo en dos filas en vez de desbordarse. */
.tm-ventana-overlay .tm-chip{font-size:clamp(.65rem,2.55vw,.7rem);padding:.42em .55em;line-height:1.2;white-space:nowrap}
.tm-ventana-overlay .tm-modal-foto{min-height:190px}
.tm-ventana-overlay .tm-modal-cerrar{top:8px;right:8px;width:32px;height:32px;font-size:1rem}
/* Pista de que el formulario sigue abajo: sombra suave al pie de la tarjeta. */
.tm-ventana-overlay .tm-modal::after{content:"";position:absolute;left:0;right:0;bottom:0;height:22px;pointer-events:none;background:linear-gradient(to top,rgba(26,18,8,.10),transparent)}
/* Barra fina: en escritorio avisa que hay más campos. */
.tm-ventana-overlay .tm-modal-cuerpo{scrollbar-width:thin;scrollbar-color:rgba(46,84,52,.35) transparent}
.tm-ventana-overlay .tm-modal-cuerpo::-webkit-scrollbar{width:6px}
.tm-ventana-overlay .tm-modal-cuerpo::-webkit-scrollbar-thumb{background:rgba(46,84,52,.3);border-radius:99px}
/* Letras y tamaños: los del prototipo 23a tal cual (etiqueta .74, chip .78,
   campo .92/1rem, casilla .76, letra al pie .74). Antes se encogían a .68/.72/.84/.93
   y por eso el texto no se parecía al del diseño aprobado. Los números se dejan
   en su sitio: la tarjeta sigue siendo la compacta de 600 px. */
/* El modal ya lleva la clase `tm` (ver main.js), así que los modificadores
   (.tm .tm-boton--amarillo / --verde) sí le llegan; se dejan repetidos como
   respaldo por si algún día la ventana se pinta fuera de `.tm`. */
.tm-ventana-overlay .tm-boton--amarillo{background:var(--tm-amarillo);color:var(--tm-verde)}
.tm-ventana-overlay .tm-boton--verde{background:var(--tm-verde);color:var(--tm-crema)}
.tm-ventana-msg{font-size:.8rem;color:var(--tm-rojo);min-height:1.2em;line-height:1.35}
/* Móvil: NO pantalla completa. Tarjeta flotante con margen, la web se ve
   arriba y abajo; la foto queda fija como cabecera y solo el formulario hace
   scroll, así el ✕ nunca se va de la vista al bajar. */
@media (max-width:820px){
.tm-ventana-overlay{padding:14px}
.tm-ventana-overlay .tm-modal{grid-template-columns:1fr;grid-template-rows:96px minmax(0,1fr);border-radius:16px;max-height:86vh;max-height:min(88dvh,640px)}
.tm-ventana-overlay .tm-modal-foto{min-height:96px;height:96px}
/* La franja es ancha y bajita (362x96 ≈ 3.8:1), así que `cover` recorta por
   el eje VERTICAL: aquí manda --tm-foto-pos-movil (la Y), con la que la foto
   enseña la cara y no el torso. En escritorio la columna es estrecha y alta
   (≈0.72fr), el recorte es HORIZONTAL y manda --tm-foto-pos (la X). */
.tm-ventana-overlay .tm-modal-foto > img{object-position:var(--tm-foto-pos-movil,var(--tm-foto-pos,50% 50%))}
.tm-ventana-overlay .tm-modal-cuerpo{padding:13px 15px 16px;-webkit-overflow-scrolling:touch}
.tm-ventana-overlay .tm-modal h2{font-size:clamp(1.7rem,7vw,2.15rem)}
.tm-ventana-overlay .tm-modal-cerrar{top:7px;right:7px;width:30px;height:30px;font-size:.95rem}
}
/* Teléfono acostado (ancho pero muy bajito): otra vez dos columnas, que una
   tira de foto de 96 px se come el poco alto que hay. */
@media (max-width:820px) and (orientation:landscape) and (min-width:560px){
.tm-ventana-overlay .tm-modal{grid-template-columns:.85fr 1.15fr;grid-template-rows:minmax(0,1fr)}
.tm-ventana-overlay .tm-modal-foto{height:auto;min-height:0}
}
@media (prefers-reduced-motion:reduce){
.tm-ventana-overlay .tm-modal{animation:none}
}

/* ===== Mi cuenta (tm-cta) + Ingresar (tm-login) · desde 23a ===== */

.tm-cta-cab{border-bottom:1px solid var(--tm-linea);background:var(--tm-crema)}

.tm-cta-cab-in{display:flex;align-items:center;gap:24px;padding-block:14px}

.tm-cta-logo img{height:20px;width:auto}

.tm-cta-nav{display:flex;gap:18px;font-family:var(--tm-subtitular);font-weight:700}

.tm .tm-cta-nav a{text-decoration:none}

.tm-cta-acc{margin-left:auto;display:flex;align-items:center;gap:12px}

.tm .tm-cta-bolsa{font-family:var(--tm-subtitular);font-weight:800;text-decoration:none;padding:.5em 1em;border-radius:999px;box-shadow:inset 0 0 0 2px var(--tm-verde)}

.tm-cta-bolsa b{display:inline-grid;place-items:center;min-width:1.5em;height:1.5em;border-radius:999px;background:var(--tm-amarillo);margin-left:4px;font-size:.8rem}

.tm-cta-yo,.tm-cta-perfil .tm-cta-avatar{display:grid;place-items:center;line-height:1;padding-top:.08em;box-sizing:border-box;text-align:center;width:38px;height:38px;border-radius:50%;background:var(--tm-naranja);color:var(--tm-crema);font-family:var(--tm-titular);font-weight:900;font-size:1.1rem}

/* 8-nov · Cabecera del panel (tm-cta-cab): en celular va en una linea. Antes el texto se partia
   (El / mercado) y la pildora «Tu mercado (N)» se volvia un circulo gigante: no habia
   white-space:nowrap ni reglas moviles. Escritorio intacto. */
.tm-cta-nav a, .tm .tm-cta-bolsa { white-space: nowrap; }
@media (max-width:860px){
  .tm-cta-cab-in{gap:12px;padding-block:10px}
  .tm-cta-logo img{height:18px}
  .tm-cta-nav{gap:12px;font-size:.92rem}
  .tm .tm-cta-bolsa{padding:.4em .8em;font-size:.92rem}
  .tm-cta-bolsa b{min-width:1.4em;height:1.4em;font-size:.75rem}
  .tm-cta-yo{width:32px;height:32px;font-size:.95rem}
}
@media (max-width:600px){
  .tm-cta-nav{display:none}
}
@media (max-width:400px){
  .tm-cta-cab-in{gap:10px}
  .tm-cta-logo img{height:16px}
  .tm .tm-cta-bolsa{padding:.35em .7em;font-size:.85rem}
}

/* Enlace «Mi cuenta» de la cabecera pública cuando hay sesión (27-oct: reemplaza
   al círculo con la inicial, que desaparecía a los 2 s por un temporizador
   huérfano). NO lleva la clase `.tm-ingresar` a propósito: el JS localiza
   «Ingresar» por esa clase para alternarlo con «Mi cuenta». Desde el 8-nov
   «Ingresar» sí se ve en celular (ver @media max-width:860px) y «Mi cuenta»
   también, porque nunca se oculta. */
.tm-header-acciones .tm-cuenta-enlace{text-decoration:none;white-space:nowrap;flex:none}

.tm-cta{display:grid;grid-template-columns:270px minmax(0,1fr);gap:clamp(18px,3vw,34px);align-items:start}

@media (max-width:900px){.tm-cta{grid-template-columns:1fr}}

.tm-cta-lado{background:var(--tm-tarjeta);border-radius:var(--tm-radio);padding:18px;display:grid;gap:16px;position:sticky;top:12px}

@media (max-width:900px){.tm-cta-lado{position:static}}

.tm-cta-perfil{display:flex;gap:12px;align-items:center}

.tm-cta-perfil .tm-cta-avatar{width:48px;height:48px;font-size:1.4rem;flex:none}

.tm-cta-perfil b{display:block;font-family:var(--tm-subtitular);font-size:1.1rem}

.tm-cta-perfil>div{min-width:0}

.tm-cta-perfil>div>span{display:block;font-size:.78rem;line-height:1.45;color:var(--tm-texto-suave);overflow-wrap:anywhere}

.tm-cta-perfil>div>span.tm-cta-dato{font-family:var(--tm-dato);font-size:.7rem;letter-spacing:.02em}

.tm-cta-menu{display:grid;gap:4px}

/* En móvil el menú ya no se sale de la tarjeta: antes era una sola fila con scroll
   horizontal y "Comprobantes" quedaba cortado sin que se notara que se podía deslizar. */
@media (max-width:900px){.tm-cta-menu{grid-auto-flow:row;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:4px;overflow:visible;padding-bottom:0}}

.tm-cta-menu button{all:unset;cursor:pointer;font-family:var(--tm-subtitular);font-weight:700;font-size:1rem;padding:.6em .9em;border-radius:12px}

.tm-cta-menu button:hover{background:var(--tm-crema)}

.tm-cta-menu button[aria-current="page"]{background:var(--tm-verde);color:var(--tm-crema)}

.tm-cta-menu button:focus-visible{outline:2px solid var(--tm-verde)}

.tm-cta-oculto{outline:2px dashed #D52518;outline-offset:2px}

.tm-cta-ayuda{display:grid;gap:2px;font-size:.84rem;border-top:1px solid var(--tm-linea);padding-top:14px}

.tm-cta-ayuda b{font-family:var(--tm-subtitular)}

.tm .tm-cta-ayuda a{font-weight:700}

.tm-cta-ayuda span{color:var(--tm-texto-suave);font-size:.78rem}

.tm .tm-cta-salir{all:unset;cursor:pointer;font-size:.85rem;color:var(--tm-texto-suave);text-decoration:underline;text-underline-offset:3px;justify-self:start}

.tm-cta-main{display:grid;gap:16px;min-width:0}

.tm-cta-aviso{display:flex;gap:14px;align-items:flex-start;background:var(--tm-amarillo);border-radius:16px;padding:14px 16px}

.tm-cta-aviso div{flex:1}

.tm-cta-aviso b{display:block;font-family:var(--tm-subtitular);font-size:1.05rem}

.tm-cta-aviso span{font-size:.9rem}

.tm-cta-aviso .tm-cerrar{background:rgba(255,255,255,.5);width:32px;height:32px;font-size:1.1rem}

.tm-cta-calif{display:flex;gap:14px 18px;align-items:center;flex-wrap:wrap;background:var(--tm-tarjeta);border-radius:16px;padding:14px 16px;box-shadow:inset 0 0 0 1px var(--tm-linea)}

.tm-cta-calif > div:first-child{flex:1 1 240px}

.tm-cta-calif b{display:block;font-family:var(--tm-subtitular);font-size:1.05rem}

.tm-cta-calif span{font-size:.86rem;color:var(--tm-texto-suave)}

.tm-cta-escala{display:flex;gap:6px}

.tm-cta-escala button{width:40px;height:40px;border-radius:50%;border:1.5px solid var(--tm-verde);background:transparent;color:var(--tm-verde);font-family:var(--tm-subtitular);font-weight:800;cursor:pointer}

.tm-cta-escala button:hover{background:var(--tm-amarillo);border-color:var(--tm-amarillo)}

.tm .tm-cta-hola{font-size:clamp(2.2rem,4.4vw,3.4rem);margin:4px 0 6px}

.tm-cta-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:16px;align-items:start}

@media (max-width:1100px){.tm-cta-grid{grid-template-columns:1fr}}

.tm-cta-sus{background:var(--tm-tarjeta);border-radius:var(--tm-radio);padding:clamp(18px,2.6vw,28px);display:grid;gap:12px;box-shadow:inset 0 0 0 1px var(--tm-linea)}

.tm-cta-sus-cab{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}

.tm-cta-estado{display:inline-flex;align-items:center;gap:7px;font-family:var(--tm-subtitular);font-weight:800;font-size:.9rem;background:var(--tm-crema);border-radius:999px;padding:.35em .9em}

.tm-cta-estado::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--tm-amarillo)}

.tm-cta-estado--ok::before{background:var(--tm-lima)}

.tm-cta-prox-et{font-size:.9rem;color:var(--tm-texto-suave);margin-top:4px}

.tm .tm-cta-prox{font-family:var(--tm-titular);font-weight:900;font-size:clamp(1.9rem,3.6vw,2.7rem);line-height:1}

.tm-cta-corte{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;background:var(--tm-verde);color:var(--tm-crema);border-radius:14px;padding:12px 14px;font-size:.92rem}

.tm-cta-reloj{font-family:var(--tm-dato);color:var(--tm-amarillo);font-weight:700}

.tm-cta-lineas{list-style:none;margin:0;padding:0;display:grid}

.tm-cta-lineas li{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--tm-linea);font-size:.92rem}

.tm-cta-lineas li b{font-variant-numeric:tabular-nums}

.tm-cta-lineas small{display:block;color:var(--tm-naranja);font-size:.78rem}

.tm-cta-mas{color:var(--tm-texto-suave);border-bottom:0!important}

/* «y N productos más» es un botón (31-oct): abre en la misma tarjeta las líneas
   que no caben. Se lee como el resto de la fila y solo se subraya al tocarlo. */
.tm-cta-mas-boton{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;gap:6px;padding:4px 0;cursor:pointer;font:inherit;color:inherit}

.tm-cta-mas-boton:hover,.tm-cta-mas-boton:focus-visible{color:var(--tm-verde);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1.5px}

.tm-cta-mas-boton:focus-visible{outline:2px solid var(--tm-verde);outline-offset:2px;border-radius:6px}

.tm-cta-mas-flecha{font-size:.78em;line-height:1;transition:transform .15s}

.tm-cta-mas-boton[aria-expanded="true"] .tm-cta-mas-flecha{transform:rotate(180deg)}

.tm-cta-total{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--tm-subtitular);font-weight:800;font-size:1.1rem}

.tm-cta-total b{font-family:var(--tm-titular);font-size:1.8rem}

.tm-cta-nota{font-size:.82rem;color:var(--tm-texto-suave)}

.tm-cta-acciones{display:flex;gap:10px;flex-wrap:wrap;align-items:center}

.tm-cta-secund{display:flex;gap:6px 18px;flex-wrap:wrap;border-top:1px solid var(--tm-linea);padding-top:12px}

.tm-cta-secund button,.tm-cta-secund a,.tm .tm-boton-texto{all:unset;cursor:pointer;font-family:var(--tm-subtitular);font-weight:700;font-size:.95rem;text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1.5px}

/* Los enlaces de esa fila son verdes y el subrayado engorda al pasar el mouse,
   para que se lean como acciones y no como texto cualquiera. */
.tm-cta-secund a{color:var(--tm-verde)}

.tm-cta-secund a:hover{text-decoration-thickness:2.5px}

.tm .tm-cta-cancelar{color:var(--tm-rojo)}

.tm-cta-sus--vacia h3{font-size:1.8rem}

.tm-cta-sus--vacia p{color:var(--tm-texto-suave);max-width:46ch}

.tm-cta-col{display:grid;gap:12px}

.tm-cta-saldo{background:var(--tm-verde);color:var(--tm-crema);border-radius:var(--tm-radio);padding:18px;display:grid;gap:6px}

.tm-cta-saldo .tm-etiqueta{color:var(--tm-amarillo)}

.tm-cta-saldo b{font-family:var(--tm-titular);font-weight:900;font-size:2.6rem;line-height:1;color:var(--tm-amarillo)}

.tm-cta-saldo p{font-size:.86rem}

.tm-cta-ult,.tm-cta-pasalo{background:var(--tm-tarjeta);border-radius:var(--tm-radio);padding:16px 18px;display:grid;gap:4px;box-shadow:inset 0 0 0 1px var(--tm-linea)}

.tm-cta-pasalo b{font-family:var(--tm-titular);font-size:1.5rem}

.tm-cta-pedidos{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:10px}

.tm-cta-ped{background:var(--tm-tarjeta);border-radius:16px;box-shadow:inset 0 0 0 1px var(--tm-linea);overflow:hidden}

.tm-cta-ped-cab{all:unset;cursor:pointer;box-sizing:border-box;width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;gap:12px;align-items:center;padding:14px 16px}

.tm-cta-ped-cab b{font-family:var(--tm-subtitular);font-size:1.05rem}

.tm-cta-ped-cab small{display:block;font-size:.8rem;color:var(--tm-texto-suave)}

.tm-cta-ped-total{font-variant-numeric:tabular-nums}

.tm-cta-flecha{font-size:1.4rem;transition:transform .15s}

.tm-cta-ped-cab[aria-expanded="true"] .tm-cta-flecha{transform:rotate(90deg)}

@media (max-width:600px){.tm-cta-ped-cab{grid-template-columns:minmax(0,1fr) auto}.tm-cta-ped-cab .tm-cta-chip{grid-row:2}.tm-cta-flecha{display:none}}

.tm-cta-ped-det{padding:0 16px 16px;display:grid;gap:12px}

.tm-cta-suma{list-style:none;margin:0;padding:0;display:grid;gap:4px;font-size:.9rem}

.tm-cta-suma li{display:flex;justify-content:space-between}

.tm-cta-suma-total{font-family:var(--tm-subtitular);font-weight:800;font-size:1.1rem;border-top:1px solid var(--tm-linea);padding-top:6px}

.tm-cta-ped-acc{display:flex;gap:10px 16px;flex-wrap:wrap;align-items:center;font-size:.84rem}

.tm-cta-chip{display:inline-block;font-family:var(--tm-dato);font-size:.7rem;letter-spacing:.03em;text-transform:uppercase;padding:.35em .8em;border-radius:999px;background:var(--tm-crema);white-space:nowrap}

.tm-cta-chip--ok{background:var(--tm-lima);color:var(--tm-verde)}

.tm-cta-chip--prox{background:var(--tm-amarillo);color:var(--tm-verde)}

.tm-cta-chip--ruta{background:var(--tm-naranja);color:var(--tm-crema)}

.tm-cta-chip--mal{background:var(--tm-rojo);color:var(--tm-crema)}

.tm-cta-estados{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:14px}

.tm-cta-pts{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:14px}

@media (max-width:860px){.tm-cta-pts{grid-template-columns:1fr}}

.tm-cta-pts-meta,.tm-cta-pts-nivel{background:var(--tm-tarjeta);border-radius:var(--tm-radio);padding:18px;display:grid;gap:10px;box-shadow:inset 0 0 0 1px var(--tm-linea)}

.tm-cta-pts-meta b{font-family:var(--tm-subtitular);font-size:1.2rem}

.tm-cta-pts-meta .tm-boton{justify-self:start}

.tm-cta-barra{height:12px;border-radius:999px;background:var(--tm-crema);overflow:hidden}

.tm-cta-barra span{display:block;height:100%;background:var(--tm-naranja)}

.tm-cta-pts-nivel{grid-template-columns:96px 1fr;align-items:center;background:var(--tm-amarillo)}

.tm-cta-pts-nivel b{display:block;font-family:var(--tm-titular);font-size:2rem;line-height:1}

.tm-cta-pts-nivel span{font-size:.86rem}

/* La mascota del nivel: la primera columna de la tarjeta mide 96 px, así que la
   imagen se acomoda a ese ancho (si no, entra en su tamaño natural y rompe la
   tarjeta). */
.tm-cta-pts-nivel img{width:100%;max-width:96px;height:auto;justify-self:center}

.tm .tm-cta-sub{font-size:1.4rem;margin:18px 0 10px}

.tm-cta-album{list-style:none;margin:0 0 14px;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}

@media (max-width:600px){.tm-cta-album{grid-template-columns:repeat(2,minmax(0,1fr))}}

.tm-cta-album li{background:var(--tm-tarjeta);border-radius:16px;padding:14px;display:grid;justify-items:center;gap:6px;font-family:var(--tm-subtitular);font-weight:700;text-align:center;opacity:.55;box-shadow:inset 0 0 0 1px var(--tm-linea)}

.tm-cta-album li.tengo{opacity:1}

.tm-cta-album small{font-family:var(--tm-dato);font-size:.68rem;color:var(--tm-naranja)}

.tm-cta-charm{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:var(--tm-crema);border:2px dashed var(--tm-naranja);font-family:var(--tm-dato);font-size:.8rem}

.tm-cta-album li.tengo .tm-cta-charm{border-style:solid;background:var(--tm-amarillo)}

.tm-cta-dirs,.tm-cta-pagos,.tm-cta-pref{list-style:none;margin:10px 0;padding:0;display:grid;gap:10px}

.tm-cta-dirs li,.tm-cta-pagos li,.tm-cta-pref li{background:var(--tm-tarjeta);border-radius:16px;padding:14px 16px;display:flex;gap:10px 16px;align-items:center;flex-wrap:wrap;box-shadow:inset 0 0 0 1px var(--tm-linea)}

.tm-cta-dirs li.principal{box-shadow:inset 0 0 0 2px var(--tm-verde)}

/* El chip dentro de una dirección hereda el estilo de los <span> de la lista
   (.84rem y color suave); aquí se devuelve al chip de verdad para que se lea. */
.tm-cta-dirs .tm-cta-chip{display:inline-block;font-size:.7rem;padding:.35em .8em;color:var(--tm-verde)}

.tm-cta-dirs li > div,.tm-cta-pagos li > div,.tm-cta-pref li > div{flex:1 1 220px}

.tm-cta-dirs b,.tm-cta-pagos b,.tm-cta-pref b{font-family:var(--tm-subtitular);font-size:1.02rem}

.tm-cta-dirs span,.tm-cta-pagos span,.tm-cta-pref span{display:block;font-size:.84rem;color:var(--tm-texto-suave)}

.tm-cta-form{background:var(--tm-tarjeta);border-radius:var(--tm-radio);padding:18px;display:grid;gap:12px;max-width:560px}

.tm-cta-form h3{font-size:1.3rem}

.tm-cta-zona{font-size:.88rem;font-weight:600;line-height:1.35;padding:9px 12px;border-radius:12px;background:rgba(25,83,43,.06)}

/* Cobertura que sí llega: verde lima suave con el texto en verde profundo. Antes
   iba en lima lleno y la línea pesaba más que el botón de guardar. */
.tm-cta-zona--ok{background:rgba(154,188,6,.2);color:var(--tm-verde)}

/* Cobertura que no llega: naranja suave, nunca rojo (el rojo es para errores). */
.tm-cta-zona--no{background:rgba(242,106,46,.16);color:var(--tm-verde)}

/* «¿De dónde salen mis puntos?»: el desglose no está en el prototipo, así que va
   plegado para no ensuciar la página de puntos. */
.tm-cta-detalle{margin-top:16px;font-size:.92rem}

.tm-cta-detalle summary{cursor:pointer;font-family:var(--tm-subtitular);font-weight:700;padding:6px 0;color:var(--tm-verde)}

.tm-cta-detalle .tm-cta-suma{margin-top:6px;max-width:440px}

.tm-cta-detalle .tm-cta-lineas{margin-top:6px;max-width:440px}

.tm-cta-tarjeta{max-width:340px;aspect-ratio:1.6;border-radius:18px;background:var(--tm-verde);color:var(--tm-crema);padding:20px;display:grid;align-content:space-between;margin:10px 0}

.tm-cta-tarjeta-marca{font-family:var(--tm-titular);font-size:1.3rem;color:var(--tm-amarillo)}

.tm-cta-tarjeta b{font-family:var(--tm-dato);font-size:1.3rem;letter-spacing:.08em}

.tm-cta-tarjeta span{font-size:.84rem}

.tm-cta-recibo{background:#fff;border-radius:16px;padding:22px;max-width:520px;display:grid;gap:12px;box-shadow:0 1px 0 var(--tm-linea),0 10px 30px rgba(25,83,43,.08);margin-top:10px}

.tm-cta-recibo-cab{display:flex;justify-content:space-between;align-items:center;border-bottom:2px solid var(--tm-naranja);padding-bottom:10px}

.tm-cta-recibo-cab img{height:18px;width:auto}

.tm-cta-recibo dl{display:grid;grid-template-columns:130px 1fr;gap:6px 12px;margin:0;font-size:.9rem}

.tm-cta-recibo dt{color:var(--tm-texto-suave)}

.tm-cta-recibo dd{margin:0}

.tm-cta-recibo-pie{font-size:.74rem;color:var(--tm-texto-suave)}

.tm-cta-recibo .tm-boton{justify-self:start}

.tm-cta-sw{width:50px;height:28px;border-radius:999px;border:0;background:var(--tm-linea);position:relative;cursor:pointer;flex:none}

.tm-cta-sw::after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:left .15s}

.tm-cta-sw[aria-checked="true"]{background:var(--tm-verde)}

.tm-cta-sw[aria-checked="true"]::after{left:25px}

/* Resalte temporal cuando «Cambiar →» de Mis datos lleva al interruptor. */
.tm-cta-sw--foco{box-shadow:0 0 0 4px rgba(255,201,38,.85);outline:2px solid var(--tm-verde);outline-offset:3px}

/* Mis autorizaciones (panel, Ley 1581): frases legibles, sin chips. */
.tm-aut{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:14px}
.tm-aut li{background:transparent;box-shadow:inset 0 0 0 1px var(--tm-linea);border-radius:16px;padding:14px 16px}
.tm-aut b{display:block;font-family:var(--tm-subtitular);font-size:1.02rem;color:var(--tm-verde)}
.tm-aut p{margin:4px 0 0;font-size:.9rem;color:var(--tm-texto-suave);line-height:1.55}
.tm-aut p strong{color:var(--tm-verde)}
.tm-aut .tm-boton-texto{margin-top:6px;padding:0}
.tm-aut-texto{margin-top:8px;font-size:.84rem;color:var(--tm-texto-suave)}
.tm-aut-texto summary{cursor:pointer;color:var(--tm-verde);font-weight:600}
.tm-aut-texto p{margin:6px 0 0;font-size:.84rem}

.tm-cta-dialogo{max-width:520px;display:grid;gap:14px}

.tm .tm-cta-dialogo h3{font-family:var(--tm-titular);font-weight:900;font-size:1.9rem;line-height:1;padding-right:30px}

.tm-cta-dialogo select,.tm-cta-dialogo textarea{font:inherit;color:var(--tm-verde);background:#fff;border:1.5px solid var(--tm-linea);border-radius:12px;padding:.7em .9em;width:100%}

.tm-cta-semanas{display:grid;grid-template-columns:repeat(8,1fr);gap:6px}

.tm-cta-semanas button{aspect-ratio:1;border-radius:12px;border:1.5px solid var(--tm-verde);background:transparent;color:var(--tm-verde);font-family:var(--tm-subtitular);font-weight:800;font-size:1.05rem;cursor:pointer}

.tm-cta-semanas button[aria-pressed="true"]{background:var(--tm-verde);color:var(--tm-crema)}

.tm-cta-fotos{display:flex;gap:8px}

.tm-cta-foto-add{display:grid;place-items:center;width:100px;height:80px;border-radius:12px;border:2px dashed var(--tm-linea);font-size:.84rem;font-weight:700}

.tm-cta-hilo{list-style:none;margin:0;padding:0;display:grid;gap:10px}

.tm-cta-hilo li{background:var(--tm-tarjeta);border-radius:14px;padding:12px;max-width:85%}

.tm-cta-hilo li.yo{justify-self:end;background:var(--tm-amarillo)}

.tm-cta-hilo b{font-family:var(--tm-dato);font-size:.72rem;text-transform:uppercase}

.tm-cta-hilo small{font-size:.72rem;color:var(--tm-texto-suave)}

.tm-cta-dosc{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:10px}

@media (max-width:760px){.tm-cta-dosc{grid-template-columns:1fr}}

.tm-cta-mal,.tm-cta-bien{border-radius:16px;padding:16px 18px;display:grid;gap:6px}

.tm-cta-mal{background:#F6D8D3;box-shadow:inset 0 0 0 2px var(--tm-rojo)}

.tm-cta-bien{background:var(--tm-tarjeta);box-shadow:inset 0 0 0 2px var(--tm-verde)}

.tm-cta-mal b,.tm-cta-bien b{font-family:var(--tm-subtitular);font-size:1.1rem}

.tm-cta-mal p,.tm-cta-bien p{font-size:.92rem}

.tm .tm-cta-ayuda b{display:block;font-size:1.15rem}

.tm .tm-cta-aviso b,.tm .tm-cta-calif b{font-size:1.4rem;line-height:1.1;margin-bottom:4px}

.tm-cta-mal>b,.tm-cta-bien>b{font-size:1.4rem}

/* v2.7 · los botones de un mismo grupo tienen el mismo tamaño */
.tm-paso-botones,.tm-cta-acciones,.tm-bolsa-pie{display:grid !important;grid-auto-flow:column;grid-auto-columns:1fr;gap:12px;width:max-content;max-width:100%;align-items:stretch}

.tm-paso-botones>.tm-boton,.tm-cta-acciones>.tm-boton,.tm-bolsa-pie>.tm-boton{width:100%;margin:0 !important;align-self:stretch}

.tm-paso-botones>.tm-boton,.tm-cta-acciones>.tm-boton,.tm-bolsa-pie>.tm-boton,.tm-pl-acciones>*,.tm-pl-nav>*{white-space:nowrap}

@media (max-width:600px){.tm-paso-botones,.tm-cta-acciones,.tm-bolsa-pie{grid-auto-flow:row;width:100%}}

/* «Así funciona» (index.html): la tarjeta del paso 1 lleva dos botones —«Arma tu
   mercado» y «Lo armamos contigo»— y mide unos 250 px de ancho. En fila el texto
   no cabe (se sale del marco), así que ahí se apilan uno debajo del otro, igual
   que en el prototipo. Va con alcance para no tocar los grupos del panel ni de la
   bolsa, que sí van en fila. */
.tm-pasos .tm-paso-botones{grid-auto-flow:row;width:100%}

/* «Mi cuenta» (panel.html): el contenido vive fuera de .tm —solo la cabecera va
   dentro—, así que los modificadores del botón (.tm .tm-boton--verde) no le
   llegaban y los CTA de la tarjeta salían sin color, como si fueran enlaces.
   Aquí repetimos los tres colores para ese contenedor. */
.tm-mi-cuenta .tm-boton--amarillo{background:var(--tm-amarillo);color:var(--tm-verde)}
.tm-mi-cuenta .tm-boton--verde{background:var(--tm-verde);color:var(--tm-crema)}
.tm-mi-cuenta .tm-boton--linea{background:transparent;color:var(--tm-verde);box-shadow:inset 0 0 0 2px var(--tm-verde)}
.tm-mi-cuenta .tm-boton[disabled]{opacity:.45;cursor:not-allowed;transform:none}
.tm-mi-cuenta .tm-cta-cancelar{color:var(--tm-rojo)}

/* Modal del panel («Mi cuenta»): vive FUERA de .tm, así que los modificadores
   del botón (.tm .tm-boton--amarillo / --linea) no le llegaban y los CTA
   salían como texto suelto. Aquí se repiten los colores y se añaden las
   píldoras de selección del cambio de día («Lunes · Martes · …» y «Cada
   semana / Cada 15 días»): texto en verde cuando no están escogidas y píldora
   verde llena con letra crema cuando sí, como en el prototipo. */
.tm-panel-modal{background:var(--tm-crema);color:var(--tm-verde);font-family:var(--tm-cuerpo);font-size:1rem;line-height:1.5;-webkit-font-smoothing:antialiased;border-radius:22px;padding:clamp(18px,4.4vw,28px);width:100%;max-width:460px;box-shadow:0 22px 55px rgba(26,18,8,.28)}
.tm-panel-modal h3{font-family:var(--tm-titular);font-weight:900;font-size:clamp(1.45rem,6.4vw,1.95rem);line-height:.98;letter-spacing:0;margin:0 0 18px;color:var(--tm-verde);text-wrap:balance}
.tm-panel-modal p{margin:0}
.tm-panel-modal .tm-pn-texto{font-size:.92rem;line-height:1.5;color:var(--tm-texto-suave);margin:0 0 16px}
.tm-panel-modal .tm-pn-cuerpo{margin:0 0 18px}
.tm-panel-modal .tm-pn-et{font-family:var(--tm-subtitular);font-weight:800;font-size:1.05rem;letter-spacing:-.01em;margin:0 0 8px}
.tm-panel-modal .tm-pn-chips{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 18px -7px}
.tm-panel-modal .tm-pn-chip{font-family:var(--tm-subtitular);font-weight:800;font-size:.9rem;letter-spacing:-.01em;line-height:1.2;padding:.42em .5em;border:0;border-radius:var(--tm-pildora);background:transparent;color:var(--tm-verde);cursor:pointer;transition:background .15s,color .15s}
.tm-panel-modal .tm-pn-chip:hover{background:rgba(25,83,43,.10)}
.tm-panel-modal .tm-pn-chip[aria-pressed="true"]{background:var(--tm-verde);color:var(--tm-crema)}
.tm-panel-modal .tm-pn-nota{font-size:.88rem;line-height:1.5;color:var(--tm-texto-suave);margin:0 0 20px}
.tm-panel-modal .tm-pn-acciones{display:flex;flex-wrap:wrap;gap:10px}
.tm-panel-modal .tm-boton--amarillo{background:var(--tm-amarillo);color:var(--tm-verde)}
.tm-panel-modal .tm-boton--linea{background:transparent;color:var(--tm-verde);box-shadow:inset 0 0 0 2px var(--tm-verde)}


.tm-login{max-width:460px;margin:0 auto;background:var(--tm-tarjeta);border-radius:24px;padding:clamp(22px,4vw,36px);box-shadow:0 0 0 1px var(--tm-linea);display:grid;gap:14px}

.tm .tm-login h2{font-size:clamp(2rem,4vw,2.6rem)}

.tm-login .tm-boton{width:100%}

.tm-login-pie{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:.92rem}

/* ===== Portal de la aliada (tm-al) · desde 23a ===== */


/* ===== Portal de la aliada (/aliada, /aliada/ruta, /aliada/recibos) · v1.0 · 12 oct 2026
   Misma marca de la web pública. Prefijo tm-al-. Pensado primero para celular: la aliada lo usa en la bodega y en la ruta. */
.tm-al{background:var(--tm-crema);color:var(--tm-verde);font-family:var(--tm-cuerpo);font-size:1.0625rem;line-height:1.55;padding-bottom:48px}

.tm-al-cab{background:var(--tm-verde);color:var(--tm-crema)}

.tm-al-cab-in{max-width:1100px;margin:auto;padding:14px var(--tm-gutter);display:flex;align-items:center;gap:14px 22px;flex-wrap:wrap}

.tm-al-cab img{height:22px;width:auto;display:block}

.tm-al-cab-rol{font-family:var(--tm-dato);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--tm-amarillo)}

.tm-al-nav{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}

.tm-al-nav a{font-family:var(--tm-subtitular);font-weight:700;font-size:1.05rem;color:var(--tm-crema);text-decoration:none;padding:.45em 1em;border-radius:var(--tm-pildora)}

.tm-al-nav a[aria-current="page"]{background:var(--tm-amarillo);color:var(--tm-verde)}

.tm-al-nav a:hover{background:rgba(243,232,204,.14)}

.tm-al-cuerpo{max-width:1100px;margin:auto;padding:28px var(--tm-gutter) 0;display:grid;gap:24px}

.tm-al-titulo h1{font-family:var(--tm-titular);font-weight:900;font-size:clamp(2rem,4.4vw,3rem);line-height:1;letter-spacing:-.02em;margin:.15em 0 .2em}

.tm-al-titulo p{margin:0;color:var(--tm-texto-suave);max-width:62ch}

.tm-al h2{font-family:var(--tm-subtitular);font-weight:800;font-size:1.65rem;line-height:1.1;margin:0}

.tm-al h3{font-family:var(--tm-subtitular);font-weight:800;font-size:1.3rem;line-height:1.15;margin:0}

.tm-al-tarjeta{background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio);padding:clamp(18px,3vw,26px);display:grid;gap:14px}

.tm-al-dato{font-family:var(--tm-dato)}

/* Línea del día: los tiempos del acuerdo */
.tm-al-reloj{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}

.tm-al-reloj li{background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);padding:12px;display:grid;gap:2px;font-size:.95rem}

.tm-al-reloj b{font-family:var(--tm-dato);font-size:1.05rem}

.tm-al-reloj li.ya{opacity:.6}

.tm-al-reloj li.ahora{background:var(--tm-amarillo);border-color:var(--tm-amarillo)}

@media (max-width:820px){.tm-al-reloj{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Acuse */
.tm-al-acuse{background:var(--tm-verde);color:var(--tm-crema);border:0}

.tm-al-acuse .tm-etiqueta{color:var(--tm-amarillo)}

.tm-al-acuse-cifras{display:flex;gap:10px 28px;flex-wrap:wrap}

.tm-al-acuse-cifras div{display:grid}

.tm-al-acuse-cifras b{font-family:var(--tm-titular);font-size:2.2rem;line-height:1}

.tm-al-acuse .tm-boton{justify-self:start}

.tm-al-acuse-ok{display:flex;gap:10px;align-items:center;font-family:var(--tm-subtitular);font-weight:700;font-size:1.15rem}

/* Cifras del día */
.tm-al-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}

.tm-al-kpis button{all:unset;cursor:pointer;background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);padding:14px 16px;display:grid;gap:2px}

.tm-al-kpis button[aria-pressed="true"]{box-shadow:inset 0 0 0 2px var(--tm-verde)}

.tm-al-kpis b{font-family:var(--tm-titular);font-size:2rem;line-height:1}

.tm-al-kpis span{font-size:.95rem;color:var(--tm-texto-suave)}
.tm-al-kpis div{background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);padding:14px;display:grid;gap:2px}
.tm-al-chips{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}
.tm-al-chips button{all:unset;cursor:pointer;background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:999px;padding:8px 14px;font-family:var(--tm-subtitular);font-weight:800;font-size:.95rem}
.tm-al-chips button[aria-pressed="true"]{background:var(--tm-amarillo);border-color:var(--tm-amarillo)}

@media (max-width:640px){.tm-al-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Lista de pedidos */
.tm-al-zona{display:grid;gap:10px}

.tm-al-zona>h3 small{font-family:var(--tm-cuerpo);font-weight:400;font-size:1rem;color:var(--tm-texto-suave)}

.tm-al-ped{background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);padding:14px 16px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 16px;align-items:center}

.tm-al-ped-nombre{font-family:var(--tm-subtitular);font-weight:800;font-size:1.2rem}

.tm-al-ped-info{font-size:.98rem;color:var(--tm-texto-suave)}

.tm-al-ped-acc{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}

.tm-al-ped-acc .tm-boton{min-width:150px;padding:.7em 1.2em}

@media (max-width:640px){.tm-al-ped{grid-template-columns:minmax(0,1fr)}.tm-al-ped-acc{justify-content:stretch}.tm-al-ped-acc .tm-boton{flex:1 1 0}}

/* Estados */
.tm-al-estado{display:inline-flex;align-items:center;gap:6px;font-family:var(--tm-dato);font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;padding:.35em .8em;border-radius:var(--tm-pildora);background:rgba(25,83,43,.1);white-space:nowrap}

.tm-al-estado::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}

.tm-al-estado--armar{background:#FFE9A8}

.tm-al-estado--ruta{background:#E4EEC0}

.tm-al-estado--entregado,.tm-al-estado--cerrado{background:var(--tm-verde);color:var(--tm-crema)}

.tm-al-estado--falta,.tm-al-estado--detenido{background:#FDD9C6;color:#9A3208}

.tm-al-estado--pagado{background:var(--tm-lima);color:var(--tm-verde)}

/* Armar un pedido */
.tm-al-armar{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:20px;align-items:start}

@media (max-width:860px){.tm-al-armar{grid-template-columns:minmax(0,1fr)}}

.tm-al-linea{border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);background:#fff;padding:14px 16px;display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:4px 14px;align-items:center}

.tm-al-linea-nombre{font-family:var(--tm-subtitular);font-weight:800;font-size:1.15rem}

.tm-al-linea-rango{font-size:.95rem;color:var(--tm-texto-suave)}

.tm-al-linea label{grid-column:2;grid-row:1/span 2;display:grid;gap:4px;font-size:.85rem;font-family:var(--tm-dato);text-transform:uppercase;letter-spacing:.04em}

.tm-al-linea input{font:700 1.25rem var(--tm-dato);color:var(--tm-verde);border:2px solid var(--tm-linea);border-radius:12px;padding:.45em .6em;width:100%;box-sizing:border-box;background:var(--tm-crema)}

.tm-al-linea-msg{grid-column:1/-1;font-size:.95rem;font-weight:700}

.tm-al-linea.ok input{border-color:var(--tm-lima)}

.tm-al-linea.ok .tm-al-linea-msg{color:#3d5a00}

.tm-al-linea.fuera{border-color:var(--tm-naranja)}

.tm-al-linea.fuera input{border-color:var(--tm-naranja)}

.tm-al-linea.fuera .tm-al-linea-msg{color:#9A3208}

.tm-al-linea.cortesia{background:#FFF7DC;border-style:dashed}

@media (max-width:520px){.tm-al-linea{grid-template-columns:minmax(0,1fr)}.tm-al-linea label{grid-column:1;grid-row:auto}}

.tm-al-foto{border:2px dashed var(--tm-linea);border-radius:var(--tm-radio-s);background:#fff;min-height:170px;display:grid;place-items:center;text-align:center;padding:18px;gap:8px;cursor:pointer}

.tm-al-foto b{font-family:var(--tm-subtitular);font-size:1.15rem}

.tm-al-foto.lista{border-style:solid;padding:0;overflow:hidden}

.tm-al-foto.lista img{width:100%;height:220px;object-fit:cover;display:block}

.tm-al-falta{background:#FDD9C6;color:#7a2806;border-radius:var(--tm-radio-s);padding:12px 14px;font-size:.98rem}

.tm-al-falta b{display:block;font-family:var(--tm-subtitular);font-size:1.1rem}

.tm-al-boton-bloq{opacity:.45;pointer-events:none}

.tm-al-grupo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}

.tm-al-grupo>.tm-boton{width:100%}

@media (max-width:520px){.tm-al-grupo{grid-template-columns:minmax(0,1fr)}}

/* Entregar */
.tm-al-entregar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start}

@media (max-width:860px){.tm-al-entregar{grid-template-columns:minmax(0,1fr)}}

.tm-al-campo{display:grid;gap:6px}

.tm-al-campo>span{font-family:var(--tm-dato);font-size:.82rem;letter-spacing:.05em;text-transform:uppercase}

.tm-al-campo input[type=text],.tm-al-campo input[type=number],.tm-al-campo input[type=date],.tm-al-campo input[type=datetime-local],.tm-al-campo input[type=email],.tm-al-campo select,.tm-al-campo textarea{font:1.05rem var(--tm-cuerpo);color:var(--tm-verde);border:2px solid var(--tm-linea);border-radius:12px;padding:.6em .75em;background:#fff}

.tm-al-campo input[type=datetime-local]{color-scheme:light}
.tm-al-campo input[type=datetime-local]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.75}

.tm-al-firma{height:110px;border:2px solid var(--tm-linea);border-radius:12px;background:#fff;position:relative}

.tm-al-firma::after{content:"Firma aquí";position:absolute;left:14px;bottom:10px;font-size:.9rem;color:rgba(25,83,43,.45)}

.tm-al-check{display:flex;gap:10px;align-items:center;font-size:1rem}

.tm-al-check input{width:20px;height:20px;accent-color:var(--tm-verde)}

/* Recibos */
.tm-al-recibos{display:grid;gap:10px}

.tm-al-rec{display:grid;grid-template-columns:minmax(0,1.3fr) repeat(3,minmax(0,1fr)) auto;gap:6px 16px;align-items:center;background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);padding:14px 16px}

.tm-al-rec small{display:block;font-size:.85rem;color:var(--tm-texto-suave)}

.tm-al-rec .tm-al-dato{font-size:1.05rem;font-weight:700}

.tm-al-rec.head{background:none;border:0;padding:0 16px;font-family:var(--tm-dato);font-size:.78rem;letter-spacing:.05em;text-transform:uppercase}

@media (max-width:760px){.tm-al-rec{grid-template-columns:minmax(0,1fr);gap:4px}.tm-al-rec.head{display:none}.tm-al-rec [data-l]::before{content:attr(data-l) " · ";font-family:var(--tm-cuerpo);font-weight:400;font-size:.92rem;color:var(--tm-texto-suave)}.tm-al-rec>div:last-child{margin-top:6px}}

.tm .tm-al .tm-boton{font-size:1.2rem}

.tm-al-foto b{font-size:1.25rem}

.tm-al-recibo{background:#fff;border:1px solid var(--tm-linea);border-radius:var(--tm-radio);padding:clamp(18px,3vw,30px);display:grid;gap:16px}

.tm-al-recibo-cab{display:flex;justify-content:space-between;gap:12px 24px;flex-wrap:wrap;align-items:flex-start;border-bottom:2px solid var(--tm-verde);padding-bottom:14px}

.tm-al-recibo-cab img{height:22px}

.tm-al-recibo-cab dl{margin:0;display:grid;grid-template-columns:auto auto;gap:2px 14px;font-size:.95rem}

.tm-al-recibo-cab dt{color:var(--tm-texto-suave)}

.tm-al-recibo-cab dd{margin:0;font-family:var(--tm-dato);font-weight:700;text-align:right}

.tm-al-tabla{width:100%;border-collapse:collapse;font-size:.98rem}

.tm-al-tabla th{font-family:var(--tm-dato);font-size:.76rem;letter-spacing:.05em;text-transform:uppercase;text-align:left;padding:8px 10px;border-bottom:1px solid var(--tm-linea);font-weight:700}

.tm-al-tabla td{padding:9px 10px;border-bottom:1px dashed var(--tm-linea);vertical-align:top}

.tm-al-tabla td.n,.tm-al-tabla th.n{text-align:right;font-family:var(--tm-dato);white-space:nowrap}

.tm-al-tabla tr.ped td{font-family:var(--tm-subtitular);font-weight:800;font-size:1.05rem;background:var(--tm-tarjeta);border-bottom:0}

.tm-al-tabla tr.desc td{color:#9A3208}

.tm-al-tabla-env{overflow-x:auto}

.tm-al-totales{display:grid;gap:6px;justify-self:end;min-width:min(100%,360px)}

.tm-al-totales div{display:flex;justify-content:space-between;gap:16px;font-size:1rem}

.tm-al-totales div span:last-child{font-family:var(--tm-dato)}

.tm-al-totales .total{border-top:2px solid var(--tm-verde);padding-top:8px;font-family:var(--tm-subtitular);font-weight:800;font-size:1.45rem}

.tm-al-aviso{background:var(--tm-tarjeta);border-left:4px solid var(--tm-amarillo);border-radius:8px;padding:12px 14px;font-size:.98rem}

.tm-al-factura{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}

@media (max-width:640px){.tm-al-factura{grid-template-columns:minmax(0,1fr)}}

/* Contadora */
.tm-al-cont{display:grid;grid-template-columns:28px minmax(0,1.2fr) minmax(0,1fr) minmax(0,.8fr) minmax(0,1fr);gap:6px 14px;align-items:center;background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);padding:12px 16px}

.tm-al-cont.head{background:none;border:0;font-family:var(--tm-dato);font-size:.78rem;letter-spacing:.05em;text-transform:uppercase;padding:0 16px}

.tm-al-cont input[type=text]{font:1rem var(--tm-dato);border:2px solid var(--tm-linea);border-radius:10px;padding:.4em .6em;width:100%;box-sizing:border-box;background:#fff;color:var(--tm-verde)}

@media (max-width:760px){.tm-al-cont{grid-template-columns:28px minmax(0,1fr)}.tm-al-cont>*:nth-child(n+3){grid-column:2}.tm-al-cont.head{display:none}}

/* ===== Panel de administración (/admin y sus pantallas) · v1.0 · 12 oct 2026. Prefijo tm-ad-; usa también las piezas tm-al-. */
.tm-ad-marco{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100%}

.tm-ad .tm-al-cuerpo{max-width:1180px;margin:0}

/* ===== Panel de administración (tm-ad) · desde 23a ===== */

/* Lo de adentro */
.tm-adentro{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(20px,4vw,48px);align-items:stretch}

@media (max-width:860px){.tm-adentro{grid-template-columns:1fr}}

.tm-adentro-foto{position:relative;border-radius:var(--tm-radio);overflow:hidden}

.tm-adentro-foto img{width:100%;height:100%;aspect-ratio:1/1;object-fit:cover;display:block}

.tm-adentro-texto{display:flex;flex-direction:column;justify-content:center;gap:16px}

.tm .tm-adentro-texto h2{font-size:clamp(2.2rem,4vw,3.4rem)}

.tm-adentro-texto p{color:var(--tm-texto-suave);max-width:46ch}

.tm-adentro-texto p b{color:var(--tm-verde)}

/* ===== Panel de administración (/admin y sus pantallas) · v1.0 · 12 oct 2026. Prefijo tm-ad-; usa también las piezas tm-al-. */
.tm-ad-marco{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100%}

.tm-ad-lado{background:var(--tm-verde);color:var(--tm-crema);padding:22px 14px;display:grid;align-content:start;gap:4px}

.tm-ad-lado img{height:20px;width:auto;margin:0 8px 18px}

.tm-ad-lado small{font-family:var(--tm-dato);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--tm-amarillo);margin:14px 8px 4px}

.tm-ad-lado a{font-family:var(--tm-subtitular);font-weight:700;font-size:1.08rem;color:var(--tm-crema);text-decoration:none;padding:.5em .8em;border-radius:12px}

.tm-ad-lado a[aria-current="page"]{background:var(--tm-amarillo);color:var(--tm-verde)}

.tm-ad-lado a:hover{background:rgba(243,232,204,.12)}

.tm-ad-lado a b{float:right;font-family:var(--tm-dato);font-size:.8rem;background:var(--tm-naranja);color:#fff;border-radius:999px;padding:.1em .55em}

@media (max-width:900px){.tm-ad-marco{grid-template-columns:minmax(0,1fr)}.tm-ad-lado{display:flex;overflow-x:auto;gap:6px;padding:12px}.tm-ad-lado img,.tm-ad-lado small{display:none}.tm-ad-lado a{white-space:nowrap}}

.tm-ad .tm-al-cuerpo{max-width:1180px;margin:0}

.tm-ad-barra{display:flex;gap:10px;flex-wrap:wrap;align-items:center}

.tm-ad-pills{display:flex;gap:6px;flex-wrap:wrap}

.tm-ad-pills button{font-family:var(--tm-subtitular);font-weight:700;font-size:1.05rem;color:var(--tm-verde);background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:999px;padding:.45em 1em;cursor:pointer}

.tm-ad-pills button[aria-pressed="true"]{background:var(--tm-verde);color:var(--tm-crema);border-color:var(--tm-verde)}

.tm-ad-barra .tm-boton{margin-left:auto}

.tm-ad-tabla{background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio);overflow-x:auto}

.tm-ad-tabla table{width:100%;border-collapse:collapse;font-size:1rem;min-width:720px}

.tm-ad-tabla th{font-family:var(--tm-dato);font-size:.76rem;letter-spacing:.05em;text-transform:uppercase;text-align:left;padding:12px 14px;border-bottom:1px solid var(--tm-linea)}

.tm-ad-tabla td{padding:12px 14px;border-bottom:1px dashed var(--tm-linea);vertical-align:middle}

.tm-ad-tabla tr:last-child td{border-bottom:0}

.tm-ad-tabla td.n,.tm-ad-tabla th.n{text-align:right;font-family:var(--tm-dato);white-space:nowrap}

.tm-ad-tabla td b{font-family:var(--tm-subtitular);font-size:1.08rem}

.tm-ad-tabla small{display:block;color:var(--tm-texto-suave);font-size:.88rem}

.tm-ad-acc{display:flex;gap:6px;flex-wrap:wrap}

.tm-ad-mini{font-family:var(--tm-subtitular);font-weight:700;font-size:.98rem;color:var(--tm-verde);background:transparent;border:2px solid var(--tm-verde);border-radius:999px;padding:.3em .9em;cursor:pointer;white-space:nowrap;text-decoration:none}

.tm-ad-mini--amarillo{background:var(--tm-amarillo);border-color:var(--tm-amarillo)}

.tm-ad-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}

.tm-ad-kpis div{background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);padding:14px 16px;display:grid;gap:2px}

.tm-ad-kpis span{font-family:var(--tm-dato);font-size:.74rem;letter-spacing:.05em;text-transform:uppercase}

.tm-ad-kpis b{font-family:var(--tm-titular);font-size:2rem;line-height:1.05}

.tm-ad-kpis small{font-size:.9rem;color:var(--tm-texto-suave)}

@media (max-width:760px){.tm-ad-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}

@media (max-width:480px){.tm-ad-kpis div{padding:12px}.tm-ad-kpis b{font-size:clamp(1.15rem,6.2vw,1.6rem)}.tm-ad-kpis span{font-size:.64rem;letter-spacing:.02em;overflow-wrap:break-word}}

.tm-ad-dos{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:18px;align-items:start}

@media (max-width:980px){.tm-ad-dos{grid-template-columns:minmax(0,1fr)}}

.tm-ad-alertas{list-style:none;margin:0;padding:0;display:grid;gap:8px}

.tm-ad-alertas li a{display:flex;justify-content:space-between;gap:12px;align-items:center;background:#fff;border:1px solid var(--tm-linea);border-radius:12px;padding:12px 14px;color:var(--tm-verde);text-decoration:none}

.tm-ad-alertas li a b{font-family:var(--tm-titular);font-size:1.5rem;min-width:1.6em}

.tm-ad-alertas li.urge a{border-color:var(--tm-naranja);background:#FFF1E8}

.tm-ad-top{list-style:none;margin:0;padding:0;display:grid;gap:8px}

.tm-ad-top li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;font-size:1rem}

.tm-ad-top i{grid-column:1/-1;height:8px;border-radius:99px;background:rgba(25,83,43,.12);overflow:hidden}

.tm-ad-top i::before{content:"";display:block;height:100%;width:var(--w);background:var(--tm-lima)}

.tm-ad-roles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}

.tm-ad-roles div{background:#fff;border:1px solid var(--tm-linea);border-radius:12px;padding:12px 14px;font-size:.95rem}

.tm-ad-roles b{display:block;font-family:var(--tm-subtitular);font-size:1.1rem}

@media (max-width:760px){.tm-ad-roles{grid-template-columns:minmax(0,1fr)}}

.tm-ad select{font:1rem var(--tm-cuerpo);color:var(--tm-verde);border:2px solid var(--tm-linea);border-radius:10px;padding:.35em .5em;background:#fff}

/* ===== Checkout (tm-co) · desde 23a ===== */
.tm-co{max-width:1100px;margin:auto;display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:24px;align-items:start}
.tm-co-paso{background:#fff;border-radius:18px;padding:20px;display:grid;gap:12px;margin-bottom:16px}
.tm-co-paso h3{margin:0;font-size:1.15rem;color:var(--tm-verde)}
.tm-co-paso h3 small{display:block;font:500 .9rem/1.35 var(--tm-cuerpo,inherit);opacity:.8;margin-top:4px}
.tm-co select{width:100%;padding:12px 14px;border:1px solid #c9d6cf;border-radius:12px;background:#fff;font:inherit;min-height:50px}
.tm-co .tm-campo{align-content:start}
/* Calendario de entrega del pago (10-nov): grilla lun→sáb con el mismo
   lenguaje tm del calendario de la home (círculos, Bricolage, verde/amarillo). */
.tm-co-cal{background:#fff;border:1px solid #c9d6cf;border-radius:16px;padding:14px 14px 10px;display:grid;gap:8px}
.tm-co-cal-vacio{margin:0;color:var(--tm-texto-suave);font-size:.9rem;padding:6px 2px}
.tm-co-cal-cabeza{display:flex;align-items:center;justify-content:space-between;gap:8px}
.tm-co-cal-mes{font-family:var(--tm-subtitular);font-weight:800;font-size:1.25rem;line-height:1;color:var(--tm-verde);text-transform:capitalize}
.tm-co-cal-mes i{font-style:normal;color:var(--tm-naranja);font-size:.78rem;margin-left:2px}
.tm-co-cal-nav{width:34px;height:34px;border:2px solid var(--tm-linea);border-radius:50%;background:var(--tm-crema);color:var(--tm-verde);font-size:1.1rem;line-height:1;cursor:pointer;display:grid;place-items:center}
.tm-co-cal-nav:hover:not(:disabled){background:var(--tm-amarillo);border-color:var(--tm-verde)}
.tm-co-cal-nav:disabled{opacity:.35;cursor:default}
.tm-co-cal-chips{display:flex;gap:6px}
.tm-co-cal-chip{font-family:var(--tm-subtitular);font-weight:700;font-size:.8rem;color:var(--tm-verde);background:var(--tm-crema);border:2px solid var(--tm-linea);border-radius:999px;padding:3px 12px;cursor:pointer;text-transform:capitalize}
.tm-co-cal-chip.activo{background:var(--tm-verde);color:var(--tm-crema);border-color:var(--tm-verde)}
.tm-co-cal-grilla{display:grid;grid-template-columns:repeat(6,1fr);gap:6px 4px;text-align:center;font-variant-numeric:tabular-nums}
.tm-co-cal-grilla b{font-family:var(--tm-subtitular);font-size:.72rem;color:var(--tm-texto-suave)}
.tm-co-cal-grilla .vacia{display:block}
.tm-co-cal-grilla button{width:100%;max-width:46px;aspect-ratio:1;margin:auto;display:grid;place-items:center;border-radius:50%;border:2px solid transparent;background:transparent;color:var(--tm-verde);font:700 .92rem var(--tm-cuerpo);cursor:pointer;padding:0}
.tm-co-cal-grilla button:not(.apagado){background:#e9f0e2}
.tm-co-cal-grilla button:not(.apagado):hover{background:var(--tm-lima);border-color:var(--tm-verde)}
.tm-co-cal-grilla button.apagado{color:var(--tm-texto-suave);opacity:.45;cursor:default;text-decoration:line-through}
.tm-co-cal-grilla button.elegido{background:var(--tm-amarillo);color:var(--tm-verde);border-color:var(--tm-verde);font-weight:800}
.tm-co-cal-grilla button[data-hoy]{box-shadow:inset 0 0 0 1px var(--tm-naranja)}
.tm-co-cal-nota{margin:0;font-size:.72rem;color:var(--tm-texto-suave)}
.tm-co-fila{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.tm-co-opc{display:grid;gap:8px}
.tm-co-opc label{display:flex;gap:10px;align-items:flex-start;border:2px solid #e6dcc2;border-radius:14px;padding:12px;cursor:pointer}
.tm-co-opc label:has(input:checked){border-color:var(--tm-verde);background:#f6f1e2}
.tm-co-opc small{display:block;opacity:.75}
.tm-co-aviso{background:#f6f1e2;border-radius:12px;padding:10px 12px;font-size:.88rem}
.tm-co-regalo{background:var(--tm-amarillo);border-radius:12px;padding:12px;font-weight:700;color:var(--tm-verde)}
.tm-co-barra{display:grid;gap:6px;font-weight:700;color:var(--tm-verde);font-size:.92rem}
.tm-co-barra i{display:block;height:12px;border-radius:99px;background:linear-gradient(90deg,var(--tm-verde) var(--p),#e6dcc2 var(--p))}
.tm-co-resumen{background:#fff;border-radius:18px;padding:20px;position:sticky;top:70px;display:grid;gap:10px}
.tm-co-resumen dl{margin:0;display:grid;gap:6px}
.tm-co-resumen dl div{display:flex;justify-content:space-between;gap:8px}
.tm-co-resumen dd{margin:0;font-weight:700;white-space:nowrap}
.tm-co-resumen .total{border-top:2px solid #e6dcc2;padding-top:8px;font-size:1.1rem}
.tm-co-resumen .menos dd{color:#2f7a3b}
.tm-co-listo{max-width:640px;margin:auto;background:#fff;border-radius:18px;padding:24px;display:grid;gap:12px;text-align:center}
@media (max-width:860px){.tm-co{grid-template-columns:1fr}.tm-co-resumen{position:static}}


/* ===== Modales de /admin (autorizaciones, saldo, alertas) =====
   `admin.css` no se carga en admin.html, así que `.modal-overlay`/`.modal` se
   quedaban sin fondo ni centrado y la capa salía al final del documento. Se
   replican aquí solo para esa página (data-page="admin"); las demás páginas del
   admin siguen con admin.css. */
body[data-page="admin"] .modal-overlay{position:fixed;inset:0;z-index:100;display:flex;align-items:flex-start;
  justify-content:center;padding:48px 20px;overflow:auto;background:rgba(26,18,8,.55)}
body[data-page="admin"] .modal{width:100%;max-width:820px;background:var(--tm-tarjeta);border-radius:20px;
  overflow:hidden;box-shadow:0 30px 70px rgba(26,18,8,.3)}
body[data-page="admin"] .modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:16px 22px;background:var(--tm-verde);color:var(--tm-crema)}
body[data-page="admin"] .modal-head h3{margin:0;font-size:1.05rem;color:var(--tm-crema)}
body[data-page="admin"] .modal-cerrar{width:32px;height:32px;border:0;border-radius:50%;cursor:pointer;
  font-size:20px;line-height:1;color:var(--tm-crema);background:rgba(243,232,204,.18)}
body[data-page="admin"] .modal-cerrar:hover{background:rgba(243,232,204,.32)}
body[data-page="admin"] .modal-body{max-height:82vh;overflow-y:auto;padding:16px 22px 22px}
body[data-page="admin"] .modal-body .tm-ad-tabla th,
body[data-page="admin"] .modal-body .tm-ad-tabla td{font-size:13px}
/* En el celular la tabla de autorizaciones (4 columnas con fechas) se lee como
   una ficha por finalidad: «Hoy · Otorgado · Revocado» en líneas. */
@media (max-width:600px){
  body[data-page="admin"] .modal-body .tm-ad-tabla table{min-width:0}
  body[data-page="admin"] .modal-body .tm-ad-tabla thead{display:none}
  body[data-page="admin"] .modal-body .tm-ad-tabla tbody tr{display:block;padding:12px 14px;
    border-bottom:1px dashed var(--tm-linea)}
  body[data-page="admin"] .modal-body .tm-ad-tabla td{display:block;border:0;padding:0;line-height:1.5}
  body[data-page="admin"] .modal-body .tm-ad-tabla td:nth-child(2)::before{content:'Hoy: ';font-weight:600}
  body[data-page="admin"] .modal-body .tm-ad-tabla td:nth-child(3)::before{content:'Otorgado: ';font-weight:600}
  body[data-page="admin"] .modal-body .tm-ad-tabla td:nth-child(4)::before{content:'Revocado: ';font-weight:600}
}

/* ---- Imprimir el comprobante de pago (panel → Comprobantes) ----------------
   `imprimirComprobante()` copia el comprobante a #pn-recibo-print (al final del
   body) y le pone la clase `tm-imprimiendo` al body: en el PDF sale solo el
   comprobante, sin el menú, los avisos ni los botones. */
#pn-recibo-print{display:none}

@media print{
  @page{margin:14mm}
  body.tm-imprimiendo{background:#fff}
  body.tm-imprimiendo > *{display:none !important}
  body.tm-imprimiendo > #pn-recibo-print{display:block !important}
  #pn-recibo-print .tm-cta-recibo{box-shadow:none;border-radius:0;padding:0;max-width:none;margin:0}
  #pn-recibo-print .tm-cta-recibo-cab{border-bottom:2px solid var(--tm-naranja)}
  #pn-recibo-print .tm-cta-recibo-cab img{height:18px}
}


/* ============ CHECKOUT (/checkout) — prototipo 23a, 28-oct ============
   Cuatro tarjetas blancas apiladas + resumen pegajoso a la derecha y un solo
   botón al final. La página NO carga styles.css: todo lo que usa vive aquí y
   en las clases .tm-* de arriba. */

/* `hidden` es la palanca que usa main.js (~60 veces) para mostrar/ocultar. Antes
   venía de styles.css y el pago se quedaría sin ella al dejar de cargarlo. */
.hidden{display:none !important}

.tm-co-sec{padding-block:clamp(16px,2.4vw,28px) clamp(36px,5vw,64px)}
.tm-co{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:clamp(16px,2.4vw,24px);align-items:start;max-width:1100px;margin-inline:auto}
.tm-co-pila{display:grid;gap:16px;min-width:0}
.tm-co-paso{background:#fff;border-radius:var(--tm-radio);padding:clamp(16px,2.2vw,20px);display:grid;gap:12px;min-width:0}
/* Cuando el envío falla, `mostrarCheckoutPaso()` sube a la tarjeta del error. */
.tm-co-paso--foco{box-shadow:0 0 0 3px var(--tm-naranja)}
.tm-co-paso h2.tm-co-tit{margin:0;font-family:var(--tm-subtitular);font-weight:800;font-size:1.15rem;letter-spacing:-.01em;line-height:1.2;color:var(--tm-verde)}
.tm-co-tit small{display:block;font-family:var(--tm-cuerpo);font-size:.9rem;font-weight:500;line-height:1.35;margin-top:4px;color:var(--tm-texto-suave)}
/* Campos de esta pantalla: 50 px de alto (se toca con el pulgar, no con ratón). */
.tm-co .tm-campo{gap:6px;align-content:start}
.tm-co .tm-campo input,.tm-co .tm-campo select,.tm-co .tm-campo textarea{min-height:50px;width:100%;font:inherit;font-size:1rem;color:inherit;background:#fff;border:1.5px solid var(--tm-linea);border-radius:12px;padding:.7em 1em}
.tm-co .tm-campo input:focus,.tm-co .tm-campo select:focus{border-color:var(--tm-verde)}
.tm-co .tm-campo input[readonly]{background:var(--tm-tarjeta);color:var(--tm-texto-suave)}
.tm-co .tm-ayuda{font-size:.8rem;line-height:1.4;color:var(--tm-texto-suave)}
.tm-co-fila{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;min-width:0}
/* Filas con selects de texto largo (tipo de documento, responsabilidad fiscal):
   en pantallas angostas el select se corta, así que se apilan. */
@media (max-width:520px){.tm-co-fila--ancha{grid-template-columns:1fr}}
.tm-co-en-linea{display:flex;gap:8px;align-items:center}
.tm-co-en-linea input{flex:1;min-width:0}
/* El código va en mayúsculas: en pantallas angostas el marcador se sale del
   campo porque el botón «Aplicar» le quita ancho. */
@media (max-width:520px){#co-codigo{font-size:.85rem;letter-spacing:0}}
.tm-co-acciones{display:flex;gap:8px;flex-wrap:wrap;margin-top:2px}
/* 9-nov: las acciones de zona van alineadas (botón + GPS) y en el login
   el botón compacto NO se estira al ancho completo (lo reserva el submit). */
.tm-co-acciones{align-items:center}
.tm-login .tm-co-acciones .tm-boton{width:auto}
.tm-boton--s{font-size:.85rem;padding:.55em 1em}
/* Opciones con borde (frecuencia, medio de pago): el borde se pinta al escoger. */
.tm-co-opc{display:grid;gap:8px}
.tm-co-opc>label{display:flex;gap:10px;align-items:flex-start;border:2px solid var(--tm-linea);border-radius:var(--tm-radio-s);padding:12px;cursor:pointer;background:#fff;font-size:.95rem;line-height:1.4}
.tm-co-opc>label:has(input:checked){border-color:var(--tm-verde);background:rgba(25,83,43,.06)}
.tm-co-opc input{margin:3px 0 0;flex:0 0 auto;accent-color:var(--tm-verde)}
.tm-co-opc small{display:block;margin-top:2px;font-size:.82rem;color:var(--tm-texto-suave)}
/* Avisos dentro del flujo (zona, corte, crédito). */
.tm-co-aviso{background:var(--tm-tarjeta);border-radius:12px;padding:10px 12px;font-size:.88rem;line-height:1.45;margin:0}
.tm-co-aviso.ok{background:rgba(25,83,43,.08)}
.tm-co-aviso.warn{background:rgba(248,96,21,.1)}
/* 28-oct · Aviso de cantidad del hogar (AL-01/AL-02): botones de ajuste y pie. */
.tm-co-aviso .tm-co-acciones{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.tm-co-aviso .tm-co-acciones .tm-boton{font-size:.82rem;padding:7px 12px}
.tm-co-aviso .tm-co-aviso-pie{display:flex;gap:14px;justify-content:flex-end;margin-top:8px}
.tm-co-aviso .tm-co-aviso-pie .tm-enlace{font-size:.8rem}
.tm-co-regalo{background:var(--tm-amarillo);border-radius:12px;padding:12px;font-weight:700;font-size:.92rem;line-height:1.4;color:var(--tm-verde)}

/* Resumen pegajoso: en escritorio acompaña el scroll; en móvil cae al final. */
.tm-co-resumen{background:#fff;border-radius:var(--tm-radio);padding:20px;display:grid;gap:10px;align-content:start;position:sticky;top:calc(var(--tm-alto-cabecera) + 14px)}
.tm-co-resumen .tm-suave{font-size:.9rem}
.tm-co-lin{display:flex;justify-content:space-between;gap:8px;font-size:.95rem;line-height:1.4}
.tm-co-lin span:last-child{font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums}
.tm-co-lin.menos span:last-child{color:var(--tm-verde)}
.tm-co-lin.total{border-top:2px solid var(--tm-linea);padding-top:8px;font-size:1.1rem;font-weight:800;color:var(--tm-verde)}
/* Lista de productos dentro de «Ver los productos» (#co-productos). */
.tm-co-prods{border-top:1px solid var(--tm-linea);margin-top:8px;padding-top:6px}
.tm-co-item{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--tm-linea);font-size:.9rem}
/* 5-nov · línea del resumen con un producto que la lista de la zona ya no trae */
.tm-co-item--falta{opacity:.55}
.tm-co-item--falta .info em{display:block;font-style:normal;font-size:.78rem;font-weight:600;color:var(--tm-naranja)}
/* 5-nov · banner «Mercado actualizado a tu zona» al volver del pago a /mercado */
.tm-aviso-zona{background:var(--tm-crema,#fbf6ec);border:1px solid var(--tm-linea,#e4dcc8);border-left:4px solid var(--tm-naranja);color:var(--tm-texto,#3f3a2e);font-size:.9rem;padding:10px 12px;margin:0 0 14px;border-radius:8px;text-align:left}

.tm-co-item:last-child{border-bottom:0}
.tm-co-item .em{font-size:20px;line-height:1;flex:0 0 auto}
.tm-co-item .em img{width:34px;height:34px;border-radius:8px;object-fit:cover;display:block}
.tm-co-item .info{flex:1;min-width:0}
.tm-co-item .info b{display:block;font-family:var(--tm-subtitular);font-weight:800;color:var(--tm-verde)}
.tm-co-item .info span{display:block;font-size:.78rem;color:var(--tm-texto-suave)}
.tm-co-item .precio{font-weight:700;white-space:nowrap;color:var(--tm-verde);font-variant-numeric:tabular-nums}
/* Desplegables («Ver los productos») + título fijo de las opciones de entrega + botón final. */
.tm-co-mas-tit{font-family:var(--tm-subtitular);font-weight:800;font-size:.95rem;color:var(--tm-verde);margin:0}
.tm-co-mas summary{cursor:pointer;font-family:var(--tm-subtitular);font-weight:800;font-size:.95rem;color:var(--tm-verde);list-style:none}
.tm-co-mas summary::-webkit-details-marker{display:none}
.tm-co-mas summary::before{content:"+";display:inline-block;width:1.2em;font-weight:800}
.tm-co-mas[open] summary::before{content:"−"}
.tm-co-mas-cuerpo{display:grid;gap:10px;margin-top:10px}
.tm-co-paso .tm-casilla{font-size:.85rem}
.tm-co-paso .tm-casilla b{color:var(--tm-verde)}
.tm-co-cta{width:100%;font-size:1.05rem;padding-block:.95em}
/* Confirmación después de pagar. */
.tm-co-listo{max-width:640px;margin-inline:auto;background:#fff;border-radius:var(--tm-radio);padding:clamp(20px,3vw,24px);display:grid;gap:12px;text-align:center;justify-items:center}
.tm-co-listo .tm-etiqueta{color:var(--tm-texto-suave)}
.tm-co-upsell{display:grid;gap:10px;justify-items:center;width:100%;margin-top:8px;padding-top:16px;border-top:1px solid var(--tm-linea)}
.tm-co-upsell .tm-boton--linea{width:100%}
/* Velo de «procesando»: tapa la pantalla mientras Wompi responde. */
.tm-co-cargando{position:fixed;inset:0;background:rgba(26,18,8,.55);display:grid;place-items:center;z-index:9999;padding:20px}
.tm-co-cargando-caja{background:#fff;border-radius:16px;padding:28px 32px;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.3);max-width:320px}

@media (max-width:860px){
  .tm-co{grid-template-columns:1fr}
  .tm-co-resumen{position:static}
  .tm-co .tm-campo input,.tm-co .tm-campo select{min-height:52px}
}



/* ---------------------------------------------------------------------------
   PWA · caja «Instalar la app» (31-oct-2026)
   Va al final del archivo a propósito: así ninguna regla de arriba la pisa.
   La rellena main.js solo si el navegador puede instalar la app (o si es un
   iPhone, donde se explica el camino de Compartir → Añadir a inicio).
   --------------------------------------------------------------------------- */
.tm-instalar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--tm-amarillo);border:1px solid rgba(25,83,43,.15);border-radius:var(--tm-radio-s);padding:14px 16px;margin:0 0 18px}
.tm-instalar[hidden]{display:none}
.tm-instalar-txt{font-family:var(--tm-subtitular);font-weight:800;color:var(--tm-verde);margin:0;font-size:1rem;line-height:1.2}
.tm-instalar-txt small{display:block;font-family:var(--tm-dato);font-weight:400;font-size:.72rem;opacity:.85;margin-top:4px}
.tm-instalar .tm-boton{margin-left:auto}
.tm-instalar-no{background:none;border:0;color:var(--tm-verde);font-family:var(--tm-dato);font-size:.75rem;text-decoration:underline;cursor:pointer;padding:6px}
@media (max-width:600px){.tm-instalar{gap:8px}.tm-instalar .tm-boton{margin-left:0;width:100%}}

/* ---- Candado Nequi (31-oct) · aviso previo al pago en el checkout ---- */
#co-nequi-modal{position:fixed;inset:0;background:rgba(25,48,20,.62);display:flex;align-items:center;justify-content:center;z-index:120;padding:18px}
#co-nequi-modal.hidden{display:none}
.co-nequi-modal-caja{position:relative;background:var(--tm-crema,#F3E8CC);border:1.5px solid var(--tm-verde,#19532B);border-radius:18px;padding:22px 20px 20px;max-width:430px;width:100%;color:var(--tm-verde,#19532B);box-shadow:0 18px 50px rgba(10,25,12,.35)}
.co-nequi-modal-caja h2{margin:0 0 10px;font-size:18px;color:var(--tm-verde,#19532B)}
.co-nequi-modal-caja p{margin:0 0 16px;font-size:14px;line-height:1.45}
.co-nequi-modal-cerrar{position:absolute;top:10px;right:10px;background:none;border:0;font-size:16px;cursor:pointer;color:inherit;opacity:.7;padding:4px}
.co-nequi-modal-cerrar:hover{opacity:1}
.co-nequi-modal-botones{display:flex;gap:12px;flex-wrap:wrap}
/* El modal vive fuera de un contenedor .tm: los colores de los botones van
   explícitos (en .tm solo aplican dentro de ese alcance). */
#co-nequi-modal .tm-boton--amarillo{background:var(--tm-amarillo,#FFC926);color:var(--tm-verde,#19532B)}
#co-nequi-modal .tm-boton--linea{background:transparent;color:var(--tm-verde,#19532B);box-shadow:inset 0 0 0 2px var(--tm-verde,#19532B)}



/* 31-oct · el cobro de cada mercado en «Tus mercados»: línea del pago real
   (medio + estado + fecha) y el botón «Verificar mi pago». */
.tm-cta-pago-linea{display:flex;justify-content:space-between;gap:8px;background:rgba(25,83,43,.06);border:1px dashed rgba(25,83,43,.28);border-radius:8px;padding:6px 10px;font-size:.78rem;color:var(--tm-texto-suave)}
.tm-cta-pago-linea b{font-weight:700}
.tm-pago-ok{color:var(--tm-verde)}
.tm-pago-mal{color:var(--tm-naranja)}
/* A05 (1-nov, Fase 3) · Los recuadros de Inicio ahora son enlaces a su módulo.
   Misma apariencia que antes (.tm-ad-kpis div) + pulso de enlace. Va al final
   para ganar la cascada sobre los bloques .tm-ad-kpis duplicados. */
.tm-ad-kpis a{background:var(--tm-tarjeta);border:1px solid var(--tm-linea);border-radius:var(--tm-radio-s);padding:14px 16px;display:grid;gap:2px;color:inherit;text-decoration:none;cursor:pointer}
.tm-ad-kpis a:hover{border-color:var(--tm-verde)}
.tm-ad-kpis a:focus-visible{outline:2px solid var(--tm-naranja);outline-offset:2px}



/* A06 (1-nov): pasador de páginas de Pedidos (20 por página) y la métrica del
   pedido detenido («faltan $X de $Y»). */
.tm-ad-paginador{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:10px;font-size:13px}
.tm-ad-paginador[hidden]{display:none}
.tm-ad-paginador .tm-ad-mini{min-width:104px}
/* A07 (1-nov): indicador de orden en la cabecera «Entrega» y el botón «Ver todos»
   del estado vacío de la tabla. */
.tm-ad-orden{font-size:.68rem;letter-spacing:0;text-transform:none;font-weight:600;color:var(--tm-verde);white-space:nowrap}
.tm-ad-tabla [data-ver-todos]{margin-left:12px}
.tm-ad-falta{display:block;font-size:12px;color:#9A3208;margin-top:3px}
/* A08 (1-nov): la evidencia del pedido es una línea de tiempo
   (armado → entrega → factura) con su foto y botón de descarga. */
.tm-ad-tl-sub{color:var(--tierra);font-size:13px;margin:0 0 12px}
.tm-ad-tl-paso{border:1px solid #e7e2d6;border-radius:12px;padding:12px;margin-bottom:10px;display:flex;flex-direction:column;gap:6px}
.tm-ad-tl-estado{font-weight:700;color:var(--tm-verde)}
.tm-ad-tl-fecha{color:var(--tierra);font-size:12.5px;font-weight:400}
.tm-ad-tl-nota{color:var(--tierra);font-size:12.5px;line-height:1.5}
.tm-ad-tl-img{width:100%;max-height:260px;object-fit:cover;border-radius:10px;display:block;cursor:pointer}
.tm-ad-tl-sin{color:var(--tierra);font-style:italic;font-size:12.5px}
.tm-ad-tl-descargar{align-self:flex-start}
/* B01 (1-nov): el detalle del recibo lista los pedidos con su desglose. */
.tm-ad-rc-titulo{margin:0 0 6px}
.tm-ad-rc-titulo small{display:block;color:var(--tierra);font-weight:400;font-size:12px;margin-top:2px}
.tm-ad-rc-resumen{color:var(--tierra);font-size:13px;margin:0 0 10px}
.tm-ad-rc-lista{display:flex;flex-direction:column;gap:8px}
.tm-ad-rc-ped{border:1px solid #e7e2d6;border-radius:10px;padding:8px 10px}
.tm-ad-rc-cabeza{display:flex;justify-content:space-between;gap:8px;font-size:13px;flex-wrap:wrap}
.tm-ad-rc-cabeza span:nth-child(2){color:var(--tierra)}
.tm-ad-rc-cabeza .n{font-weight:700}
.tm-ad-rc-linea{display:flex;justify-content:space-between;gap:8px;font-size:12.5px;color:var(--tierra);padding:3px 0 0 12px;border-top:1px dashed #efe9dd;margin-top:6px}
.tm-ad-rc-linea .n{color:#3a3a3a}

/* C-06 · un carrito, una zona: ventana antes/después (paleta tm, sin azul) */
.tm-zona-modal{position:fixed;inset:0;background:rgba(20,30,22,.55);display:grid;place-items:center;z-index:1200;padding:16px}
.tm-zona-modal.hidden{display:none}
.tm-zona-modal-card{background:var(--tm-crema,#F3E8CC);color:var(--tm-verde,#23371F);border-radius:18px;max-width:520px;width:100%;max-height:88vh;overflow:auto;padding:20px 18px;position:relative;display:grid;gap:10px;box-shadow:0 24px 60px rgba(20,30,22,.35)}
.tm-zona-modal-card h3{margin:0;font-family:var(--tm-display,inherit);font-size:1.25rem;line-height:1.2;padding-right:28px}
.tm-zona-cerrar{position:absolute;top:10px;right:10px;border:0;background:transparent;font-size:1.5rem;line-height:1;cursor:pointer;color:var(--tm-verde,#23371F)}
.tm-zona-resumen{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:2px 0}
.tm-zona-resumen div{background:#fff;border-radius:12px;padding:10px 12px;display:grid;gap:2px;font-size:.85rem}
.tm-zona-resumen b{font-size:1.05rem}
.tm-zona-bloque h4{margin:0 0 4px;font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;opacity:.75}
.tm-zona-bloque ul{margin:0;padding:0;list-style:none;display:grid;gap:4px;font-size:.88rem}
.tm-zona-bloque li{display:flex;justify-content:space-between;gap:8px;background:#fff;border-radius:10px;padding:7px 10px}
.tm-zona-precio{font-weight:700;white-space:nowrap}
.tm-zona-acciones{display:grid;gap:8px;margin-top:4px}

/* 7-nov · Ventana «El catálogo depende de tu zona de entrega» (sin sesión,
   ajuste P0 de la auditoría 7-nov): la misma capa de la ficha, más angocha, con
   sus dos botones apilados. */
.tm-ficha--catalogo{max-width:440px}
.tm-ficha--catalogo h3{font:800 1.45rem/1.2 "Bricolage Condensed",Arial,sans-serif;color:var(--tm-verde);margin:6px 44px 10px 0}
.tm-ficha--catalogo p{margin:0 0 18px;line-height:1.55}
.tm-cat-botones{display:grid;gap:10px}
.tm-cat-botones .tm-boton{width:100%;text-align:center;justify-content:center}

/* 11-nov · Hilo de objeción de un recibo (aliada ⇄ TORUMMA): burbujas de chat,
   fotos adjuntas y el formulario de respuesta/resolución en el admin. */
.tm-ob-panel{border-top:2px solid var(--tm-linea);margin-top:18px;padding-top:14px}
.tm-ob-panel h3{font:800 1.15rem/1.2 "Bricolage Condensed",Arial,sans-serif;color:var(--tm-verde);margin:0 0 10px}
.tm-ob-hilo{display:grid;gap:8px;margin:10px 0}
.tm-ob-burbuja{max-width:82%;padding:9px 12px;border-radius:14px;font-size:.95rem;display:grid;gap:4px}
.tm-ob-burbuja b{font-size:.82rem;text-transform:uppercase;letter-spacing:.04em}
.tm-ob-burbuja small{opacity:.75;font-size:.75rem}
.tm-ob-burbuja p{margin:0;line-height:1.45;white-space:pre-wrap}
.tm-ob--aliada{background:var(--tm-crema);justify-self:start;border-bottom-left-radius:4px}
.tm-ob--aliada b{color:var(--tm-verde)}
.tm-ob--torumma{background:var(--tm-verde);color:#fff;justify-self:end;border-bottom-right-radius:4px}
.tm-ob--torumma small{color:#e9f0d9}
.tm-ob-fotos{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}
.tm-ob-fotos img{width:72px;height:72px;object-fit:cover;border-radius:8px;border:1px solid rgba(0,0,0,.12)}
.tm-ob-form{display:grid;gap:8px;margin-top:10px}
.tm-ob-form textarea{width:100%;resize:vertical}
.tm-ob-adjuntos{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.tm-ob-foto-btn{cursor:pointer}
.tm-ob-acciones{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:6px}
.tm-ob-ajuste{display:flex;align-items:center;gap:6px;font-size:.85rem;color:var(--tm-texto-suave)}
.tm-ob-ajuste input{width:110px}
.tm-ob-resuelto{margin:0 0 10px}

/* 04e · Fruta del mes (guía v2.36.0 · 11-nov): primera tarjeta del catálogo, más grande */
.tm-fruta-mes{grid-column:1/-1;display:grid;grid-template-columns:minmax(240px,1.1fr) 1.4fr;gap:22px;background:linear-gradient(135deg,#FFC926,#FFD966);border-radius:24px;padding:26px;margin:0 0 26px;align-items:center;color:#19532B;box-shadow:0 14px 34px rgba(25,83,43,.14)}
.tm-fruta-media{position:relative}
.tm-fruta-media img:first-child{width:100%;border-radius:16px;object-fit:cover;aspect-ratio:4/3}
.tm-fruta-sticker{position:absolute;left:-14px;bottom:-14px;width:150px;transform:rotate(-8deg)}
.tm-fruta-rotulo{font-family:'Space Mono',ui-monospace,monospace;font-weight:700;text-transform:uppercase;letter-spacing:.08em;font-size:12px;background:#19532B;color:#FFC926;display:inline-block;padding:6px 14px;border-radius:999px;margin:0 0 10px}
.tm-fruta-mes h2{font-family:'Dingos',Georgia,serif;font-size:clamp(1.8rem,4vw,2.8rem);margin:0 0 8px}
.tm-fruta-linea{font-size:1.02rem;margin:0 0 16px;max-width:44ch}
.tm-fruta-pie{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
@media (max-width:640px){.tm-fruta-mes{grid-template-columns:1fr;padding:18px}}
/* F3 · Aviso de cambio de zona (guía v2.36.0 · 11-nov, Versión A) — reemplaza «antes → ahora» */
.za-overlay{position:fixed;inset:0;z-index:200;background:rgba(19,32,23,.45);display:flex;align-items:center;justify-content:center;padding:18px}
.za-modal{position:relative;background:#F3E8CC;border-radius:28px;padding:30px 28px 22px;display:grid;gap:14px;color:#19532B;font-family:"Garet","Helvetica Neue",Arial,sans-serif;box-shadow:0 18px 50px rgba(19,32,23,.22);border:1px solid rgba(25,83,43,.12);width:min(480px,100%);max-height:92vh;overflow:auto}
.za-x{position:absolute;top:18px;right:20px;font:700 22px/1 Arial,sans-serif;color:#19532B;background:none;border:0;cursor:pointer;padding:0}
.za-ico{width:46px;height:46px;border-radius:50%;background:#9ABC06;display:grid;place-items:center;color:#fff;font-weight:900;font-size:20px}
.za-eti{font:700 11.5px/1.2 "Space Mono",ui-monospace,monospace;letter-spacing:.1em;text-transform:uppercase;color:rgba(25,83,43,.78);margin:0}
.za-h{font-family:"Dingos","Arial Black",sans-serif;font-weight:900;font-size:29px;line-height:1.04;margin:0;letter-spacing:-.01em;padding-right:24px}
.za-p{font-size:16.5px;line-height:1.5;margin:0;color:rgba(25,83,43,.88)}
.za-total{background:#fff;border-radius:18px;padding:16px 18px;display:flex;justify-content:space-between;align-items:center;gap:12px}
.za-total span{font-size:15px;line-height:1.3}
.za-total small{display:block;font-size:12.5px;opacity:.75;margin-top:3px}
.za-total b{font-family:"Dingos","Arial Black",sans-serif;font-weight:900;font-size:27px;white-space:nowrap}
.za-falta{background:#FAF3DE;border:1.5px dashed rgba(25,83,43,.35);border-radius:14px;padding:11px 14px;font-size:14.5px;line-height:1.45}
.za-btn{display:block;background:#FFC926;border-radius:999px;padding:16px 18px;text-align:center;font-family:"Bricolage Condensed","Arial Narrow",Arial,sans-serif;font-weight:800;font-size:19px;color:#19532B;text-decoration:none}
.za-link{display:block;text-align:center;text-decoration:underline;text-underline-offset:3px;font-family:"Bricolage Condensed","Arial Narrow",Arial,sans-serif;font-weight:600;font-size:16.5px;color:#19532B;background:none;border:0;cursor:pointer}
.za-pie{font-size:12.5px;line-height:1.45;text-align:center;margin:2px 0 0;color:rgba(25,83,43,.75)}