/* ============================================================
   EL IMPERIO CANINO — Best Breed
   Criadero familiar de Beagle · Sistema de diseño
   Paleta arena / verde bosque / dorado + acento rojo · Fraunces + DM Sans
   ============================================================ */

/* ---------- Tokens ---------- */
:root{
  --sand:        #F5EFE6;   /* fondo principal arena/crema */
  --sand-deep:   #EBE0CF;   /* secciones alternas */
  --cream:       #FBF8F2;   /* tarjetas */
  --forest:      #1B2735;   /* repuntado a navy: marca = navy + rojo (sin verde) */
  --forest-deep: #131D28;
  --forest-soft: #44566A;
  --gold:        #BD9A4F;   /* dorado suave */
  --gold-soft:   #DBC58C;
  --gold-tint:   #EFE4C9;
  --ink:         #3A302A;   /* texto marrón oscuro */
  --ink-soft:    #6B5E52;
  --ink-faint:   #9A8B7C;
  --navy:        #1B2735;   /* header / footer / logo */
  --navy-deep:   #131D28;
  --line:        #E2D6C3;
  --white:       #ffffff;

  --red:         #D11A2A;   /* rojo intenso - acento del cliente */
  --red-deep:    #A8121F;
  --red-bright:  #E83A2C;   /* sobre fondos oscuros */
  --red-tint:    #F7DCD8;

  --shadow-sm: 0 2px 10px rgba(58,48,42,.06);
  --shadow-md: 0 14px 40px -18px rgba(58,48,42,.32);
  --shadow-lg: 0 30px 70px -30px rgba(27,39,53,.45);

  --r-sm: 10px;
  --r-md: 18px;
  --r-lg: 28px;
  --r-xl: 40px;

  --maxw: 1240px;
  --gutter: clamp(20px, 5vw, 64px);
  --header-h: 84px;

  --font-display: "Fraunces", Georgia, "Times New Roman", serif;
  --font-body: "DM Sans", system-ui, -apple-system, sans-serif;

  /* Curvas de movimiento. Las de serie de CSS son flojas; estas dan el mismo
     recorrido con arranque inmediato, que es lo que hace que la interfaz
     parezca responder al instante. --ease-drawer es la curva de Ionic. */
  --ease-out:    cubic-bezier(.23,1,.32,1);
  --ease-in-out: cubic-bezier(.77,0,.175,1);
  --ease-drawer: cubic-bezier(.32,.72,0,1);
}

/* ---------- Accesibilidad ---------- */
/* Foco visible. Antes solo existía el anillo por defecto del navegador, que se
   dibuja casi negro y desaparecía sobre la cabecera, el pie y el menú móvil,
   todos en navy. Se usa navy sobre fondos claros y blanco sobre oscuros para
   garantizar los 3:1 que pide WCAG 2.4.11 en ambos casos. */
:focus-visible{
  outline:3px solid var(--navy);
  outline-offset:3px;
  border-radius:3px;
}
.site-header :focus-visible,
.site-footer :focus-visible,
.mobile-nav :focus-visible,
.hero :focus-visible,
.pagehead :focus-visible,
.bg-forest :focus-visible,
.bg-navy :focus-visible,
.cookie-banner :focus-visible{
  outline-color:#fff;
}

/* Salto al contenido: primer tabulador de cada página. Fuera de pantalla
   hasta que recibe el foco, momento en el que entra en la esquina. */
.skip-link{
  position:absolute; left:8px; top:-100px; z-index:200;
  background:var(--navy); color:#fff;
  padding:.7em 1.2em; border-radius:0 0 10px 10px;
  font-size:.92rem; font-weight:600;
  transition:top .18s var(--ease-out);
}
.skip-link:focus{ top:0; }

/* Respaldo si js/site.js no llega a cargar: sin él la página se quedaba sin
   navegación y sin los enlaces legales, que deben ser accesibles siempre.
   Oculto mientras el script haga su trabajo (ver el arranque en cada <head>). */
