/*
Theme Name: INSEME
Theme URI: https://insiemegp.cl
Author: INSEME Gerenciamiento de Proyectos + FlowCode AI
Description: Block theme a medida para INSEME — gerenciamiento de proyectos de infraestructura, especializado en infraestructura de salud.
Version: 1.0.0
Requires at least: 6.5
Tested up to: 6.7
Requires PHP: 8.0
License: GNU General Public License v2 or later
Text Domain: inseme
*/

/* ===== Fonts ===== */
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@500;600;700;800&family=Source+Serif+4:opsz,wght@8..60,400;8..60,500;8..60,600;8..60,700&display=swap');

/* ===== Base ===== */
:root{
  --in-shadow: 0 18px 40px -18px rgba(17,17,17,.35);
  --in-shadow-sm: 0 8px 20px -12px rgba(17,17,17,.28);
}
body{ -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; }

h1,h2,h3,h4,h5,h6{ letter-spacing:.01em; line-height:1.12; }
.is-style-overline{
  font-family:"Playfair Display",serif; text-transform:uppercase; letter-spacing:.24em;
  font-size:.82rem; font-weight:600; color:var(--wp--preset--color--slate);
}
.has-charcoal-background-color .is-style-overline,
.has-ink-background-color .is-style-overline,
.wp-block-cover .is-style-overline{ color:var(--wp--preset--color--silver); }

/* Fotografía: tratamiento uniforme en grises para respetar la paleta B/N pedida */
.wp-block-image img,
.in-photo img,
.in-card img,
.in-proj img{ filter:grayscale(1) contrast(1.02); }

/* Fotos reales del cliente (28-09-2026): van a color, no en grises (regla del retouch: el B/N se mantiene SOLO en el hero) */
.in-portrait-fixed img,
.in-photo-color img{ filter:none; }

