/* ===================================================================
   RUTA: public_html/paginaweb/assets/css/ohc-web.css
   Sitio publico OH Constructora — hoja unica compartida por todas las
   paginas (index, nosotros, servicios, obras, obra).
   =================================================================== */

/* ============ 1. TOKENS ============ */
:root{
  --ohc-amarillo:#E9A13B;
  --ohc-amarillo-osc:#C9832A;
  --ohc-grafito:#2A313B;
  --ohc-tinta:#161B22;          /* mas oscuro que el grafito, para la seccion gantt */
  --ohc-fondo:#F4F3F0;
  --ohc-papel:#FFFFFF;
  --ohc-humo:#8A929E;
  --ohc-linea:rgba(42,49,59,.14);
  --ohc-linea-clara:rgba(255,255,255,.12);

  --ohc-barra:38px;             /* alto del ticker de indicadores */
  --ohc-max:1320px;
  --ohc-r:4px;                  /* radios contenidos: esto es una constructora, no una app */

  --ohc-display:'Archivo', system-ui, sans-serif;
  --ohc-mono:'JetBrains Mono', ui-monospace, 'Courier New', monospace;

  --ohc-ease:cubic-bezier(.22,1,.36,1);
}

*{ margin:0; padding:0; box-sizing:border-box; }

html{ scroll-behavior:smooth; }

body{
  background:var(--ohc-fondo);
  color:var(--ohc-grafito);
  font-family:var(--ohc-display);
  font-weight:400;
  font-size:16px;
  line-height:1.55;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}

img{ max-width:100%; display:block; }
a{ color:inherit; }

::selection{ background:var(--ohc-amarillo); color:var(--ohc-grafito); }

:focus-visible{
  outline:2px solid var(--ohc-amarillo);
  outline-offset:3px;
}

.ohc-wrap{
  width:100%;
  max-width:var(--ohc-max);
  margin:0 auto;
  padding:0 32px;
}

/* Etiqueta chica en mono que encabeza cada seccion */
.ohc-eyebrow{
  font-family:var(--ohc-mono);
  font-size:11px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--ohc-amarillo-osc);
  display:flex;
  align-items:center;
  gap:12px;
  margin-bottom:20px;
}
.ohc-eyebrow::after{
  content:'';
  flex:1;
  height:1px;
  background:var(--ohc-linea);
}
.ohc-dark .ohc-eyebrow{ color:var(--ohc-amarillo); }
.ohc-dark .ohc-eyebrow::after{ background:var(--ohc-linea-clara); }

.ohc-titulo-seccion{
  font-size:clamp(30px,4.2vw,52px);
  font-weight:600;
  font-stretch:112%;
  line-height:1.08;
  letter-spacing:-.02em;
  max-width:16ch;
}

/* ============ 2. LOADER ============ */
/* Linea de tiempo de la secuencia (si cambias un tiempo aca, ajusta
   INICIO_REVELADO y FIN_LOADER en ohc-web.js para que calcen):
     0,20 s  arranca la linea amarilla a ancho completo
     2,90 s  la linea termina de contraerse
     2,80 s  aparecen los cuadrados del isotipo y el texto
     3,50 s  el logo queda completo y armado
     4,15 s  el logo arranca el zoom hacia el visitante,
             el fondo del loader empieza a desvanecerse y
             la pagina aparece POR DETRAS (esto ultimo lo hace el JS)
     5,10 s  el logo termina de pasar de largo y el loader se retira */
#ohc-loader{
  position:fixed; inset:0;
  display:flex; align-items:center; justify-content:center;
  z-index:9999;
  overflow:hidden;   /* el logo crece muchisimo: hay que recortarlo */
  transition:opacity .45s var(--ohc-ease), visibility .45s var(--ohc-ease);
}
#ohc-loader.ohc-oculto{ opacity:0; visibility:hidden; pointer-events:none; }

/* Visitas siguientes de la misma sesion. La clase la pone el script en
   linea del <head>, antes del primer pintado, para que no haya ni un
   fotograma de loader. El hero y el header quedan visibles por CSS y no
   dependen del JS, asi la pagina se ve aunque el script falle. */
.ohc-sin-loader #ohc-loader{ display:none !important; }
.ohc-sin-loader .ohc-hero,
.ohc-sin-loader #ohc-header{ opacity:1; transition:none; }

/* El fondo va en una capa aparte para poder desvanecerlo mientras el
   logo sigue visible y creciendo. Si desvanecieramos #ohc-loader entero,
   el logo se iria con el y no se veria el zoom. */
#ohc-loader::before{
  content:'';
  position:absolute; inset:0;
  background:var(--ohc-fondo);
  animation:ohcFondoSale .95s ease forwards;
  animation-delay:4.15s;
}
@keyframes ohcFondoSale{
  from{ opacity:1; }
  to  { opacity:0; }
}

.ohc-linea-carga{
  position:absolute; height:3px; width:100vw;
  left:50%; top:50%;
  transform:translate(-50%,-50%) scaleX(1);
  background:var(--ohc-amarillo);
  transform-origin:center;
  animation:ohcLineaAchicar 2.7s cubic-bezier(.65,0,.35,1) forwards;
  animation-delay:.2s;
}
@keyframes ohcLineaAchicar{
  0%   { transform:translate(-50%,-50%) scaleX(1); opacity:1; }
  70%  { opacity:1; }
  100% { transform:translate(-50%,-50%) scaleX(0); opacity:0; }
}