.js [data-fallback]{ display:none; }
[data-fallback]{
  background:var(--navy); color:#D8D1C4;
  padding:28px var(--gutter); font-size:.95rem;
}
[data-fallback] a{ color:#fff; text-decoration:underline; }
[data-fallback] ul{ list-style:none; margin:0 0 14px; padding:0;
  display:flex; flex-wrap:wrap; gap:8px 20px; }

/* ---------- Reset ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  margin:0;
  font-family:var(--font-body);
  color:var(--ink);
  background:var(--sand);
  font-size:17px;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
/* height:auto es obligatorio junto a max-width:100% cuando las imagenes llevan
   atributos width/height: sin él, el ancho se limita pero la altura conserva
   el valor del atributo y la imagen sale estirada. */
img{ display:block; max-width:100%; height:auto; }
/* Las imagenes van dentro de un elemento picture para servir WebP con respaldo
   JPEG. display:contents hace que picture no genere caja propia: la imagen se
   coloca como si siguiera siendo hija directa de su contenedor. Sin esto, las
   fichas de altura fija (.dog-card .media, .logro-media) perderian el recorte,
   porque height:100% se resolveria contra un picture en línea. */
picture{ display:contents; }
a{ color:inherit; text-decoration:none; }
button{ font-family:inherit; cursor:pointer; }
h1,h2,h3,h4{ margin:0; font-family:var(--font-display); font-weight:500; line-height:1.08; letter-spacing:-.015em; color:var(--ink); }
p{ margin:0; }

/* ---------- Type scale ---------- */
.display{ font-size:clamp(2.6rem, 6vw, 4.7rem); font-weight:430; line-height:1.02; }
.h1{ font-size:clamp(2.2rem, 4.6vw, 3.5rem); }
.h2{ font-size:clamp(1.9rem, 3.6vw, 2.9rem); }
.h3{ font-size:clamp(1.35rem, 2.2vw, 1.75rem); }
.lead{ font-size:clamp(1.06rem,1.5vw,1.28rem); color:var(--ink-soft); line-height:1.6; }
.eyebrow{
  font-family:var(--font-body);
  font-size:.78rem; font-weight:600; letter-spacing:.22em; text-transform:uppercase;
  color:var(--forest); display:inline-flex; align-items:center; gap:.6em;
}
.eyebrow::before{ content:""; width:26px; height:1.5px; background:var(--red); display:inline-block; }
.eyebrow.center::after{ content:""; width:26px; height:1.5px; background:var(--red); display:inline-block; }
.eyebrow.center{ justify-content:center; }
.text-serif{ font-family:var(--font-display); }
.muted{ color:var(--ink-soft); }

/* ---------- Layout ---------- */
.container{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--gutter); }
.container-narrow{ max-width:880px; }
section{ position:relative; }
.section{ padding-block:clamp(64px, 9vw, 130px); }
.section-sm{ padding-block:clamp(48px,6vw,84px); }
.bg-sand{ background:var(--sand); }
.bg-deep{ background:var(--sand-deep); }
.bg-cream{ background:var(--cream); }
.bg-forest{ background:var(--forest); color:#F2EEE4; }
.bg-navy{ background:var(--navy); color:#E8E2D6; }
.center{ text-align:center; }
.stack-sm > * + *{ margin-top:1rem; }

/* divider leaf */
.rule{ display:flex; align-items:center; justify-content:center; gap:14px; color:var(--gold); }
.rule{ color:var(--red); }
.rule::before,.rule::after{ content:""; height:1px; width:54px; background:linear-gradient(90deg,transparent,var(--red)); }
.rule::after{ background:linear-gradient(90deg,var(--red),transparent); }

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; gap:.6em;
  font-weight:600; font-size:.98rem; letter-spacing:.005em;
  padding:.95em 1.6em; border-radius:999px; border:1.5px solid transparent;
  transition:transform .25s ease, background .25s ease, color .25s ease, box-shadow .25s ease, border-color .25s ease;
  white-space:nowrap; cursor:pointer; line-height:1;
}
.btn svg{ width:1.15em; height:1.15em; }
.btn-primary{ background:var(--red); color:#fff; box-shadow:0 10px 24px -12px rgba(209,26,42,.55); }
.btn-primary:hover{ background:var(--red-deep); transform:translateY(-2px); box-shadow:0 16px 30px -14px rgba(209,26,42,.7); }
.btn-outline{ background:transparent; color:var(--navy); border-color:var(--navy); }
.btn-outline:hover{ background:var(--navy); color:#F6F2E8; transform:translateY(-2px); }
.btn-light{ background:var(--cream); color:var(--ink); border-color:var(--line); }
.btn-light:hover{ background:#fff; transform:translateY(-2px); box-shadow:var(--shadow-sm); }
.btn-ghost-light{ background:rgba(255,255,255,.12); color:#fff; border-color:rgba(255,255,255,.4); backdrop-filter:blur(6px); }
.btn-ghost-light:hover{ background:rgba(255,255,255,.92); color:var(--ink); transform:translateY(-2px); }
.btn-wa{ background:#25D366; color:#0a3d20; box-shadow:0 10px 22px -12px rgba(37,211,102,.8); }
.btn-wa:hover{ background:#1fbe5b; transform:translateY(-2px); }
.btn-gold{ background:var(--red); color:#fff; }
.btn-gold:hover{ background:var(--red-deep); transform:translateY(-2px); }
/* Acuse de pulsación. `.btn:hover:active` para ganar en especificidad a los
   :hover de cada variante, que si no dejarían el botón levantado al pulsar. */
.btn:active,.btn:hover:active{ transform:scale(.97); transition-duration:.12s; }

/* La flecha se mueve con transform y no con `gap`: `gap` recalcula el layout
   del enlace en cada frame. El recorrido en pantalla es el mismo. */
.link-arrow{ display:inline-flex; align-items:center; gap:.5em; font-weight:600; color:var(--forest); border-bottom:1.5px solid transparent; transition:border-color .2s ease; }
.link-arrow svg{ transition:transform .2s var(--ease-out); }
.link-arrow:hover{ border-color:var(--red); }
.link-arrow:hover svg{ transform:translateX(5px); }

/* ---------- Header ---------- */
.site-header{
  position:fixed; top:0; left:0; right:0; z-index:100;
  background:rgba(20,29,40,.0);
  transition:background .35s ease, box-shadow .35s ease;
}
.site-header .bar{
  display:flex; align-items:center; justify-content:space-between;
  height:var(--header-h); gap:18px;
}
.site-header.solid{ background:var(--navy); box-shadow:0 6px 24px -12px rgba(0,0,0,.5); }
.nav{ display:flex; align-items:center; gap:clamp(8px,1.4vw,18px); }
.nav a{
  color:#ECE5D7; font-size:.92rem; font-weight:500; letter-spacing:.005em;
  padding:.4em 0; position:relative; opacity:1; transition:color .2s;
}
/* El subrayado crece con scaleX y no animando `right`: `right` es una
   propiedad de layout y obliga a un reflow por frame. Se ve igual. */
.nav a::after{ content:""; position:absolute; left:0; right:0; bottom:-2px; height:1.5px; background:var(--red-bright); transform:scaleX(0); transform-origin:left center; transition:transform .25s var(--ease-out); }
.nav a:hover{ opacity:1; }
.nav a:hover::after,.nav a.active::after{ transform:scaleX(1); }
.nav a.active{ opacity:1; color:#fff; }
/* submenú desplegable */
.nav .has-sub{ position:relative; display:flex; align-items:center; }
.nav .has-sub > .sub-trigger{ display:inline-flex; align-items:center; gap:4px; }
.nav .has-sub .caret{ width:13px; height:13px; transition:transform .25s; }
.nav .has-sub:hover .caret{ transform:rotate(180deg); }
.nav .has-sub.active > .sub-trigger{ color:#fff; }
.nav .has-sub.active > .sub-trigger::after{ transform:scaleX(1); }
.nav .submenu{
  position:absolute; top:100%; left:50%; transform:translate(-50%,8px);
  min-width:210px; padding:10px; margin-top:14px;
  background:var(--navy-deep); border:1px solid rgba(255,255,255,.1); border-radius:14px;
  box-shadow:var(--shadow-lg);
  display:flex; flex-direction:column; gap:2px;
  opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .22s var(--ease-out), transform .22s var(--ease-out), visibility .22s;
}
.nav .submenu::before{ content:""; position:absolute; top:-16px; left:0; right:0; height:16px; }
.nav .has-sub:hover .submenu,
.nav .has-sub:focus-within .submenu{ opacity:1; visibility:visible; pointer-events:auto; transform:translate(-50%,0); }
.nav .submenu a{
  padding:.6em .9em; border-radius:9px; font-size:.9rem; color:#DDD5C6; white-space:nowrap;
  transition:background .2s, color .2s;
}
.nav .submenu a::after{ display:none; }
.nav .submenu a:hover{ background:rgba(255,255,255,.07); color:#fff; }
.nav .submenu a.active{ background:var(--red); color:#fff; }

/* iconos sociales en la cabecera */
.header-socials{ display:flex; align-items:center; gap:6px; }
.header-socials a{
  width:36px; height:36px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  color:#ECE5D7; border:1px solid rgba(255,255,255,.2);
  transition:background .25s ease, color .25s ease, border-color .25s ease, transform .25s var(--ease-out);
}
.header-socials a:hover{ background:var(--red); border-color:var(--red); color:#fff; transform:translateY(-2px); }
.header-socials a:active{ transform:scale(.94); transition-duration:.12s; }
.header-socials svg{ width:17px; height:17px; }

.header-cta{ display:flex; align-items:center; gap:12px; }
.btn-wa-head{ padding:.7em 1.15em; font-size:.9rem; }
.nav-toggle{ display:none; background:transparent; border:0; padding:8px; transition:transform .16s var(--ease-out); }
.nav-toggle:active{ transform:scale(.92); }
.nav-toggle span{ display:block; width:26px; height:2px; background:#EDE6D8; margin:5px 0; border-radius:2px; transition:transform .3s var(--ease-out), opacity .3s ease; }

/* mobile drawer */
.mobile-nav{
  position:fixed; inset:0; z-index:99; background:var(--navy-deep);
  display:flex; flex-direction:column; justify-content:center; gap:6px;
  padding:90px var(--gutter) 40px; transform:translateY(-102%);
  /* `visibility` va dentro de la transición: si no, al cerrar salta a hidden
     en el primer frame y el panel desaparece de golpe sin animar la salida.
     La curva arranca rápido; la anterior (.7,0,...) empezaba lenta. */
  transition:transform .45s var(--ease-drawer), visibility .45s;
  visibility:hidden;
}
.mobile-nav.open{ transform:translateY(0); visibility:visible; }
.mobile-nav a{ color:#EDE6D8; font-family:var(--font-display); font-size:1.7rem; padding:.35em 0; border-bottom:1px solid rgba(255,255,255,.08); }
.mobile-nav a.active{ color:var(--red-bright); }
.mobile-nav .has-sub{ display:flex; flex-direction:column; }
.mobile-nav .has-sub .caret{ display:none; }
.mobile-nav .submenu{ display:flex; flex-direction:column; padding-left:18px; }
.mobile-nav .submenu a{ font-size:1.1rem; font-family:var(--font-body); color:#BCB4A4; border-bottom:0; padding:.3em 0; }
.mobile-nav .submenu a.active{ color:var(--red-bright); }
.mobile-nav .btn{ margin-top:22px; align-self:flex-start; }

/* ---------- Logo ---------- */
.logo{ display:inline-flex; align-items:center; flex:0 0 auto; }
.logo img{
  display:block; width:auto; height:54px; max-width:none;
  object-fit:contain; transition:opacity .2s;
}
.logo:hover img{ opacity:.85; }
.site-header.solid .logo img{ height:48px; }
.site-footer .logo img{ height:72px; }
@media (max-width:900px){
  .logo img{ height:44px; }
  .site-header.solid .logo img{ height:42px; }
  .site-footer .logo img{ height:60px; }
}

/* ---------- Hero ---------- */
.hero{ position:relative; min-height:100svh; display:flex; align-items:flex-end; color:#fff; overflow:hidden; }
.hero-bg{ position:absolute; inset:0; z-index:0; }
.hero-bg img{ width:100%; height:100%; object-fit:cover; object-position:center 35%; }
.hero-scrim{ position:absolute; inset:0; z-index:1;
  background:linear-gradient(180deg, rgba(20,29,40,.42) 0%, rgba(20,29,40,.12) 38%, rgba(27,39,53,.62) 86%, rgba(19,29,40,.86) 100%); }
.hero-inner{ position:relative; z-index:2; padding-bottom:clamp(56px,8vh,104px); padding-top:140px; }
.hero h1{ color:#fff; max-width:16ch; text-shadow:0 2px 30px rgba(0,0,0,.35); }
.hero .lead{ color:rgba(255,255,255,.92); max-width:54ch; margin-top:22px; }
.hero .eyebrow{ color:var(--gold-soft); }
.hero .eyebrow::before{ background:var(--red-bright); }
.hero-actions{ display:flex; flex-wrap:wrap; gap:14px; margin-top:34px; }
.scroll-cue{ position:absolute; left:50%; bottom:26px; transform:translateX(-50%); z-index:2; color:rgba(255,255,255,.7); font-size:.7rem; letter-spacing:.28em; text-transform:uppercase; display:flex; flex-direction:column; align-items:center; gap:8px; }
.scroll-cue .dot{ width:1px; height:34px; background:linear-gradient(rgba(255,255,255,.7),transparent); animation:cue 1.8s infinite; }
@keyframes cue{ 0%{opacity:0; transform:scaleY(.3);} 50%{opacity:1;} 100%{opacity:0; transform:scaleY(1) translateY(8px);} }

/* page hero (interior) */
.pagehead{ position:relative; padding-top:calc(var(--header-h) + 64px); padding-bottom:64px; background:var(--navy); color:#F0EADD; overflow:hidden; }
.pagehead::after{ content:""; position:absolute; right:-60px; bottom:-80px; width:340px; height:340px; background:radial-gradient(circle, rgba(189,154,79,.18), transparent 70%); }
.pagehead .eyebrow{ color:var(--gold-soft); }
.pagehead .eyebrow::before{ background:var(--red-bright); }
.pagehead h1{ color:#fff; max-width:18ch; margin-top:16px; }
.pagehead .lead{ color:rgba(240,234,221,.82); max-width:60ch; margin-top:18px; }
.crumbs{ font-size:.8rem; letter-spacing:.04em; color:var(--gold-soft); margin-bottom:8px; }

/* sub-navegación de página (anclas) */
.subnav{ display:flex; flex-wrap:wrap; gap:10px; margin-top:26px; }
.subnav a{
  font-size:.85rem; font-weight:600; letter-spacing:.02em;
  padding:.6em 1.2em; border-radius:999px;
  border:1.5px solid rgba(255,255,255,.28); color:#F0EADD;
  transition:background .25s, border-color .25s, color .25s, transform .25s;
}
.subnav a:hover{ background:var(--red); border-color:var(--red); color:#fff; transform:translateY(-2px); }
.crumbs a{ opacity:.8; } .crumbs a:hover{ opacity:1; }

/* ---------- Photo placeholder ---------- */
.photo{ position:relative; border-radius:var(--r-lg); overflow:hidden; background:var(--sand-deep); box-shadow:var(--shadow-md); }
.photo img{ width:100%; height:100%; object-fit:cover; }
.ph{
  position:relative; border-radius:var(--r-lg); overflow:hidden;
  background:
    repeating-linear-gradient(135deg, rgba(189,154,79,.05) 0 14px, transparent 14px 28px),
    linear-gradient(160deg,#EFE6D6,#E3D6C0);
  border:1px dashed rgba(27,39,53,.35);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px;
  color:var(--forest); text-align:center; padding:24px; min-height:220px;
}
.ph svg{ width:42px; height:42px; opacity:.55; }
.ph span{ font-size:.82rem; letter-spacing:.04em; color:var(--forest-soft); font-weight:500; max-width:24ch; }
.ph small{ font-size:.68rem; letter-spacing:.18em; text-transform:uppercase; color:var(--gold); font-weight:600; }
.ratio-4-3{ aspect-ratio:4/3; }
.ratio-3-4{ aspect-ratio:3/4; }
.ratio-1-1{ aspect-ratio:1/1; }
.ratio-16-9{ aspect-ratio:16/9; }
.ratio-3-2{ aspect-ratio:3/2; }

/* ---------- Feature trio ---------- */
.grid{ display:grid; gap:clamp(18px,2.4vw,34px); }
.cols-2{ grid-template-columns:repeat(2,1fr); }
.cols-3{ grid-template-columns:repeat(3,1fr); }
.cols-4{ grid-template-columns:repeat(4,1fr); }
.feature{ background:var(--cream); border:1px solid var(--line); border-radius:var(--r-md); padding:clamp(26px,3vw,40px); box-shadow:var(--shadow-sm); transition:transform .3s, box-shadow .3s; }
.feature:hover{ transform:translateY(-4px); box-shadow:var(--shadow-md); }
.feature .ico{ width:54px; height:54px; border-radius:14px; background:var(--red-tint); display:flex; align-items:center; justify-content:center; color:var(--red); margin-bottom:20px; }
.feature .ico svg{ width:28px; height:28px; }
.feature h3{ margin-bottom:10px; }
.feature p{ color:var(--ink-soft); font-size:1rem; }

/* split (image + text) */
.split{ display:grid; grid-template-columns:1.05fr 1fr; gap:clamp(30px,5vw,76px); align-items:center; }
.split.reverse{ direction:rtl; } .split.reverse > *{ direction:ltr; }
.split-media{ position:relative; }
.tagline-list{ list-style:none; padding:0; margin:24px 0 0; display:flex; flex-direction:column; gap:14px; }
.tagline-list li{ display:flex; align-items:flex-start; gap:13px; font-weight:500; }
.tagline-list .tick{ flex:0 0 auto; width:30px; height:30px; border-radius:50%; background:var(--red); color:#fff; display:flex; align-items:center; justify-content:center; margin-top:1px; }
.tagline-list .tick svg{ width:15px; height:15px; }
.tagline-list span small{ display:block; font-weight:400; color:var(--ink-soft); font-size:.92rem; }

/* badge over photo */
.float-card{ position:absolute; background:var(--cream); border-radius:var(--r-md); padding:18px 22px; box-shadow:var(--shadow-lg); display:flex; align-items:center; gap:14px; border:1px solid var(--line); }
.float-card .n{ font-family:var(--font-display); font-size:2rem; color:var(--red); line-height:1; }
.float-card .t{ font-size:.82rem; color:var(--ink-soft); line-height:1.3; }

/* ---------- Litter cards ---------- */
.litter-card{ background:var(--cream); border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--shadow-sm); transition:transform .3s, box-shadow .3s; display:flex; flex-direction:column; }
.litter-card:hover{ transform:translateY(-5px); box-shadow:var(--shadow-md); }
.litter-card .media{ aspect-ratio:4/3; position:relative; background:var(--navy-deep); }
.litter-card .media img{ width:100%; height:100%; object-fit:cover; }
.litter-card .body .btn-wa{ margin-top:12px; }

/* miniaturas para cambiar la foto principal de la camada */
.litter-thumbs{ display:flex; gap:8px; margin:4px 0 6px; }
.litter-thumb{ flex:1; aspect-ratio:4/3; padding:0; border:2px solid transparent; border-radius:10px; overflow:hidden; background:var(--sand); cursor:pointer; transition:border-color .2s ease, transform .14s var(--ease-out); }
.litter-thumb:active{ transform:scale(.96); }
/* el cambio de foto principal se cruza en vez de cortar en seco (site.js) */
.litter-card .media img[data-main]{ transition:opacity .18s ease; }
.litter-card .media img[data-main].is-swapping{ opacity:0; }
.litter-thumb img{ width:100%; height:100%; object-fit:cover; display:block; }
.litter-thumb:hover{ border-color:var(--gold); }
.litter-thumb.is-active{ border-color:var(--red); }

/* lista de espera */
.waitlist{
  margin-top:clamp(24px,3vw,36px);
  background:var(--cream); border:1px dashed var(--line); border-radius:var(--r-lg);
  padding:clamp(24px,3vw,40px);
  display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap;
}
.litter-card .body{ padding:24px 26px 28px; display:flex; flex-direction:column; gap:10px; flex:1; }
.litter-card h3{ font-size:1.45rem; }
.litter-card p{ color:var(--ink-soft); font-size:.97rem; flex:1; }
.status{ position:absolute; top:14px; left:14px; z-index:2; font-size:.72rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; padding:.5em .9em; border-radius:999px; backdrop-filter:blur(4px); }
.status.avail{ background:var(--red); color:#fff; }
.status.reserve{ background:rgba(189,154,79,.95); color:#2e220a; }
.status.wait{ background:rgba(27,39,53,.9); color:#E8E2D6; }

/* ---------- Instagram ---------- */
.ig-actions{ display:flex; flex-wrap:wrap; gap:12px; justify-content:center; margin-top:24px; }
.ig-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.ig-post{
  position:relative; display:block; aspect-ratio:1/1; overflow:hidden;
  border-radius:14px; box-shadow:var(--shadow-sm);
}
.ig-post img{ width:100%; height:100%; object-fit:cover; transition:transform .25s ease; }
.ig-post:hover img{ transform:scale(1.07); }
.ig-ov{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  background:rgba(27,39,53,.55); opacity:0; transition:opacity .3s;
}
.ig-ov::after{
  content:""; width:30px; height:30px;
  background:currentColor; color:#fff;
  -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.012-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z'/></svg>") center/contain no-repeat;
  mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.012-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z'/></svg>") center/contain no-repeat;
}
.ig-post:hover .ig-ov{ opacity:1; }
@media (max-width:900px){ .ig-grid{ grid-template-columns:repeat(3,1fr); } }
@media (max-width:600px){ .ig-grid{ grid-template-columns:repeat(2,1fr); } }

/* ---------- Brand strip ---------- */
.brandstrip{ background:var(--forest); color:#F2EEE4; position:relative; overflow:hidden; }
.brandstrip::before,.brandstrip::after{ content:""; position:absolute; border-radius:50%; }
.brandstrip::before{ width:300px; height:300px; left:-90px; top:-120px; background:radial-gradient(circle,rgba(255,255,255,.07),transparent 70%); }
.brandstrip::after{ width:360px; height:360px; right:-110px; bottom:-160px; background:radial-gradient(circle,rgba(189,154,79,.22),transparent 70%); }
.brandstrip .inner{ position:relative; z-index:1; display:flex; flex-direction:column; align-items:center; text-align:center; gap:26px; }
.brandstrip .paw{ width:56px; height:56px; color:var(--red-bright); }
.brandstrip h2{ color:#fff; max-width:20ch; }

/* ---------- Gallery strip ---------- */
/* min-width:0 — un scroller horizontal nunca debe inflar a su contenedor */
.gal-strip{ display:flex; min-width:0; gap:14px; overflow-x:auto; padding-bottom:10px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; }
.gal-strip::-webkit-scrollbar{ height:8px; }
.gal-strip::-webkit-scrollbar-thumb{ background:var(--line); border-radius:8px; }
.gal-strip .g{ flex:0 0 clamp(220px,26vw,320px); aspect-ratio:3/4; border-radius:var(--r-md); overflow:hidden; scroll-snap-align:start; box-shadow:var(--shadow-sm); }
.gal-strip .g img{ width:100%; height:100%; object-fit:cover; transition:transform .25s ease; }
.gal-strip .g:hover img{ transform:scale(1.06); }

/* gallery grid (galeria page) */
.gal-grid{ columns:3; column-gap:16px; }
.gal-grid .g{ break-inside:avoid; margin-bottom:16px; border-radius:var(--r-md); overflow:hidden; box-shadow:var(--shadow-sm); }
.gal-grid .g img{ width:100%; }

/* ---------- Dog fiche ---------- */
.dog-card{
  background:var(--cream); border:2.5px solid var(--red); border-radius:var(--r-lg);
  overflow:hidden; box-shadow:var(--shadow-sm);
  display:grid;
  grid-template-columns:minmax(0,1fr) 1.2fr;
  grid-template-rows:auto auto;
  align-items:stretch;
  transition:box-shadow .3s, transform .3s, border-color .3s;
}
.dog-card:hover{ box-shadow:var(--shadow-md); transform:translateY(-3px); border-color:var(--red-bright); }

/* galería (carrusel) a lo ancho, debajo de la foto y el texto */
.dog-gallery{
  grid-column:1 / -1;
  padding:16px clamp(20px,2.2vw,30px) 18px;
  border-top:1px solid var(--line);
  background:var(--sand);
}
.dog-gallery .gal-strip{ margin-top:9px; padding-bottom:6px; }
.dog-gallery .gal-strip .g{ flex:0 0 clamp(110px,12vw,150px); aspect-ratio:4/3; border-radius:10px; }
.dog-gallery .gal-strip .g img{ width:100%; height:100%; object-fit:cover; }
/* altura FIJA e idéntica para la foto de todas las fichas */
.dog-card .media{ aspect-ratio:auto; height:clamp(300px,29vw,380px); min-height:0; overflow:hidden; }
.dog-card .media img,.dog-card .media .ph{
  width:100%; height:100%; max-height:100%;
  object-fit:cover; object-position:center center; border-radius:0;
}
/* el texto nunca empuja la tarjeta más allá de la foto */
.dog-card .body{ max-height:clamp(300px,29vw,380px); overflow:hidden; }
.dog-card .body{ padding:clamp(20px,2.2vw,30px); display:flex; flex-direction:column; gap:11px; justify-content:center; }
.dog-card .body h2{ font-size:1.7rem !important; }
.dog-card .body p{ font-size:.95rem; line-height:1.55; }
.dog-card .chip{ font-size:.72rem; padding:.4em .8em; }
.dog-meta{ display:flex; flex-wrap:wrap; gap:10px; }
.chip{ font-size:.78rem; font-weight:600; letter-spacing:.02em; padding:.45em .9em; border-radius:999px; background:var(--gold-tint); color:var(--forest-deep); }
.chip.f{ background:#F0E0E4; color:#7a3b4d; }
.chip.m{ background:#DFE7EC; color:#2d4a5c; }
.chip.gold{ background:var(--red-tint); color:var(--red); }

/* ---------- Blog de Logros ---------- */
.n-big{ font-family:var(--font-display); font-size:2.4rem; line-height:1; color:var(--red); margin-bottom:8px; }
.logro-list{ display:flex; flex-direction:column; gap:clamp(22px,3vw,34px); }
.logro{
  background:var(--cream); border:2.5px solid var(--red); border-radius:var(--r-lg);
  overflow:hidden; box-shadow:var(--shadow-sm);
  display:grid; grid-template-columns:minmax(0,.85fr) 1.15fr;
  grid-template-rows:auto auto;
  transition:transform .3s, box-shadow .3s, border-color .3s;
}
.logro:hover{ transform:translateY(-3px); box-shadow:var(--shadow-md); border-color:var(--red-bright); }
.logro .dog-gallery{ grid-column:1 / -1; }
/* altura FIJA e idéntica en todas las fichas de logro */
.logro-media{ position:relative; height:clamp(300px,29vw,380px); background:var(--sand); overflow:hidden; }
.logro-media img{ width:100%; height:100%; max-height:100%; object-fit:cover; object-position:center center; display:block; }
.logro-body{
  padding:clamp(20px,2.2vw,30px); display:flex; flex-direction:column; gap:11px;
  justify-content:center; max-height:clamp(300px,29vw,380px); overflow:hidden;
}
.logro-body h3{ font-size:1.5rem !important; }
.logro-body p{ font-size:.95rem; line-height:1.55; }
.logro-top{ display:flex; flex-wrap:wrap; align-items:center; gap:9px; }

/* banderitas de los países donde es campeón */
.flags{ display:inline-flex; align-items:center; gap:6px; margin-left:2px; }
.flags .flag{
  width:24px; height:16px; border-radius:3px; display:block;
  box-shadow:0 0 0 1px rgba(27,39,53,.14), var(--shadow-sm);
}
.flags .flag[title]{ cursor:help; }
.chip .flag{ width:18px; height:12px; border-radius:2px; display:inline-block; vertical-align:-1px; margin-right:5px; box-shadow:0 0 0 1px rgba(27,39,53,.18); }
.logro-body p{ color:var(--ink-soft); }
.logro-data{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin:6px 0 0; padding-top:18px; border-top:1px solid var(--line); }
.logro-data dt{ font-size:.7rem; text-transform:uppercase; letter-spacing:.1em; color:var(--ink-soft); margin-bottom:3px; }
.logro-data dd{ margin:0; font-weight:600; font-size:.98rem; }
@media (max-width:900px){
  .logro{ grid-template-columns:1fr; }
  .logro-media{ min-height:260px; }
  .logro-data{ grid-template-columns:1fr 1fr; }
}

/* ---------- Process steps ---------- */
.steps{ display:grid; gap:18px; }
.step{ background:var(--cream); border:1px solid var(--line); border-radius:var(--r-md); padding:26px 28px 26px 30px; display:flex; gap:20px; align-items:flex-start; position:relative; }
.step .num{ flex:0 0 auto; width:46px; height:46px; border-radius:50%; background:var(--red); color:#fff; font-family:var(--font-display); font-size:1.25rem; display:flex; align-items:center; justify-content:center; }
.step h3{ font-size:1.2rem; margin-bottom:5px; }
.step p{ color:var(--ink-soft); font-size:.97rem; }

/* ---------- Info quote ---------- */
.bigquote{ font-family:var(--font-display); font-weight:430; font-size:clamp(1.7rem,3.6vw,2.9rem); line-height:1.18; letter-spacing:-.015em; max-width:20ch; }
.bigquote .mark{ color:var(--red); }
.quote-block{ position:relative; }

/* value cards */
.value{ background:var(--cream); border:1px solid var(--line); border-radius:var(--r-md); padding:30px 28px; transition:transform .3s, box-shadow .3s; }
.value:hover{ transform:translateY(-4px); box-shadow:var(--shadow-md); }
.value .ico{ width:50px; height:50px; border-radius:13px; background:var(--forest); color:var(--gold-soft); display:flex; align-items:center; justify-content:center; margin-bottom:18px; }
.value .ico svg{ width:26px; height:26px; }
.value h3{ font-size:1.25rem; margin-bottom:8px; }
.value p{ color:var(--ink-soft); font-size:.96rem; }

/* care list */
.care-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:16px; }
.care{ display:flex; gap:16px; padding:22px; background:var(--cream); border:1px solid var(--line); border-radius:var(--r-md); }
.care .ico{ flex:0 0 auto; width:44px; height:44px; border-radius:12px; background:var(--gold-tint); color:var(--forest); display:flex; align-items:center; justify-content:center; }
.care .ico svg{ width:24px; height:24px; }
.care h3{ font-family:var(--font-display); font-weight:500; font-size:1.1rem; margin-bottom:4px; }
.care p{ font-size:.92rem; color:var(--ink-soft); }

/* ---------- FAQ ---------- */
.faq{ border-top:1px solid var(--line); }
.faq-item{ border-bottom:1px solid var(--line); }
.faq-q{ width:100%; background:transparent; border:0; text-align:left; padding:24px 8px; display:flex; align-items:center; justify-content:space-between; gap:20px; font-family:var(--font-display); font-size:clamp(1.1rem,1.6vw,1.35rem); color:var(--ink); }
.faq-q:active .pm{ transform:scale(.92); }
.faq-q .pm{ flex:0 0 auto; width:34px; height:34px; border-radius:50%; border:1.5px solid var(--forest); position:relative; transition:background .3s ease, transform .14s var(--ease-out); }
.faq-q .pm::before,.faq-q .pm::after{ content:""; position:absolute; background:var(--forest); transition:transform .3s var(--ease-out), background .3s ease; }
.faq-q .pm::before{ width:14px; height:1.5px; left:9px; top:16px; }
.faq-q .pm::after{ width:1.5px; height:14px; left:16px; top:9px; }
.faq-item.open .pm{ background:var(--forest); }
.faq-item.open .pm::before,.faq-item.open .pm::after{ background:#fff; }
.faq-item.open .pm::after{ transform:scaleY(0); }
/* grid-template-rows 0fr->1fr en vez de max-height: no hay que medir la altura
   desde JS y el panel se abre exactamente hasta su contenido. Sí recalcula
   layout en cada frame — es el precio de animar una altura desconocida. */
.faq-a{ display:grid; grid-template-rows:0fr; transition:grid-template-rows .3s var(--ease-out); }
.faq-a > .inner{ overflow:hidden; min-height:0; padding:0 8px; color:var(--ink-soft); max-width:72ch; }
/* el hueco inferior va como contenido, no como padding: con border-box un
   padding-bottom impediría que el panel cerrado colapse del todo a 0. */
.faq-a > .inner::after{ content:""; display:block; height:26px; }
.faq-item.open .faq-a{ grid-template-rows:1fr; }

/* ---------- Contact tiles ---------- */
.contact-tile{ display:flex; flex-direction:column; gap:14px; padding:34px; border-radius:var(--r-lg); border:1px solid var(--line); background:var(--cream); transition:transform .3s, box-shadow .3s; }
.contact-tile:hover{ transform:translateY(-4px); box-shadow:var(--shadow-md); }
.contact-tile .ico{ width:56px; height:56px; border-radius:16px; display:flex; align-items:center; justify-content:center; color:#fff; }
.contact-tile .ico svg{ width:30px; height:30px; }
.ico-wa{ background:#25D366; } .ico-ig{ background:linear-gradient(45deg,#F58529,#DD2A7B,#8134AF); }
.contact-tile h2{ font-size:1.4rem; }

/* ---------- Footer ---------- */
.site-footer{ background:var(--navy); color:#D8D1C4; padding-block:clamp(54px,7vw,84px) 30px; }
.footer-grid{ display:grid; grid-template-columns:1.6fr 1fr 1fr 1.2fr; gap:clamp(28px,4vw,56px); }
/* h2 y no h4: son los títulos de sección del pie y venían tras un h2,
   creando un salto de nivel. Estilo idéntico, solo cambia la etiqueta. */
.site-footer h2{ font-family:var(--font-body); font-size:.78rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--gold-soft); margin-bottom:18px; }
.site-footer a{ color:#C9C2B4; opacity:.9; }
.site-footer a:hover{ color:#fff; }
.footer-links{ display:flex; flex-direction:column; gap:11px; font-size:.95rem; }
.footer-contact{ display:flex; flex-direction:column; gap:12px; font-size:.95rem; }
.footer-contact .row{ display:flex; gap:11px; align-items:flex-start; }
.footer-contact svg{ width:18px; height:18px; flex:0 0 auto; margin-top:3px; color:var(--gold-soft); }
.footer-blurb{ color:#A89F8E; font-size:.95rem; max-width:34ch; margin-top:18px; }
.socials{ display:flex; gap:12px; margin-top:18px; }
/* Propiedades explícitas: `transition:.25s` sin propiedad equivale a
   `transition:all`, que anima también lo que no se pretendía. */
.socials a{ width:44px; height:44px; border-radius:50%; border:1px solid rgba(255,255,255,.16); display:flex; align-items:center; justify-content:center; transition:background .25s ease, border-color .25s ease, color .25s ease, transform .25s var(--ease-out); }
.socials a:hover{ background:var(--gold); border-color:var(--gold); color:#2e220a; transform:translateY(-2px); }
.socials a:active{ transform:scale(.94); transition-duration:.12s; }
.socials svg{ width:20px; height:20px; }
.footer-bottom{ margin-top:clamp(40px,5vw,64px); padding-top:24px; border-top:1px solid rgba(255,255,255,.1); display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; font-size:.82rem; color:#978E7E; }
.footer-legal{ display:flex; gap:18px; flex-wrap:wrap; }
.footer-legal a{ color:#A89F8E; }
.footer-legal a:hover{ color:#fff; }

/* ---------- Banner de cookies ---------- */
.cookie-banner{
  position:fixed; left:16px; right:16px; bottom:16px; z-index:120;
  max-width:720px; margin-inline:auto;
  background:var(--navy-deep); color:#E8E2D6;
  border:1px solid rgba(255,255,255,.12); border-radius:16px;
  box-shadow:var(--shadow-lg);
  padding:18px 20px; display:flex; align-items:center; gap:18px; flex-wrap:wrap;
  transform:translateY(140%); opacity:0;
  /* Entra deprisa desde el primer frame (antes arrancaba lento) y sale aún
     más rápido: la salida es respuesta del sistema, no decisión del usuario. */
  transition:transform .2s var(--ease-out), opacity .2s var(--ease-out);
}
.cookie-banner.show{ transform:translateY(0); opacity:1; transition-duration:.35s; }
.cookie-banner p{ flex:1; min-width:220px; font-size:.88rem; line-height:1.5; margin:0; color:#CFC7B8; }
.cookie-banner a{ color:var(--gold-soft); text-decoration:underline; }
.cookie-actions{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.cookie-banner button{ background:var(--red); color:#fff; border:0; border-radius:999px; padding:.7em 1.5em; font-weight:600; font-size:.9rem; white-space:nowrap; transition:background .2s ease, transform .2s var(--ease-out), border-color .2s ease; }
.cookie-banner button:hover{ background:var(--red-deep); transform:translateY(-2px); }
.cookie-banner button:active{ transform:scale(.97); transition-duration:.12s; }
/* Rechazar debe ser tan alcanzable como aceptar: mismo tamaño y misma
   posición de lectura. Solo cambia el peso visual, no la facilidad de uso. */
.cookie-banner .ck-no{ background:transparent; color:#E8E2D6; border:1.5px solid rgba(255,255,255,.45); }
.cookie-banner .ck-no:hover{ background:rgba(255,255,255,.1); color:#fff; border-color:rgba(255,255,255,.7); }

/* ---------- Páginas legales ---------- */
.legal{ max-width:820px; }
.legal h2{ font-size:clamp(1.3rem,2.2vw,1.7rem); margin:36px 0 12px; }
.legal h2:first-child{ margin-top:0; }
.legal p, .legal li{ color:var(--ink-soft); line-height:1.75; }
.legal p{ margin-bottom:14px; }
.legal ul{ margin:0 0 18px; padding-left:22px; display:flex; flex-direction:column; gap:8px; }
.legal a{ color:var(--red); text-decoration:underline; }
.legal .updated{ font-size:.85rem; color:var(--ink-soft); margin-bottom:30px; }
.legal table{ width:100%; border-collapse:collapse; margin:6px 0 22px; font-size:.92rem; }
.legal th, .legal td{ text-align:left; padding:10px 12px; border:1px solid var(--line); }
.legal th{ background:var(--sand-deep); font-weight:600; color:var(--ink); }

/* ---------- Floating WhatsApp ---------- */
.wa-float{ position:fixed; right:22px; bottom:22px; z-index:80; width:60px; height:60px; border-radius:50%; background:#25D366; color:#fff; display:flex; align-items:center; justify-content:center; box-shadow:0 14px 30px -8px rgba(37,211,102,.7); transition:transform .3s; animation:waPulse 2.6s infinite; }
.wa-float:hover{ transform:scale(1.08); }
.wa-float:active{ transform:scale(.95); transition-duration:.12s; }
.wa-float svg{ width:32px; height:32px; }
@keyframes waPulse{ 0%{ box-shadow:0 0 0 0 rgba(37,211,102,.45);} 70%{ box-shadow:0 0 0 16px rgba(37,211,102,0);} 100%{ box-shadow:0 0 0 0 rgba(37,211,102,0);} }

/* ---------- Reveal (visible by default; JS arms below-fold elements) ---------- */
.reveal{ transition:opacity .45s ease, transform .45s cubic-bezier(.2,.7,.2,1); }
.reveal.pre{ opacity:0; transform:translateY(26px); }
.reveal.in{ opacity:1; transform:none; }
.reveal.d1{ transition-delay:.08s; } .reveal.d2{ transition-delay:.16s; } .reveal.d3{ transition-delay:.24s; } .reveal.d4{ transition-delay:.32s; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  .reveal,.reveal.pre{ transition:none !important; opacity:1 !important; transform:none !important; }
  /* animaciones infinitas: se quedan visibles y legibles, sin bucle */
  .wa-float{ animation:none; box-shadow:0 14px 30px -8px rgba(37,211,102,.7); }
  .scroll-cue .dot{ animation:none; opacity:.7; }
  .ig-post img,.gal-strip .g img{ transition:none; }
  .faq-a{ transition:none; }
  /* Menos movimiento no es cero movimiento: se conservan color y opacidad,
     que ayudan a entender el cambio, y se quita todo desplazamiento. */
  .mobile-nav,.cookie-banner{ transition:opacity .2s ease, visibility .2s; transform:none; }
  .mobile-nav{ opacity:0; }
  .mobile-nav.open{ opacity:1; }
  .cookie-banner{ transform:none; }
  .btn:hover,.btn:active,.btn:hover:active,
  .subnav a:hover,.header-socials a:hover,.header-socials a:active,
  .socials a:hover,.socials a:active,
  .feature:hover,.value:hover,.contact-tile:hover,.litter-card:hover,
  .dog-card:hover,.logro:hover,.litter-thumb:active,.nav-toggle:active,
  .faq-q:active .pm,.cookie-banner button:hover,.cookie-banner button:active,
  .wa-float:hover,.wa-float:active,
  .ig-post:hover img,.gal-strip .g:hover img,.link-arrow:hover svg{ transform:none; }
  .litter-card .media img[data-main]{ transition:none; }
}

/* ---------- Táctil: sin :hover pegado ----------
   En un móvil, tocar dispara :hover y el estado se queda fijo hasta tocar
   otra cosa. Aquí se neutraliza; el acuse de pulsación lo da :active. */
@media (hover: none),(pointer: coarse){
  .btn:hover,.subnav a:hover,.header-socials a:hover,.socials a:hover,
  .feature:hover,.value:hover,.contact-tile:hover,.litter-card:hover,
  .dog-card:hover,.logro:hover,.wa-float:hover,.cookie-banner button:hover{ transform:none; }
  .ig-post:hover img,.gal-strip .g:hover img{ transform:none; }
  .ig-post:hover .ig-ov{ opacity:0; }
  .link-arrow:hover svg{ transform:none; }
  .btn-primary:hover{ background:var(--red); }
  .btn-gold:hover{ background:var(--red); }
  .btn-outline:hover{ background:transparent; color:var(--navy); }
  .btn-light:hover{ background:var(--cream); box-shadow:none; }
  .btn-ghost-light:hover{ background:rgba(255,255,255,.12); color:#fff; }
  .btn-wa:hover{ background:#25D366; }
  .subnav a:hover{ background:transparent; border-color:rgba(255,255,255,.28); color:#F0EADD; }
  .header-socials a:hover{ background:transparent; border-color:rgba(255,255,255,.2); color:#ECE5D7; }
  .socials a:hover{ background:transparent; border-color:rgba(255,255,255,.16); color:inherit; }
  .feature:hover,.litter-card:hover{ box-shadow:var(--shadow-sm); }
  .value:hover,.contact-tile:hover{ box-shadow:none; }
  .dog-card:hover,.logro:hover{ box-shadow:var(--shadow-sm); border-color:var(--red); }
  .litter-thumb:hover{ border-color:transparent; }
  .litter-thumb.is-active:hover{ border-color:var(--red); }
}

/* ==========================================================
   RESPONSIVE
   ========================================================== */
@media (max-width:1100px){
  .cols-4{ grid-template-columns:repeat(2,1fr); }
  .cols-3{ grid-template-columns:repeat(2,1fr); }
  .gal-grid{ columns:2; }
}

@media (max-width:900px){
  /* navegación móvil */
  .nav{ display:none; }
  .nav-toggle{ display:block; }
  .btn-wa-head{ display:none; }

  /* táctil: iconos sociales al mínimo de 44px */
  .header-socials a{ width:44px; height:44px; }

  /* estructura */
  .split,.split.reverse{ grid-template-columns:1fr; }
  .cols-2,.cols-3,.cols-4{ grid-template-columns:1fr; }
  .care-grid{ grid-template-columns:1fr; }
  .footer-grid{ grid-template-columns:1fr 1fr; }
  .steps{ grid-template-columns:1fr; }

  /* fichas de perro: foto arriba, texto debajo, carrusel al final.
     minmax(0,1fr) y no 1fr: el carrusel de miniaturas no encoge y su
     min-content inflaría la columna muy por encima del viewport. */
  .dog-card{ grid-template-columns:minmax(0,1fr); grid-template-rows:auto auto auto; }
  .dog-card .media{ height:auto; aspect-ratio:4/3; }
  .dog-gallery{ padding:22px 20px 26px; }

  .logro{ grid-template-columns:minmax(0,1fr); }
  .logro-data{ grid-template-columns:1fr 1fr; }
  .float-card{ position:static; margin-top:16px; }
}

@media (max-width:640px){
  /* header estrecho: logo + hamburguesa. Las redes ya están en el drawer y el pie. */
  .header-socials{ display:none; }

  /* el recorte vertical del hero sube al perro justo detrás del titular:
     el velo necesita más cuerpo aquí para que el texto se lea. */
  .hero-scrim{ background:linear-gradient(180deg, rgba(20,29,40,.52) 0%, rgba(20,29,40,.34) 30%, rgba(27,39,53,.72) 72%, rgba(19,29,40,.9) 100%); }
  .footer-grid{ grid-template-columns:1fr; }
  .gal-grid{ columns:1; }
  .logro-data{ grid-template-columns:1fr; }
  .dog-card .media{ aspect-ratio:1/1; }
  .footer-bottom{ flex-direction:column; }
}
