/* ==========================================================================
   Sitio público — Dr. Diego Agustini
   Carga después de marca.css. Acá va la web que ve el paciente.
   ========================================================================== */

body.sitio{background:var(--papel)}
.contenedor{width:min(1140px, 100% - 40px);margin-inline:auto}

/* ── Los campos del turno, pensados para una persona de ochenta ──────────
   Todo más grande de lo que pide el diseño: la etiqueta arriba y en oscuro,
   el campo alto y con letra de 17 px, y una ayuda debajo en castellano.
   16 px es el mínimo para que el iPhone no haga zoom solo al tocar el campo,
   que es lo que desarma la pantalla y hace perder a la gente. */
.campoGrande{margin-bottom:20px}
.campoGrande label{display:block;margin-bottom:7px;
                   font:600 16px/1.3 var(--sans);color:var(--carbon)}
.campoGrande input,
.campoGrande textarea,
.campoGrande select{width:100%;padding:15px 16px;border-radius:13px;
                    border:1.5px solid var(--linea);background:var(--blanco);
                    font:500 17px/1.3 var(--sans);color:var(--carbon);
                    transition:border-color .18s var(--curva), box-shadow .18s var(--curva)}
.campoGrande input:focus,
.campoGrande textarea:focus,
.campoGrande select:focus{outline:0;border-color:var(--agua);
                          box-shadow:0 0 0 4px var(--agua-humo)}
/* El campo que se completó bien se marca en verde: en un formulario largo,
   ver de un vistazo qué falta evita releerlo entero. */
.campoGrande input:not(:placeholder-shown):valid{border-color:#9CCFA8}
.campoGrande small{display:block;margin-top:7px;font-size:13.5px;line-height:1.55;
                   color:var(--gris)}

.ayudaChica{margin:18px 0 0;padding-top:16px;border-top:1px solid var(--linea);
            font-size:13.5px;line-height:1.6;color:var(--gris);text-align:center}

/* Lo que no hace falta para el turno: plegado, y dicho sin vueltas. */
.opcionales{margin:6px 0 0;border:1.5px dashed var(--linea);border-radius:14px;
            background:var(--azul-humo)}
.opcionales summary{cursor:pointer;padding:16px 18px;list-style:none;
                    font:400 14.5px/1.5 var(--sans);color:var(--gris)}
.opcionales summary::-webkit-details-marker{display:none}
.opcionales summary b{display:block;font:600 16px/1.4 var(--sans);color:var(--azul)}
.opcionales summary b::before{content:'+ ';color:var(--agua)}
.opcionales[open] summary b::before{content:'− '}
.opcionales summary:hover b{color:var(--agua-hondo)}
.opcionales__cuerpo{padding:4px 18px 6px}
.opcionales__cuerpo .campoGrande:last-child{margin-bottom:18px}

/* ── Ofrecer la contraseña DESPUÉS, con el turno ya sacado ─────────────── */
.claveLuego{margin-top:18px;padding:20px 22px;border-radius:var(--radio-lg);
            border:1px solid var(--linea);background:var(--blanco)}
.claveLuego h3{margin:0 0 6px;font:500 19px/1.3 var(--serif);color:var(--azul)}
.claveLuego p{margin:0 0 16px;font-size:14.5px;line-height:1.6;color:var(--gris)}

/* El aviso de "esto no se agenda directo", en la ficha del tratamiento. */
.avisoServicio{margin:14px 0 0;padding:13px 15px;border-radius:12px;
               background:var(--agua-humo);border-left:3px solid var(--agua);
               font-size:13.5px;line-height:1.6;color:var(--agua-hondo)}

/* ── Buscador de obras sociales ──────────────────────────────────────────
   Cuando la lista pasa de veinte, encontrar la propia con el dedo es un
   trabajo. Con la caja, dos letras alcanzan. */
.buscarOs{position:relative;margin-bottom:14px}
.buscarOs svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);
              width:17px;height:17px;color:var(--gris-claro);pointer-events:none}
.buscarOs input{width:100%;padding:13px 15px 13px 42px;border-radius:13px;
                border:1px solid var(--linea);background:var(--blanco);
                font:500 15px/1.2 var(--sans);color:var(--carbon);
                transition:border-color .2s var(--curva), box-shadow .2s var(--curva)}
.buscarOs input:focus{outline:0;border-color:var(--agua);
                      box-shadow:0 0 0 3px var(--agua-humo)}
.sinResultadosOs{margin:4px 0 0;padding:14px 16px;border-radius:12px;
                 background:var(--azul-humo);color:var(--gris);font-size:14px}