.ohc-loader-logo{
  position:relative;
  display:flex; align-items:center; gap:22px;
  opacity:0;
  animation:ohcLogoAparece .55s ease forwards, ohcLogoZoom .95s cubic-bezier(.5,0,.9,.4) forwards;
  animation-delay:2.8s, 4.15s;
}
@keyframes ohcLogoAparece{
  from{ opacity:0; transform:translateY(4px); }
  to  { opacity:1; transform:translateY(0); }
}
/* Zoom "hacia el visitante": el logo crece hasta pasar de largo y se
   disuelve, dejando la pagina que ya venia apareciendo por detras.
   La opacidad se mantiene alta al principio para que el crecimiento se
   lea antes de que empiece a desaparecer. */
@keyframes ohcLogoZoom{
  0%   { transform:scale(1);    opacity:1; }
  40%  { opacity:1; }
  100% { transform:scale(18);   opacity:0; }
}

.ohc-cuadrados{ position:relative; width:72px; height:72px; flex-shrink:0; }
.ohc-cuadrado-outline{
  position:absolute; top:0; left:0; width:46px; height:46px;
  border:5px solid var(--ohc-amarillo); border-radius:10px;
  background:var(--ohc-fondo);
  opacity:0; transform:scale(.6);
  animation:ohcCuadradoIn .5s cubic-bezier(.34,1.56,.64,1) forwards;
  animation-delay:2.8s;
}
.ohc-cuadrado-lleno{
  position:absolute; bottom:0; right:0; width:46px; height:46px;
  background:var(--ohc-amarillo); border-radius:10px;
  opacity:0; transform:scale(.6);
  animation:ohcCuadradoIn .5s cubic-bezier(.34,1.56,.64,1) forwards;
  animation-delay:3s;
}
@keyframes ohcCuadradoIn{
  from{ opacity:0; transform:scale(.6); }
  to  { opacity:1; transform:scale(1); }
}

.ohc-loader-texto{ display:flex; flex-direction:column; line-height:1; }
.ohc-loader-texto .ohc-oh{
  font-size:34px; font-weight:300; letter-spacing:2px; color:var(--ohc-grafito);
}
.ohc-loader-texto .ohc-raya{ width:100%; height:1px; background:var(--ohc-amarillo); margin:6px 0; }
.ohc-loader-texto .ohc-constructora{
  font-size:12px; font-weight:400; letter-spacing:4px; color:var(--ohc-grafito); opacity:.75;
}

/* ============ 3. TICKER DE INDICADORES ============ */
.ohc-ticker{
  position:relative; z-index:30;
  height:var(--ohc-barra);
  background:var(--ohc-tinta);
  color:var(--ohc-amarillo);
  font-family:var(--ohc-mono);
  font-size:11.5px; letter-spacing:.06em;
  display:flex; align-items:center; justify-content:flex-end;
  gap:14px; padding:0 32px;
  white-space:nowrap; overflow-x:auto;
  scrollbar-width:none;
}
.ohc-ticker::-webkit-scrollbar{ display:none; }
.ohc-ticker .ohc-punto{
  width:6px; height:6px; border-radius:50%;
  background:var(--ohc-amarillo);
  margin-right:auto;
  animation:ohcLatido 2.4s ease-in-out infinite;
}
@keyframes ohcLatido{ 0%,100%{opacity:1} 50%{opacity:.25} }
.ohc-ticker .ohc-sep{ color:#4A5462; }
.ohc-ticker b{ font-weight:500; color:#fff; }
.ohc-ticker .ohc-ticker-lbl{ color:#7C8695; }

/* ============ 4. HEADER ============ */
#ohc-header{
  position:absolute; top:var(--ohc-barra); left:0; right:0;
  display:flex; align-items:center; justify-content:space-between;
  padding:22px 32px;
  z-index:40;
  opacity:0;
  transition:opacity .6s var(--ohc-ease), background .3s ease, padding .3s ease;
}
#ohc-header.ohc-visible{ opacity:1; }
#ohc-header.ohc-fijo{
  position:fixed; top:0;
  background:rgba(22,27,34,.94);
  backdrop-filter:blur(10px);
  padding:12px 32px;
  border-bottom:1px solid var(--ohc-linea-clara);
}

#ohc-header .ohc-logo-link{ display:flex; align-items:center; text-decoration:none; }
#ohc-header .ohc-loader-texto{ margin-left:14px; }
#ohc-header .ohc-oh,
#ohc-header .ohc-constructora{ color:#fff; }
#ohc-header .ohc-oh{ font-size:22px; }
#ohc-header .ohc-constructora{ font-size:9px; letter-spacing:3px; }
#ohc-header .ohc-cuadrados{ width:44px; height:44px; }
#ohc-header .ohc-cuadrado-outline,
#ohc-header .ohc-cuadrado-lleno{
  width:28px; height:28px; border-width:3px; border-radius:6px;
  opacity:1; transform:none; animation:none;
}
#ohc-header .ohc-cuadrado-outline{ background:transparent; }

