/* Plantilla veterinaria — estilos. Los colores salen de datos.json (--acento, --fondo). */
:root {
  --fondo: #f6f3ee;
  --superficie: #ffffff;
  --tinta: #1d2420;
  --suave: #5b6560;
  --acento: #1f6f5c;
  --acento-tinta: #ffffff;
  --linea: color-mix(in oklab, var(--tinta) 12%, transparent);
  --wa: #0e7a3e;
  --radio: 14px;
  --ancho: 1200px;
  --gutter: clamp(16px, 4vw, 40px);
  --f-titulo: "Bricolage Grotesque", system-ui, sans-serif;
  --f-texto: "Figtree", system-ui, sans-serif;
  --ease: cubic-bezier(.2, .7, .2, 1);
}
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body {
  margin: 0; background: var(--fondo); color: var(--tinta);
  font: 400 17px/1.55 var(--f-texto); overflow-x: hidden;
}
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
h1, h2, h3 { font-family: var(--f-titulo); line-height: 1.08; letter-spacing: -0.02em; margin: 0; font-weight: 600; text-wrap: balance; }
h1 { font-size: clamp(40px, 6.4vw, 80px); }
h2 { font-size: clamp(30px, 4.2vw, 52px); }
h3 { font-size: 21px; letter-spacing: -0.01em; }
p { margin: 0; text-wrap: pretty; }
.wrap { width: 100%; max-width: calc(var(--ancho) + 2 * var(--gutter)); margin: 0 auto; padding: 0 var(--gutter); }
.sec { padding: clamp(72px, 10vw, 128px) 0; }
.sec-cabeza { display: grid; gap: 14px; max-width: 720px; margin-bottom: clamp(32px, 5vw, 56px); }
.sec-cabeza p { color: var(--suave); font-size: 19px; }
.antetitulo { font-size: 14px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--acento); }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Botones */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 52px; padding: 0 24px; border-radius: 999px; border: 1.5px solid transparent;
  font: 600 16px/1 var(--f-texto); text-decoration: none; cursor: pointer;
  transition: transform 160ms var(--ease), background-color 160ms var(--ease), box-shadow 160ms var(--ease), border-color 160ms var(--ease);
}
.btn svg { width: 20px; height: 20px; flex: none; }
.btn:hover { transform: translateY(-2px); }
.btn:active { transform: translateY(0) scale(.98); }
.btn:focus-visible, a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid var(--tinta); outline-offset: 3px; }
.btn-wa { background: var(--wa); color: #fff; box-shadow: 0 6px 18px -8px color-mix(in oklab, var(--wa) 80%, black); position: relative; }
.btn-wa:hover { background: color-mix(in oklab, var(--wa) 88%, black); box-shadow: 0 12px 26px -10px color-mix(in oklab, var(--wa) 90%, black); }
/* Botón principal: más grande, con una segunda línea que baja la duda */
.btn-grande { min-height: 64px; padding: 10px 30px 10px 22px; font-size: 18px; gap: 14px; text-align: left; }
.btn-grande svg { width: 28px; height: 28px; }
.btn-grande small { display: block; font-size: 13px; font-weight: 500; margin-top: 3px; }
.btn-grande .flecha { width: 18px; height: 18px; transition: transform 160ms var(--ease); }
.btn-grande:hover .flecha { transform: translateX(4px); }
/* Anillo que late dos veces para llamar la atención */
.btn-wa.late::after { content: ""; position: absolute; inset: -4px; border-radius: inherit; border: 2px solid var(--wa); opacity: 0; pointer-events: none; animation: late 1.6s var(--ease) 1.2s 2; }
@keyframes late { 0% { opacity: .7; transform: scale(1); } 100% { opacity: 0; transform: scale(1.14, 1.35); } }
@media (prefers-reduced-motion: reduce) { .btn-wa.late::after { animation: none; } }
.btn-texto { min-height: 48px; padding: 0 6px; color: var(--tinta); background: none; border: 0; text-decoration: underline; text-decoration-color: var(--linea); text-underline-offset: 5px; text-decoration-thickness: 2px; }
.btn-texto:hover { text-decoration-color: var(--tinta); transform: none; }
.cta-linea { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; margin-top: 32px; }
.cta-linea p { color: var(--suave); }
/* Botón flotante de WhatsApp en compu (aparece después de la portada) */
.flotante { position: fixed; right: 24px; bottom: 24px; z-index: 50; transform: translateY(calc(100% + 60px)); visibility: hidden; transition: transform 300ms var(--ease), visibility 0s 300ms; }
.flotante.ver { transform: none; visibility: visible; transition: transform 300ms var(--ease), visibility 0s; }
.flotante .btn { min-height: 56px; box-shadow: 0 14px 30px -12px rgba(0,0,0,.45); }
.btn-borde { border-color: color-mix(in oklab, var(--tinta) 22%, transparent); color: var(--tinta); background: transparent; }
.btn-borde:hover { border-color: var(--tinta); background: var(--superficie); }
.acciones { display: flex; flex-wrap: wrap; gap: 12px; }

/* Portada */
.portada { min-height: 100svh; display: grid; align-items: center; padding: clamp(24px, 4vw, 48px) 0; }
.portada .wrap { display: grid; grid-template-columns: 1.05fr 1fr; gap: clamp(32px, 5vw, 72px); align-items: center; }
.marca { font-family: var(--f-titulo); font-weight: 600; font-size: 20px; display: flex; align-items: center; gap: 10px; margin-bottom: clamp(28px, 5vh, 56px); }
.marca img { width: 44px; height: 44px; border-radius: 10px; object-fit: cover; }
.portada .bajada { font-size: clamp(19px, 1.6vw, 22px); color: var(--suave); margin: 20px 0 28px; max-width: 34ch; }
.datos-rapidos { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 28px; }
.pastilla {
  display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 14px;
  border-radius: 999px; background: var(--superficie); border: 1px solid var(--linea);
  font-size: 15px; font-weight: 500; text-decoration: none;
  transition: border-color 160ms var(--ease), transform 160ms var(--ease);
}
a.pastilla:hover { border-color: var(--tinta); transform: translateY(-1px); }
.pastilla .estrella { color: #e0a100; }
.punto { width: 9px; height: 9px; border-radius: 50%; background: #9aa39e; flex: none; }
.estado-abierto .punto { background: #1f9d55; box-shadow: 0 0 0 4px color-mix(in oklab, #1f9d55 22%, transparent); }
.estado-cerrado .punto { background: #c0392b; }
.portada-foto { position: relative; border-radius: var(--radio); overflow: hidden; aspect-ratio: 4 / 5; background: #dcd6cc; }
.portada-foto img { width: 100%; height: 115%; object-fit: cover; will-change: transform; }

/* Servicios */
.servicios-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(32px, 5vw, 72px); align-items: start; }
.lista-servicios { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--linea); }
.lista-servicios li { display: grid; grid-template-columns: 40px 1fr; gap: 16px; padding: 22px 0; border-bottom: 1px solid var(--linea); }
.lista-servicios .num { font-family: var(--f-titulo); font-weight: 600; color: var(--acento); font-size: 18px; padding-top: 2px; }
.lista-servicios p { color: var(--suave); margin-top: 4px; font-size: 16px; }
.servicios-fotos { position: sticky; top: 24px; display: grid; gap: 16px; }
.marco { border-radius: var(--radio); overflow: hidden; background: #dcd6cc; }
.marco img { width: 100%; height: 100%; object-fit: cover; transition: transform 500ms var(--ease); }
.marco:hover img { transform: scale(1.03); }
.servicios-fotos .marco:first-child { aspect-ratio: 4 / 3; }
.servicios-fotos .marco:last-child { aspect-ratio: 16 / 9; }

/* Foto ancha que se expande */
.franja { padding: 0 0 clamp(72px, 10vw, 128px); }
.franja .expande { height: clamp(380px, 82vh, 820px); overflow: hidden; }
.franja .expande img { width: 100%; height: 124%; object-fit: cover; }
/* Las fotos con movimiento: un poco más altas para que el parallax no deje huecos */
.marco { position: relative; }
.marco[data-revela] img { height: 116%; }

/* Urgencias */
.urgencias { background: var(--acento); color: var(--acento-tinta); }
.urgencias .wrap { display: grid; grid-template-columns: 1.4fr 1fr; gap: 32px; align-items: center; }
.urgencias p { opacity: .88; font-size: 19px; margin-top: 12px; max-width: 46ch; }
.urgencias .acciones { justify-content: flex-end; }
.btn-claro { background: var(--acento-tinta); color: var(--acento); }
.btn-claro:hover { background: color-mix(in oklab, var(--acento-tinta) 90%, var(--acento)); }

/* Equipo */
.equipo-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; }
.persona { background: var(--superficie); border: 1px solid var(--linea); border-radius: var(--radio); padding: 24px; display: grid; gap: 6px; align-content: start; }
.persona .foto { width: 72px; height: 72px; border-radius: 50%; overflow: hidden; margin-bottom: 10px; background: #dcd6cc; }
.persona .foto img { width: 100%; height: 100%; object-fit: cover; }
.persona .titulo { color: var(--suave); font-size: 15px; }
.persona .espe { font-size: 15px; font-weight: 500; color: var(--acento); }
.galeria { display: grid; grid-template-columns: 1.3fr 1fr 1fr; gap: 16px; margin-top: 16px; }
.galeria .marco { aspect-ratio: 4 / 5; }
.galeria .marco:first-child { aspect-ratio: auto; }

/* Dónde estamos */
.sedes { display: grid; gap: 24px; }
.sede { display: grid; grid-template-columns: 1fr 1fr; background: var(--superficie); border: 1px solid var(--linea); border-radius: var(--radio); overflow: hidden; }
.sede-info { padding: clamp(24px, 3.5vw, 40px); display: grid; gap: 18px; align-content: start; }
.sede-info .dir { font-size: 19px; }
.horarios { width: 100%; border-collapse: collapse; font-size: 16px; }
.horarios th, .horarios td { text-align: left; padding: 8px 0; border-bottom: 1px solid var(--linea); font-weight: 400; }
.horarios td { text-align: right; color: var(--suave); }
.horarios tr.hoy th, .horarios tr.hoy td { font-weight: 700; color: var(--tinta); }
.horarios tr.hoy th::after { content: " · hoy"; color: var(--acento); font-weight: 600; }
.sede-mapa { min-height: 360px; background: #dcd6cc; position: relative; }
.sede-mapa iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.mapa-boton { position: absolute; inset: 0; display: grid; place-items: center; border: 0; cursor: pointer; background: #dcd6cc center / cover; font: 600 16px var(--f-texto); color: var(--tinta); }
.mapa-boton span { background: var(--superficie); padding: 12px 20px; border-radius: 999px; box-shadow: 0 6px 20px -10px rgba(0,0,0,.4); transition: transform 160ms var(--ease); }
.mapa-boton:hover span { transform: translateY(-2px); }

/* Turno */
.turno .wrap { display: grid; grid-template-columns: 1fr 1.1fr; gap: clamp(32px, 5vw, 72px); align-items: start; }
.form { background: var(--superficie); border: 1px solid var(--linea); border-radius: var(--radio); padding: clamp(24px, 3.5vw, 40px); display: grid; gap: 20px; }
.campo { display: grid; gap: 8px; }
.campo label, .chips legend { font-weight: 600; font-size: 15px; }
.campo input, .campo select, .campo textarea {
  font: 400 17px/1.4 var(--f-texto); color: var(--tinta); background: var(--fondo);
  border: 1px solid color-mix(in oklab, var(--tinta) 35%, transparent); border-radius: 10px; padding: 14px 16px; min-height: 52px; width: 100%;
}
.campo textarea { min-height: 96px; resize: vertical; }
.chips { border: 0; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.chips legend { width: 100%; margin-bottom: 8px; padding: 0; }
.chips input { position: absolute; opacity: 0; pointer-events: none; }
.chips label span {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 18px; border-radius: 999px;
  border: 1px solid var(--linea); background: var(--fondo); font-size: 15px; font-weight: 500; cursor: pointer;
  transition: background-color 150ms var(--ease), color 150ms var(--ease), border-color 150ms var(--ease), transform 120ms var(--ease);
}
.chips label:hover span { border-color: var(--tinta); }
.chips input:checked + span { background: var(--tinta); color: var(--fondo); border-color: var(--tinta); }
.chips input:focus-visible + span { outline: 3px solid var(--tinta); outline-offset: 2px; }
.aviso { color: var(--suave); font-size: 15px; }
.error { color: #b3261e; font-size: 15px; min-height: 1em; }
.turno .lado p { color: var(--suave); font-size: 19px; margin-top: 16px; }
.turno .lado .marco { margin-top: 32px; aspect-ratio: 4 / 3; }

/* Pie */
.pie { padding: 56px 0 120px; border-top: 1px solid var(--linea); color: var(--suave); font-size: 15px; }
.pie .wrap { display: grid; gap: 24px; }
.pie .fila { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 16px 32px; }
.pie .nombre { font-family: var(--f-titulo); font-size: 22px; color: var(--tinta); font-weight: 600; }
.pie a { text-decoration: none; border-bottom: 1px solid var(--linea); transition: border-color 160ms var(--ease), color 160ms var(--ease); }
.pie a:hover { color: var(--tinta); border-color: var(--tinta); }
.pie .redes { display: flex; gap: 20px; flex-wrap: wrap; align-items: flex-start; }
.pie .redes a { padding: 10px 0; }
.creditos { font-size: 12px; }

/* Barra fija del celular */
.barra { position: fixed; left: 12px; right: 12px; bottom: 12px; z-index: 50; display: none; gap: 8px; padding: 8px; border-radius: 999px; background: color-mix(in oklab, var(--superficie) 92%, transparent); backdrop-filter: blur(10px); box-shadow: 0 10px 30px -12px rgba(0,0,0,.35); border: 1px solid var(--linea); }
.barra a { flex: 1; min-height: 48px; padding: 0 12px; font-size: 15px; }

/* Responsive */
@media (max-width: 900px) {
  .portada { min-height: auto; padding-top: 20px; }
  .portada .wrap, .servicios-grid, .turno .wrap, .urgencias .wrap, .sede { grid-template-columns: 1fr; }
  .portada-foto { aspect-ratio: 16 / 10; order: -1; }
  .marca { margin-bottom: 20px; }
  .servicios-fotos { position: static; }
  .urgencias .acciones { justify-content: flex-start; }
  .galeria { grid-template-columns: 1fr 1fr; }
  .galeria .marco:first-child { grid-column: 1 / -1; aspect-ratio: 16 / 10; }
  .sede-mapa { min-height: 280px; }
  .barra { display: flex; }
  .flotante { display: none; }
}
@media (max-width: 520px) {
  body { font-size: 16px; }
  .portada .acciones .btn, .urgencias .btn, .form .btn, .cta-linea .btn { width: 100%; }
  .btn-grande { justify-content: flex-start; }
  .sede .acciones .btn { flex: 1 1 100%; }
  .btn-grande .flecha { margin-left: auto; }
  .franja .expande { height: 56vh; border-radius: 0; }
  /* Que el botón de WhatsApp de la portada entre en la primera pantalla del celular */
  .portada { padding-top: 12px; }
  .portada-foto { aspect-ratio: auto; height: 24svh; min-height: 150px; }
  .marca { margin-bottom: 12px; }
  h1 { font-size: 34px; }
  .portada .bajada { font-size: 17px; margin: 12px 0 16px; }
  .portada .pastillas, .portada .pastilla { font-size: 14px; }
}
/* En el celular la barra fija no tapa el final de la página */
@media (max-width: 900px) { body { padding-bottom: 88px; } }

/* Mejoras de Imán */
.barra { transition: transform 300ms var(--ease); }
.barra.oculta { transform: translateY(calc(100% + 24px)); }
.barra a.btn-icono { flex: 0 0 48px; padding: 0; }
.lista-servicios li { position: relative; }
.serv-cta { display: inline-flex; align-items: center; gap: 6px; margin-top: 8px; min-height: 32px; font-weight: 600; font-size: 15px; color: var(--acento); text-decoration: none; }
.serv-cta::after { content: ""; position: absolute; inset: 0; border-radius: 8px; }
.serv-cta .flecha { width: 16px; height: 16px; transition: transform 160ms var(--ease); }
.lista-servicios li:hover .serv-cta .flecha { transform: translateX(4px); }
.lista-servicios li:hover h3 { color: var(--acento); }