/* La obra social que ya usó la última vez: se ofrece primero y se nota. */
.opcion--mia{border-color:var(--agua);background:var(--agua-humo)}
.pastillaWeb{display:inline-block;margin-left:7px;padding:2px 9px;border-radius:999px;
             background:var(--agua-humo);color:var(--agua-hondo);
             font:700 11px/1.6 var(--sans);letter-spacing:.3px;vertical-align:middle}
.opcion--mia .pastillaWeb{background:var(--agua);color:#fff}

/* "Cambiar de obra social": plegado, para no tapar la que ya usa. */
.masOpciones summary{cursor:pointer;padding:11px 2px;font:600 14.5px/1.3 var(--sans);
                     color:var(--agua-hondo);list-style:none}
.masOpciones summary::-webkit-details-marker{display:none}
.masOpciones summary::before{content:'▸ ';display:inline-block;transition:transform .2s var(--curva)}
.masOpciones[open] summary::before{transform:rotate(90deg)}
.masOpciones summary:hover{color:var(--azul)}

@media (max-width:600px){ .contenedor{width:min(1140px, 100% - 30px)} }

/* ── Cabecera ─────────────────────────────────────────────────────────── */
.cab{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.86);
     -webkit-backdrop-filter:blur(14px) saturate(1.4);backdrop-filter:blur(14px) saturate(1.4);
     border-bottom:1px solid transparent;
     transition:box-shadow .3s var(--curva), border-color .3s var(--curva)}
.cab--fija{border-bottom-color:var(--linea);
           box-shadow:0 14px 34px -30px rgba(8,56,111,.9)}
.cab__fila{display:flex;align-items:center;gap:18px;padding:13px 0}
.cab__marca{display:block;text-decoration:none;margin-right:auto}
.cab__marca .logo{width:246px;transition:width .3s var(--curva)}
.cab--fija .cab__marca .logo{width:210px}

.nav{display:flex;align-items:center;gap:4px}
.nav a{padding:9px 14px;border-radius:10px;text-decoration:none;color:var(--azul);
       font:600 14.5px/1 var(--sans);position:relative;
       transition:color .2s var(--curva), background .2s var(--curva)}
.nav a:hover{background:var(--azul-humo);color:var(--agua-hondo)}
.nav a.on{color:var(--agua-hondo)}
.nav a.on::after{content:'';position:absolute;left:14px;right:14px;bottom:3px;height:2px;
                 border-radius:2px;background:var(--agua)}

.cab__btn{display:none;background:transparent;border:0;cursor:pointer;padding:9px;
          border-radius:10px;color:var(--azul)}
.cab__btn span{display:block;width:20px;height:2px;background:currentColor;border-radius:2px;
               margin:4px 0;transition:transform .25s var(--curva), opacity .2s ease}
.cab__btn[aria-expanded=true] span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.cab__btn[aria-expanded=true] span:nth-child(2){opacity:0}
.cab__btn[aria-expanded=true] span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

@media (max-width:880px){
  .cab__btn{display:block;order:3}
  .nav{display:none;order:4;width:100%;flex-direction:column;align-items:stretch;
       gap:2px;padding-bottom:12px}
  .nav.abierta{display:flex;animation:surgir .3s var(--curva)}
  .nav a{padding:12px 14px}
  .nav a.on::after{left:14px;right:auto;width:16px}
  .cab__fila{flex-wrap:wrap;gap:10px}
  .cab__marca .logo,.cab--fija .cab__marca .logo{width:196px}
  .cab .btn{order:2}
}

/* En un teléfono angosto el logo, el botón de turno y el de menú no entran en
   un renglón: el de menú se caía abajo y la cabecera se comía 90 px de alto
   antes de que empezara la página. Achicando el logo y el botón, entran los
   tres juntos. */
@media (max-width:520px){
  .cab__fila{gap:8px;padding:10px 0}
  .cab__marca .logo,.cab--fija .cab__marca .logo{width:136px}
  .cab .btn{padding:10px 15px;font-size:14px}
  .cab__btn{padding:7px}
}

