/* =====================================================================
   UbicaYá · Biblioteca de plantillas one-page · v1.0
   Un solo CSS para las 6 plantillas. Sin frameworks, sin JS.
   Celular primero: estilos base = 390 px; @media (min-width) amplía.
   Raíz: <body class="uy" data-plantilla="…" data-menu="blanco|negro"
         style="--c-primary:…; --c-on-primary:…; --c-title:…">
   (En el lienzo de diseño la paleta llega por data-paleta="a|b".)
   ===================================================================== */

/* ---------- 1. TOKENS ------------------------------------------------ */
.uy{
  /* Marca: vienen del CMS (se inyectan como style en <body>) */
  --c-primary:#1F3A5F;          /* botones y franjas */
  --c-on-primary:#FFFFFF;       /* texto sobre el principal (≥ 4,5:1) */
  --c-title:#1F3A5F;            /* H1–H4 y enlaces sobre fondo claro (≥ 4,5:1) */
  /* Regla: --c-primary NUNCA se usa como color de texto sobre fondo claro. */

  /* Franja del menú (CMS: negra o blanca) */
  --c-menu-bg:#FFFFFF; --c-menu-fg:#1A1C1F; --c-menu-muted:#555A61; --c-menu-line:rgba(0,0,0,.10);

  /* Neutros de plantilla */
  --c-bg:#FFFFFF; --c-surface:#F5F4F1; --c-surface-2:#ECEAE5;
  --c-text:#1C1E21; --c-muted:#555A61; --c-line:#DEDBD4;
  --c-dark:#16181B; --c-on-dark:#F4F3EF; --c-on-dark-muted:#A9ACB2;
  --c-accent:#C9A227;           /* amarillo/dorado: solo acento decorativo */
  --c-focus:var(--c-title);
  --c-ph:#D9D5CC; --c-ph-line:rgba(0,0,0,.05);

  /* Derivados: funcionan con cualquier color de marca */
  --c-primary-soft:color-mix(in srgb, var(--c-primary) 10%, var(--c-bg));
  --c-primary-line:color-mix(in srgb, var(--c-primary) 35%, var(--c-bg));
  --c-title-soft:color-mix(in srgb, var(--c-title) 8%, var(--c-bg));

  /* Tipografía (máximo 2 familias web por plantilla) */
  --font-display:Georgia, "Times New Roman", serif;
  --font-body:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --font-mono:ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
  --fw-display:600; --fw-strong:600; --track-display:-0.01em; --case-display:none;

  /* Escala tipográfica (fluida entre 390 y 1440 px; base 16 px) */
  --fs-xs:0.8125rem;   /* 13 – solo metadatos, nunca párrafos */
  --fs-sm:0.875rem;    /* 14 */
  --fs-base:1rem;      /* 16 – mínimo para texto corrido */
  --fs-md:1.125rem;    /* 18 */
  --fs-lg:clamp(1.125rem, 1.05rem + .35vw, 1.3125rem);  /* 18 → 21 */
  --fs-h4:1.125rem;                                       /* 18 */
  --fs-h3:clamp(1.25rem, 1.15rem + .45vw, 1.5rem);        /* 20 → 24 */
  --fs-h2:clamp(1.75rem, 1.35rem + 1.7vw, 2.75rem);       /* 28 → 44 */
  --fs-h1:clamp(2.25rem, 1.5rem + 3.2vw, 4.5rem);         /* 36 → 72 */
  --lh-tight:1.08; --lh-snug:1.25; --lh-body:1.6;

  /* Espacios (base 4) */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px;
  --sp-6:32px; --sp-7:48px; --sp-8:64px; --sp-9:96px; --sp-10:128px;
  --sec-y:clamp(56px, 2.4rem + 4vw, 120px);
  --gutter:clamp(16px, 4vw, 56px);
  --container:1240px; --measure:66ch;

  /* Radios */
  --r-sm:4px; --r-md:8px; --r-lg:16px; --r-media:8px; --r-btn:8px; --r-pill:999px;

  /* Sombras (solo dos niveles) */
  --sh-1:0 1px 2px rgba(20,20,20,.06), 0 1px 1px rgba(20,20,20,.04);
  --sh-2:0 14px 32px -14px rgba(20,20,20,.28);

  /* Interacción */
  --tap:44px; --hdr-h:64px; --dur:180ms; --ease:cubic-bezier(.2,.7,.2,1);

  font-family:var(--font-body); font-size:var(--fs-base); line-height:var(--lh-body);
  color:var(--c-text); background:var(--c-bg);
  -webkit-text-size-adjust:100%; text-rendering:optimizeLegibility;
}
.uy[data-menu="negro"]{ --c-menu-bg:#111214; --c-menu-fg:#F4F3EF; --c-menu-muted:#B4B7BD; --c-menu-line:rgba(255,255,255,.14); }

/* ---------- 2. BASE -------------------------------------------------- */
.uy *, .uy *::before, .uy *::after{ box-sizing:border-box; }
.uy img, .uy svg, .uy video{ display:block; max-width:100%; }
.uy h1, .uy h2, .uy h3, .uy h4, .uy p, .uy ul, .uy ol, .uy figure, .uy blockquote, .uy dl, .uy dd{ margin:0; }
.uy ul, .uy ol{ padding:0; }
.uy h1, .uy h2, .uy h3, .uy .h4{
  font-family:var(--font-display); font-weight:var(--fw-display); color:var(--c-title);
  line-height:var(--lh-tight); letter-spacing:var(--track-display); text-transform:var(--case-display);
  text-wrap:balance; overflow-wrap:anywhere;
}
.uy h1{ font-size:var(--fs-h1); }
.uy h2{ font-size:var(--fs-h2); }
.uy h3{ font-size:var(--fs-h3); line-height:var(--lh-snug); }
.uy .h4{ font-size:var(--fs-h4); line-height:var(--lh-snug); }
.uy p, .uy li{ text-wrap:pretty; overflow-wrap:anywhere; }
.uy a{ color:var(--c-title); text-underline-offset:.18em; text-decoration-thickness:1px; }
.uy a:hover{ text-decoration-thickness:2px; }
.uy :focus-visible{ outline:3px solid var(--c-focus); outline-offset:3px; border-radius:2px; }
.uy .on-dark{ --c-focus:currentColor; }
.uy .sr{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; }
.uy .skip{ position:absolute; left:8px; top:-60px; z-index:100; background:var(--c-dark); color:var(--c-on-dark); padding:12px 16px; border-radius:var(--r-md); }
.uy .skip:focus{ top:8px; }
.uy .wrap{ width:100%; max-width:var(--container); margin-inline:auto; padding-inline:var(--gutter); }
.uy .ico{ width:20px; height:20px; flex:none; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.uy .ico-lg{ width:28px; height:28px; }

/* ---------- 3. BOTONES ---------------------------------------------- */
.uy .btn{
  display:inline-flex; align-items:center; justify-content:center; gap:var(--sp-2);
  min-height:var(--tap); padding:10px 20px; border-radius:var(--r-btn);
  font:var(--fw-strong) var(--fs-base)/1.2 var(--font-body); text-decoration:none; text-align:center;
  border:2px solid transparent; cursor:pointer; transition:transform var(--dur) var(--ease);
}
.uy .btn:hover{ transform:translateY(-1px); text-decoration:none; }
.uy .btn:active{ transform:translateY(0); }
.uy .btn-p{ background:var(--c-primary); color:var(--c-on-primary); box-shadow:inset 0 0 0 1px rgba(0,0,0,.12); }
.uy .btn-l{ background:transparent; color:currentColor; border-color:currentColor; }
.uy .btn-inv{ background:var(--c-on-primary); color:var(--c-primary); }
.uy .btn-row{ display:flex; flex-wrap:wrap; gap:var(--sp-3); }
.uy .link-arrow{ display:inline-flex; align-items:center; gap:6px; min-height:var(--tap); font-weight:var(--fw-strong); }

/* ---------- 4. ENCABEZADO ------------------------------------------- */
.uy .hdr{ position:sticky; top:0; z-index:50; background:var(--c-menu-bg); color:var(--c-menu-fg); border-bottom:1px solid var(--c-menu-line); }
.uy[data-menu="negro"] .hdr{ --c-focus:#FFFFFF; }
.uy .hdr-in{ display:flex; align-items:center; gap:var(--sp-4); min-height:var(--hdr-h); }
.uy .logo{ display:flex; align-items:center; gap:10px; width:150px; aspect-ratio:280/68; color:var(--c-menu-fg); text-decoration:none; flex:none; }
.uy .logo-sym{ width:28px; height:28px; flex:none; border:2px solid currentColor; }
.uy .logo-txt{ font:700 15px/1.05 var(--font-display); letter-spacing:-.01em; display:flex; flex-direction:column; }
.uy .logo-txt small{ font:500 10.5px/1.3 var(--font-body); letter-spacing:.08em; text-transform:uppercase; opacity:.85; }
.uy .slogan{ display:none; color:var(--c-menu-muted); font-size:var(--fs-sm); line-height:1.3; max-width:24ch; padding-left:var(--sp-4); border-left:1px solid var(--c-menu-line); }
.uy .nav{ display:none; }
.uy .hdr-cta{ display:none; }
.uy .nav-m{ margin-left:auto; position:static; }
.uy .nav-m > summary{ list-style:none; display:grid; place-items:center; width:var(--tap); height:var(--tap); border-radius:var(--r-md); cursor:pointer; color:var(--c-menu-fg); }
.uy .nav-m > summary::-webkit-details-marker{ display:none; }
.uy .nav-m[open] > summary{ background:color-mix(in srgb, var(--c-menu-fg) 10%, transparent); }
.uy .nav-m-panel{ position:absolute; left:0; right:0; top:100%; background:var(--c-menu-bg); border-bottom:1px solid var(--c-menu-line); box-shadow:var(--sh-2); padding:var(--sp-2) var(--gutter) var(--sp-5); }
.uy .nav-m-panel a{ display:flex; align-items:center; min-height:52px; color:var(--c-menu-fg); text-decoration:none; font-size:var(--fs-md); border-bottom:1px solid var(--c-menu-line); }
@media (min-width:1080px){
  .uy{ --hdr-h:84px; }
  .uy .logo{ width:200px; }
  .uy .logo-txt{ font-size:19px; }
  .uy .logo-txt small{ font-size:11.5px; }
  .uy .logo-sym{ width:36px; height:36px; }
  .uy .slogan{ display:block; }
  .uy .nav{ display:flex; margin-left:auto; gap:2px; list-style:none; flex-wrap:wrap; justify-content:flex-end; }
  .uy .nav a{ display:flex; align-items:center; min-height:var(--tap); padding:0 12px; color:var(--c-menu-fg); text-decoration:none; font-size:var(--fs-sm); font-weight:500; border-radius:var(--r-sm); max-width:22ch; line-height:1.2; }
  .uy .nav a:hover{ background:color-mix(in srgb, var(--c-menu-fg) 8%, transparent); }
  .uy .hdr-cta{ display:flex; gap:var(--sp-2); flex:none; }
  .uy .hdr-cta .btn{ padding:8px 14px; font-size:var(--fs-sm); }
  .uy .nav-m{ display:none; }
}

/* ---------- 5. FOTOS (marcadores) ------------------------------------ */
.uy .ph{ position:relative; display:flex; align-items:flex-end; overflow:hidden; border-radius:var(--r-media);
  background-color:var(--c-ph); background-image:repeating-linear-gradient(135deg, var(--c-ph-line) 0 1px, transparent 1px 14px); }
.uy .ph-cap{ margin:10px; padding:4px 8px; max-width:calc(100% - 20px); font:500 12px/1.35 var(--font-mono); color:#2B2B2B; background:rgba(255,255,255,.9); border-radius:4px; }
.uy .r-banner{ aspect-ratio:1920/500; min-height:220px; }  /* <img> con object-fit:cover; object-position:center (zona segura central) */
.uy .r-169{ aspect-ratio:16/9; }
.uy .r-32{ aspect-ratio:3/2; }
.uy .r-sq{ aspect-ratio:1/1; }
.uy .r-promo{ aspect-ratio:1200/280; min-height:120px; }
.uy .r-dl{ aspect-ratio:310/200; }
.uy .r-45{ aspect-ratio:4/5; }

/* ---------- 6. SECCIONES -------------------------------------------- */
.uy .sec{ padding-block:var(--sec-y); }
.uy .sec-alt{ background:var(--c-surface); }
.uy .sec + .sec:not(.sec-alt):not(.cta):not(.sec-dark){ padding-top:0; }
.uy .sec-alt + .sec-alt{ padding-top:0; }
.uy .sh{ display:grid; gap:var(--sp-3); margin-bottom:var(--sp-7); max-width:var(--measure); }
.uy .eyebrow{ font:600 var(--fs-xs)/1.3 var(--font-body); letter-spacing:.12em; text-transform:uppercase; color:var(--c-muted); }
.uy .lead{ font-size:var(--fs-lg); color:var(--c-muted); max-width:var(--measure); }
.uy .muted{ color:var(--c-muted); }

/* ---------- 7. PORTADA (base) ---------------------------------------- */
.uy .hero{ padding-top:var(--sp-6); }
.uy .hero-txt{ display:grid; gap:var(--sp-4); }
.uy .hero-sub{ font-size:var(--fs-lg); color:var(--c-muted); max-width:34ch; }
.uy .hero .btn-row{ margin-top:var(--sp-2); }
.uy .hero-media{ margin-top:var(--sp-6); }

/* ---------- 8. NOSOTROS --------------------------------------------- */
.uy .about{ display:grid; gap:var(--sp-6); align-items:start; }
.uy .about-txt{ display:grid; gap:var(--sp-4); }
.uy .about-txt p{ font-size:var(--fs-md); max-width:60ch; }
.uy .video{ position:relative; }
.uy .video .play{ position:absolute; inset:0; margin:auto; width:72px; height:72px; border-radius:50%; border:0; display:grid; place-items:center; background:var(--c-primary); color:var(--c-on-primary); cursor:pointer; box-shadow:var(--sh-2); transition:transform var(--dur) var(--ease); }
.uy .video .play:hover{ transform:scale(1.05); }
@media (min-width:900px){ .uy .about{ grid-template-columns:minmax(0,1fr) minmax(0,1.1fr); gap:var(--sp-8); } }

/* ---------- 9. TEXTO ENRIQUECIDO (descripción amplia) ---------------- */
/* Los <h4> del editor se publican como <h3 class="h4"> para mantener H2 › H3. */
.uy .rich{ max-width:var(--measure); display:grid; gap:var(--sp-4); }
.uy .rich .h4{ margin-top:var(--sp-4); }
.uy .rich ul, .uy .rich ol{ padding-left:1.25em; display:grid; gap:var(--sp-2); }
.uy .rich li::marker{ color:var(--c-title); }
.uy .faq{ border-top:1px solid var(--c-line); margin-top:var(--sp-4); }
.uy .qa{ border-bottom:1px solid var(--c-line); }
.uy .qa > summary{ list-style:none; display:flex; justify-content:space-between; align-items:center; gap:var(--sp-4); min-height:56px; padding:var(--sp-3) 0; cursor:pointer; font-weight:var(--fw-strong); color:var(--c-title); }
.uy .qa > summary::-webkit-details-marker{ display:none; }
.uy .qa > summary .ico{ transition:transform var(--dur) var(--ease); }
.uy .qa[open] > summary .ico{ transform:rotate(180deg); }
.uy .qa > div{ padding:0 0 var(--sp-5); max-width:60ch; }

/* ---------- 10. CARACTERÍSTICAS (3 a 8) ------------------------------ */
.uy .feats{ list-style:none; display:grid; gap:var(--sp-6) var(--sp-6); grid-template-columns:repeat(auto-fit, minmax(min(240px,100%),1fr)); }
.uy .feat{ display:grid; gap:var(--sp-2); align-content:start; }
.uy .feat-ico{ width:48px; height:48px; display:grid; place-items:center; border-radius:var(--r-md); background:var(--c-primary); color:var(--c-on-primary); margin-bottom:var(--sp-2); }
.uy .feat h3{ font-size:var(--fs-md); font-family:var(--font-body); font-weight:700; letter-spacing:0; text-transform:none; }
.uy .feat p{ color:var(--c-muted); }

/* ---------- 11. SERVICIOS: acordeón y tarjetas ----------------------- */
.uy .acc{ border-top:1px solid var(--c-line); }
.uy .acc-i{ border-bottom:1px solid var(--c-line); }
.uy .acc-i > summary{ list-style:none; display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:var(--sp-4); min-height:72px; padding:var(--sp-4) 0; cursor:pointer; }
.uy .acc-i > summary::-webkit-details-marker{ display:none; }
.uy .acc-n{ font:500 var(--fs-sm)/1 var(--font-mono); color:var(--c-muted); min-width:2.5ch; }
.uy .acc-i h3{ font-size:var(--fs-h3); }
.uy .acc-tg{ width:var(--tap); height:var(--tap); border-radius:50%; display:grid; place-items:center; border:1px solid var(--c-line); color:var(--c-title); transition:transform var(--dur) var(--ease); }
.uy .acc-i[open] .acc-tg{ transform:rotate(180deg); }
.uy .acc-body{ display:grid; gap:var(--sp-5); padding:0 0 var(--sp-6); }
.uy .acc-body .rich{ gap:var(--sp-3); }
.uy .thumbs{ list-style:none; display:grid; grid-auto-flow:column; grid-auto-columns:minmax(140px, 200px); gap:var(--sp-3); overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:var(--sp-2); }
.uy .thumbs > li{ scroll-snap-align:start; }
@media (min-width:900px){
  .uy .acc-body{ grid-template-columns:minmax(0,1.2fr) minmax(0,1fr); padding-left:calc(2.5ch + var(--sp-4)); }
  .uy .acc-body .thumbs{ grid-auto-flow:row; grid-template-columns:repeat(2,minmax(0,1fr)); grid-auto-columns:auto; overflow:visible; }
}
.uy .cards{ list-style:none; display:grid; gap:var(--sp-5); grid-template-columns:repeat(auto-fit, minmax(min(300px,100%),1fr)); }
.uy .card{ display:grid; grid-template-rows:auto 1fr; background:var(--c-bg); border:1px solid var(--c-line); border-radius:var(--r-lg); overflow:hidden; }
.uy .card .ph{ border-radius:0; }
.uy .card-b{ display:grid; gap:var(--sp-3); padding:var(--sp-5); align-content:start; }
.uy .card-more > summary{ list-style:none; display:inline-flex; align-items:center; gap:6px; min-height:var(--tap); color:var(--c-title); font-weight:var(--fw-strong); cursor:pointer; }
.uy .card-more > summary::-webkit-details-marker{ display:none; }
.uy .card-more[open] > summary .ico{ transform:rotate(180deg); }
.uy .card-more > div{ display:grid; gap:var(--sp-3); padding-top:var(--sp-2); }

/* ---------- 12. GALERÍA (hasta 20) ----------------------------------- */
.uy .gal{ list-style:none; display:grid; grid-auto-flow:column; grid-auto-columns:82%; gap:var(--sp-3); overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:var(--sp-3); }
.uy .gal > li{ scroll-snap-align:start; }
.uy .gal[data-n="1"]{ grid-auto-flow:row; grid-auto-columns:auto; overflow:visible; }
.uy .gal-more{ margin-top:var(--sp-5); }
.uy .gal-more > summary{ list-style:none; cursor:pointer; }
.uy .gal-more > summary::-webkit-details-marker{ display:none; }
.uy .gal-more .gal{ margin-top:var(--sp-5); }
.uy .gal-more[open] > summary .when-closed, .uy .gal-more:not([open]) > summary .when-open{ display:none; }
@media (min-width:768px){
  .uy .gal{ grid-auto-flow:row; grid-auto-columns:auto; overflow:visible; grid-template-columns:repeat(4,minmax(0,1fr)); }
  .uy .gal > li:first-child:not(:only-child){ grid-column:span 2; grid-row:span 2; }
  .uy .gal > li:first-child:not(:only-child) .ph{ height:100%; aspect-ratio:auto; }
  .uy .gal[data-n="1"]{ grid-template-columns:minmax(0,900px); }
  .uy .gal[data-n="2"]{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .uy .gal[data-n="2"] > li:first-child{ grid-column:auto; grid-row:auto; }
  .uy .gal-more .gal > li:first-child{ grid-column:auto; grid-row:auto; }
  .uy .gal-more .gal > li:first-child .ph{ aspect-ratio:3/2; height:auto; }
}

/* ---------- 13. FRANJA DE LLAMADO A LA ACCIÓN ------------------------ */
.uy .cta{ background:var(--c-primary); color:var(--c-on-primary); padding-block:clamp(48px, 2rem + 4vw, 96px); --c-focus:var(--c-on-primary); }
.uy .cta-in{ display:grid; gap:var(--sp-5); align-items:center; }
.uy .cta h2{ color:var(--c-on-primary); }
.uy .cta p{ font-size:var(--fs-lg); max-width:48ch; }
@media (min-width:900px){ .uy .cta-in{ grid-template-columns:minmax(0,1fr) auto; gap:var(--sp-8); } }

/* ---------- 14. TESTIMONIOS (comentario 200) ------------------------- */
.uy .testis{ list-style:none; display:grid; grid-auto-flow:column; grid-auto-columns:88%; gap:var(--sp-4); overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:var(--sp-3); }
.uy .t{ scroll-snap-align:start; display:grid; grid-template-rows:1fr auto; gap:var(--sp-5); padding:var(--sp-6); background:var(--c-bg); border:1px solid var(--c-line); border-radius:var(--r-lg); }
.uy .t blockquote{ font:400 var(--fs-md)/1.55 var(--font-body); }
.uy .t-who{ display:flex; align-items:center; gap:var(--sp-3); }
.uy .t-photo{ width:48px; height:48px; border-radius:50%; flex:none; }
.uy .t-photo .ph-cap{ display:none; }
.uy .t-name{ font-weight:var(--fw-strong); line-height:1.3; }
.uy .t-meta{ font-size:var(--fs-sm); color:var(--c-muted); }
.uy .testis[data-n="1"]{ grid-auto-flow:row; grid-auto-columns:auto; overflow:visible; }
.uy .testis[data-n="1"] .t{ border:0; background:transparent; padding:0; max-width:56ch; }
.uy .testis[data-n="1"] blockquote{ font-family:var(--font-display); font-size:var(--fs-h3); line-height:1.35; color:var(--c-title); }
@media (min-width:900px){ .uy .testis{ grid-auto-columns:calc((100% - 2 * var(--sp-4)) / 3); } }

/* ---------- 15. CLIENTES / ALIADOS (logos 300×300) ------------------- */
.uy .clients{ display:grid; gap:var(--sp-6); }
.uy .clients-txt{ display:grid; gap:var(--sp-3); max-width:56ch; }
.uy .logos{ list-style:none; display:grid; grid-template-columns:repeat(auto-fill, minmax(104px,1fr)); gap:var(--sp-3); }
.uy .logo-c{ aspect-ratio:1/1; display:grid; place-items:center; border:1px solid var(--c-line); border-radius:var(--r-md); background:var(--c-bg); padding:var(--sp-3); text-align:center; font:600 var(--fs-xs)/1.25 var(--font-body); color:var(--c-muted); }
@media (min-width:900px){ .uy .clients{ grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:var(--sp-8); align-items:start; } .uy .logos{ grid-template-columns:repeat(auto-fill, minmax(128px,1fr)); } }

/* ---------- 16. NOTICIAS --------------------------------------------- */
.uy .news{ list-style:none; display:grid; gap:var(--sp-6); }
.uy .n{ display:grid; gap:var(--sp-3); align-content:start; }
.uy .n h3{ font-size:var(--fs-h3); }
.uy .n h3 a{ color:var(--c-title); text-decoration:none; }
.uy .n h3 a:hover{ text-decoration:underline; }
.uy .n p{ color:var(--c-muted); }
@media (min-width:900px){
  .uy .news{ grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--sp-6); row-gap:var(--sp-6); }
  .uy .n{ grid-column:span 4; }
  .uy .news > .n:first-child:not(:only-child){ grid-column:span 12; grid-template-columns:minmax(0,1.2fr) minmax(0,1fr); gap:var(--sp-6); align-items:center; padding-bottom:var(--sp-6); border-bottom:1px solid var(--c-line); }
  .uy .news > .n:first-child:not(:only-child) h3{ font-size:var(--fs-h2); }
  .uy .news[data-n="1"] .n{ grid-column:span 12; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:var(--sp-6); align-items:center; }
}

/* ---------- 17. HORARIOS (por día, con franja intermedia) ------------ */
.uy .hours{ width:100%; border-collapse:collapse; font-variant-numeric:tabular-nums; }
.uy .hours th, .uy .hours td{ text-align:left; padding:12px 0; border-bottom:1px solid var(--c-line); vertical-align:top; }
.uy .hours th{ font-weight:var(--fw-strong); width:38%; padding-right:var(--sp-3); }
.uy .hours td span{ display:block; }
.uy .hours .hoy th, .uy .hours .hoy td{ color:var(--c-title); font-weight:700; }
.uy .hours .hoy th::after{ content:" · hoy"; font-weight:500; font-size:var(--fs-sm); }
.uy .hours .cerrado td{ color:var(--c-muted); }

/* ---------- 18. DESCARGABLES (310×200, descripción 25) --------------- */
.uy .dls{ list-style:none; display:grid; grid-auto-flow:column; grid-auto-columns:70%; gap:var(--sp-4); overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:var(--sp-3); }
.uy .dl{ scroll-snap-align:start; }
.uy .dl a{ display:grid; gap:var(--sp-3); text-decoration:none; color:var(--c-text); }
.uy .dl-t{ display:flex; align-items:center; justify-content:space-between; gap:var(--sp-2); min-height:var(--tap); font-weight:var(--fw-strong); color:var(--c-title); border-bottom:1px solid var(--c-line); }
.uy .dl a:hover .dl-t{ text-decoration:underline; }
@media (min-width:768px){ .uy .dls{ grid-auto-flow:row; grid-auto-columns:auto; overflow:visible; grid-template-columns:repeat(auto-fill, minmax(230px,1fr)); } }

/* ---------- 19. PROMOCIONAL DE TIENDA (1200×280) --------------------- */
.uy .promo a{ display:block; border-radius:var(--r-media); text-decoration:none; }
.uy .promo .ph{ border-radius:var(--r-media); }

/* ---------- 20. SUCURSALES ------------------------------------------- */
.uy .branches{ list-style:none; display:grid; gap:0; border-top:1px solid var(--c-line); }
.uy .br{ display:grid; gap:2px; padding:var(--sp-4) 0; border-bottom:1px solid var(--c-line); }
.uy .br h3{ font-size:var(--fs-md); font-family:var(--font-body); font-weight:700; letter-spacing:0; text-transform:none; }
.uy .br-city{ font-size:var(--fs-sm); color:var(--c-muted); font-weight:600; letter-spacing:.04em; text-transform:uppercase; }
.uy .br a{ display:inline-flex; align-items:center; gap:6px; min-height:var(--tap); }
.uy .visit{ display:grid; gap:var(--sp-8); }
@media (min-width:900px){ .uy .visit{ grid-template-columns:minmax(0,1fr) minmax(0,1fr); } .uy .branches{ grid-template-columns:repeat(auto-fill, minmax(240px,1fr)); column-gap:var(--sp-6); border-top:0; } }

/* ---------- 21. CONTACTO --------------------------------------------- */
.uy .contact{ display:grid; gap:var(--sp-7); }
.uy .form{ display:grid; gap:var(--sp-4); }
.uy .field{ display:grid; gap:6px; }
.uy .field label{ font-weight:var(--fw-strong); font-size:var(--fs-sm); }
.uy .field input, .uy .field textarea{ width:100%; min-height:48px; padding:12px 14px; font:inherit; font-size:16px; color:var(--c-text); background:var(--c-bg); border:1.5px solid #8A8F96; border-radius:var(--r-md); }
.uy .field textarea{ min-height:132px; resize:vertical; }
.uy .field input:focus-visible, .uy .field textarea:focus-visible{ outline-offset:1px; border-color:var(--c-title); }
.uy .req{ color:var(--c-title); }
.uy .check{ display:grid; grid-template-columns:auto 1fr; gap:var(--sp-3); align-items:start; font-size:var(--fs-sm); line-height:1.5; }
.uy .check input{ width:24px; height:24px; margin:0; accent-color:var(--c-title); }
.uy .check-hit{ display:grid; place-items:center; width:var(--tap); height:var(--tap); margin:-10px; }
.uy .info{ display:grid; gap:var(--sp-5); align-content:start; }
.uy .info-list{ list-style:none; display:grid; gap:var(--sp-1); }
.uy .info-list li{ display:flex; gap:var(--sp-3); align-items:flex-start; }
.uy .info-list .ico{ margin-top:12px; color:var(--c-title); }
.uy .info-list a, .uy .info-list span.v{ display:inline-flex; align-items:center; min-height:var(--tap); }
.uy .social{ list-style:none; display:flex; flex-wrap:wrap; gap:var(--sp-2); }
.uy .social a{ display:inline-flex; align-items:center; min-height:var(--tap); padding:0 14px; border:1px solid var(--c-line); border-radius:var(--r-pill); text-decoration:none; font-size:var(--fs-sm); font-weight:600; }
.uy .map{ min-height:260px; aspect-ratio:auto; }
.uy .map .btn{ position:absolute; inset:0; margin:auto; width:max-content; height:max-content; background:var(--c-bg); color:var(--c-title); border-color:var(--c-title); }
@media (min-width:900px){ .uy .contact{ grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); gap:var(--sp-8); } .uy .form .row2{ display:grid; grid-template-columns:1fr 1fr; gap:var(--sp-4); } }

/* ---------- 22. PIE -------------------------------------------------- */
.uy .ftr{ background:var(--c-dark); color:var(--c-on-dark); padding-block:var(--sp-7) var(--sp-5); font-size:var(--fs-sm); --c-focus:#FFFFFF; }
.uy .ftr a{ color:var(--c-on-dark); }
.uy .ftr-in{ display:grid; gap:var(--sp-5); }
.uy .ftr-top{ display:flex; flex-wrap:wrap; gap:var(--sp-4) var(--sp-6); align-items:center; justify-content:space-between; }
.uy .ftr .logo{ color:var(--c-on-dark); }
.uy .ftr-links{ list-style:none; display:flex; flex-wrap:wrap; gap:var(--sp-1) var(--sp-5); }
.uy .ftr-links a{ display:inline-flex; align-items:center; min-height:var(--tap); }
.uy .cookies{ display:flex; flex-wrap:wrap; align-items:center; gap:var(--sp-3); padding:var(--sp-3) var(--sp-4); border:1px solid rgba(255,255,255,.18); border-radius:var(--r-md); }
.uy .cookies p{ flex:1 1 260px; color:var(--c-on-dark-muted); }
.uy .cookies .btn{ min-height:var(--tap); padding:6px 14px; font-size:var(--fs-sm); background:var(--c-on-dark); color:var(--c-dark); }
.uy .credit{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:var(--sp-2); color:var(--c-on-dark-muted); padding-top:var(--sp-4); border-top:1px solid rgba(255,255,255,.12); }
.uy .credit a{ color:var(--c-on-dark-muted); }

/* ---------- 23. BARRA DEL PULGAR (celular: máx. 2 botones) ----------- */
/* Va al final del <body>; sticky: nunca se monta sobre el pie ni sobre otro flotante. */
.uy .bar{ position:sticky; bottom:0; z-index:40; display:grid; grid-template-columns:1fr 1fr; gap:var(--sp-2); padding:var(--sp-2) var(--sp-4) calc(var(--sp-2) + env(safe-area-inset-bottom)); background:var(--c-bg); border-top:1px solid var(--c-line); box-shadow:0 -6px 18px -12px rgba(0,0,0,.3); }
.uy .bar .btn{ min-height:48px; }
@media (min-width:1080px){ .uy .bar{ display:none; } }

/* ---------- 24. ESTADOS --------------------------------------------- */
/* Sección vacía: el servidor no imprime la <section> ({% if %}). Respaldo: */
.uy section:empty, .uy .sec:has(> .wrap:empty){ display:none; }

/* Producción: las fotos reales son <img class="ph …">; el marcador rayado queda de fondo mientras cargan. */
.uy img.ph{ width:100%; height:auto; object-fit:cover; object-position:center; }
.uy img.r-banner, .uy img.r-169, .uy img.r-32, .uy img.r-sq, .uy img.r-promo, .uy img.r-dl, .uy img.r-45, .uy img.arch{ height:auto; }
.uy img.hero-photo{ height:clamp(300px, 46vw, 640px); }
@media (min-width:1000px){ .uy[data-plantilla="comida"] img.hero-photo{ height:680px; } }
.uy[data-plantilla="comercio"] .prod img.ph{ aspect-ratio:1/1; }
.uy .logo img{ width:100%; height:auto; }
.uy .logo-c img{ width:100%; height:auto; }

/* ---------- 25. MAPA ANOTADO (solo lienzo de diseño) ----------------- */
.uy[data-anotar="si"] [data-cms]{ outline:2px dashed #B0124F; outline-offset:-2px; }
.uy[data-anotar="si"] [data-cms]:not(.hdr){ position:relative; }
.uy[data-anotar="si"] [data-cms]::after{ content:attr(data-cms); position:absolute; top:0; left:0; z-index:45; max-width:100%; padding:3px 7px; font:600 12px/1.35 ui-monospace, Menlo, monospace; letter-spacing:0; text-transform:none; color:#FFFFFF; background:#B0124F; pointer-events:none; text-align:left; }
.uy[data-anotar="si"] .safe{ display:block; }
.uy .safe{ display:none; position:absolute; inset:0 20%; border:2px dashed #FFFFFF; outline:2px dashed #B0124F; }

/* ---------- 26. MOVIMIENTO ------------------------------------------ */
@media (prefers-reduced-motion:reduce){
  .uy *, .uy *::before, .uy *::after{ transition:none !important; animation:none !important; scroll-behavior:auto !important; }
}

/* =====================================================================
   PLANTILLAS — cada una cambia tokens y unos pocos patrones.
   ===================================================================== */

/* ---------- P1 · PROFESIONAL Y CONSULTORÍA --------------------------- */
/* Idea: «expediente». Columna de margen con § numerado, filetes finos, mucho aire. */
.uy[data-plantilla="profesional"]{
  --font-display:"Newsreader", Georgia, serif; --font-body:"Public Sans", system-ui, sans-serif;
  --fw-display:500; --track-display:-0.015em;
  --c-bg:#FBFBF9; --c-surface:#F2F2EE; --c-line:#D9D9D2; --c-text:#1B1E23; --c-muted:#545963; --c-dark:#14171C;
  --c-ph:#D3D3CC;
  --r-sm:2px; --r-md:2px; --r-lg:2px; --r-media:0; --r-btn:2px;
  --sec-y:clamp(64px, 3rem + 5vw, 144px);
}
.uy[data-plantilla="profesional"][data-paleta="a"]{ --c-primary:#1F3A5F; --c-on-primary:#FFFFFF; --c-title:#1F3A5F; }
.uy[data-plantilla="profesional"][data-paleta="b"]{ --c-primary:#6B2E2E; --c-on-primary:#FFFFFF; --c-title:#3D1F1F; }
.uy[data-plantilla="profesional"] .logo-sym{ border-radius:0; border-width:1.5px; position:relative; }
.uy[data-plantilla="profesional"] .logo-sym::after{ content:""; position:absolute; inset:5px; border-top:1.5px solid currentColor; border-bottom:1.5px solid currentColor; }
.uy[data-plantilla="profesional"] .eyebrow{ font-family:var(--font-display); font-size:var(--fs-md); letter-spacing:0; text-transform:none; font-style:italic; color:var(--c-muted); }
.uy[data-plantilla="profesional"] .exp{ display:grid; gap:var(--sp-4); }
.uy[data-plantilla="profesional"] .exp-num{ font:400 var(--fs-sm)/1.4 var(--font-body); color:var(--c-muted); padding-top:var(--sp-3); border-top:1px solid var(--c-text); }
.uy[data-plantilla="profesional"] .exp-num b{ display:block; font:400 2.5rem/1 var(--font-display); color:var(--c-title); margin-bottom:var(--sp-2); }
@media (min-width:900px){
  .uy[data-plantilla="profesional"] .exp{ grid-template-columns:200px minmax(0,1fr); gap:var(--sp-8); }
  .uy[data-plantilla="profesional"] .exp-num{ position:sticky; top:calc(var(--hdr-h) + 24px); align-self:start; }
}
.uy[data-plantilla="profesional"] .hero{ padding-top:clamp(40px, 2rem + 4vw, 112px); }
.uy[data-plantilla="profesional"] .hero-grid{ display:grid; gap:var(--sp-6); }
.uy[data-plantilla="profesional"] .hero h1{ --h1-max:clamp(2.5rem, 1.4rem + 4.4vw, 5.5rem); max-width:13ch; }
.uy[data-plantilla="profesional"] .hero-aside{ display:grid; gap:var(--sp-3); align-content:end; font-size:var(--fs-sm); color:var(--c-muted); border-top:1px solid var(--c-line); padding-top:var(--sp-4); }
.uy[data-plantilla="profesional"] .hero-aside strong{ color:var(--c-text); }
.uy[data-plantilla="profesional"] .hero-media{ margin-top:clamp(40px, 2rem + 3vw, 96px); }
@media (min-width:900px){ .uy[data-plantilla="profesional"] .hero-grid{ grid-template-columns:minmax(0,1fr) 300px; align-items:end; gap:var(--sp-9); } }
.uy[data-plantilla="profesional"] .feats{ gap:0; grid-template-columns:1fr; border-top:1px solid var(--c-line); }
.uy[data-plantilla="profesional"] .feat{ grid-template-columns:48px minmax(0,1fr); column-gap:var(--sp-5); padding:var(--sp-5) 0; border-bottom:1px solid var(--c-line); }
.uy[data-plantilla="profesional"] .feat-ico{ grid-row:span 2; background:transparent; color:var(--c-title); border:1px solid var(--c-line); margin:0; }
.uy[data-plantilla="profesional"] .feat h3{ font:500 var(--fs-h3)/1.2 var(--font-display); }
@media (min-width:900px){ .uy[data-plantilla="profesional"] .feats{ grid-template-columns:1fr 1fr; column-gap:var(--sp-7); } }
.uy[data-plantilla="profesional"] .acc-i h3{ font-size:clamp(1.375rem, 1.1rem + 1vw, 2rem); }
.uy[data-plantilla="profesional"] .acc-tg{ border-radius:0; }
.uy[data-plantilla="profesional"] .t{ border:0; border-top:1px solid var(--c-text); border-radius:0; padding:var(--sp-5) 0 0; background:transparent; }
.uy[data-plantilla="profesional"] .t blockquote{ font-family:var(--font-display); font-size:var(--fs-lg); line-height:1.45; }
.uy[data-plantilla="profesional"] .logo-c{ border-radius:0; filter:grayscale(1); }
.uy[data-plantilla="profesional"] .cta h2{ font-style:italic; }
.uy[data-plantilla="profesional"] .ftr{ background:var(--c-dark); }

/* ---------- P2 · SALUD Y BIENESTAR ----------------------------------- */
/* Idea: «arcos». Fotos con remate de arco, ritmo pausado, superficies cálidas. */
.uy[data-plantilla="salud"]{
  --font-display:"Fraunces", Georgia, serif; --font-body:"Figtree", system-ui, sans-serif;
  --fw-display:500; --track-display:-0.02em;
  --c-bg:#FBF8F4; --c-surface:#F2ECE4; --c-surface-2:#E9E0D5; --c-line:#E0D6CA; --c-text:#2A2420; --c-muted:#5C5348; --c-dark:#2A2420; --c-on-dark:#F7F1EA; --c-on-dark-muted:#CFC4B8;
  --c-ph:#DCCFC0; --c-ph-line:rgba(90,60,30,.06);
  --r-sm:8px; --r-md:14px; --r-lg:24px; --r-media:24px; --r-btn:999px;
  --arch:999px 999px var(--r-media) var(--r-media);
}
.uy[data-plantilla="salud"][data-paleta="a"]{ --c-primary:#2F6B5E; --c-on-primary:#FFFFFF; --c-title:#24493F; }
.uy[data-plantilla="salud"][data-paleta="b"]{ --c-primary:#E9B8A6; --c-on-primary:#3A1F17; --c-title:#7A3B2E; }
.uy[data-plantilla="salud"] .logo-sym{ border-radius:999px 999px 4px 4px; }
.uy[data-plantilla="salud"] .eyebrow{ letter-spacing:.08em; color:var(--c-muted); }
.uy[data-plantilla="salud"] .sh{ justify-items:start; }
.uy[data-plantilla="salud"] .sh-c{ justify-items:center; text-align:center; margin-inline:auto; }
.uy[data-plantilla="salud"] .hero{ padding-top:var(--sp-6); padding-bottom:var(--sec-y); }
.uy[data-plantilla="salud"] .hero-grid{ display:grid; gap:var(--sp-6); align-items:center; }
.uy[data-plantilla="salud"] .hero h1{ --h1-max:clamp(2.5rem, 1.6rem + 3.6vw, 4.75rem); max-width:12ch; }
.uy[data-plantilla="salud"] .hero h1 em{ font-style:italic; font-weight:400; }
.uy[data-plantilla="salud"] .hero-media{ margin:0; }
.uy[data-plantilla="salud"] .arch{ border-radius:var(--arch); aspect-ratio:4/5; }
.uy[data-plantilla="salud"] .hero-note{ display:flex; gap:var(--sp-3); align-items:center; color:var(--c-muted); font-size:var(--fs-sm); }
.uy[data-plantilla="salud"] .hero-note .ico{ color:var(--c-title); }
@media (min-width:900px){
  .uy[data-plantilla="salud"] .hero-grid{ grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); gap:var(--sp-9); }
  .uy[data-plantilla="salud"] .hero-media .arch{ max-height:640px; margin-left:auto; width:min(100%, 520px); }
}
.uy[data-plantilla="salud"] .feats{ grid-template-columns:repeat(auto-fit, minmax(min(220px,100%),1fr)); text-align:left; }
.uy[data-plantilla="salud"] .feat-ico{ border-radius:50%; width:56px; height:56px; background:var(--c-primary-soft); color:var(--c-title); }
.uy[data-plantilla="salud"] .feat h3{ font:500 var(--fs-h3)/1.2 var(--font-display); }
.uy[data-plantilla="salud"] .card{ border:0; background:var(--c-bg); box-shadow:var(--sh-1); }
.uy[data-plantilla="salud"] .card .ph{ border-radius:var(--arch); margin:var(--sp-4) var(--sp-4) 0; }
.uy[data-plantilla="salud"] .card h3{ font-size:var(--fs-h3); }
.uy[data-plantilla="salud"] .about .ph{ border-radius:var(--r-lg); }
.uy[data-plantilla="salud"] .gal .ph{ border-radius:var(--r-lg); }
.uy[data-plantilla="salud"] .gal > li:first-child:not(:only-child) .ph{ border-radius:var(--arch); }
.uy[data-plantilla="salud"] .t{ border:0; background:var(--c-surface); }
.uy[data-plantilla="salud"] .testis[data-n="1"] .t{ background:transparent; margin-inline:auto; text-align:center; }
.uy[data-plantilla="salud"] .testis[data-n="1"] .t-who{ justify-content:center; }
.uy[data-plantilla="salud"] .cta{ border-radius:var(--r-lg); margin-inline:var(--gutter); }
.uy[data-plantilla="salud"] .cta-in{ text-align:left; }
.uy[data-plantilla="salud"] .ftr{ background:var(--c-dark); }
.uy[data-plantilla="salud"] .qa > summary{ font-family:var(--font-display); font-weight:500; font-size:var(--fs-md); }

/* ---------- P3 · COMIDA Y RESTAURANTES ------------------------------- */
/* Idea: «la carta». Foto a sangre, panel sólido con horario de hoy, carta con renglones punteados. */
.uy[data-plantilla="comida"]{
  --font-display:"Bricolage Grotesque", "Arial Narrow", sans-serif; --font-body:"Work Sans", system-ui, sans-serif;
  --fw-display:800; --track-display:-0.03em;
  --c-bg:#FFF9F1; --c-surface:#F7EBDB; --c-line:#E8D8C2; --c-text:#2A1A10; --c-muted:#5A4A3A;
  --c-dark:#1E1510; --c-on-dark:#FFF4E6; --c-on-dark-muted:#C9B9A6;
  --c-ph:#CDB79B; --c-ph-line:rgba(70,35,10,.07);
  --r-sm:6px; --r-md:12px; --r-lg:20px; --r-media:16px; --r-btn:12px;
}
.uy[data-plantilla="comida"][data-paleta="a"]{ --c-primary:#B3261E; --c-on-primary:#FFFFFF; --c-title:#3A1D12; }
.uy[data-plantilla="comida"][data-paleta="b"]{ --c-primary:#F2B33D; --c-on-primary:#2A1A05; --c-title:#2F4A1E; }
.uy[data-plantilla="comida"] .logo-sym{ border-radius:50%; border-width:3px; }
.uy[data-plantilla="comida"] .hero{ padding:0; position:relative; }
.uy[data-plantilla="comida"] .hero-photo{ border-radius:0; aspect-ratio:auto; height:clamp(300px, 46vw, 640px); }
.uy[data-plantilla="comida"] .hero-panel{ position:relative; margin:-48px var(--gutter) 0; padding:var(--sp-6) var(--sp-5); background:var(--c-bg); border-radius:var(--r-lg); box-shadow:var(--sh-2); display:grid; gap:var(--sp-4); }
.uy[data-plantilla="comida"] .hero h1{ --h1-max:clamp(2.5rem, 1.5rem + 4.2vw, 5.25rem); line-height:.98; }
.uy[data-plantilla="comida"] .today{ display:grid; gap:4px; padding:var(--sp-4); border:2px dashed var(--c-line); border-radius:var(--r-md); background:var(--c-surface); }
.uy[data-plantilla="comida"] .today b{ font-family:var(--font-display); font-size:var(--fs-lg); color:var(--c-title); }
@media (min-width:1000px){
  .uy[data-plantilla="comida"] .hero-panel{ position:absolute; left:max(var(--gutter), calc((100% - var(--container)) / 2 + var(--gutter))); bottom:-72px; margin:0; width:560px; padding:var(--sp-7); }
  .uy[data-plantilla="comida"] .hero{ margin-bottom:120px; }
  .uy[data-plantilla="comida"] .hero-photo{ height:680px; }
}
.uy[data-plantilla="comida"] .feats{ grid-template-columns:repeat(auto-fit, minmax(min(200px,100%),1fr)); gap:var(--sp-4); }
.uy[data-plantilla="comida"] .feat{ grid-template-columns:auto 1fr; column-gap:var(--sp-3); }
.uy[data-plantilla="comida"] .feat-ico{ grid-row:span 2; border-radius:50%; margin:0; }
.uy[data-plantilla="comida"] .carta{ background:var(--c-dark); color:var(--c-on-dark); --c-title:var(--c-on-dark); --c-muted:var(--c-on-dark-muted); --c-line:rgba(255,244,230,.22); --c-focus:#FFFFFF; }
.uy[data-plantilla="comida"] .carta a{ color:var(--c-on-dark); }
.uy[data-plantilla="comida"] .carta-idx{ list-style:none; display:flex; gap:var(--sp-2); overflow-x:auto; padding-bottom:var(--sp-2); margin-bottom:var(--sp-6); }
.uy[data-plantilla="comida"] .carta-idx a{ display:inline-flex; align-items:center; min-height:var(--tap); padding:0 16px; border:1px solid var(--c-line); border-radius:var(--r-pill); white-space:nowrap; text-decoration:none; font-weight:600; }
.uy[data-plantilla="comida"] .carta-grid{ display:grid; gap:var(--sp-8); }
.uy[data-plantilla="comida"] .cat{ display:grid; gap:var(--sp-4); align-content:start; scroll-margin-top:calc(var(--hdr-h) + 16px); }
.uy[data-plantilla="comida"] .cat h3{ font-size:var(--fs-h2); }
.uy[data-plantilla="comida"] .cat .rich p{ color:var(--c-on-dark-muted); }
.uy[data-plantilla="comida"] .dishes{ list-style:none; padding:0; display:grid; gap:0; }
.uy[data-plantilla="comida"] .dishes li{ display:flex; justify-content:space-between; gap:var(--sp-4); padding:12px 0; border-bottom:1px dotted var(--c-line); }
.uy[data-plantilla="comida"] .dishes li span:last-child{ font-variant-numeric:tabular-nums; white-space:nowrap; font-weight:600; }
.uy[data-plantilla="comida"] .cat .thumbs .ph{ border-radius:var(--r-md); }
@media (min-width:900px){ .uy[data-plantilla="comida"] .carta-grid{ grid-template-columns:1fr 1fr; column-gap:var(--sp-9); row-gap:var(--sp-9); } }
.uy[data-plantilla="comida"] .visit{ align-items:start; }
.uy[data-plantilla="comida"] .hours-card{ background:var(--c-primary); color:var(--c-on-primary); border-radius:var(--r-lg); padding:var(--sp-6); --c-title:var(--c-on-primary); --c-line:color-mix(in srgb, var(--c-on-primary) 25%, transparent); --c-muted:var(--c-on-primary); --c-focus:var(--c-on-primary); }
.uy[data-plantilla="comida"] .hours-card h2{ color:var(--c-on-primary); margin-bottom:var(--sp-4); }
.uy[data-plantilla="comida"] .t{ background:var(--c-surface); border:0; }
.uy[data-plantilla="comida"] .ftr{ background:var(--c-dark); }

/* ---------- P4 · SERVICIOS TÉCNICOS E INDUSTRIA ---------------------- */
/* Idea: «ficha técnica». Placas numeradas, etiquetas mono, cantos rectos, filete de seguridad. */
.uy[data-plantilla="tecnico"]{
  --font-display:"Archivo", "Arial Narrow", sans-serif; --font-body:"Archivo", system-ui, sans-serif; --font-mono:"IBM Plex Mono", ui-monospace, monospace;
  --fw-display:800; --track-display:-0.01em; --case-display:uppercase;
  --c-bg:#F3F3F1; --c-surface:#E7E7E3; --c-line:#C9C9C3; --c-text:#121212; --c-muted:#4D4D4D;
  --c-dark:#121212; --c-on-dark:#F3F3F1; --c-on-dark-muted:#B5B5AF;
  --c-ph:#BDBDB6; --c-ph-line:rgba(0,0,0,.07);
  --r-sm:0; --r-md:0; --r-lg:0; --r-media:0; --r-btn:0; --r-pill:0;
}
.uy[data-plantilla="tecnico"][data-paleta="a"]{ --c-primary:#FFC20E; --c-on-primary:#111111; --c-title:#111111; }
.uy[data-plantilla="tecnico"][data-paleta="b"]{ --c-primary:#0B4F8A; --c-on-primary:#FFFFFF; --c-title:#0B2742; }
.uy[data-plantilla="tecnico"] h1, .uy[data-plantilla="tecnico"] h2, .uy[data-plantilla="tecnico"] h3{ font-stretch:75%; }
.uy[data-plantilla="tecnico"] .logo-sym{ border-width:3px; transform:rotate(45deg) scale(.8); }
.uy[data-plantilla="tecnico"] .logo-txt{ font-family:var(--font-display); font-stretch:80%; text-transform:uppercase; font-weight:800; }
.uy[data-plantilla="tecnico"] .eyebrow, .uy[data-plantilla="tecnico"] .acc-n, .uy[data-plantilla="tecnico"] .mono{ font-family:var(--font-mono); letter-spacing:.04em; }
.uy[data-plantilla="tecnico"] .stripe{ height:14px; background:repeating-linear-gradient(-45deg, var(--c-primary) 0 14px, #121212 14px 28px); }
.uy[data-plantilla="tecnico"] .hero{ background:var(--c-dark); color:var(--c-on-dark); padding:var(--sp-7) 0 0; --c-title:var(--c-on-dark); --c-muted:var(--c-on-dark-muted); --c-focus:#FFFFFF; }
.uy[data-plantilla="tecnico"] .hero h1{ --h1-max:clamp(2.75rem, 1.4rem + 6vw, 7.5rem); line-height:.92; max-width:16ch; }
.uy[data-plantilla="tecnico"] .hero-grid{ display:grid; gap:var(--sp-5); }
.uy[data-plantilla="tecnico"] .hero-sub{ color:var(--c-on-dark-muted); font-family:var(--font-mono); font-size:var(--fs-base); }
.uy[data-plantilla="tecnico"] .hero-media{ margin-top:var(--sp-7); }
@media (min-width:900px){ .uy[data-plantilla="tecnico"] .hero-grid{ grid-template-columns:minmax(0,1fr) 340px; align-items:end; } }
.uy[data-plantilla="tecnico"] .sh{ border-top:3px solid var(--c-text); padding-top:var(--sp-4); max-width:none; grid-template-columns:auto 1fr; column-gap:var(--sp-5); align-items:baseline; }
.uy[data-plantilla="tecnico"] .sh .eyebrow{ grid-row:span 2; font-size:var(--fs-sm); color:var(--c-text); }
.uy[data-plantilla="tecnico"] .sh .lead{ grid-column:2; }
.uy[data-plantilla="tecnico"] .feats{ gap:0; grid-template-columns:repeat(auto-fit, minmax(min(260px,100%),1fr)); border-left:1px solid var(--c-line); border-top:1px solid var(--c-line); counter-reset:placa; }
.uy[data-plantilla="tecnico"] .feat{ padding:var(--sp-5); border-right:1px solid var(--c-line); border-bottom:1px solid var(--c-line); background:var(--c-bg); counter-increment:placa; position:relative; }
.uy[data-plantilla="tecnico"] .feat::before{ content:counter(placa, decimal-leading-zero); position:absolute; top:var(--sp-5); right:var(--sp-5); font:500 var(--fs-sm)/1 var(--font-mono); color:var(--c-muted); }
.uy[data-plantilla="tecnico"] .feat h3{ font:800 var(--fs-lg)/1.1 var(--font-display); font-stretch:80%; text-transform:uppercase; }
.uy[data-plantilla="tecnico"] .acc{ border-top:3px solid var(--c-text); }
.uy[data-plantilla="tecnico"] .acc-i h3{ font-size:clamp(1.375rem, 1.1rem + 1.2vw, 2.25rem); }
.uy[data-plantilla="tecnico"] .acc-tg{ border-radius:0; border:2px solid var(--c-text); color:var(--c-text); }
.uy[data-plantilla="tecnico"] .specs{ width:100%; border-collapse:collapse; font-size:var(--fs-sm); }
.uy[data-plantilla="tecnico"] .specs th, .uy[data-plantilla="tecnico"] .specs td{ text-align:left; padding:8px 0; border-bottom:1px solid var(--c-line); }
.uy[data-plantilla="tecnico"] .specs th{ font-family:var(--font-mono); font-weight:500; color:var(--c-muted); width:40%; }
.uy[data-plantilla="tecnico"] .t{ border:0; border-left:4px solid var(--c-text); background:var(--c-bg); }
.uy[data-plantilla="tecnico"] .logo-c{ background:var(--c-bg); filter:grayscale(1); font-family:var(--font-mono); }
.uy[data-plantilla="tecnico"] .cta{ position:relative; }
.uy[data-plantilla="tecnico"] .cta h2{ font-size:clamp(2rem, 1.4rem + 2.6vw, 3.75rem); }
.uy[data-plantilla="tecnico"] .dl .ph{ border:1px solid var(--c-line); }
.uy[data-plantilla="tecnico"] .field input, .uy[data-plantilla="tecnico"] .field textarea{ border:2px solid var(--c-text); }

/* ---------- P5 · ASOCIACIONES, FUNDACIONES Y COOPERATIVAS ------------ */
/* Idea: «el hilo». Manifiesto en itálica y logros ensartados en una línea vertical. */
.uy[data-plantilla="asociacion"]{
  --font-display:"Hanken Grotesk", system-ui, sans-serif; --font-body:"Hanken Grotesk", system-ui, sans-serif; --font-serif:"Literata", Georgia, serif;
  --fw-display:800; --track-display:-0.025em;
  --c-bg:#FFFFFF; --c-surface:#F1F4F3; --c-line:#D8DEDC; --c-text:#17201E; --c-muted:#4E5957;
  --c-dark:#10201F; --c-on-dark:#EEF3F2; --c-on-dark-muted:#AFC0BD;
  --c-ph:#C9D3D0; --c-ph-line:rgba(0,40,40,.06);
  --r-sm:4px; --r-md:6px; --r-lg:10px; --r-media:6px; --r-btn:6px;
}
.uy[data-plantilla="asociacion"][data-paleta="a"]{ --c-primary:#0F5C6E; --c-on-primary:#FFFFFF; --c-title:#0F3B47; }
.uy[data-plantilla="asociacion"][data-paleta="b"]{ --c-primary:#7A1F3D; --c-on-primary:#FFFFFF; --c-title:#4A1326; }
.uy[data-plantilla="asociacion"] .logo-sym{ border-radius:50%; border-style:double; border-width:4px; }
.uy[data-plantilla="asociacion"] .hero{ padding:0; }
.uy[data-plantilla="asociacion"] .hero .ph{ border-radius:0; }
.uy[data-plantilla="asociacion"] .hero-card{ position:relative; margin-top:-56px; background:var(--c-bg); padding:var(--sp-6) var(--sp-5) 0; border-top:6px solid var(--c-primary); display:grid; gap:var(--sp-4); }
.uy[data-plantilla="asociacion"] .hero h1{ --h1-max:clamp(2.5rem, 1.5rem + 4vw, 5rem); max-width:18ch; }
@media (min-width:900px){
  .uy[data-plantilla="asociacion"] .hero-card{ margin-top:-140px; padding:var(--sp-7) var(--sp-7) 0; max-width:900px; grid-template-columns:minmax(0,1fr); }
}
.uy[data-plantilla="asociacion"] .manif{ font:italic 400 clamp(1.75rem, 1.2rem + 2.2vw, 3.25rem)/1.18 var(--font-serif); letter-spacing:-.01em; color:var(--c-title); max-width:24ch; }
.uy[data-plantilla="asociacion"] .about-txt p{ font-size:var(--fs-lg); }
.uy[data-plantilla="asociacion"] .hilo{ list-style:none; display:grid; gap:0; position:relative; padding-left:40px; }
.uy[data-plantilla="asociacion"] .hilo::before{ content:""; position:absolute; left:11px; top:8px; bottom:8px; width:2px; background:var(--c-primary); }
.uy[data-plantilla="asociacion"] .hilo .feat{ position:relative; padding:0 0 var(--sp-7); }
.uy[data-plantilla="asociacion"] .hilo .feat:last-child{ padding-bottom:0; }
.uy[data-plantilla="asociacion"] .hilo .feat-ico{ position:absolute; left:-40px; top:-4px; width:24px; height:24px; border-radius:50%; margin:0; border:3px solid var(--c-bg); box-shadow:0 0 0 2px var(--c-primary); }
.uy[data-plantilla="asociacion"] .hilo .feat-ico .ico{ display:none; }
.uy[data-plantilla="asociacion"] .hilo .feat h3{ font:800 var(--fs-h3)/1.15 var(--font-display); }
.uy[data-plantilla="asociacion"] .hilo .feat .fa{ display:inline-flex; align-items:center; gap:8px; font-size:var(--fs-sm); color:var(--c-muted); }
@media (min-width:900px){
  .uy[data-plantilla="asociacion"] .hilo{ grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:var(--sp-8); padding-left:0; }
  .uy[data-plantilla="asociacion"] .hilo::before{ left:50%; }
  .uy[data-plantilla="asociacion"] .hilo .feat{ padding:0 0 var(--sp-8); }
  .uy[data-plantilla="asociacion"] .hilo .feat:nth-child(odd){ text-align:right; padding-right:var(--sp-7); }
  .uy[data-plantilla="asociacion"] .hilo .feat:nth-child(even){ margin-top:var(--sp-9); padding-left:var(--sp-7); }
  .uy[data-plantilla="asociacion"] .hilo .feat:nth-child(odd) .feat-ico{ left:auto; right:calc(-1 * var(--sp-8) / 2 - 12px); }
  .uy[data-plantilla="asociacion"] .hilo .feat:nth-child(even) .feat-ico{ left:calc(-1 * var(--sp-8) / 2 - 12px); }
  .uy[data-plantilla="asociacion"] .hilo .feat:nth-child(odd) .fa{ justify-content:flex-end; }
}
.uy[data-plantilla="asociacion"] .t blockquote, .uy[data-plantilla="asociacion"] .testis[data-n="1"] blockquote{ font-family:var(--font-serif); font-style:italic; }
.uy[data-plantilla="asociacion"] .aliados{ background:var(--c-surface); }
.uy[data-plantilla="asociacion"] .logo-c{ border:0; }
.uy[data-plantilla="asociacion"] .n .ph{ border-radius:var(--r-media); }
.uy[data-plantilla="asociacion"] .dl .ph{ box-shadow:var(--sh-2); }
.uy[data-plantilla="asociacion"] .ftr{ background:var(--c-dark); }

/* ---------- P6 · COMERCIO CON CATÁLOGO Y TIENDA ---------------------- */
/* Idea: «etiqueta de precio». Tarjetas con etiqueta troquelada, carrusel con primera diapositiva visible. */
.uy[data-plantilla="comercio"]{
  --font-display:"Schibsted Grotesk", system-ui, sans-serif; --font-body:"Schibsted Grotesk", system-ui, sans-serif; --font-mono:"DM Mono", ui-monospace, monospace;
  --fw-display:800; --track-display:-0.035em;
  --c-bg:#FAFAF7; --c-surface:#EFEEE8; --c-line:#DAD8CF; --c-text:#1C1917; --c-muted:#57534E;
  --c-dark:#1C1917; --c-on-dark:#FAFAF7; --c-on-dark-muted:#BDB8B0;
  --c-ph:#CFC6B8; --c-ph-line:rgba(60,40,20,.06);
  --r-sm:6px; --r-md:10px; --r-lg:14px; --r-media:12px; --r-btn:10px;
}
.uy[data-plantilla="comercio"][data-paleta="a"]{ --c-primary:#C2410C; --c-on-primary:#FFFFFF; --c-title:#1C1917; }
.uy[data-plantilla="comercio"][data-paleta="b"]{ --c-primary:#1E3A8A; --c-on-primary:#FFFFFF; --c-title:#1E3A8A; }
.uy[data-plantilla="comercio"] .logo-sym{ border-radius:6px 50% 50% 50%; }
.uy[data-plantilla="comercio"] .hero{ padding-top:var(--sp-6); }
.uy[data-plantilla="comercio"] .hero-head{ display:grid; gap:var(--sp-4); }
.uy[data-plantilla="comercio"] .hero h1{ --h1-max:clamp(2.5rem, 1.4rem + 4.6vw, 5.75rem); line-height:.95; }
@media (min-width:900px){ .uy[data-plantilla="comercio"] .hero-head{ grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr); align-items:end; gap:var(--sp-8); } }
.uy[data-plantilla="comercio"] .car{ margin-top:var(--sp-6); }
.uy[data-plantilla="comercio"] .car-ctl{ display:flex; align-items:center; justify-content:space-between; gap:var(--sp-3); margin-top:var(--sp-3); }
.uy[data-plantilla="comercio"] .dots{ list-style:none; display:flex; gap:0; }
.uy[data-plantilla="comercio"] .dots button{ width:var(--tap); height:var(--tap); border:0; background:transparent; display:grid; place-items:center; cursor:pointer; padding:0; }
.uy[data-plantilla="comercio"] .dots button span{ width:28px; height:4px; border-radius:2px; background:var(--c-line); }
.uy[data-plantilla="comercio"] .dots button[aria-current="true"] span{ background:var(--c-text); }
.uy[data-plantilla="comercio"] .car-arrows{ display:flex; gap:var(--sp-2); }
.uy[data-plantilla="comercio"] .car-arrows button{ width:var(--tap); height:var(--tap); display:grid; place-items:center; border:1.5px solid var(--c-text); background:transparent; color:var(--c-text); border-radius:50%; cursor:pointer; }
.uy[data-plantilla="comercio"] .prods{ list-style:none; display:grid; gap:var(--sp-5); grid-template-columns:repeat(auto-fill, minmax(min(260px,100%),1fr)); }
.uy[data-plantilla="comercio"] .prod{ display:grid; gap:var(--sp-3); align-content:start; position:relative; }
.uy[data-plantilla="comercio"] .prod .ph{ aspect-ratio:1/1; }
.uy[data-plantilla="comercio"] .tag{ position:absolute; top:12px; left:12px; display:inline-flex; align-items:center; gap:6px; padding:6px 12px 6px 18px; background:var(--c-bg); color:var(--c-text); font:500 var(--fs-sm)/1.2 var(--font-mono); clip-path:polygon(10px 0, 100% 0, 100% 100%, 10px 100%, 0 50%); }
.uy[data-plantilla="comercio"] .tag::before{ content:""; position:absolute; left:8px; top:50%; width:5px; height:5px; margin-top:-2.5px; border-radius:50%; background:var(--c-text); }
.uy[data-plantilla="comercio"] .prod h3{ font-size:var(--fs-lg); letter-spacing:-.02em; }
.uy[data-plantilla="comercio"] .prod .rich{ gap:var(--sp-2); color:var(--c-muted); }
.uy[data-plantilla="comercio"] .prod .btn{ justify-self:start; }
@media (min-width:1080px){
  .uy[data-plantilla="comercio"] .prods{ grid-template-columns:repeat(4,minmax(0,1fr)); }
  .uy[data-plantilla="comercio"] .prods > .prod:first-child:not(:only-child){ grid-column:span 2; grid-row:span 2; }
  .uy[data-plantilla="comercio"] .prods > .prod:first-child:not(:only-child) h3{ font-size:var(--fs-h2); }
}
.uy[data-plantilla="comercio"] .feats{ grid-template-columns:repeat(auto-fit, minmax(min(220px,100%),1fr)); gap:var(--sp-4); }
.uy[data-plantilla="comercio"] .feat{ padding:var(--sp-5); border:1.5px dashed var(--c-line); border-radius:var(--r-lg); }
.uy[data-plantilla="comercio"] .feat-ico{ border-radius:var(--r-md); }
.uy[data-plantilla="comercio"] .pay{ display:flex; flex-wrap:wrap; gap:var(--sp-2); list-style:none; margin-top:var(--sp-2); }
.uy[data-plantilla="comercio"] .pay li{ padding:4px 10px; border:1px solid currentColor; border-radius:var(--r-sm); font:500 var(--fs-sm)/1.4 var(--font-mono); }
.uy[data-plantilla="comercio"] .t{ border:0; background:var(--c-bg); box-shadow:var(--sh-1); }
.uy[data-plantilla="comercio"] .ftr{ background:var(--c-dark); }

/* ---------- Ajustes de UbicaYá al integrar (no son del lienzo de diseño) ---------- */
/* Logos reales: muchos clientes no tienen uno apaisado de 280×68 (hay cuadrados y altos). Se limita la altura. */
.uy .hdr .logo img{max-height:56px;width:auto;height:auto;max-width:220px;object-fit:contain}
.uy .ftr .logo img{max-height:64px;width:auto;height:auto;max-width:240px;object-fit:contain}
@media (min-width:900px){.uy .hdr .logo img{max-height:64px}}
/* Ningún adorno puede crear desplazamiento lateral en el celular */
html,body.uy{overflow-x:clip}
/* Mensaje del formulario (envío por fetch) */
.uy .form-estado{min-height:1.4em;margin:0;color:var(--c-muted)}
/* Precio de la categoría en la carta (PlaceItem.precio) */
.uy[data-plantilla="comida"] .cat .precio{ margin:calc(var(--sp-2) * -1) 0 var(--sp-3); font-family:var(--font-display); font-size:var(--fs-md); color:var(--c-on-dark-muted); font-variant-numeric:tabular-nums; }
.uy[data-plantilla="comercio"] .tag{ font-variant-numeric:tabular-nums; }
/* WhatsApp por servicio: discreto, dentro de la tarjeta o del acordeón */
.uy .btn-serv{ margin-top:var(--sp-3); min-height:var(--tap); font-size:var(--fs-sm); color:var(--c-title); }
.uy .on-dark .btn-serv, .uy[data-plantilla="comida"] .carta .btn-serv{ color:var(--c-on-dark); }
/* Texto del editor: las sangrías de Summernote (margin-left: 425px) y los anchos fijos ensanchaban la columna en el
   celular y, con overflow-x:clip, el texto quedaba cortado sin poder leerse */
.uy .rich > *{ min-width:0; }
.uy .rich [style*="margin"]{ margin-left:0 !important; margin-right:0 !important; }
.uy .rich [style*="width"], .uy .rich img, .uy .rich table{ max-width:100% !important; }
.uy .rich img{ height:auto; }
.uy .rich table{ display:block; overflow-x:auto; }
/* Comercio sin foto del producto: la etiqueta deja de ir encima (se montaba sobre el título) */
.uy[data-plantilla="comercio"] .prod > .tag:first-child{ position:static; justify-self:start; }
/* Crédito del pie: área de toque de 44 px */
.uy .credito, .uy footer a[href*="utm_source=credito"]{ display:inline-flex; align-items:center; min-height:44px; }
/* Colores, fuentes y tamaños puestos a mano en el editor (<font color="#6badde" face="Arial Black">, style="font-size:24px")
   rompían el contraste (2,3:1) y la tipografía de la plantilla (también en el primer párrafo de las tarjetas, fuera de .rich). Los títulos toman el color de títulos; el resto, el del texto */
.uy main font, .uy main [style*="color"], .uy main [style*="font-family"], .uy main [style*="font-size"]{ color:inherit !important; font-family:inherit !important; font-size:inherit !important; background-color:transparent !important; }
.uy main :is(h2,h3,h4,h5,h6)[style*="color"]{ color:var(--c-title) !important; }
/* Galería: el modo que ya se elige en el panel («Cómo se ve la galería»). Las fotos verticales de celular perdían la mitad */
.uy .gal a{ display:block; height:100%; }  /* la primera foto grande usa height:100% */
.uy .gal[data-modo="completa"] img{ object-fit:contain; background:var(--c-surface); }
.uy .gal[data-modo="mosaico"]{ align-items:start; }
.uy .gal[data-modo="mosaico"] img{ aspect-ratio:auto; }
/* Celular: recortes menos agresivos. El banner 1920×500 en una caja de 220 px de alto dejaba ver el 44 % central (se
   perdían caras y textos de los bordes); 12:5 es la proporción del carrusel (1200×500). El arco de Salud pasa de 4:5 a 4:3
   y las tarjetas de 4:5 a 4:3, porque las fotos del CMS son horizontales (900×600) */
@media (max-width:699px){
  .uy .r-banner{ aspect-ratio:12/5; min-height:0; }
  .uy[data-plantilla="salud"] .hero-media .arch{ aspect-ratio:4/3; }
}
.uy .card .r-45{ aspect-ratio:4/3; }
/* Foto del testimonio: 48 px. La regla general de .ph (ancho 100 %) la estiraba al ancho de la tarjeta y la sacaba de ella */
.uy img.t-photo{ width:48px !important; height:48px !important; aspect-ratio:1; object-fit:cover; }
/* «Califícanos en Google» (Fase 6): bajo los testimonios y en contacto */
.uy .btn-resena{ margin-top:var(--sp-5); justify-self:start; color:var(--c-title); }
/* H1 con el nombre (Fase 6, observaciones de Sergio): «RESTAURAN-TE» partido, «SAS» solo en un renglón y nombres de
   3–4 renglones. El tamaño es el menor entre el de la plantilla (--h1-max), el que deja caber la palabra más larga
   (--pl, en em, lo calcula sitio.medidas_h1) y el que deja el nombre en ~3 renglones (--nl), medidos contra su columna */
.uy .hero :is(.hero-txt, .hero-panel, .hero-card, .hero-h1){ container-type:inline-size; }
.uy .hero h1.h1-nombre{
  font-size:max(1.6rem, min(var(--h1-max, var(--fs-h1)), calc(100cqi / (var(--pl, 6) * var(--k, 1))), calc(var(--renglones) * 100cqi / (var(--nl, 12) * var(--k, 1)))));
  max-width:none; overflow-wrap:break-word; hyphens:manual;
}
/* --k: ancho real de cada fuente frente a la estimación (medido con los 18 clientes de la auditoría) */
.uy[data-plantilla="profesional"] .hero h1.h1-nombre{ --k:.94; }
.uy[data-plantilla="salud"] .hero h1.h1-nombre{ --k:.96; }
.uy[data-plantilla="comida"] .hero h1.h1-nombre{ --k:.84; }
.uy[data-plantilla="tecnico"] .hero h1.h1-nombre{ --k:.81; }  /* Archivo al 75 % de ancho */
.uy[data-plantilla="asociacion"] .hero h1.h1-nombre{ --k:.87; }
/* Holgura para el corte entre palabras: con el ancho de 1,6 renglones caben en 2 en escritorio; con 2,5, en 3 en el celular */
.uy .hero h1.h1-nombre{ --renglones:2.5; }
@media (min-width:900px){ .uy .hero h1.h1-nombre{ --renglones:1.6; } }

/* =====================================================================
   === Tienda === · v1 · noviembre 2026
   Lo que la Tienda en línea agrega al mismo sistema. Reutiliza tokens, .btn, .field, .check, .rich,
   .wrap, .bar, .ph y el encabezado/pie de la Página. Prefijo .td- para no chocar con la Página.
   Raíz: <body class="uy" data-plantilla="…" data-menu="…" data-pagina="tienda" style="--c-primary:…">
   Regla de siempre: --c-primary es fondo de botones y franjas, NUNCA color de texto.
   ===================================================================== */
.uy{
  /* Estados del pedido. No son de marca: son del sistema y no cambian con el cliente.
     Texto ≥ 4,5:1 sobre --c-bg de las 6 plantillas y sobre su propio -soft. */
  --c-ok:#1D6B3A; --c-ok-soft:#E3F1E7;
  --c-warn:#7A4A00; --c-warn-soft:#FCEFD2;
  --c-err:#A8231B; --c-err-soft:#FBEAE8;
  --c-field:#8A8F96;            /* borde de campos y controles (≥ 3:1), el mismo de .field */
  --td-thumb:64px;              /* foto de la línea del carrito */
}

/* hidden siempre gana (fieldsets y bloques con display propio que el JS oculta) */
.uy [hidden]{ display:none !important; }

/* ---------- T1. ENCABEZADO: ítem «Tienda» y botón del carrito ------- */
.uy .nav a[aria-current="page"]{ text-decoration:underline; text-decoration-thickness:2px; text-underline-offset:.45em; }
.uy .nav-m-panel a[aria-current="page"]{ font-weight:700; }
.uy .td-cart-btn{ position:relative; display:inline-flex; align-items:center; justify-content:center; gap:8px; flex:none;
  min-width:var(--tap); min-height:var(--tap); margin-left:auto; padding:0 8px; border:0; border-radius:var(--r-md);
  background:transparent; color:var(--c-menu-fg); font:600 var(--fs-sm)/1 var(--font-body); text-decoration:none; cursor:pointer; }
.uy .td-cart-btn:hover{ background:color-mix(in srgb, var(--c-menu-fg) 8%, transparent); }
.uy .td-cart-btn + .nav-m{ margin-left:0; }
.uy .td-cart-txt{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.uy .td-count{ display:inline-grid; place-items:center; min-width:22px; height:22px; padding:0 6px; border-radius:var(--r-pill);
  background:var(--c-menu-fg); color:var(--c-menu-bg); font:700 12px/1 var(--font-body); font-variant-numeric:tabular-nums; }
.uy .td-count[data-n="0"]{ background:transparent; color:var(--c-menu-fg); box-shadow:inset 0 0 0 1.5px var(--c-menu-muted); }
.uy[data-pagina="tienda"] .hdr-cta .btn-l, .uy[data-pagina="tienda"] .slogan{ display:none !important; }   /* en la tienda: WhatsApp + carrito; sin eslogan para que quepa el menú */
@media (min-width:1080px){
  .uy .hdr-in > nav{ margin-left:auto; }   /* el <ul class="nav"> ya tenía margin-left:auto; sin esto el menú no llegaba a la derecha cuando cabe en una línea */
  .uy .td-cart-btn{ margin-left:0; padding:0 12px; }
  .uy[data-pagina="tienda"] .td-cart-txt{ position:static; width:auto; height:auto; overflow:visible; clip:auto; }   /* en la Página: solo ícono y contador */
}

/* ---------- T2. FRANJA «MODO DE PRUEBAS» ---------------------------- */
/* Aviso del sistema, no de la marca: amarillo de obra con texto casi negro (≥ 12:1). */
.uy .td-test{ display:flex; justify-content:center; align-items:center; gap:8px; padding:8px var(--gutter);
  background:repeating-linear-gradient(-45deg, #FFE08A 0 14px, #FFD666 14px 28px); color:#1C1917;
  font:600 var(--fs-sm)/1.35 var(--font-body); text-align:center; }

/* ---------- T3. CABECERA DE PÁGINA Y MIGAS --------------------------- */
.uy .td-page{ padding-block:var(--sp-4) var(--sp-8); }
.uy .td-crumbs ol{ list-style:none; display:flex; flex-wrap:wrap; align-items:center; gap:0 6px; font-size:var(--fs-sm); color:var(--c-muted); }
.uy .td-crumbs li{ display:flex; align-items:center; gap:6px; min-width:0; }
.uy .td-crumbs li + li::before{ content:"/"; color:var(--c-muted); }
.uy .td-crumbs a{ display:inline-flex; align-items:center; min-height:var(--tap); color:var(--c-muted); }
.uy .td-crumbs [aria-current]{ max-width:28ch; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--c-text); }
.uy .td-head{ display:grid; gap:var(--sp-2); margin:var(--sp-2) 0 var(--sp-5); }
.uy .td-head h1{ font-size:clamp(2rem, 1.5rem + 2.4vw, 3.5rem); }
.uy .td-head .lead{ font-size:var(--fs-md); }
.uy .td-n{ font-size:var(--fs-sm); color:var(--c-muted); font-variant-numeric:tabular-nums; white-space:nowrap; }

/* Banner 1920×500: zona segura central. Nunca empuja los productos: en escritorio se recorta a 200 px. */
.uy .td-banner{ margin:0 0 var(--sp-5); }
.uy .td-banner img{ width:100%; height:auto; aspect-ratio:1920/500; object-fit:cover; object-position:center; border-radius:var(--r-media); background:var(--c-ph); }
@media (min-width:900px){ .uy .td-banner img{ max-height:200px; } }

/* ---------- T4. CATEGORÍAS, BÚSQUEDA Y ORDEN ------------------------- */
.uy .td-layout{ display:grid; gap:var(--sp-4); }
.uy .td-side{ min-width:0; }
.uy .td-side-t{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.uy .td-chips{ list-style:none; display:flex; gap:var(--sp-2); overflow-x:auto; scroll-snap-type:x proximity; scrollbar-width:none;
  margin-inline:calc(var(--gutter) * -1); padding:2px var(--gutter) var(--sp-1); }
.uy .td-chips li{ scroll-snap-align:start; flex:none; }
.uy .td-chips a{ display:inline-flex; align-items:center; min-height:var(--tap); max-width:28ch; padding:0 16px; overflow:hidden; text-overflow:ellipsis;
  border:1.5px solid var(--c-field); border-radius:var(--r-pill); background:var(--c-bg);
  color:var(--c-text); font-weight:600; font-size:var(--fs-sm); white-space:nowrap; text-decoration:none; }
.uy .td-chips a:hover{ border-color:var(--c-text); }
.uy .td-chips a[aria-current]{ background:var(--c-text); border-color:var(--c-text); color:var(--c-bg); }
.uy .td-tools{ display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:var(--sp-3); margin-bottom:var(--sp-5); }
.uy .td-search{ grid-column:1 / -1; display:flex; }
.uy .td-search input{ flex:1; min-width:0; min-height:48px; padding:0 14px; font:inherit; font-size:16px; color:var(--c-text); background:var(--c-bg);
  border:1.5px solid var(--c-field); border-right:0; border-radius:var(--r-btn) 0 0 var(--r-btn); }
.uy .td-search input:focus-visible{ outline-offset:1px; border-color:var(--c-title); }
.uy .td-search .btn{ min-width:52px; padding:0 14px; border-radius:0 var(--r-btn) var(--r-btn) 0; }
.uy .td-sort{ display:flex; align-items:center; gap:var(--sp-2); justify-self:end; font-size:var(--fs-sm); }
.uy .td-sort label{ color:var(--c-muted); white-space:nowrap; }
.uy .td-sort select, .uy .field select{ min-height:var(--tap); padding:0 36px 0 12px; font:inherit; color:var(--c-text); appearance:none; border:1.5px solid var(--c-field); border-radius:var(--r-btn);
  background:var(--c-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23444' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center / 16px; }
.uy .td-sort .btn{ min-height:var(--tap); padding:0 12px; font-size:var(--fs-sm); }
.uy .td-tools .td-n{ grid-column:1; grid-row:2; }
.uy-js [data-uy-sinjs]{ display:none !important; }
@media (min-width:700px){
  .uy .td-tools{ grid-template-columns:minmax(0,420px) auto 1fr; }
  .uy .td-search{ grid-column:1; }
  .uy .td-tools .td-n{ grid-column:2; grid-row:1; }
  .uy .td-sort{ grid-column:3; }
}
/* Escritorio: categorías como columna lateral (de 1 a 13). Comida las deja arriba, como el índice de la carta. */
@media (min-width:1080px){
  .uy:not([data-plantilla="comida"]) .td-layout{ grid-template-columns:200px minmax(0,1fr); gap:var(--sp-7); align-items:start; }
  .uy:not([data-plantilla="comida"]) .td-side{ position:sticky; top:calc(var(--hdr-h) + var(--sp-5)); }
  .uy:not([data-plantilla="comida"]) .td-side-t{ position:static; width:auto; height:auto; overflow:visible; clip:auto; margin-bottom:var(--sp-3);
    font:600 var(--fs-xs)/1.3 var(--font-body); letter-spacing:.12em; text-transform:uppercase; color:var(--c-muted); }
  .uy:not([data-plantilla="comida"]) .td-chips{ flex-direction:column; gap:2px; overflow:visible; margin:0; padding:0; }
  .uy:not([data-plantilla="comida"]) .td-chips a{ display:flex; max-width:none; border:0; border-radius:var(--r-md); padding:10px 12px; min-height:var(--tap);
    white-space:normal; line-height:1.25; font-size:var(--fs-base); font-weight:500; background:transparent; }
  .uy:not([data-plantilla="comida"]) .td-chips a:hover{ background:var(--c-surface); }
  .uy:not([data-plantilla="comida"]) .td-chips a[aria-current]{ background:var(--c-surface); color:var(--c-text); font-weight:700; }
}

/* ---------- T5. REJILLA Y TARJETA DE PRODUCTO ------------------------ */
.uy .td-grid{ list-style:none; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--sp-6) var(--sp-3); }
@media (min-width:700px){ .uy .td-grid{ grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--sp-7) var(--sp-5); } }
@media (min-width:1080px){ .uy .td-grid{ grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); } }
.uy .td-card{ position:relative; display:grid; grid-template-rows:auto 1fr; gap:var(--sp-3); min-width:0; }
.uy .td-card-m{ position:relative; overflow:hidden; border-radius:var(--r-media); background:var(--c-ph); }
.uy .td-card-m img{ width:100%; height:auto; aspect-ratio:1/1; object-fit:cover; transition:transform var(--dur) var(--ease); }
.uy .td-card:hover .td-card-m img{ transform:scale(1.03); }
.uy .td-card[data-agotado] .td-card-m img{ opacity:.6; filter:grayscale(.6); }
.uy .td-card-b{ display:grid; grid-template-rows:auto auto 1fr; gap:var(--sp-2); align-content:start; }
.uy .td-card-t{ font:600 var(--fs-base)/1.3 var(--font-body); letter-spacing:0; text-transform:none; color:var(--c-text);
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:2.6em; }
.uy .td-card-t a{ color:inherit; text-decoration:none; }
.uy .td-card-t a::after{ content:""; position:absolute; inset:0; z-index:1; }   /* toda la tarjeta lleva a la ficha */
.uy .td-card-t a:hover{ text-decoration:underline; }
.uy .td-card-t a:focus-visible{ outline:none; }
.uy .td-card-t a:focus-visible::after{ outline:3px solid var(--c-focus); outline-offset:4px; border-radius:var(--r-media); }
.uy .td-add-f{ position:relative; z-index:2; align-self:end; }
.uy .td-card .btn{ position:relative; z-index:2; align-self:end; width:100%; padding:8px 12px; font-size:var(--fs-sm); }
.uy .td-flag{ position:absolute; top:8px; left:8px; z-index:1; padding:4px 10px; border-radius:var(--r-pill); background:var(--c-bg); color:var(--c-text);
  font:600 var(--fs-xs)/1.3 var(--font-body); box-shadow:var(--sh-1); }
.uy .td-flag-off{ background:var(--c-dark); color:var(--c-on-dark); }

/* Precio: el valor en --c-title; el precio anterior (propuesta) tachado en --c-muted */
.uy .td-precio{ display:flex; flex-wrap:wrap; align-items:baseline; gap:2px 8px; }
.uy .td-pv{ font:700 var(--fs-md)/1.2 var(--font-body); color:var(--c-title); font-variant-numeric:tabular-nums; white-space:nowrap; }
.uy .td-antes{ font-size:var(--fs-sm); color:var(--c-muted); font-variant-numeric:tabular-nums; white-space:nowrap; }
.uy .td-precio-xl .td-pv{ font-size:var(--fs-h3); }

/* Filas tipo carta (comida en el listado): foto a la derecha, renglón punteado */
.uy .td-filas{ grid-template-columns:minmax(0,1fr); gap:0; }
.uy .td-filas .td-card{ grid-template-columns:minmax(0,1fr) 104px; grid-template-rows:auto; gap:var(--sp-4); padding-block:var(--sp-4); border-bottom:1px dotted var(--c-line); }
.uy .td-filas .td-card-m{ grid-column:2; grid-row:1; border-radius:var(--r-md); }
.uy .td-filas .td-card-b{ grid-column:1; grid-row:1; grid-template-rows:auto auto 1fr; }
.uy .td-filas .td-card-t{ min-height:0; }
.uy .td-filas .td-card .btn{ width:auto; justify-self:start; padding:8px 16px; }
@media (min-width:900px){
  .uy .td-filas{ grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:var(--sp-8); }
  .uy .td-filas .td-card{ grid-template-columns:minmax(0,1fr) 128px; }
}
.uy .td-grupo + .td-grupo{ margin-top:var(--sp-7); }
.uy .td-grupo-t{ font-size:var(--fs-h3); padding-bottom:var(--sp-3); border-bottom:2px solid var(--c-text); scroll-margin-top:calc(var(--hdr-h) + 16px); }

/* Fila desplazable (destacados, relacionados): 2,2 tarjetas en el celular, rejilla en escritorio */
.uy .td-grid-scroll{ grid-template-columns:none; grid-auto-flow:column; grid-auto-columns:44%; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:thin;
  margin-inline:calc(var(--gutter) * -1); padding:0 var(--gutter) var(--sp-3); scroll-padding-inline:var(--gutter); }
.uy .td-grid-scroll > li{ scroll-snap-align:start; }
@media (min-width:900px){ .uy .td-grid-scroll{ grid-auto-flow:row; grid-auto-columns:auto; grid-template-columns:repeat(4,minmax(0,1fr)); overflow:visible; margin:0; padding:0; } }

/* Ver más, vacío y franja de confianza */
.uy .td-more{ display:grid; justify-items:center; gap:var(--sp-3); margin-top:var(--sp-7); font-size:var(--fs-sm); color:var(--c-muted); }
.uy .td-empty{ display:grid; justify-items:center; gap:var(--sp-3); padding:var(--sp-8) var(--sp-5); text-align:center;
  border:1.5px dashed color-mix(in srgb, var(--c-text) 25%, var(--c-bg)); border-radius:var(--r-lg); }
.uy .td-empty-ico{ width:56px; height:56px; display:grid; place-items:center; border-radius:50%; background:var(--c-surface); color:var(--c-title); }
.uy .td-empty-ico .ico{ width:26px; height:26px; }
.uy .td-empty h2{ font-size:var(--fs-h3); }
.uy .td-empty p{ max-width:42ch; color:var(--c-muted); }
.uy .td-empty .btn-row{ justify-content:center; margin-top:var(--sp-2); }
.uy .td-trust{ list-style:none; display:grid; gap:var(--sp-4); margin-top:var(--sp-8); padding:var(--sp-5) 0; border-block:1px solid var(--c-line); font-size:var(--fs-sm); color:var(--c-muted); }
.uy .td-trust > li{ display:grid; grid-template-columns:auto minmax(0,1fr); gap:var(--sp-3); align-items:start; }
.uy .td-trust > li > .ico{ color:var(--c-title); margin-top:2px; }
.uy .td-trust b{ display:block; color:var(--c-text); font-size:var(--fs-base); font-weight:var(--fw-strong); }
.uy .td-trust a{ display:inline-flex; align-items:center; min-height:var(--tap); font-weight:600; }
.uy .td-pay{ list-style:none; display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; }
.uy .td-pay li{ padding:2px 8px; border:1px solid color-mix(in srgb, var(--c-text) 30%, var(--c-bg)); border-radius:var(--r-sm); color:var(--c-text); font-size:var(--fs-xs); font-weight:600; }
@media (min-width:900px){ .uy .td-trust{ grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--sp-6); } }

/* ---------- T6. FICHA DE PRODUCTO ----------------------------------- */
.uy .td-pdp{ display:grid; gap:var(--sp-6); }
.uy .td-gal{ display:grid; gap:var(--sp-3); min-width:0; }
.uy .td-gal-l{ list-style:none; display:grid; grid-auto-flow:column; grid-auto-columns:100%; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none;
  margin-inline:calc(var(--gutter) * -1); scroll-behavior:smooth; }
.uy .td-gal-l > li{ scroll-snap-align:start; background:var(--c-ph); }
.uy .td-gal-l img{ width:100%; height:auto; aspect-ratio:1/1; object-fit:cover; }
.uy .td-gal-th{ list-style:none; display:flex; gap:var(--sp-2); }
.uy .td-gal-th a{ display:block; width:64px; overflow:hidden; border-radius:var(--r-sm); box-shadow:0 0 0 1px var(--c-line); }

.uy .td-gal-th img{ width:100%; height:auto; aspect-ratio:1/1; object-fit:cover; }
.uy .td-gal-th a[aria-current="true"]{ box-shadow:0 0 0 2px var(--c-bg), 0 0 0 4px var(--c-text); }
.uy .td-buy{ display:grid; gap:var(--sp-4); align-content:start; min-width:0; }
.uy .td-buy h1{ font-size:clamp(1.75rem, 1.35rem + 1.8vw, 2.75rem); }
.uy .td-stock{ display:inline-flex; align-items:center; gap:8px; font-size:var(--fs-sm); font-weight:600; }
.uy .td-stock[data-estado="ok"]{ color:var(--c-ok); }
.uy .td-stock[data-estado="pocas"]{ color:var(--c-warn); }
.uy .td-stock[data-estado="agotado"]{ color:var(--c-muted); }
.uy .td-buy-row{ display:flex; flex-wrap:wrap; gap:var(--sp-3); }
.uy .td-add-xl{ flex:1 1 200px; min-height:52px; font-size:var(--fs-md); }
.uy .td-wa{ width:100%; }
.uy .td-perks{ list-style:none; display:grid; gap:var(--sp-3); padding:var(--sp-4) 0; border-block:1px solid var(--c-line); font-size:var(--fs-sm); color:var(--c-muted); }
.uy .td-perks > li{ display:grid; grid-template-columns:auto minmax(0,1fr); gap:var(--sp-3); }
.uy .td-perks .ico{ color:var(--c-title); }
.uy .td-perks b{ color:var(--c-text); font-weight:600; }
.uy .td-share{ display:flex; flex-wrap:wrap; gap:var(--sp-2); }
.uy .td-share .btn{ min-height:var(--tap); padding:8px 14px; font-size:var(--fs-sm); color:var(--c-title); }
/* Cantidad: − [n] + con áreas de 44 px; sin JS queda el campo numérico */
.uy .td-qty{ display:inline-grid; grid-template-columns:var(--tap) 3.5ch var(--tap); align-items:center; border:1.5px solid var(--c-field); border-radius:var(--r-btn); background:var(--c-bg); }
.uy .td-qty button{ width:var(--tap); height:var(--tap); display:grid; place-items:center; padding:0; border:0; background:transparent; color:var(--c-text); border-radius:var(--r-btn); cursor:pointer; }
.uy .td-qty button:disabled{ color:var(--c-muted); opacity:.5; cursor:default; }
.uy .td-qty input{ width:100%; min-height:var(--tap); padding:0; border:0; background:transparent; color:var(--c-text); text-align:center; font:600 16px/1 var(--font-body); font-variant-numeric:tabular-nums; -moz-appearance:textfield; }
.uy .td-qty input::-webkit-inner-spin-button, .uy .td-qty input::-webkit-outer-spin-button{ -webkit-appearance:none; margin:0; }
/* Variantes (propuesta): píldoras de radio */
.uy .td-var{ border:0; margin:0; padding:0; min-width:0; }
.uy .td-var legend{ padding:0; margin-bottom:var(--sp-2); font-size:var(--fs-sm); font-weight:600; }
.uy .td-var-l{ display:flex; flex-wrap:wrap; gap:var(--sp-2); }
.uy .td-pill{ position:relative; }
.uy .td-pill input{ position:absolute; inset:0; opacity:0; margin:0; cursor:pointer; }
.uy .td-pill span{ display:inline-flex; align-items:center; min-height:var(--tap); padding:0 16px; border:1.5px solid var(--c-field); border-radius:var(--r-btn); font-weight:600; font-size:var(--fs-sm); }
.uy .td-pill input:checked + span{ background:var(--c-text); border-color:var(--c-text); color:var(--c-bg); }
.uy .td-pill input:focus-visible + span{ outline:3px solid var(--c-focus); outline-offset:2px; }
.uy .td-pill input:disabled + span{ color:var(--c-muted); border-style:dashed; text-decoration:line-through; }
/* Descripción HTML del editor (Quill, saneada): párrafos, listas, negrita, H2–H4 y tablas simples; nada se desborda */
.uy .td-desc{ display:grid; gap:var(--sp-4); padding-top:var(--sp-6); border-top:1px solid var(--c-line); min-width:0; }
.uy .td-desc > h2{ font-size:var(--fs-h3); }
.uy .td-desc .rich{ gap:var(--sp-3); max-width:68ch; }
.uy .td-desc .rich :is(h1,h2){ font-size:var(--fs-lg); margin-top:var(--sp-3); }
.uy .td-desc .rich h3{ font:700 var(--fs-md)/1.3 var(--font-body); letter-spacing:0; text-transform:none; color:var(--c-text); margin-top:var(--sp-2); }
.uy .td-desc .rich :is(h4,h5,h6){ font:700 var(--fs-base)/1.3 var(--font-body); color:var(--c-text); }
.uy .td-desc .rich :is(strong,b){ font-weight:700; }
.uy .td-desc .rich table{ border-collapse:collapse; font-size:var(--fs-sm); }
.uy .td-desc .rich :is(th,td){ padding:8px 16px 8px 0; border-bottom:1px solid var(--c-line); text-align:left; vertical-align:top; }
.uy .td-desc .rich th{ font-weight:600; color:var(--c-text); }
.uy .rich .ql-align-center{ text-align:center; } .uy .rich .ql-align-right{ text-align:right; }
.uy .rich .ql-indent-1{ padding-left:1.5em; } .uy .rich .ql-indent-2{ padding-left:3em; }
.uy .td-rel{ margin-top:var(--sp-8); }
@media (min-width:900px){
  .uy .td-pdp{ grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); gap:var(--sp-7) var(--sp-8); align-items:start; }
  .uy .td-gal-l{ margin-inline:0; border-radius:var(--r-media); }
  .uy .td-buy{ grid-column:2; grid-row:1 / span 2; position:sticky; top:calc(var(--hdr-h) + var(--sp-5)); }
  .uy .td-desc{ grid-column:1; }
  .uy .td-share .btn{ flex:none; }
}

/* ---------- T7. CARRITO: hoja inferior (celular) y panel lateral (escritorio) ---- */
/* <dialog> nativo: foco atrapado, Esc cierra y devuelve el foco al botón. Solo transform/opacity. */
.uy .td-cart{ position:fixed; inset:auto 0 0 0; width:100%; max-width:none; max-height:88dvh; margin:0; padding:0; border:0;
  border-radius:var(--r-lg) var(--r-lg) 0 0; background:var(--c-bg); color:var(--c-text); box-shadow:var(--sh-2); overflow:hidden; }
.uy .td-cart[open]{ display:flex; flex-direction:column; animation:td-sube var(--dur) var(--ease); }
.uy .td-cart::backdrop{ background:rgba(20,18,16,.5); }
@keyframes td-sube{ from{ transform:translateY(32px); opacity:0; } }
@keyframes td-entra{ from{ transform:translateX(32px); opacity:0; } }
html:has(.td-cart[open]){ overflow:hidden; }
.uy .td-cart-h{ position:relative; display:flex; align-items:center; justify-content:space-between; gap:var(--sp-3); padding:var(--sp-4) var(--sp-3) var(--sp-3) var(--sp-5); border-bottom:1px solid var(--c-line); }
.uy .td-cart-h::before{ content:""; position:absolute; top:6px; left:50%; width:40px; height:4px; margin-left:-20px; border-radius:2px; background:var(--c-line); }
.uy .td-cart-h h2{ font-size:var(--fs-lg); }
.uy .td-x{ width:var(--tap); height:var(--tap); display:grid; place-items:center; flex:none; padding:0; border:0; border-radius:50%; background:var(--c-surface); color:var(--c-text); cursor:pointer; }
.uy .td-cart-b{ flex:1; overflow-y:auto; overscroll-behavior:contain; padding:0 var(--sp-5); }
.uy .td-cart-f{ display:grid; gap:var(--sp-3); padding:var(--sp-4) var(--sp-5) calc(var(--sp-4) + env(safe-area-inset-bottom)); border-top:1px solid var(--c-line); background:var(--c-bg); }
.uy .td-cart-f .btn{ width:100%; }
.uy .td-cart .td-empty{ border:0; padding:var(--sp-7) 0; }
.uy .td-note{ font-size:var(--fs-sm); color:var(--c-muted); }
.uy .td-free{ display:grid; gap:6px; font-size:var(--fs-sm); }
.uy .td-free-bar{ display:block; height:6px; border-radius:3px; background:var(--c-surface-2, var(--c-surface)); overflow:hidden; }
.uy .td-free-bar i{ display:block; height:100%; background:var(--c-primary); transform-origin:left; transform:scaleX(var(--p, 0)); transition:transform var(--dur) var(--ease); }
@media (min-width:900px){
  .uy .td-cart{ inset:0 0 0 auto; width:min(440px, 100%); height:100dvh; max-height:none; border-radius:0; }
  .uy .td-cart[open]{ animation-name:td-entra; }
  .uy .td-cart-h{ padding-top:var(--sp-3); }
  .uy .td-cart-h::before{ display:none; }
}
/* Línea del carrito (la misma en el panel y en el resumen del checkout) */
.uy .td-lines{ list-style:none; display:grid; }
.uy .td-line{ display:grid; grid-template-columns:var(--td-thumb) minmax(0,1fr) auto; grid-template-areas:"m n x" "m q t" "e e e"; gap:var(--sp-2) var(--sp-3); align-items:center;
  padding:var(--sp-4) 0; border-bottom:1px solid var(--c-line); }
.uy .td-line:last-child{ border-bottom:0; }
.uy .td-line-m{ grid-area:m; align-self:start; width:var(--td-thumb); aspect-ratio:1/1; overflow:hidden; border-radius:var(--r-sm); background:var(--c-ph); }
.uy .td-line-m img{ width:100%; height:100%; object-fit:cover; }
.uy .td-line-n{ grid-area:n; min-width:0; font-size:var(--fs-sm); line-height:1.3; }
.uy .td-line-n a{ color:var(--c-text); font-weight:600; text-decoration:none; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.uy .td-line-n a:hover{ text-decoration:underline; }
.uy .td-line-u{ display:block; color:var(--c-muted); font-variant-numeric:tabular-nums; }
.uy .td-line-x{ grid-area:x; align-self:start; width:var(--tap); height:var(--tap); margin:-10px -10px 0 0; display:grid; place-items:center; padding:0; border:0; border-radius:50%; background:transparent; color:var(--c-muted); cursor:pointer; }
.uy .td-line-x:hover{ color:var(--c-text); background:var(--c-surface); }
.uy .td-line .td-qty{ grid-area:q; justify-self:start; }
.uy .td-line-t{ grid-area:t; font-weight:700; font-variant-numeric:tabular-nums; white-space:nowrap; }
.uy .td-line .td-err{ grid-area:e; }
.uy .td-sum{ display:grid; gap:var(--sp-2); margin:0; font-variant-numeric:tabular-nums; }
.uy .td-sum > div{ display:flex; justify-content:space-between; gap:var(--sp-3); }
.uy .td-sum dt{ color:var(--c-muted); }
.uy .td-sum dd{ margin:0; font-weight:600; text-align:right; }
.uy .td-sum .td-sum-t{ padding-top:var(--sp-3); margin-top:var(--sp-1); border-top:1px solid var(--c-line); font-size:var(--fs-md); }
.uy .td-sum .td-sum-t :is(dt,dd){ color:var(--c-text); font-weight:700; }

/* ---------- T8. CHECKOUT DE UNA PÁGINA ------------------------------- */
.uy .td-co{ display:grid; gap:var(--sp-5); }
.uy .td-co-f{ display:grid; gap:var(--sp-6); min-width:0; }
.uy .td-step{ display:grid; gap:var(--sp-4); min-width:0; margin:0; padding:0; border:0; }
.uy .td-step + .td-step{ padding-top:var(--sp-6); border-top:1px solid var(--c-line); }
.uy .td-step > legend, .uy .td-step-h{ display:flex; align-items:center; gap:var(--sp-3); float:left; width:100%; padding:0; margin-bottom:var(--sp-4);
  font:var(--fw-display) var(--fs-h3)/1.2 var(--font-display); letter-spacing:var(--track-display); text-transform:var(--case-display); color:var(--c-title); }
.uy .td-step > legend + *{ clear:both; }
.uy .td-step-n{ display:grid; place-items:center; flex:none; width:32px; height:32px; border-radius:50%; background:var(--c-text); color:var(--c-bg);
  font:700 var(--fs-sm)/1 var(--font-body); letter-spacing:0; }
.uy .td-row2{ display:grid; gap:var(--sp-4); }
@media (min-width:700px){ .uy .td-row2{ grid-template-columns:1fr 1fr; } }
.uy .field select{ width:100%; min-height:48px; padding:12px 40px 12px 14px; font-size:16px; border-radius:var(--r-md); }
.uy .field .hint{ font-size:var(--fs-sm); color:var(--c-muted); }
.uy .field :is(input,select,textarea)[aria-invalid="true"]{ border-color:var(--c-err); box-shadow:inset 0 0 0 1px var(--c-err); }
.uy .td-err{ display:flex; gap:6px; align-items:flex-start; margin:0; color:var(--c-err); font-size:var(--fs-sm); font-weight:600; }
.uy .td-err:empty{ display:none; }
.uy .td-err .ico{ width:18px; height:18px; margin-top:1px; }
.uy .td-errsum{ display:grid; gap:var(--sp-2); padding:var(--sp-4) var(--sp-5); border:2px solid var(--c-err); border-radius:var(--r-md); background:var(--c-err-soft); color:var(--c-text); }
.uy .td-errsum h2{ font:700 var(--fs-md)/1.3 var(--font-body); letter-spacing:0; text-transform:none; color:var(--c-err); }
.uy .td-errsum ul{ padding-left:1.2em; display:grid; gap:2px; }
.uy .td-errsum a{ color:var(--c-text); }
/* Opciones como tarjetas (envío y medio de pago). La extensión (.td-opt-x) se abre al elegir, con :has(), sin JS. */
.uy .td-opts{ display:grid; gap:var(--sp-2); }
.uy .td-opt{ border:1.5px solid var(--c-field); border-radius:var(--r-md); background:var(--c-bg); }
.uy .td-opt-l{ display:grid; grid-template-columns:24px minmax(0,1fr) auto; gap:2px var(--sp-3); align-items:start; min-height:var(--tap); padding:14px 16px; cursor:pointer; }
.uy .td-opt-l input{ grid-row:span 2; width:22px; height:22px; margin:1px 0 0; accent-color:var(--c-title); }
.uy .td-opt-n{ font-weight:600; line-height:1.35; }
.uy .td-opt-v{ font-weight:700; font-variant-numeric:tabular-nums; white-space:nowrap; }
.uy .td-opt-d{ grid-column:2 / -1; font-size:var(--fs-sm); color:var(--c-muted); line-height:1.45; }
.uy .td-opt-x{ display:none; gap:var(--sp-3); padding:0 16px 16px 52px; }
.uy .td-opt:has(input:checked){ border-color:var(--c-text); box-shadow:inset 0 0 0 1px var(--c-text); background:color-mix(in srgb, var(--c-text) 3%, var(--c-bg)); }
.uy .td-opt:has(input:checked) .td-opt-x{ display:grid; }
.uy .td-opt:has(input:focus-visible){ outline:3px solid var(--c-focus); outline-offset:2px; }
.uy .td-opt-x .rich{ font-size:var(--fs-sm); gap:var(--sp-2); }
.uy .td-logos{ display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; }
.uy .td-logos img{ height:20px; width:auto; }
.uy .td-co-f:has([data-recoger]:checked) [data-uy-direccion]{ display:none; }
.uy .td-legal{ display:grid; gap:var(--sp-4); }
.uy .td-legal .check{ font-size:var(--fs-sm); }
.uy .td-terms > summary{ display:inline-flex; align-items:center; gap:6px; min-height:var(--tap); color:var(--c-title); font-size:var(--fs-sm); font-weight:600; cursor:pointer; text-decoration:underline; text-underline-offset:.18em; }
.uy .td-terms .rich{ max-height:300px; overflow:auto; padding:var(--sp-4); border-radius:var(--r-md); background:var(--c-surface); font-size:var(--fs-sm); }
.uy .td-submit{ width:100%; min-height:56px; font-size:var(--fs-md); }
.uy .td-submit[disabled]{ opacity:.6; cursor:progress; }
.uy .td-fine{ display:flex; gap:8px; align-items:flex-start; font-size:var(--fs-sm); color:var(--c-muted); }
.uy .td-fine .ico{ width:18px; height:18px; margin-top:1px; }
/* Resumen: plegable en el celular (arriba del formulario), fijo a la derecha en escritorio */
.uy .td-res{ border:1px solid var(--c-line); border-radius:var(--r-lg); background:var(--c-bg); min-width:0; }
.uy .td-res > details > summary{ list-style:none; display:flex; align-items:center; justify-content:space-between; gap:var(--sp-3); min-height:56px; padding:var(--sp-3) var(--sp-4); cursor:pointer; font-weight:600; }
.uy .td-res > details > summary::-webkit-details-marker{ display:none; }
.uy .td-res summary b{ font-variant-numeric:tabular-nums; }
.uy .td-res summary .ico{ transition:transform var(--dur) var(--ease); }
.uy .td-res details[open] summary .ico{ transform:rotate(180deg); }
.uy .td-res-b{ display:grid; gap:var(--sp-3); padding:0 var(--sp-4) var(--sp-4); }
.uy .td-res .td-lines{ border-bottom:1px solid var(--c-line); }
.uy .td-res-sum{ font-weight:600; }
@media (min-width:1080px){
  .uy .td-co{ grid-template-columns:minmax(0,1fr) 400px; gap:var(--sp-8); align-items:start; }
  .uy .td-co-f{ grid-column:1; grid-row:1; }
  .uy .td-res{ grid-column:2; grid-row:1; position:sticky; top:calc(var(--hdr-h) + var(--sp-5)); }
  .uy .td-res > details > summary{ pointer-events:none; font-family:var(--font-display); font-size:var(--fs-lg); color:var(--c-title); }
  .uy .td-res > details > summary :is(.ico, b){ display:none; }
}

/* ---------- T9. CONFIRMACIÓN (un estado por caso) -------------------- */
.uy .td-conf{ display:grid; gap:var(--sp-7); max-width:1040px; }
.uy .td-conf-h{ display:grid; gap:var(--sp-3); justify-items:start; max-width:var(--measure); }
.uy .td-conf-ico{ width:64px; height:64px; display:grid; place-items:center; border-radius:50%; background:var(--c-ok-soft); color:var(--c-ok); }
.uy .td-conf-ico .ico{ width:32px; height:32px; stroke-width:2.2; }
.uy .td-conf[data-estado="en_proceso"] .td-conf-ico, .uy .td-conf[data-estado="transferencia"] .td-conf-ico{ background:var(--c-warn-soft); color:var(--c-warn); }
.uy .td-conf[data-estado="rechazado"] .td-conf-ico{ background:var(--c-err-soft); color:var(--c-err); }
.uy .td-conf[data-estado="whatsapp"] .td-conf-ico{ background:var(--c-surface); color:var(--c-title); }
.uy .td-conf-h h1{ font-size:clamp(1.875rem, 1.4rem + 2vw, 3rem); }
.uy .td-num{ font:600 var(--fs-sm)/1.3 var(--font-body); letter-spacing:.06em; text-transform:uppercase; color:var(--c-muted); }
.uy .td-conf-h .btn-row{ margin-top:var(--sp-2); }
.uy .td-box{ display:grid; gap:var(--sp-3); align-content:start; padding:var(--sp-5); border:1px solid var(--c-line); border-radius:var(--r-lg); background:var(--c-bg); min-width:0; }
.uy .td-box > h2{ font-size:var(--fs-lg); }
.uy .td-box-warn{ border-color:color-mix(in srgb, var(--c-warn) 40%, var(--c-warn-soft)); background:var(--c-warn-soft); }
.uy .td-box-warn :is(h2, .td-dl dt){ color:var(--c-text); }
.uy .td-conf-g{ display:grid; gap:var(--sp-5); }
@media (min-width:900px){ .uy .td-conf-g{ grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr); align-items:start; } }
.uy .td-dl{ display:grid; gap:var(--sp-3); margin:0; }
.uy .td-dl dt{ font-size:var(--fs-sm); color:var(--c-muted); }
.uy .td-dl dd{ margin:0; overflow-wrap:anywhere; }
.uy .td-key{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:var(--sp-2); padding:10px 10px 10px 14px; border:1.5px dashed var(--c-field); border-radius:var(--r-md); background:var(--c-bg); font:600 var(--fs-md)/1.3 var(--font-mono); }
.uy .td-ref{ font:500 var(--fs-xs)/1.4 var(--font-mono); color:var(--c-muted); overflow-wrap:anywhere; }
.uy .td-qr{ width:160px; aspect-ratio:1/1; display:grid; place-items:center; border:1.5px dashed var(--c-field); border-radius:var(--r-md); background:var(--c-bg); color:var(--c-muted); font-size:var(--fs-xs); text-align:center; }

/* ---------- T10. TIENDA INACTIVA ------------------------------------ */
.uy .td-off{ max-width:640px; margin:var(--sp-6) auto 0; }

/* ---------- T11. PÁGINA WEB: «Productos destacados» ----------------- */
.uy .td-dest-h{ display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:var(--sp-3) var(--sp-5); margin-bottom:var(--sp-6); }
.uy .td-dest-h .sh{ margin-bottom:0; }
.uy .td-dest-h h2{ font-size:var(--fs-h2); }
.uy .td-rel .td-dest-h h2{ font-size:var(--fs-h3); }

/* ---------- T12. DIRECCIONES ---------------------------------------- */
/* Comercio: el precio es la etiqueta troquelada de su Página */
.uy[data-plantilla="comercio"] .td-card .td-pv{ position:relative; padding:4px 10px 4px 14px; background:var(--c-surface); color:var(--c-text);
  font:500 var(--fs-base)/1.2 var(--font-mono); clip-path:polygon(9px 0, 100% 0, 100% 100%, 9px 100%, 0 50%); }
.uy[data-plantilla="comercio"] .td-precio-xl .td-pv{ font-family:var(--font-display); letter-spacing:-.02em; color:var(--c-text); }
.uy[data-plantilla="comercio"] .td-head h1{ line-height:.95; }
.uy[data-plantilla="comercio"] .td-empty, .uy[data-plantilla="comercio"] .td-opt{ border-style:dashed; }
.uy[data-plantilla="comercio"] .td-opt:has(input:checked){ border-style:solid; }
/* Comida: la carta. Títulos en Bricolage, precio en la letra de los títulos, índice de píldoras */
.uy[data-plantilla="comida"] .td-card-t{ font:700 var(--fs-md)/1.25 var(--font-display); letter-spacing:-.01em; }
.uy[data-plantilla="comida"] .td-pv{ font-family:var(--font-display); }
.uy[data-plantilla="comida"] .td-head h1{ line-height:.98; }
.uy[data-plantilla="comida"] .td-step-n{ background:var(--c-primary); color:var(--c-on-primary); }
.uy[data-plantilla="comida"] .td-trust{ border:2px dashed var(--c-line); border-radius:var(--r-lg); padding:var(--sp-5); background:var(--c-surface); }
/* Profesional: filetes en vez de cajas */
.uy[data-plantilla="profesional"] .td-head h1, .uy[data-plantilla="profesional"] .td-buy h1{ font-weight:500; }
.uy[data-plantilla="profesional"] .td-chips a{ border-radius:var(--r-sm); }
/* Técnico: precio y número en mono, filete de 3 px; controles con borde de tinta, como sus .field */
.uy[data-plantilla="tecnico"]{ --c-field:var(--c-text); }
.uy[data-plantilla="tecnico"] :is(.td-pv, .td-num, .td-opt-v){ font-family:var(--font-mono); font-weight:600; }
.uy[data-plantilla="tecnico"] .td-head{ border-top:3px solid var(--c-text); padding-top:var(--sp-4); }
.uy[data-plantilla="tecnico"] :is(.td-head h1, .td-buy h1){ font-stretch:75%; }
.uy[data-plantilla="tecnico"] .td-card-m{ border:1px solid var(--c-line); }
/* Salud y asociación: solo sus tokens (radios, fuentes y colores) */
@media (prefers-reduced-motion:reduce){ .uy .td-gal-l{ scroll-behavior:auto; } }
