/* ════════════════════════════════════════════════════════════
   SECCIÓN — FUNCIONALIDADES TOP ("Secciones que venden solas.")
   Carrusel con asomo (peek): cada slide es una tarjeta grande con el
   collage del editor de Shopify y el pie de texto encima de un
   degradado. La pista arranca alineada con el contenedor y sangra
   hasta el borde derecho de la ventana; la sección la recorta.
   Colores: variables --tf-* de .tf, redefinidas en [data-theme="light"].
   ════════════════════════════════════════════════════════════ */

.tf{
  --tf-text:#f5f7fb;--tf-muted:#a9b2c1;--tf-bg:var(--bg);
  --tf-card:#0e1424;--tf-card-glow:rgba(42,98,240,.16);--tf-card-border:rgba(255,255,255,.08);
  --tf-ctrl-bg:#111827;--tf-ctrl-border:rgba(255,255,255,.12);--tf-ctrl-text:#f5f7fb;--tf-ctrl-hover:#1a2338;
  --tf-dot:rgba(255,255,255,.22);--tf-dot-hover:rgba(255,255,255,.4);
  --tf-img-shadow:drop-shadow(0 20px 36px rgba(0,0,0,.4));
  --tf-out:cubic-bezier(.16,1,.3,1);
  --tf-gap:clamp(16px,2vw,24px);

  /* Rejilla: columna central = contenido del contenedor común */
  display:grid;
  grid-template-columns:
    [full-start] minmax(var(--page-gutter),1fr)
    [content-start] minmax(0,calc(var(--page-max) - 2 * var(--page-gutter)))
    [content-end] minmax(var(--page-gutter),1fr) [full-end];
  padding-block:var(--section-pad);
  overflow-x:clip;
  background:var(--tf-bg);color:var(--tf-text)}
[data-theme="light"] .tf{
  --tf-text:#0d1526;--tf-muted:#4f5b70;--tf-bg:var(--bg);
  --tf-card:#eaeff7;--tf-card-glow:rgba(31,86,224,.10);--tf-card-border:rgba(13,21,38,.08);
  --tf-ctrl-bg:#ffffff;--tf-ctrl-border:rgba(13,21,38,.14);--tf-ctrl-text:#0d1526;--tf-ctrl-hover:#eef2f8;
  --tf-dot:rgba(13,21,38,.2);--tf-dot-hover:rgba(13,21,38,.4);
  --tf-img-shadow:drop-shadow(0 18px 30px rgba(31,60,122,.16))}

/* ── Cabecera ── */
.tf-head{grid-column:content;grid-row:1;max-width:620px;margin:0 0 48px}
.tf-eyebrow{font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--c-sky);margin:0 0 14px}
.tf-title{margin:0;color:var(--tf-text);text-wrap:balance}
.tf-sub{margin:14px 0 0;font-size:15.5px;line-height:1.6;color:var(--tf-muted);text-wrap:pretty}

/* ── Controles: flechas redondas + paginador de puntos ── */
.tf-controls{grid-column:content;grid-row:1;justify-self:end;align-self:end;margin-bottom:48px;
  display:flex;align-items:center;gap:20px}
.tf-controls[hidden]{display:none}
.tf-arrows{display:flex;gap:10px}
.tf-arrow{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;cursor:pointer;
  background:var(--tf-ctrl-bg);color:var(--tf-ctrl-text);border:1px solid var(--tf-ctrl-border);
  transition:background-color .2s var(--tf-out),opacity .2s var(--tf-out),transform .2s var(--tf-out)}
.tf-arrow:hover:not(:disabled){background:var(--tf-ctrl-hover)}
.tf-arrow:active:not(:disabled){transform:scale(.94)}
.tf-arrow:disabled{opacity:.35;cursor:default}
.tf-arrow:focus-visible,.tf-dot:focus-visible{outline:2px solid var(--c-sky);outline-offset:3px}

.tf-dots{display:flex;align-items:center;gap:2px;margin-inline-start:-6px}
.tf-dot{position:relative;width:20px;height:28px;padding:0;border:0;background:none;cursor:pointer;border-radius:999px;
  transition:width .45s var(--tf-out)}
.tf-dot::before{content:"";position:absolute;left:6px;right:6px;top:50%;height:8px;margin-top:-4px;border-radius:999px;
  background:var(--tf-dot);transition:background-color .3s var(--tf-out)}
.tf-dot:hover::before{background:var(--tf-dot-hover)}
.tf-dot[aria-current="true"]{width:44px}
.tf-dot[aria-current="true"]::before{background:var(--c-sky)}

/* ── Carrusel ── */
.tf-carousel{grid-column:full;grid-row:2;container-type:inline-size;min-width:0}
.tf-track{
  /* ancho útil del contenedor y margen que lo alinea con él */
  --tf-cw:min(100cqi - 2 * var(--page-gutter),var(--page-max) - 2 * var(--page-gutter));
  --tf-start:max(var(--page-gutter),(100cqi - var(--page-max)) / 2 + var(--page-gutter));
  /* dos por vista, como el diseño original, y la tercera asomando */
  --tf-slide:calc((var(--tf-cw) - var(--tf-gap)) * .5);
  position:relative;display:flex;gap:var(--tf-gap);margin:-6px 0;padding:6px var(--tf-start);list-style:none;
  overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--tf-start);scroll-behavior:smooth;
  scrollbar-width:none;overscroll-behavior-x:contain;outline:none}
.tf-track::-webkit-scrollbar{display:none}
.tf-track:focus-visible .tf-slide.is-active .tf-card{outline:2px solid var(--c-sky);outline-offset:3px}

.tf-slide{flex:0 0 var(--tf-slide);min-width:0;scroll-snap-align:start;transition:opacity .45s var(--tf-out)}
.tf.is-ready .tf-slide:not(.is-active){opacity:.55}

/* Sin marco: título y texto arriba, la captura del editor a todo el
   ancho de la diapositiva debajo (como el diseño original). */
.tf-card{position:relative;display:flex;flex-direction:column;height:100%;border-radius:20px}
.tf-caption{order:-1;padding:0 4px 28px}
.tf-visual{flex:none}
.tf-visual img{display:block;width:100%;height:auto;filter:var(--tf-img-shadow)}
.tf-slide-title{margin:0 0 6px;color:var(--tf-text)}
.tf-slide-text{margin:0;max-width:60ch;color:var(--tf-muted);text-wrap:pretty}

/* ── Momento de entrada: las tarjetas llegan desde la derecha, escalonadas ──
   El estado oculto lo arma el JS (.is-armed); sin JS todo se ve. */
.tf.is-armed .tf-card{opacity:0;transform:translateX(96px)}
.tf.is-armed.is-in .tf-card{opacity:1;transform:none;
  transition:opacity .7s var(--tf-out),transform 1.1s var(--tf-out);transition-delay:calc(var(--tf-i,0) * 90ms)}

@media(max-width:860px){
  .tf-head{margin-bottom:32px}
  .tf-controls{grid-row:3;justify-self:stretch;justify-content:space-between;margin:24px 0 0}
  .tf-track{--tf-slide:calc(var(--tf-cw) * .86)}
  .tf-caption{padding-bottom:20px}
}
@media(max-width:640px){
  .tf-card{border-radius:22px}
  .tf-arrow{width:44px;height:44px}
}

@media(prefers-reduced-motion:reduce){
  .tf-track{scroll-behavior:auto}
  .tf-slide,.tf-dot,.tf-dot::before,.tf-arrow{transition:none}
  .tf.is-armed .tf-card{opacity:1;transform:none}
}