.ohc-nav{ display:flex; align-items:center; gap:34px; }
.ohc-nav ul{ display:flex; align-items:center; gap:30px; list-style:none; }
.ohc-nav > ul > li{ position:relative; }
.ohc-nav a{
  color:#fff; text-decoration:none;
  font-size:12px; font-weight:500; letter-spacing:.12em; text-transform:uppercase;
}
.ohc-nav > ul > li > a{
  display:flex; align-items:center; gap:5px; padding:8px 0;
  position:relative;
}
/* subrayado amarillo que crece desde la izquierda */
.ohc-nav > ul > li > a::after{
  content:''; position:absolute; left:0; bottom:2px;
  height:2px; width:100%; background:var(--ohc-amarillo);
  transform:scaleX(0); transform-origin:left;
  transition:transform .28s var(--ohc-ease);
}
.ohc-nav > ul > li > a:hover::after,
.ohc-nav > ul > li > a.ohc-activo::after{ transform:scaleX(1); }

.ohc-flecha{ font-size:8px; transition:transform .2s ease; }
.ohc-nav li:hover .ohc-flecha{ transform:rotate(180deg); }

.ohc-submenu{
  position:absolute; top:100%; left:0;
  background:var(--ohc-papel);
  min-width:200px; border-radius:var(--ohc-r);
  box-shadow:0 16px 40px rgba(0,0,0,.22);
  padding:6px; list-style:none;
  opacity:0; visibility:hidden; transform:translateY(8px);
  transition:opacity .18s ease, transform .18s ease, visibility .18s ease;
}
.ohc-nav li:hover .ohc-submenu{ opacity:1; visibility:visible; transform:translateY(0); }
.ohc-submenu li a{
  display:block; color:var(--ohc-grafito);
  font-size:12px; letter-spacing:.02em; text-transform:none; font-weight:400;
  padding:10px 12px; border-radius:3px;
}
.ohc-submenu li a:hover{ background:var(--ohc-fondo); color:var(--ohc-amarillo-osc); }

.ohc-btn-sistema{
  background:var(--ohc-amarillo); color:var(--ohc-grafito);
  font-size:11px; font-weight:700; letter-spacing:.12em; text-transform:uppercase;
  text-decoration:none; padding:11px 20px; border-radius:var(--ohc-r);
  white-space:nowrap; transition:background .18s ease;
}
.ohc-btn-sistema:hover{ background:#fff; }

.ohc-burger{
  display:none; background:none; border:0; cursor:pointer;
  width:34px; height:26px; position:relative;
}
.ohc-burger span{
  position:absolute; left:0; height:2px; width:100%; background:#fff;
  transition:transform .3s var(--ohc-ease), opacity .2s ease;
}
.ohc-burger span:nth-child(1){ top:2px; }
.ohc-burger span:nth-child(2){ top:12px; }
.ohc-burger span:nth-child(3){ top:22px; }
.ohc-burger.ohc-abierto span:nth-child(1){ transform:translateY(10px) rotate(45deg); }
.ohc-burger.ohc-abierto span:nth-child(2){ opacity:0; }
.ohc-burger.ohc-abierto span:nth-child(3){ transform:translateY(-10px) rotate(-45deg); }

/* ============ 5. HERO ============ */
.ohc-hero{
  position:relative;
  height:calc(100vh - var(--ohc-barra));
  min-height:600px;
  overflow:hidden;
  background:var(--ohc-grafito);
  opacity:0;
  transition:opacity .7s var(--ohc-ease);
}
.ohc-hero.ohc-visible{ opacity:1; }

.ohc-hero-slide{
  position:absolute; inset:0;
  opacity:0; visibility:hidden;
  transition:opacity 1.1s var(--ohc-ease), visibility 1.1s;
}
.ohc-hero-slide.ohc-activo{ opacity:1; visibility:visible; }

.ohc-hero-slide .ohc-hero-img{
  position:absolute; inset:0;
  background-size:cover; background-position:center;
  transform:scale(1.06);
  transition:transform 7s linear;
}
.ohc-hero-slide.ohc-activo .ohc-hero-img{ transform:scale(1); }

.ohc-hero-slide::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(22,27,34,.72) 0%, rgba(22,27,34,.28) 38%, rgba(22,27,34,.90) 100%);
}

/* Trama de plano que se dibuja sobre la foto */
.ohc-hero-plano{
  position:absolute; inset:0; z-index:2;
  pointer-events:none; opacity:.5;
}
.ohc-hero-plano line, .ohc-hero-plano rect, .ohc-hero-plano circle{
  stroke:var(--ohc-amarillo); fill:none; stroke-width:1;
  stroke-dasharray:1400; stroke-dashoffset:1400;
  animation:ohcTrazo 2.6s var(--ohc-ease) forwards;
}
.ohc-hero-plano circle{ stroke-dasharray:200; stroke-dashoffset:200; }
.ohc-hero-plano :nth-child(2){ animation-delay:.15s; }
.ohc-hero-plano :nth-child(3){ animation-delay:.3s; }
.ohc-hero-plano :nth-child(4){ animation-delay:.45s; }
.ohc-hero-plano :nth-child(5){ animation-delay:.6s; }
@keyframes ohcTrazo{ to{ stroke-dashoffset:0; } }