/* ── Portada ──────────────────────────────────────────────────────────── */
.portada{position:relative;overflow:hidden;padding:clamp(44px,7vw,84px) 0 clamp(46px,7vw,80px);
  background:
    radial-gradient(900px 620px at 8% -12%, rgba(99,192,210,.16), transparent 62%),
    radial-gradient(880px 640px at 96% 106%, rgba(8,56,111,.14), transparent 64%),
    linear-gradient(168deg,#FBFDFF 0%, #F2F8FC 52%, #EAF2F9 100%)}
.portada__malla{position:absolute;inset:0;pointer-events:none;color:var(--agua);opacity:.4;
  -webkit-mask-image:radial-gradient(120% 90% at 70% 30%, #000 10%, transparent 72%);
          mask-image:radial-gradient(120% 90% at 70% 30%, #000 10%, transparent 72%)}
.portada__malla svg{width:100%;height:100%}

.portada__fila{position:relative;display:grid;gap:clamp(28px,5vw,54px);align-items:center;
               grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr)}
@media (max-width:880px){ .portada__fila{grid-template-columns:1fr;text-align:center} }

.portada__texto > *{animation:surgir .85s var(--curva) both}
.portada__texto > *:nth-child(1){animation-delay:.04s}
.portada__texto > *:nth-child(2){animation-delay:.12s}
.portada__texto > *:nth-child(3){animation-delay:.2s}
.portada__texto > *:nth-child(4){animation-delay:.28s}
.portada__texto > *:nth-child(5){animation-delay:.36s}

.portada .titulo{margin:14px 0 16px;max-width:15ch}
@media (max-width:880px){ .portada .titulo{margin-inline:auto} }
.portada .bajada{max-width:48ch}
@media (max-width:880px){ .portada .bajada{margin-inline:auto} }

.portada__acciones{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
@media (max-width:880px){ .portada__acciones{justify-content:center} }

.portada__marcas{display:flex;flex-wrap:wrap;gap:10px 26px;margin-top:30px;
                 padding-top:24px;border-top:1px solid var(--linea)}
@media (max-width:880px){ .portada__marcas{justify-content:center} }
.portada__marca{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--gris)}
.portada__marca svg{width:19px;height:19px;color:var(--agua);flex:none}
.portada__marca b{display:block;color:var(--azul);font-size:13.5px}

/* La tarjeta con el logo, a la derecha */
.vitrina{position:relative;display:grid;place-items:center;padding:clamp(26px,4vw,44px);
  background:rgba(255,255,255,.78);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  border:1px solid rgba(255,255,255,.9);border-radius:var(--radio-xl);
  box-shadow:0 2px 8px rgba(8,56,111,.05), 0 44px 90px -50px rgba(8,56,111,.6);
  animation:escalar 1s var(--curva) .12s both}
.vitrina::before{content:'';position:absolute;width:240px;height:240px;top:-140px;left:-100px;
  border-radius:50%;opacity:.16;pointer-events:none;
  background:conic-gradient(from 200deg, var(--agua-clara), var(--azul) 42%, transparent 62%)}
.vitrina .logo{width:min(280px,70vw);position:relative}
@keyframes escalar{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}

/* ── Secciones ────────────────────────────────────────────────────────── */
.seccion{padding:clamp(48px,7vw,82px) 0}
.seccion--claro{background:var(--blanco)}
.seccion--agua{background:linear-gradient(168deg,#F2FAFB,#EAF3F9)}

.seccion__cab{max-width:60ch;margin:0 0 clamp(26px,4vw,42px)}
.seccion__cab--centro{margin-inline:auto;text-align:center}
.seccion__cab .titulo{margin:12px 0 12px;font-size:clamp(25px,3.6vw,38px)}
.seccion__cab .bajada{font-size:16px}

/* Entrada al hacer scroll. El contenido solo se esconde si el JS avisó
   poniendo .js-anim en el <html>: si el script falla, nunca queda invisible. */
.revelar{transition:opacity .75s var(--curva), transform .75s var(--curva);
         transition-delay:calc(var(--i, 0) * 80ms)}
.js-anim .revelar{opacity:0;transform:translateY(24px)}
.js-anim .revelar.visible{opacity:1;transform:none}

/* ── Tarjetas de servicio ─────────────────────────────────────────────── */
.servicios{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(272px,1fr))}

.serv{display:flex;flex-direction:column;background:var(--blanco);border:1px solid var(--linea);
      border-radius:var(--radio-xl);overflow:hidden;text-decoration:none;color:inherit;
      box-shadow:var(--sombra);
      transition:transform .32s var(--curva), box-shadow .32s var(--curva),
                 border-color .32s var(--curva)}
.serv:hover{transform:translateY(-6px);box-shadow:var(--sombra-alta);border-color:var(--agua-clara)}

.serv__foto{position:relative;aspect-ratio:3/2;background:var(--azul-claro);overflow:hidden}
.serv__foto img{width:100%;height:100%;object-fit:cover;display:block;
                transition:transform .6s var(--curva)}
.serv:hover .serv__foto img{transform:scale(1.06)}
.serv__foto--vacia{display:grid;place-items:center;
  background:linear-gradient(135deg,var(--azul-claro),var(--agua-humo))}
.serv__foto--vacia svg{width:52px;height:52px;color:var(--agua);opacity:.55}
.serv__cat{position:absolute;top:12px;left:12px;background:rgba(255,255,255,.94);
  border-radius:999px;padding:5px 12px;font:700 10.5px/1.5 var(--sans);
  letter-spacing:1.6px;text-transform:uppercase;color:var(--azul)}

.serv__cuerpo{padding:19px 21px 21px;display:flex;flex-direction:column;flex:1}
.serv__nom{margin:0 0 8px;font:500 20px/1.28 var(--serif);color:var(--azul);
           transition:color .22s ease}
.serv:hover .serv__nom{color:var(--agua-hondo)}
.serv__txt{margin:0 0 15px;font-size:14.5px;line-height:1.6;color:var(--gris);flex:1}
.serv__pie{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;
           padding-top:14px;border-top:1px solid var(--linea);
           font-size:13px;color:var(--gris)}
.serv__precio{font:600 15.5px/1 var(--sans);color:var(--azul)}
.serv__flecha{margin-left:auto;display:inline-flex;align-items:center;gap:6px;
              font:600 13.5px/1 var(--sans);color:var(--agua-hondo)}
.serv__flecha svg{width:15px;height:15px;transition:transform .28s var(--curva)}
.serv:hover .serv__flecha svg{transform:translateX(4px)}

/* ── Pasos ────────────────────────────────────────────────────────────── */
.pasos{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(228px,1fr));
       counter-reset:paso}
.paso{position:relative;background:var(--blanco);border:1px solid var(--linea);
      border-radius:var(--radio-lg);padding:24px 22px 22px;box-shadow:var(--sombra);
      transition:transform .28s var(--curva), box-shadow .28s var(--curva)}
.paso:hover{transform:translateY(-4px);box-shadow:var(--sombra-alta)}
.paso::before{counter-increment:paso;content:counter(paso);
  position:absolute;top:-16px;left:22px;width:34px;height:34px;border-radius:50%;
  display:grid;place-items:center;color:#fff;font:700 15px/1 var(--sans);
  background:linear-gradient(135deg,var(--azul),var(--agua));
  box-shadow:0 8px 18px -10px rgba(8,56,111,.9)}
.paso h3{margin:9px 0 7px;font:600 16.5px/1.3 var(--sans);color:var(--azul)}
.paso p{margin:0;font-size:14px;line-height:1.6;color:var(--gris)}

/* ── Lista de beneficios ──────────────────────────────────────────────── */
.beneficios{list-style:none;margin:0;padding:0;display:grid;gap:11px}
.beneficios li{display:flex;gap:11px;align-items:flex-start;font-size:15px;line-height:1.55}
.beneficios svg{width:21px;height:21px;flex:none;margin-top:1px;color:var(--agua);
                padding:3px;border-radius:50%;background:var(--agua-humo)}

/* ── Página de un servicio ────────────────────────────────────────────── */
.detalle{display:grid;gap:clamp(24px,4vw,44px);grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);
         align-items:start}
@media (max-width:880px){ .detalle{grid-template-columns:1fr} }

.detalle__texto p{font-size:16px;line-height:1.75;color:#3B4E62}
.detalle__hero{border-radius:var(--radio-xl);overflow:hidden;box-shadow:var(--sombra-alta);
               aspect-ratio:3/2;background:var(--azul-claro)}
.detalle__hero img{width:100%;height:100%;object-fit:cover;display:block}

.galeria{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));margin-top:24px}
.galeria a{border-radius:15px;overflow:hidden;display:block;box-shadow:var(--sombra);
           transition:transform .3s var(--curva), box-shadow .3s var(--curva)}
.galeria a:hover{transform:scale(1.03);box-shadow:var(--sombra-alta)}
.galeria img{display:block;width:100%;aspect-ratio:1;object-fit:cover}

.ficha-lateral{position:sticky;top:88px;background:var(--blanco);border:1px solid var(--linea);
  border-radius:var(--radio-xl);padding:24px;box-shadow:var(--sombra-alta)}
.ficha-lateral dl{display:grid;gap:12px;margin:0 0 20px}
.ficha-lateral dt{font:700 11px/1 var(--sans);letter-spacing:1.8px;text-transform:uppercase;
                  color:var(--gris-claro)}
.ficha-lateral dd{margin:5px 0 0;font:600 16px/1.35 var(--sans);color:var(--azul)}
.ficha-lateral .btn{width:100%}

/* ══════════════════════════════════════════════════════════════════════
   RESERVA DE TURNO — el paso a paso
   ══════════════════════════════════════════════════════════════════════ */
.reserva{max-width:800px;margin-inline:auto}

.pasosBarra{display:flex;gap:4px;margin-bottom:26px;counter-reset:pb}
.pasoBarra{flex:1;text-align:center;position:relative;padding-top:34px;
           font:600 12px/1.35 var(--sans);color:var(--gris-claro)}
.pasoBarra::before{counter-increment:pb;content:counter(pb);
  position:absolute;top:0;left:50%;transform:translateX(-50%);
  width:28px;height:28px;border-radius:50%;display:grid;place-items:center;
  background:var(--blanco);box-shadow:inset 0 0 0 2px var(--linea);
  font:700 13px/1 var(--sans);color:var(--gris-claro);
  transition:background .3s var(--curva), color .3s var(--curva), box-shadow .3s var(--curva)}
.pasoBarra::after{content:'';position:absolute;top:14px;left:calc(-50% + 20px);right:calc(50% + 20px);
  height:2px;background:var(--linea)}
.pasoBarra:first-child::after{display:none}
.pasoBarra--on{color:var(--azul)}
.pasoBarra--on::before{background:linear-gradient(135deg,var(--azul),var(--agua));color:#fff;
  box-shadow:0 8px 18px -10px rgba(8,56,111,.9)}
.pasoBarra--hecho::before{background:var(--ok);color:#fff;box-shadow:none;content:'✓'}
.pasoBarra--hecho::after{background:var(--ok)}

.caja{background:var(--blanco);border:1px solid var(--linea);border-radius:var(--radio-xl);
      padding:clamp(20px,3.4vw,30px);box-shadow:var(--sombra);margin-bottom:16px;
      animation:surgir .5s var(--curva) both}
.caja__tit{margin:0 0 6px;font:500 21px/1.25 var(--serif);color:var(--azul)}
.caja__sub{margin:0 0 20px;font-size:14.5px;color:var(--gris)}

/* Opciones grandes (servicio, cobertura) */
.opciones{display:grid;gap:11px}
.opciones--2{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.opcion{display:flex;gap:13px;align-items:flex-start;padding:15px 17px;cursor:pointer;
        background:var(--blanco);border:1.5px solid var(--linea);border-radius:15px;
        text-decoration:none;color:inherit;
        transition:border-color .24s var(--curva), background .24s var(--curva),
                   transform .24s var(--curva), box-shadow .24s var(--curva)}
.opcion:hover{border-color:var(--agua-clara);background:var(--agua-humo);transform:translateY(-2px)}
.opcion:has(input:checked){border-color:var(--agua);background:var(--agua-humo);
                           box-shadow:0 10px 26px -18px rgba(44,159,183,.95)}
.opcion input{margin-top:3px;flex:none}
.opcion__cuerpo{flex:1;min-width:0}
.opcion__nom{font:600 15.5px/1.3 var(--sans);color:var(--carbon)}
/* "Por videollamada", al lado del nombre de la consulta. Es el dato que
   decide si el paciente tiene que viajar, así que va en la primera pantalla
   y no escondido en la letra chica. */
.marcaVideo{display:inline-block;vertical-align:middle;margin-left:7px;
    padding:2px 9px;border-radius:999px;background:var(--agua-humo);
    color:var(--agua-hondo);font:700 11px/1.6 var(--sans);letter-spacing:.3px}
.opcion__det{margin-top:3px;font-size:13.5px;line-height:1.5;color:var(--gris)}
.opcion__extra{margin-left:auto;text-align:right;flex:none;
               font:600 14px/1.3 var(--sans);color:var(--azul)}
.opcion--iconica{align-items:center}
.opcion--iconica svg{width:26px;height:26px;color:var(--agua);flex:none}

/* Calendario de la web */
.calWeb{background:var(--blanco);border-radius:18px}
.calWeb__barra{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.calWeb__mes{margin:0 auto 0 0;font:500 18px/1.2 var(--serif);color:var(--azul);
             text-transform:capitalize}
.calWeb__nav{width:36px;height:36px;border-radius:11px;border:1px solid var(--linea);
             background:var(--blanco);cursor:pointer;color:var(--azul);
             display:grid;place-items:center;transition:background .2s ease, border-color .2s ease}
.calWeb__nav:hover:not([disabled]){background:var(--azul-humo);border-color:var(--agua)}
.calWeb__nav[disabled]{opacity:.35;cursor:default}
.calWeb__nav svg{width:17px;height:17px}

.calWeb__semana,.calWeb__dias{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.calWeb__semana span{text-align:center;font:700 10.5px/1 var(--sans);letter-spacing:1.2px;
                     text-transform:uppercase;color:var(--gris-claro);padding-bottom:6px}

.diaWeb{aspect-ratio:1;border:0;border-radius:12px;cursor:pointer;background:var(--azul-humo);
        color:var(--carbon);font:600 14.5px/1 var(--sans);position:relative;
        display:grid;place-items:center;
        transition:transform .2s var(--curva), background .2s var(--curva),
                   color .2s var(--curva), box-shadow .2s var(--curva)}
.diaWeb--vacio{background:transparent;pointer-events:none}
.diaWeb--sin{background:transparent;color:var(--gris-claro);cursor:default;opacity:.55}
.diaWeb--hay{background:var(--agua-humo);color:var(--agua-hondo)}
.diaWeb--hay::after{content:'';position:absolute;bottom:6px;left:50%;transform:translateX(-50%);
                    width:5px;height:5px;border-radius:50%;background:var(--agua)}
.diaWeb--hay:hover{background:var(--agua-clara);color:#fff;transform:translateY(-2px)}
.diaWeb--hay:hover::after{background:#fff}
.diaWeb--on{background:linear-gradient(135deg,var(--azul),var(--agua));color:#fff;
            box-shadow:0 10px 22px -12px rgba(8,56,111,.95)}
.diaWeb--on::after{background:#fff}
.diaWeb--hoy{box-shadow:inset 0 0 0 1.5px var(--azul-medio)}

.horas{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));margin-top:20px}
.hora{padding:12px 6px;border:1.5px solid var(--linea);border-radius:12px;background:var(--blanco);
      cursor:pointer;font:600 14.5px/1 var(--sans);color:var(--azul);
      transition:border-color .2s var(--curva), background .2s var(--curva),
                 color .2s var(--curva), transform .2s var(--curva)}
.hora:hover{border-color:var(--agua);background:var(--agua-humo);transform:translateY(-2px)}
.hora--on{background:linear-gradient(135deg,var(--azul),var(--agua));border-color:transparent;color:#fff;
          box-shadow:0 10px 22px -12px rgba(8,56,111,.95)}

.cargando{padding:32px;text-align:center;color:var(--gris-claro);font-size:14px}
.cargando::before{content:'';display:block;width:26px;height:26px;margin:0 auto 12px;
  border-radius:50%;border:2.5px solid var(--azul-claro);border-top-color:var(--agua);
  animation:girar .8s linear infinite}

/* Resumen del turno */
.resumen{background:linear-gradient(135deg,var(--azul),var(--azul-medio) 68%,var(--agua-hondo));
         color:#fff;border-radius:var(--radio-xl);padding:24px;box-shadow:var(--sombra-alta)}
.resumen h3{margin:0 0 16px;font:500 20px/1.25 var(--serif);color:#fff}
.resumen dl{display:grid;grid-template-columns:auto 1fr;gap:9px 16px;margin:0}
.resumen dt{font:700 10.5px/1.7 var(--sans);letter-spacing:1.6px;text-transform:uppercase;
            opacity:.75;white-space:nowrap}
.resumen dd{margin:0;font:600 15px/1.4 var(--sans)}
.resumen__pie{margin-top:18px;padding-top:16px;border-top:1px solid rgba(255,255,255,.2);
              font-size:13.5px;opacity:.88;line-height:1.6}

/* Los botones de contorno, adentro de la tarjeta del turno.
   .btn--linea está pensado para fondo claro: es letra azul sobre transparente.
   Adentro del resumen —que es un degradé azul oscuro— quedaba del mismo color
   que el fondo y directamente no se leía. Acá se da vuelta: contorno y letra
   en blanco. Va por CSS y no botón por botón para que valga también para los
   que ya estaban ("Cómo llegar") y para el que se agregue mañana. */
.resumen .btn--linea{color:#fff;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.55)}
.resumen .btn--linea:hover{color:#fff;background:rgba(255,255,255,.14);
                           box-shadow:inset 0 0 0 1.5px #fff}
.resumen .btn--linea::after{background:linear-gradient(100deg,transparent,
                            rgba(255,255,255,.22),transparent)}

/* Aviso dentro de la reserva */
.nota-caja{padding:13px 16px;border-radius:13px;font-size:14px;line-height:1.6;
           background:var(--agua-humo);color:var(--agua-hondo);
           border-left:3px solid var(--agua);margin-bottom:16px}
.nota-caja--alerta{background:#FDF5E6;color:#8A5A0E;border-left-color:var(--alerta)}
.nota-caja--error{background:#FDECEA;color:#9E2C1F;border-left-color:var(--error)}

/* ── Confirmación ─────────────────────────────────────────────────────── */
.exito{text-align:center;max-width:560px;margin-inline:auto}
.exito__tilde{width:84px;height:84px;margin:0 auto 22px;border-radius:50%;display:grid;
  place-items:center;background:linear-gradient(135deg,var(--ok),#4FC98D);color:#fff;
  box-shadow:0 18px 40px -20px rgba(46,158,107,.95);animation:escalar .7s var(--curva-suave) both}
.exito__tilde svg{width:40px;height:40px;stroke-width:2.6}
.codigo{display:inline-block;margin:16px 0;padding:13px 26px;border-radius:14px;
  background:var(--blanco);border:2px dashed var(--agua-clara);
  font:700 26px/1 var(--sans);letter-spacing:5px;color:var(--azul);user-select:all}

/* ── Las ondas: transición del contenido al pie ───────────────────────── */
.ondasFranja--pie{height:clamp(72px,9vw,124px);margin-bottom:-2px}
.ondasFranja--pie .ondas{height:100%}

/* Los horarios de un día, agrupados por consultorio */
.horas__sede{display:flex;flex-wrap:wrap;align-items:center;gap:5px 9px;
             margin:16px 0 8px;font:500 13px/1.4 var(--sans);color:var(--gris)}
.horas__sede:first-of-type{margin-top:10px}
.horas__sede svg{width:16px;height:16px;color:var(--vison-hondo);flex:none}
.horas__sede b{color:var(--azul);font-weight:600}
.horas__sede span{color:var(--gris-claro);font-size:12.5px}

/* ── Pie ──────────────────────────────────────────────────────────────── */
.pieSitio{background:linear-gradient(178deg,var(--azul-abismo),var(--azul));color:#C7DAEC;
          padding:clamp(38px,5vw,58px) 0 26px;position:relative;overflow:hidden}
.pieSitio::before{content:'';position:absolute;width:520px;height:520px;top:-320px;right:-160px;
  border-radius:50%;background:radial-gradient(circle,rgba(99,192,210,.22),transparent 66%)}
.pieSitio__fila{position:relative;display:grid;gap:32px;
                grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.pieSitio .logo{width:216px;margin-bottom:16px}
.pieSitio .logo__d      {color:#fff}
.pieSitio .logo__a      {color:var(--vison-claro)}
.pieSitio .logo__cinta  {color:var(--agua-clara)}
.pieSitio .logo__gota   {color:var(--agua-clara)}
.pieSitio .logo__perfil {color:var(--vison)}
.pieSitio .logo__nombre {fill:#fff}
.pieSitio .logo__bajada {fill:var(--agua-clara)}
.pieSitio .logo__filete-a{stroke:var(--agua-clara)}
.pieSitio .logo__filete-b{stroke:var(--vison-claro)}
.pieSitio .logo__filete-punto{fill:var(--agua-clara)}
.pieSitio h4{margin:0 0 13px;font:700 11px/1 var(--sans);letter-spacing:2.6px;
             text-transform:uppercase;color:var(--agua-clara)}
.pieSitio a{color:#DCE9F5;text-decoration:none;transition:color .2s ease}
.pieSitio a:hover{color:#fff}
.pieSitio ul{list-style:none;margin:0;padding:0;display:grid;gap:9px;font-size:14.5px}
.pieSitio li{display:flex;gap:9px;align-items:flex-start}
.pieSitio li svg{width:17px;height:17px;flex:none;margin-top:2px;color:var(--agua-clara)}
.pieSitio__legal{position:relative;margin-top:30px;padding-top:20px;
  border-top:1px solid rgba(255,255,255,.13);display:flex;flex-wrap:wrap;gap:9px 20px;
  font-size:13px;color:#8FAECD}
.pieSitio__legal a{color:#8FAECD}

/* Barra fija de WhatsApp en el celular */
.wa-flota{position:fixed;right:16px;bottom:16px;z-index:50;width:54px;height:54px;
  border-radius:50%;display:grid;place-items:center;background:#25D366;color:#fff;
  box-shadow:0 14px 32px -12px rgba(37,211,102,.9);text-decoration:none;
  transition:transform .28s var(--curva-suave)}
.wa-flota:hover{transform:scale(1.09)}
.wa-flota svg{width:27px;height:27px}
@media (max-width:600px){ .wa-flota{width:50px;height:50px;right:13px;bottom:13px} }

/* ── Portal del paciente ──────────────────────────────────────────────── */
.misTurnos{display:grid;gap:14px}
.turnoTarj{display:flex;flex-wrap:wrap;gap:16px;align-items:center;background:var(--blanco);
  border:1px solid var(--linea);border-left:4px solid var(--c,var(--agua));
  border-radius:var(--radio-lg);padding:18px 20px;box-shadow:var(--sombra)}
.turnoTarj__fecha{text-align:center;flex:none;min-width:74px}
.turnoTarj__dia{font:600 30px/1 var(--serif);color:var(--azul)}
.turnoTarj__mes{font:700 11px/1.6 var(--sans);letter-spacing:2px;text-transform:uppercase;
                color:var(--gris-claro)}
.turnoTarj__cuerpo{flex:1;min-width:180px}
.turnoTarj__hora{font:600 18px/1.2 var(--sans);color:var(--carbon)}
.turnoTarj__det{margin-top:5px;font-size:13.5px;color:var(--gris);
                display:flex;flex-wrap:wrap;gap:4px 12px}
.turnoTarj__acc{display:flex;flex-wrap:wrap;gap:8px;margin-left:auto}

@media print{
  .cab,.pieSitio,.wa-flota,.btn,.portada__acciones{display:none !important}
  body{background:#fff}
}

/* ══════════════════════════════════════════════════════════════════════
   MÁS MOVIMIENTO
   Todo lo de acá se resuelve con transform y opacity. Nada anima anchos,
   sombras ni desenfoques, que es lo que pondría lenta la página.
   ══════════════════════════════════════════════════════════════════════ */

/* Las tarjetas de servicio levantan la foto y corren la flecha */
.serv__cuerpo{transition:transform .32s var(--curva)}
.serv:hover .serv__cuerpo{transform:translateY(-2px)}

/* Los pasos: el número gira apenas al pasar */
.paso::before{transition:transform .4s var(--curva-suave)}
.paso:hover::before{transform:scale(1.12) rotate(-8deg)}

/* Los pilares de la portada: el icono salta */
.portada__marca svg{transition:transform .35s var(--curva-suave)}
.portada__marca:hover svg{transform:translateY(-3px) scale(1.12)}

/* El logo de la vitrina flota muy despacio */
@media (prefers-reduced-motion:no-preference){
  .vitrina .logo{animation:flotarSuave 9s ease-in-out 1.6s infinite}
}
@keyframes flotarSuave{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}

/* Los beneficios entran uno detrás de otro cuando la sección aparece */
.beneficios li{transition:opacity .6s var(--curva), transform .6s var(--curva)}
.js-anim .beneficios li{opacity:0;transform:translateX(-12px)}
.js-anim .visible .beneficios li,
.js-anim .beneficios.visible li{opacity:1;transform:none}
.beneficios li:nth-child(1){transition-delay:.05s}
.beneficios li:nth-child(2){transition-delay:.12s}
.beneficios li:nth-child(3){transition-delay:.19s}
.beneficios li:nth-child(4){transition-delay:.26s}
.beneficios li:nth-child(5){transition-delay:.33s}
.beneficios svg{transition:transform .3s var(--curva-suave)}
.beneficios li:hover svg{transform:scale(1.15) rotate(-6deg)}

/* La galería: la foto se acerca apenas */
.galeria img{transition:transform .5s var(--curva)}
.galeria a:hover img{transform:scale(1.07)}

/* Los días y las horas del calendario, con un rebote mínimo al elegir */
.diaWeb--on,.hora--on{animation:elegido .32s var(--curva-suave)}
@keyframes elegido{0%{transform:scale(.9)}60%{transform:scale(1.06)}100%{transform:none}}

/* El botón flotante de WhatsApp llama la atención una vez, al entrar */
@media (prefers-reduced-motion:no-preference){
  .wa-flota{animation:entraWa .6s var(--curva-suave) 1.4s both}
}
@keyframes entraWa{from{opacity:0;transform:scale(.4) translateY(20px)}to{opacity:1;transform:none}}

/* La cabecera se compacta al bajar */
.cab__fila{transition:padding .3s var(--curva)}
.cab--fija .cab__fila{padding-top:9px;padding-bottom:9px}

/* ── Tarjetas de consultorio ──────────────────────────────────────────── */
.sedeTarj{position:relative;background:var(--blanco);border:1px solid var(--linea);
          border-top:3px solid var(--c,var(--azul));border-radius:var(--radio-xl);
          padding:26px 24px 24px;box-shadow:var(--sombra);
          transition:transform .3s var(--curva), box-shadow .3s var(--curva)}
.sedeTarj:hover{transform:translateY(-5px);box-shadow:var(--sombra-alta)}
.sedeTarj__pin{position:absolute;top:-20px;left:24px;width:40px;height:40px;border-radius:50%;
               display:grid;place-items:center;background:var(--c,var(--azul));color:#fff;
               box-shadow:0 10px 20px -10px rgba(8,56,111,.8);
               transition:transform .35s var(--curva-suave)}
.sedeTarj:hover .sedeTarj__pin{transform:translateY(-3px) scale(1.08)}
.sedeTarj__pin svg{width:20px;height:20px}
.sedeTarj h3{margin:10px 0 8px;font:500 21px/1.25 var(--serif);color:var(--azul)}
.sedeTarj p{margin:0 0 16px;font-size:14.5px;line-height:1.65;color:var(--gris)}
.sedeTarj p span{color:var(--vison-hondo);font-size:13.5px}