/* Retrato de Jaime Osorio Marsano: foto de referencia, chica a propósito (pedido del cliente) */
.in-portrait-fixed .wp-block-media-text__media{ display:flex; flex-direction:column; align-items:center; justify-content:flex-start; align-self:start; }
.in-portrait-fixed .wp-block-media-text__content > *:first-child{ margin-top:0; }
.in-portrait-fixed .wp-block-media-text__media img{ width:auto; max-width:190px; height:auto; }
.in-portrait-fixed .wp-block-media-text__media figcaption{ text-align:center; color:#767676; font-size:.85rem; margin-top:.6rem; }
@media (max-width:781px){
  .in-portrait-fixed .wp-block-media-text__media img{ max-width:160px !important; }
}

/* Párrafos del cuerpo de /quienes-somos/ (incluye Misión/Visión): justificados solo desde 768px,
   en columna angosta de móvil el justificado deja ríos de espacio feos. */
@media (min-width:768px){
  .in-quienes-body p{ text-align:justify; hyphens:auto; }
}

/* ===== Buttons ===== */
.wp-block-button__link{
  transition:transform .18s ease, box-shadow .18s ease, background .18s ease;
}
.wp-block-button__link:hover{ transform:translateY(-2px); box-shadow:var(--in-shadow-sm); }
.wp-block-button.is-style-ghost .wp-block-button__link{
  background:transparent; color:#fff; box-shadow:inset 0 0 0 2px rgba(255,255,255,.6);
}
.wp-block-button.is-style-ghost .wp-block-button__link:hover{ box-shadow:inset 0 0 0 2px #fff; background:rgba(255,255,255,.08); }
.wp-block-button.is-style-ghost-dark .wp-block-button__link{
  background:transparent; color:var(--wp--preset--color--ink); box-shadow:inset 0 0 0 2px var(--wp--preset--color--ink);
}
.wp-block-button.is-style-ghost-dark .wp-block-button__link:hover{ background:var(--wp--preset--color--ink); color:#fff; }

/* ===== Header ===== */
/* El wrapper que WP genera para el template-part (tagName:"div") mide justo el alto del header (108px),
   así que el sticky no tiene dónde desplazarse: lo sacamos del flujo de cajas para que el header
   quede como hijo directo de .wp-site-blocks (que sí mide el alto completo de la página). */
.wp-block-template-part:has(> .in-header){ display:contents; }
.in-header{ position:sticky; top:0; z-index:100; background:rgba(255,255,255,.96); backdrop-filter:saturate(140%) blur(8px); border-bottom:1px solid var(--wp--preset--color--concrete); }
/* backdrop-filter en el header crea un containing block para sus hijos position:fixed: el overlay
   del menú móvil (que es fixed) queda encerrado en los 108px del header en vez del viewport completo.
   WP pone has-modal-open en <html> al abrir el menú — ahí soltamos el filtro solo mientras está abierto. */
html.has-modal-open .in-header{ backdrop-filter:none; -webkit-backdrop-filter:none; }
.in-header .wp-block-navigation a{
  font-family:"Playfair Display",serif; letter-spacing:.02em;
  font-size:.98rem; font-weight:600;
}
.in-header .wp-block-navigation a:hover{ color:var(--wp--preset--color--slate); }
.in-logo-badge{ display:flex; align-items:center; }
.in-logo-badge img{ max-height:75px; width:auto; display:block; filter:none; }
.in-header-right{ column-gap:2.2rem; row-gap:.6rem; align-items:center; }

/* ===== Cards & hover ===== */
.in-card{ transition:transform .2s ease, box-shadow .2s ease; height:100%; }
.in-card:hover{ transform:translateY(-6px); box-shadow:var(--in-shadow); }
.in-proj figure{ margin:0; overflow:hidden; }
.in-proj img{ aspect-ratio:4/3; object-fit:cover; width:100%; transition:transform .5s ease; }
.in-proj:hover img{ transform:scale(1.06); }

/* ===== Grilla de servicios (/servicios/) — CSS grid propio, no depende del flex-wrap de wp-block-columns ===== */
.in-services-grid{
  display:grid; grid-template-columns:1fr; gap:2rem;
  max-width:1200px; margin-left:auto; margin-right:auto;
}
@media (min-width:782px){
  .in-services-grid{ grid-template-columns:repeat(2, minmax(0,1fr)); }
}
.in-service-card{
  background:var(--wp--preset--color--paper);
  border-left:3px solid var(--wp--preset--color--ink);
  border-radius:0;
  padding:1.8rem 1.6rem;
  transition:transform .2s ease, box-shadow .2s ease;
}
.in-service-card:hover{ transform:translateY(-6px); box-shadow:var(--in-shadow); }
.in-service-card__num{ color:#B7B5AF; font-size:.85rem; margin:0 0 .4rem; }
.in-service-card__title{ font-size:1.15rem; margin:0 0 .5rem; }
.in-service-card__desc{ color:#4A4A4A; font-size:.92rem; margin:0; }

/* ===== Hero carrusel (home) — crossfade CSS puro, respeta prefers-reduced-motion ===== */
.in-hero-carousel{ overflow:hidden; }
.in-hero-slide{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  filter:grayscale(1) contrast(1.02);
  opacity:0; animation:in-hero-fade 36s infinite;
}
@keyframes in-hero-fade{
  0%, 13.89%{ opacity:1; }
  16.67%, 97.22%{ opacity:0; }
  100%{ opacity:1; }
}
@media (prefers-reduced-motion: reduce){
  .in-hero-slide{ animation:none !important; opacity:0; }
  .in-hero-slide:first-child{ opacity:1; }
}

/* ===== Galerías por sector (/experiencia/) ===== */
.in-gallery{ display:grid; grid-template-columns:repeat(2,1fr); gap:.6rem; margin-top:1.5rem; }
@media (min-width:600px){ .in-gallery{ grid-template-columns:repeat(3,1fr); } }
@media (min-width:1024px){ .in-gallery{ grid-template-columns:repeat(4,1fr); } }
.in-gallery-item{ display:block; aspect-ratio:1/1; overflow:hidden; background:var(--wp--preset--color--paper); }
.in-gallery-item img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .3s ease; }
.in-gallery-item:hover img{ transform:scale(1.05); }

/* ===== Lightbox propio (sin librerías) ===== */
.in-lightbox{ display:none; position:fixed; inset:0; background:rgba(10,10,10,.94); z-index:100000; align-items:center; justify-content:center; }
.in-lightbox.is-open{ display:flex; }
.in-lightbox__stage{ max-width:90vw; max-height:82vh; }
.in-lightbox__img{ max-width:90vw; max-height:82vh; object-fit:contain; display:block; margin:0 auto; }
.in-lightbox__close{ position:absolute; top:1rem; right:1.2rem; font-size:2.4rem; line-height:1; background:transparent; border:none; color:#fff; cursor:pointer; padding:.2rem .6rem; }
.in-lightbox__prev,.in-lightbox__next{ position:absolute; top:50%; transform:translateY(-50%); font-size:2rem; background:transparent; border:none; color:#fff; cursor:pointer; padding:.5rem 1rem; }
.in-lightbox__prev{ left:.5rem; }
.in-lightbox__next{ right:.5rem; }
.in-lightbox__counter{ position:absolute; bottom:1.2rem; left:50%; transform:translateX(-50%); color:#fff; font-size:.9rem; margin:0; }
html.in-lightbox-open{ overflow:hidden; }

/* ===== Formulario de contacto ===== */
.in-form{ display:grid; gap:1rem; }
.in-form .row{ display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
@media(max-width:600px){ .in-form .row{ grid-template-columns:1fr; } }
.in-form label{ font-weight:600; font-size:.9rem; display:block; margin-bottom:.35rem; color:var(--wp--preset--color--ink); }
.in-form input,.in-form select,.in-form textarea{
  width:100%; padding:.8rem .9rem; border:1px solid var(--wp--preset--color--concrete); border-radius:2px;
  font:inherit; background:#fff; color:var(--wp--preset--color--ink);
}
.in-form input:focus,.in-form select:focus,.in-form textarea:focus{
  outline:none; border-color:var(--wp--preset--color--ink); box-shadow:0 0 0 3px rgba(17,17,17,.08);
}
.in-form button{
  font-family:"Playfair Display",serif; font-weight:600; text-transform:uppercase; letter-spacing:.06em;
  background:var(--wp--preset--color--ink); color:#fff; border:0; padding:1rem 2rem;
  border-radius:0; cursor:pointer; font-size:.9rem; transition:background .18s, transform .18s;
}
.in-form button:hover{ background:var(--wp--preset--color--steel); transform:translateY(-2px); }
.in-alert{ padding:1rem 1.2rem; border-radius:2px; background:#eef2ee; color:#1f3d1f; border:1px solid #c7d6c7; font-weight:600; }
.in-alert.is-error{ background:#f5eaea; color:#5c1f1f; border-color:#dcbcbc; }

/* ===== Floating WhatsApp ===== */
.in-wa{
  position:fixed; right:20px; bottom:20px; z-index:200; width:58px; height:58px;
  border-radius:50%; background:#25D366; display:flex; align-items:center; justify-content:center;
  box-shadow:0 10px 28px -8px rgba(0,0,0,.45); transition:transform .2s; color:#fff;
}
.in-wa:hover{ transform:scale(1.08); }
.in-wa svg{ width:32px; height:32px; fill:#fff; }

/* ===== Franja de gancho / CTA (reemplaza testimonios, ver datos_cliente_faltantes) ===== */
.in-franja{
  background:var(--wp--preset--color--ink)!important;
  border-top:1px solid var(--wp--preset--color--steel); border-bottom:1px solid var(--wp--preset--color--steel);
  position:relative; overflow:hidden;
}

/* ===== Footer credit ===== */
.in-credit{
  font-family:"Playfair Display",serif; letter-spacing:.03em;
  color:var(--wp--preset--color--silver); transition:color .2s;
}
.in-credit:hover{ color:#fff; }

/* ===== Sectores (Proyectos) ===== */
.in-sector{ position:relative; overflow:hidden; }
.in-sector img{ aspect-ratio:3/2; object-fit:cover; width:100%; display:block; }
.in-sector figcaption{
  position:absolute; left:0; right:0; bottom:0; padding:1.1rem 1.2rem;
  background:linear-gradient(180deg, rgba(17,17,17,0) 0%, rgba(17,17,17,.88) 100%);
  color:#fff;
}

/* ===== Responsive / Mobile ===== */
@media (max-width: 781px){
  .wp-block-cover h1.wp-block-heading{
    font-size: clamp(1.55rem, 6.6vw, 2.1rem) !important;
    line-height: 1.14 !important;
    overflow-wrap: break-word; word-break: normal; hyphens: none;
  }
  .wp-block-cover{ min-height: 78vh !important; }
  .wp-block-cover .wp-block-cover__inner-container{ width: 100%; max-width: 100%; }
  .wp-block-cover .wp-block-cover__inner-container > .wp-block-group{ max-width: 100%; }
  .wp-block-cover p{ font-size: 1.02rem !important; }
  .is-style-overline{ font-size: .72rem; letter-spacing:.16em; }

  .wp-block-cover .wp-block-buttons{ width: 100%; }
  .wp-block-cover .wp-block-buttons .wp-block-button{ flex: 1 1 100%; }
  .wp-block-cover .wp-block-buttons .wp-block-button__link{ display:block; text-align:center; }

  h2.wp-block-heading{ font-size: clamp(1.7rem, 7vw, 2.2rem) !important; }

  .wp-block-navigation__responsive-container.is-menu-open{
    background: var(--wp--preset--color--ink) !important;
  }
  .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content{
    padding-top: 1rem;
  }
  .wp-block-navigation__responsive-container.is-menu-open a{
    font-size: 1.4rem !important; padding:.4rem 0; color:#fff!important;
  }
  .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item{
    width:100%;
  }

  .in-wa{ width:52px; height:52px; right:14px; bottom:14px; }
  .in-wa svg{ width:28px; height:28px; }

  .in-logo-badge img{ max-height:57px; }

  .in-header-right{ flex-wrap:nowrap!important; column-gap:0; }
  .in-header-wa-btn{ display:none!important; }

  main h1.wp-block-heading,
  .has-charcoal-background-color h1.wp-block-heading{
    font-size: clamp(1.9rem, 8vw, 2.4rem) !important;
    line-height: 1.12 !important;
    overflow-wrap: break-word;
  }

  footer a, .wp-block-column a:not(.wp-block-button__link){ display:inline-block; padding:.18rem 0; }

  img, iframe, video, table, pre{ max-width:100% !important; height:auto; }
  .wp-block-group, .wp-block-columns, .wp-block-column{ max-width:100%; }
  /* overflow-x:hidden en html/body convierte a ambos en scroll container y rompe position:sticky
     (pasa a ser relativo a ese contenedor en vez del viewport). overflow-x:clip corta el scroll
     horizontal igual, sin generar ese containing block. */
  html, body{ overflow-x:clip; }
}

/* ===== Tablet (iPad vertical 600–781px): recuperar columnas en fila ===== */
@media (min-width: 600px) and (max-width: 781px){
  .wp-block-columns:not(.is-not-stacked-on-mobile){
    flex-direction:row !important; flex-wrap:wrap !important; gap:1.4rem;
  }
  .wp-block-columns:not(.is-not-stacked-on-mobile) > .wp-block-column{
    flex-basis:30% !important; flex-grow:1 !important; min-width:0 !important;
  }
  footer .wp-block-columns:not(.is-not-stacked-on-mobile) > .wp-block-column{ flex-basis:42% !important; }
  .wp-block-media-text{ grid-template-columns:1fr 1fr !important; }
  .wp-block-media-text.has-media-on-the-right{ grid-template-columns:1fr 1fr !important; }

  .wp-block-cover h1.wp-block-heading{ font-size: clamp(2.2rem, 5.5vw, 3rem) !important; }
  main h1.wp-block-heading,
  .has-charcoal-background-color h1.wp-block-heading{ font-size: clamp(2.4rem, 5vw, 3rem) !important; }
}

/* menú de admin de WP no debe tapar el header sticky */
@media (max-width: 782px){
  html{ scroll-padding-top: 64px; }
}

/* anclas bajo header sticky */
[id]{ scroll-margin-top: 90px; }

/* ===== Misc ===== */
.in-divider{ width:64px; height:2px; background:var(--wp--preset--color--ink); }