.ohc-hero-cuerpo{
  position:relative; z-index:5;
  height:100%;
  display:flex; flex-direction:column; justify-content:flex-end;
  padding:0 32px 0;
  max-width:var(--ohc-max); margin:0 auto;
}

.ohc-hero-texto{ padding-bottom:36px; max-width:900px; }

.ohc-hero-kicker{
  font-family:var(--ohc-mono);
  font-size:11px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--ohc-amarillo);
  display:inline-flex; align-items:center; gap:10px;
  margin-bottom:18px;
}
.ohc-hero-kicker::before{
  content:''; width:26px; height:2px; background:var(--ohc-amarillo);
}

.ohc-hero-titulo{
  color:#fff;
  font-size:clamp(34px,5.6vw,72px);
  font-weight:600; font-stretch:112%;
  line-height:1.04; letter-spacing:-.025em;
}
.ohc-hero-bajada{
  color:rgba(255,255,255,.72);
  font-size:clamp(15px,1.5vw,18px);
  max-width:56ch; margin-top:20px;
}

.ohc-hero-acciones{ display:flex; gap:14px; margin-top:30px; flex-wrap:wrap; }
.ohc-btn{
  display:inline-flex; align-items:center; gap:10px;
  font-size:12px; font-weight:600; letter-spacing:.1em; text-transform:uppercase;
  text-decoration:none; padding:15px 26px; border-radius:var(--ohc-r);
  border:1px solid transparent; cursor:pointer;
  transition:background .2s ease, color .2s ease, border-color .2s ease, transform .2s ease;
}
.ohc-btn-solido{ background:var(--ohc-amarillo); color:var(--ohc-grafito); }
.ohc-btn-solido:hover{ background:#fff; transform:translateY(-2px); }
.ohc-btn-linea{ border-color:rgba(255,255,255,.4); color:#fff; background:transparent; }
.ohc-btn-linea:hover{ border-color:var(--ohc-amarillo); color:var(--ohc-amarillo); }

/* --- LA FICHA TECNICA: el panel de datos reales sobre la foto --- */
.ohc-ficha{
  border-top:1px solid rgba(255,255,255,.22);
  display:grid;
  grid-template-columns:1.6fr repeat(4, minmax(0,1fr)) auto;
  align-items:stretch;
  background:rgba(22,27,34,.42);
  backdrop-filter:blur(6px);
}
.ohc-ficha-celda{
  padding:18px 22px;
  border-left:1px solid rgba(255,255,255,.14);
  min-width:0;
}
/* La primera celda no lleva borde, pero SI padding: sin el se pega
   al borde del panel y se cruza con el trazo de plano del fondo. */
.ohc-ficha-celda:first-child{ border-left:0; }
.ohc-ficha-lbl{
  font-family:var(--ohc-mono);
  font-size:9.5px; letter-spacing:.2em; text-transform:uppercase;
  color:rgba(255,255,255,.45);
  display:block; margin-bottom:7px;
}
.ohc-ficha-val{
  font-family:var(--ohc-mono);
  font-size:15px; font-weight:500; color:#fff;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.ohc-ficha-val .ohc-u{ color:var(--ohc-amarillo); font-size:11px; margin-left:3px; }
.ohc-ficha-celda:first-child .ohc-ficha-val{
  font-family:var(--ohc-display);
  font-size:17px; font-weight:600; white-space:normal;
}

.ohc-ficha-nav{
  display:flex; align-items:center; gap:6px;
  padding:0 4px 0 20px; border-left:1px solid rgba(255,255,255,.14);
}
.ohc-ficha-nav button{
  width:38px; height:38px; border-radius:var(--ohc-r);
  border:1px solid rgba(255,255,255,.28); background:transparent;
  color:#fff; cursor:pointer; font-size:14px; line-height:1;
  transition:background .18s ease, border-color .18s ease;
}
.ohc-ficha-nav button:hover{ background:var(--ohc-amarillo); border-color:var(--ohc-amarillo); color:var(--ohc-grafito); }
.ohc-ficha-contador{
  font-family:var(--ohc-mono); font-size:11px; color:rgba(255,255,255,.55);
  padding:0 10px; white-space:nowrap;
}
.ohc-ficha-contador b{ color:#fff; }

/* barra de progreso del slide */
.ohc-hero-progreso{
  position:absolute; left:0; bottom:0; height:2px; width:100%;
  background:rgba(255,255,255,.14); z-index:6;
}
.ohc-hero-progreso i{
  display:block; height:100%; width:0; background:var(--ohc-amarillo);
}

/* ============ 6. CIFRAS ============ */
.ohc-cifras{
  background:var(--ohc-papel);
  border-bottom:1px solid var(--ohc-linea);
}
.ohc-cifras-grid{
  display:grid; grid-template-columns:repeat(4,1fr);
}
.ohc-cifra{
  padding:46px 28px;
  border-left:1px solid var(--ohc-linea);
}
.ohc-cifra:first-child{ border-left:0; padding-left:0; }
.ohc-cifra-num{
  font-size:clamp(34px,4vw,54px); font-weight:600; font-stretch:112%;
  line-height:1; letter-spacing:-.03em;
  display:flex; align-items:baseline; gap:4px;
}
.ohc-cifra-num .ohc-pre{ color:var(--ohc-amarillo); font-size:.5em; }
.ohc-cifra-num .ohc-suf{ font-family:var(--ohc-mono); font-size:.34em; color:var(--ohc-humo); letter-spacing:0; }
.ohc-cifra-lbl{
  font-family:var(--ohc-mono);
  font-size:11px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--ohc-humo); margin-top:12px;
}

/* ============ 7. NOSOTROS ============ */
.ohc-nosotros{ padding:110px 0 100px; background:var(--ohc-papel); }

.ohc-nosotros-intro{
  display:grid; grid-template-columns:1.05fr 1fr; gap:64px;
  align-items:end; margin-bottom:56px;
}
.ohc-nosotros-intro p{
  font-size:16.5px; line-height:1.72; color:var(--ohc-humo);
}

/* La empresa presentada como ficha tecnica, igual que las obras.
   Es el mismo lenguaje visual del hero, aplicado a OHC misma. */
.ohc-ficha-legal{
  display:grid; grid-template-columns:repeat(4,1fr);
  border-top:1px solid var(--ohc-grafito);
  margin-bottom:70px;
}
.ohc-ficha-legal div{
  padding:20px 24px;
  border-left:1px solid var(--ohc-linea);
}
.ohc-ficha-legal div:first-child{ border-left:0; padding-left:0; }
.ohc-ficha-legal dt{
  font-family:var(--ohc-mono);
  font-size:10px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--ohc-humo); margin-bottom:8px;
}
.ohc-ficha-legal dd{
  font-family:var(--ohc-mono);
  font-size:15px; color:var(--ohc-grafito); margin:0;
}

.ohc-pilares{ display:grid; grid-template-columns:1fr 1fr 1.15fr; gap:2px; background:var(--ohc-linea); }
.ohc-pilar{ background:var(--ohc-papel); padding:34px 30px 38px; }
.ohc-pilar h3{
  font-family:var(--ohc-mono);
  font-size:11px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--ohc-amarillo-osc);
  margin-bottom:18px;
  padding-bottom:14px;
  border-bottom:1px solid var(--ohc-linea);
}
.ohc-pilar p{ font-size:15px; line-height:1.7; color:var(--ohc-grafito); }

.ohc-valores{ list-style:none; display:grid; gap:14px; }
.ohc-valores li{
  display:flex; gap:12px; align-items:flex-start;
  font-size:14.5px; line-height:1.55;
}
.ohc-valores li::before{
  content:''; flex-shrink:0;
  width:9px; height:9px; margin-top:7px;
  border:2px solid var(--ohc-amarillo);
  border-radius:2px;
}
/* El ultimo valor lleva el cuadrado lleno: cierra el isotipo de OHC */
.ohc-valores li:last-child::before{ background:var(--ohc-amarillo); }

/* ============ 8. SERVICIOS ============ */
.ohc-servicios{ padding:110px 0; }
.ohc-servicios-cab{ display:flex; justify-content:space-between; align-items:flex-end; gap:40px; margin-bottom:56px; flex-wrap:wrap; }
.ohc-servicios-cab p{ color:var(--ohc-humo); max-width:44ch; }

.ohc-servicios-lista{ display:grid; grid-template-columns:repeat(3,1fr); gap:2px; background:var(--ohc-linea); }
.ohc-servicio{
  position:relative; background:var(--ohc-fondo);
  padding:36px 32px 40px;
  overflow:hidden;
  transition:background .35s var(--ohc-ease), color .35s var(--ohc-ease);
}
.ohc-servicio-foto{
  height:190px; margin:-36px -32px 28px; overflow:hidden;
  background:var(--ohc-grafito);
}
.ohc-servicio-foto img{
  width:100%; height:100%; object-fit:cover;
  filter:grayscale(1) contrast(1.05);
  transform:scale(1.02);
  transition:filter .5s var(--ohc-ease), transform .8s var(--ohc-ease);
}
.ohc-servicio:hover .ohc-servicio-foto img{ filter:grayscale(0); transform:scale(1.08); }
.ohc-servicio h3{
  font-size:26px; font-weight:600; font-stretch:110%; letter-spacing:-.01em;
  margin-bottom:8px;
}
.ohc-servicio .ohc-servicio-bajada{
  font-size:15px; color:var(--ohc-amarillo-osc); font-weight:500; margin-bottom:14px;
}
.ohc-servicio p{ font-size:14.5px; color:var(--ohc-humo); line-height:1.65; }

/* ============ 9. CARTA GANTT — el elemento firma ============ */
.ohc-gantt-seccion{
  background:var(--ohc-tinta); color:#fff;
  padding:100px 0 110px;
  position:relative; overflow:hidden;
}
/* trama de papel milimetrado muy sutil */
.ohc-gantt-seccion::before{
  content:''; position:absolute; inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,.028) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.028) 1px, transparent 1px);
  background-size:44px 44px;
  pointer-events:none;
}
.ohc-gantt-seccion .ohc-wrap{ position:relative; z-index:2; }

.ohc-gantt-cab{ display:flex; justify-content:space-between; align-items:flex-end; gap:32px; flex-wrap:wrap; margin-bottom:14px; }
.ohc-gantt-cab .ohc-titulo-seccion{ color:#fff; }
.ohc-gantt-cab p{ color:rgba(255,255,255,.55); max-width:42ch; font-size:15px; }

.ohc-gantt-filtros{ display:flex; gap:8px; margin:28px 0 26px; flex-wrap:wrap; }
.ohc-chip{
  font-family:var(--ohc-mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase;
  padding:9px 16px; border-radius:var(--ohc-r);
  border:1px solid rgba(255,255,255,.2); background:transparent; color:rgba(255,255,255,.72);
  cursor:pointer; transition:all .2s ease;
}
.ohc-chip:hover{ border-color:var(--ohc-amarillo); color:#fff; }
.ohc-chip.ohc-on{ background:var(--ohc-amarillo); border-color:var(--ohc-amarillo); color:var(--ohc-grafito); font-weight:600; }

.ohc-gantt{
  display:grid; grid-template-columns:1fr 340px; gap:0;
  border:1px solid rgba(255,255,255,.14);
  border-radius:var(--ohc-r);
  overflow:hidden;
}

.ohc-gantt-tabla{ overflow-x:auto; scrollbar-width:thin; }

.ohc-gantt-regla{
  display:flex; position:sticky; top:0;
  border-bottom:1px solid rgba(255,255,255,.14);
  background:rgba(22,27,34,.98);
  z-index:3;
}
.ohc-gantt-regla span{
  flex:1; text-align:center;
  font-family:var(--ohc-mono); font-size:10.5px; letter-spacing:.14em;
  color:rgba(255,255,255,.42);
  padding:11px 0;
  border-left:1px solid rgba(255,255,255,.08);
}
.ohc-gantt-regla span:first-child{ border-left:0; }

.ohc-gantt-fila{
  position:relative;
  display:block;
  width:100%;
  min-width:640px;
  height:56px;
  border-bottom:1px solid rgba(255,255,255,.07);
  background:transparent; border-left:0; border-right:0; border-top:0;
  cursor:pointer; text-align:left;
  padding:0;
  transition:background .2s ease;
}
.ohc-gantt-fila:hover,
.ohc-gantt-fila.ohc-sel{ background:rgba(233,161,59,.08); }
.ohc-gantt-fila.ohc-off{ display:none; }

.ohc-gantt-barra{
  position:absolute; top:50%; transform:translateY(-50%);
  height:26px; border-radius:3px;
  background:rgba(255,255,255,.16);
  display:flex; align-items:center;
  overflow:hidden;
  min-width:64px;
  transition:box-shadow .2s ease;
}
.ohc-gantt-fila:hover .ohc-gantt-barra{ box-shadow:0 0 0 1px var(--ohc-amarillo); }
.ohc-gantt-barra i{
  position:absolute; left:0; top:0; bottom:0;
  background:var(--ohc-amarillo);
  width:0;
  transition:width 1.1s var(--ohc-ease);
}
.ohc-gantt-fila.ohc-ejecucion .ohc-gantt-barra i{
  background:repeating-linear-gradient(45deg, var(--ohc-amarillo) 0 7px, var(--ohc-amarillo-osc) 7px 14px);
}
.ohc-gantt-barra span{
  position:relative; z-index:2;
  font-family:var(--ohc-mono); font-size:10.5px; letter-spacing:.06em;
  color:#fff; padding:0 10px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  text-shadow:0 1px 2px rgba(0,0,0,.5);
}

/* Panel lateral con la ficha de la obra seleccionada */
.ohc-gantt-panel{
  border-left:1px solid rgba(255,255,255,.14);
  padding:24px;
  background:rgba(255,255,255,.02);
  display:flex; flex-direction:column;
}
.ohc-gantt-panel-foto{
  height:150px; border-radius:3px; overflow:hidden; margin-bottom:20px;
  background:#0F1319;
}
.ohc-gantt-panel-foto img{ width:100%; height:100%; object-fit:cover; }
.ohc-gantt-panel h4{
  font-size:19px; font-weight:600; line-height:1.25; margin-bottom:4px;
}
.ohc-gantt-panel .ohc-mandante{
  font-family:var(--ohc-mono); font-size:11px; letter-spacing:.1em;
  color:var(--ohc-amarillo); text-transform:uppercase; margin-bottom:18px;
}
.ohc-gantt-datos{ display:grid; grid-template-columns:1fr 1fr; gap:14px 12px; }
.ohc-gantt-datos div{ min-width:0; }
.ohc-gantt-datos dt{
  font-family:var(--ohc-mono); font-size:9.5px; letter-spacing:.16em; text-transform:uppercase;
  color:rgba(255,255,255,.4); margin-bottom:4px;
}
.ohc-gantt-datos dd{
  font-family:var(--ohc-mono); font-size:13.5px; color:#fff;
}
.ohc-gantt-datos .ohc-ancho{ grid-column:1 / -1; }
.ohc-gantt-datos .ohc-ancho dd{ font-family:var(--ohc-display); font-size:14px; color:rgba(255,255,255,.8); }

/* ============ 10. CLIENTES ============ */
.ohc-clientes{ padding:80px 0 90px; background:var(--ohc-papel); overflow:hidden; }
.ohc-clientes .ohc-eyebrow{ justify-content:center; max-width:520px; margin:0 auto 40px; }

/* Contenedor que recorta la cinta y la difumina en los extremos,
   para que los logos no se corten en seco contra el borde. */
.ohc-marquee-cinta{
  position:relative;
  overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg, transparent 0, #000 90px, #000 calc(100% - 90px), transparent 100%);
          mask-image:linear-gradient(90deg, transparent 0, #000 90px, #000 calc(100% - 90px), transparent 100%);
}

/* El ancho de un juego completo de logos lo mide el JS y lo escribe
   en --ohc-cinta-w. Asi la animacion es exacta con 5 clientes o con 40,
   y la velocidad se mantiene constante al agregar mas desde el mantenedor. */
/* El movimiento lo maneja ohc-web.js con requestAnimationFrame, no una
   animacion CSS. Asi la cinta corre siempre, sin importar si el equipo
   tiene activado "reducir movimiento": es el comportamiento que pidio
   el cliente para esta barra en particular. */
.ohc-marquee{
  display:flex;
  width:max-content;
  will-change:transform;
}

.ohc-cliente{
  width:190px; height:96px; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  padding:0 28px;
  border-left:1px solid var(--ohc-linea);
}
.ohc-cliente img{
  max-height:44px; width:auto; object-fit:contain;
  filter:grayscale(1); opacity:.45;
  transition:filter .3s ease, opacity .3s ease;
}
.ohc-cliente:hover img{ filter:grayscale(0); opacity:1; }

@media (max-width:860px){
  .ohc-cliente{ width:150px; height:82px; padding:0 20px; }
  .ohc-cliente img{ max-height:36px; }
  .ohc-marquee-cinta{
    -webkit-mask-image:linear-gradient(90deg, transparent 0, #000 40px, #000 calc(100% - 40px), transparent 100%);
            mask-image:linear-gradient(90deg, transparent 0, #000 40px, #000 calc(100% - 40px), transparent 100%);
  }
}

/* ============ 11. CONTACTO ============ */
.ohc-contacto{ padding:110px 0; }
.ohc-contacto-grid{ display:grid; grid-template-columns:1fr 1fr; gap:72px; }
.ohc-contacto-info .ohc-titulo-seccion{ margin-bottom:26px; }
.ohc-contacto-dato{
  padding:20px 0; border-top:1px solid var(--ohc-linea);
}
.ohc-contacto-dato dt{
  font-family:var(--ohc-mono); font-size:10px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--ohc-humo); margin-bottom:6px;
}
.ohc-contacto-dato dd{ font-size:16px; }
.ohc-contacto-dato dd a{ text-decoration:none; border-bottom:1px solid var(--ohc-amarillo); }

.ohc-form{ display:grid; gap:2px; background:var(--ohc-linea); border:1px solid var(--ohc-linea); }
.ohc-campo{ background:var(--ohc-papel); padding:14px 18px; }
.ohc-campo label{
  display:block;
  font-family:var(--ohc-mono); font-size:10px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--ohc-humo); margin-bottom:4px;
}
.ohc-campo input, .ohc-campo textarea{
  width:100%; border:0; background:transparent;
  font-family:var(--ohc-display); font-size:16px; color:var(--ohc-grafito);
  resize:vertical;
}
.ohc-campo input:focus, .ohc-campo textarea:focus{ outline:0; }
.ohc-campo:focus-within{ box-shadow:inset 3px 0 0 var(--ohc-amarillo); }
.ohc-form-pie{ background:var(--ohc-papel); padding:18px; display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.ohc-form-msj{ font-family:var(--ohc-mono); font-size:12px; }
.ohc-form-msj.ohc-ok{ color:#1E8E5A; }
.ohc-form-msj.ohc-error{ color:#C0392B; }
.ohc-btn-enviar{
  background:var(--ohc-grafito); color:#fff; border:0;
  font-family:var(--ohc-display); font-size:12px; font-weight:600;
  letter-spacing:.12em; text-transform:uppercase;
  padding:15px 30px; border-radius:var(--ohc-r); cursor:pointer;
  transition:background .2s ease;
}
.ohc-btn-enviar:hover{ background:var(--ohc-amarillo); color:var(--ohc-grafito); }
.ohc-btn-enviar:disabled{ opacity:.5; cursor:not-allowed; }

/* ============ 12. FOOTER ============ */
.ohc-footer{ background:var(--ohc-tinta); color:rgba(255,255,255,.6); padding:60px 0 26px; }
.ohc-footer-grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:48px; padding-bottom:44px; }
.ohc-footer h5{
  font-family:var(--ohc-mono); font-size:10px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--ohc-amarillo); margin-bottom:16px;
}
.ohc-footer ul{ list-style:none; display:grid; gap:9px; }
.ohc-footer a{ text-decoration:none; font-size:14px; transition:color .18s ease; }
.ohc-footer a:hover{ color:#fff; }
.ohc-footer-legal{
  border-top:1px solid var(--ohc-linea-clara); padding-top:22px;
  display:flex; justify-content:space-between; gap:20px; flex-wrap:wrap;
  font-family:var(--ohc-mono); font-size:11px; color:rgba(255,255,255,.35);
}
.ohc-footer .ohc-oh, .ohc-footer .ohc-constructora{ color:#fff; }

.ohc-wsp{
  position:fixed; right:20px; bottom:20px; z-index:60;
  width:54px; height:54px; border-radius:50%;
  background:#25D366; color:#fff;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 8px 22px rgba(0,0,0,.24);
  text-decoration:none; font-size:26px;
  transition:transform .2s ease;
}
.ohc-wsp:hover{ transform:scale(1.08); }

/* ============ 13. REVEAL AL SCROLL ============ */
.ohc-reveal{ opacity:0; transform:translateY(26px); transition:opacity .7s var(--ohc-ease), transform .7s var(--ohc-ease); }
.ohc-reveal.ohc-visto{ opacity:1; transform:none; }
.ohc-reveal[data-d="1"]{ transition-delay:.1s; }
.ohc-reveal[data-d="2"]{ transition-delay:.2s; }
.ohc-reveal[data-d="3"]{ transition-delay:.3s; }

/* ============ 14. RESPONSIVE ============ */
@media (max-width:1080px){
  .ohc-nosotros-intro{ grid-template-columns:1fr; gap:26px; align-items:start; }
  .ohc-pilares{ grid-template-columns:1fr; }
  .ohc-ficha-legal{ grid-template-columns:1fr 1fr; }
  .ohc-ficha-legal div:nth-child(odd){ border-left:0; padding-left:0; }
  .ohc-ficha-legal div:nth-child(n+3){ border-top:1px solid var(--ohc-linea); }
  .ohc-gantt{ grid-template-columns:1fr; }
  .ohc-gantt-panel{ border-left:0; border-top:1px solid rgba(255,255,255,.14); }
  .ohc-servicios-lista{ grid-template-columns:1fr 1fr; }
  .ohc-ficha{ grid-template-columns:1fr 1fr 1fr; }
  .ohc-ficha-celda:nth-child(1){ grid-column:1 / -1; border-bottom:1px solid rgba(255,255,255,.14); }
  .ohc-ficha-nav{ grid-column:1 / -1; justify-content:flex-end; padding:12px 20px; border-left:0; border-top:1px solid rgba(255,255,255,.14); }
}

@media (max-width:860px){
  .ohc-wrap{ padding:0 20px; }
  .ohc-ticker{ padding:0 20px; font-size:10.5px; }
  #ohc-header{ padding:16px 20px; }

  .ohc-burger{ display:block; }
  .ohc-nav{
    position:fixed; inset:0; top:0;
    background:var(--ohc-tinta);
    flex-direction:column; justify-content:center; gap:26px;
    transform:translateX(100%); transition:transform .4s var(--ohc-ease);
    z-index:50;
  }
  .ohc-nav.ohc-abierto{ transform:translateX(0); }
  .ohc-nav ul{ flex-direction:column; gap:22px; }
  .ohc-nav a{ font-size:18px; }
  .ohc-submenu{
    position:static; transform:none; opacity:1; visibility:visible;
    background:transparent; box-shadow:none; padding:12px 0 0; text-align:center;
  }
  .ohc-submenu li a{ color:rgba(255,255,255,.7); font-size:14px; }
  .ohc-submenu li a:hover{ background:transparent; }

  .ohc-cifras-grid{ grid-template-columns:1fr 1fr; }
  .ohc-cifra{ padding:32px 20px; border-top:1px solid var(--ohc-linea); }
  .ohc-cifra:nth-child(odd){ border-left:0; padding-left:0; }
  .ohc-cifra:nth-child(-n+2){ border-top:0; }

  .ohc-servicios, .ohc-contacto, .ohc-nosotros{ padding:70px 0; }
  .ohc-ficha-legal{ grid-template-columns:1fr; margin-bottom:44px; }
  .ohc-ficha-legal div{ border-left:0; padding-left:0; }
  .ohc-servicios-lista{ grid-template-columns:1fr; }
  .ohc-servicio-foto{ height:200px; }
  .ohc-contacto-grid{ grid-template-columns:1fr; gap:44px; }
  .ohc-footer-grid{ grid-template-columns:1fr; gap:32px; }

  .ohc-ficha{ grid-template-columns:1fr 1fr; }
  .ohc-hero{ min-height:560px; }
  .ohc-hero-texto{ padding-bottom:26px; }
}

/* ============ 15. MOVIMIENTO REDUCIDO ============ */
/* Decision de proyecto: el sitio mantiene sus animaciones aunque el
   equipo pida "reducir movimiento". La secuencia del logo, el carrusel
   del hero, la cinta de clientes y las barras de la carta gantt son
   parte de lo que el cliente aprobo, no adorno opcional.
   Aca solo desactivamos lo que de verdad sobra: el desplazamiento suave
   y el movimiento vertical de las secciones al aparecer. */
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  .ohc-reveal{ opacity:1 !important; transform:none !important; transition:none !important; }
  .ohc-hero-plano line, .ohc-hero-plano rect, .ohc-hero-plano circle{
    animation:none; stroke-dashoffset:0;
  }
}