/* =========================================================
   Aislamientos Espreados — styles.css
   Traducción de Tailwind CSS + tokens de diseño a CSS puro
   ========================================================= */

/* ---------- Fuentes ---------- */
@import url("https://fonts.googleapis.com/css2?family=Archivo:wght@700;800;900&family=Barlow:wght@400;500;600&family=IBM+Plex+Mono:wght@500;600&display=swap");

/* ---------- Reset básico ---------- */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; border-color: var(--border); }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
img, svg { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; text-decoration: none; }
button, input, textarea, select { font: inherit; color: inherit; }
button { cursor: pointer; background: none; border: none; }
ul, ol { list-style: none; padding: 0; }

/* ---------- Tokens de diseño ---------- */
:root {
  --radius: 4px;
  --radius-sm: calc(var(--radius) - 4px);
  --radius-md: calc(var(--radius) - 2px);
  --radius-lg: var(--radius);
  --radius-xl: calc(var(--radius) + 4px);
  --radius-2xl: calc(var(--radius) + 8px);
  --radius-3xl: calc(var(--radius) + 12px);

  --font-display: "Archivo", ui-sans-serif, system-ui, sans-serif;
  --font-body: "Barlow", ui-sans-serif, system-ui, sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, monospace;

  --background: oklch(0.985 0.003 250);
  --foreground: oklch(0.19 0.03 250);
  --card: oklch(1 0 0);

  /* Azul acero profundo */
  --primary: oklch(0.31 0.072 253);
  --primary-foreground: oklch(0.98 0.005 250);
  --primary-soft: oklch(0.42 0.078 253);

  --secondary: oklch(0.94 0.008 250);
  --secondary-foreground: oklch(0.25 0.04 253);
  --muted: oklch(0.955 0.006 250);
  --muted-foreground: oklch(0.5 0.02 253);

  /* Ámbar de seguridad */
  --accent: oklch(0.76 0.168 66);
  --accent-foreground: oklch(0.2 0.04 60);

  --border: oklch(0.9 0.01 250);
  --input: oklch(0.9 0.01 250);
  --ring: oklch(0.76 0.168 66);

  /* Grafito industrial y superficies */
  --steel: oklch(0.24 0.015 255);
  --steel-foreground: oklch(0.95 0.006 250);
  --surface: oklch(0.965 0.005 250);

  /* Texto sobre imágenes oscuras */
  --ondark: oklch(0.98 0.005 250);
  --ondark-muted: oklch(0.86 0.012 250);

  --gradient-hero: linear-gradient(
    100deg,
    color-mix(in oklab, var(--primary) 96%, black) 0%,
    color-mix(in oklab, var(--primary) 78%, transparent) 58%,
    color-mix(in oklab, var(--primary) 30%, transparent) 100%
  );
  --shadow-hard: 0 24px 60px -30px color-mix(in oklab, var(--primary) 60%, transparent);
}

/* ---------- Base ---------- */
body {
  background-color: var(--background);
  color: var(--foreground);
  font-family: var(--font-body);
  -webkit-font-smoothing: antialiased;
  padding-top: 2.25rem; /* offset de la topbar fija */
}
h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1;
}

/* ---------- Utilidades ---------- */
.container { max-width: 80rem; margin-inline: auto; padding-inline: 1rem; }
.eyebrow {
  font-family: var(--font-mono); font-size: 0.72rem; letter-spacing: 0.24em;
  text-transform: uppercase; color: var(--accent);
}
.hazard-bar {
  background-image: repeating-linear-gradient(-45deg, var(--accent) 0 14px, transparent 14px 28px);
}
.grid-tech {
  background-image:
    linear-gradient(var(--border) 1px, transparent 1px),
    linear-gradient(90deg, var(--border) 1px, transparent 1px);
  background-size: 64px 64px;
}
.surface-panel { background-color: var(--surface); border: 1px solid var(--border); }
.visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

/* =========================================================
   TOPBAR
   ========================================================= */
.topbar {
  position: fixed; inset-inline: 0; top: 0; z-index: 60; height: 2.25rem;
  border-bottom: 1px solid rgba(255,255,255,0.1);
  background-color: var(--steel); color: var(--steel-foreground);
}
.topbar-inner {
  max-width: 80rem; margin-inline: auto; padding-inline: 1rem;
  height: 100%; display: flex; align-items: center; justify-content: space-between; gap: 1rem;
}
.topbar-location {
  display: none; align-items: center; gap: 0.5rem;
  font-family: var(--font-mono); font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.14em;
}
.topbar-location svg { width: 0.875rem; height: 0.875rem; }
.topbar-right { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: 1.25rem; }
.topbar-link {
  display: flex; align-items: center; gap: 0.5rem; font-family: var(--font-mono);
  font-size: 0.75rem; letter-spacing: 0.02em; transition: color 0.2s;
}
.topbar-link:hover { color: var(--accent); }
.topbar-link svg { width: 0.875rem; height: 0.875rem; flex-shrink: 0; }
.topbar-link span.truncate { max-width: 46vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (min-width: 640px) {
  .topbar-location { display: flex; }
  .topbar-right { width: auto; justify-content: flex-end; }
  .topbar-link span.truncate { max-width: none; }
}

/* =========================================================
   HEADER
   ========================================================= */
.site-header {
  position: sticky; top: 2.25rem; z-index: 50;
  border-bottom: 1px solid color-mix(in oklab, var(--primary-soft) 40%, transparent);
  background-color: color-mix(in oklab, var(--primary) 95%, transparent);
  backdrop-filter: blur(6px);
  box-shadow: 0 10px 30px -20px rgba(0,0,0,0.6);
}
.header-inner {
  max-width: 80rem; margin-inline: auto; padding-inline: 1rem;
  display: flex; align-items: center; justify-content: space-between; gap: 1.5rem;
  padding-block: 0.75rem;
}
.brand { display: flex; align-items: center; gap: 0.75rem; }
.brand-mark {
  display: flex; height: 2.25rem; width: 2.25rem; align-items: center; justify-content: center;
  background-color: var(--accent); font-family: var(--font-display); font-size: 1.125rem;
  font-weight: 900; color: var(--accent-foreground); flex-shrink: 0;
}
.brand-text { line-height: 1; }
.brand-name {
  display: block; font-family: var(--font-display); font-size: 1rem; font-weight: 800;
  text-transform: uppercase; letter-spacing: -0.01em; color: var(--primary-foreground);
}
.brand-tag {
  display: block; margin-top: 0.25rem; font-family: var(--font-mono); font-size: 0.62rem;
  text-transform: uppercase; letter-spacing: 0.2em; color: color-mix(in oklab, var(--primary-foreground) 70%, transparent);
}
.main-nav { display: none; align-items: center; gap: 1.75rem; }
.main-nav > a {
  font-size: 0.875rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.02em;
  color: color-mix(in oklab, var(--primary-foreground) 85%, transparent); transition: color 0.2s;
}
.main-nav > a:hover, .main-nav > a[aria-current="page"] { color: var(--accent); }
.nav-services { position: relative; }
.nav-dropdown {
  position: absolute; left: 50%; top: 100%; width: 46rem; max-width: 90vw;
  transform: translateX(-50%); padding-top: 1rem;
  visibility: hidden; opacity: 0; transition: opacity 0.2s, visibility 0.2s;
}
.nav-services:hover .nav-dropdown, .nav-services:focus-within .nav-dropdown { visibility: visible; opacity: 1; }
.nav-dropdown-panel { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; padding: 1.25rem; box-shadow: var(--shadow-hard); }
.nav-dropdown-group span.group-title {
  display: block; font-family: var(--font-display); font-size: 0.875rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.02em; color: var(--foreground);
}
.nav-dropdown-group ul { margin-top: 0.5rem; display: flex; flex-direction: column; gap: 0.25rem; }
.nav-dropdown-group a { display: block; padding-block: 0.25rem; font-size: 0.875rem; color: var(--muted-foreground); transition: color 0.2s; }
.nav-dropdown-group a:hover { color: var(--primary); }
.header-cta { display: none; }
.btn-quote {
  background-color: var(--accent); padding: 0.5rem 1rem; font-family: var(--font-display);
  font-size: 0.875rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.02em;
  color: var(--accent-foreground); transition: opacity 0.2s;
}
.btn-quote:hover { opacity: 0.9; }
.menu-toggle { color: var(--primary-foreground); }
.menu-toggle svg { width: 1.5rem; height: 1.5rem; }
.menu-toggle .icon-close { display: none; }
.menu-toggle[aria-expanded="true"] .icon-open { display: none; }
.menu-toggle[aria-expanded="true"] .icon-close { display: block; }

.mobile-panel {
  display: none; border-top: 1px solid color-mix(in oklab, var(--primary-soft) 40%, transparent);
  background-color: var(--primary); padding: 1rem;
}
.mobile-panel.is-open { display: block; }
.mobile-nav { display: flex; flex-direction: column; gap: 0.75rem; }
.mobile-nav > a {
  font-size: 0.875rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.02em;
  color: color-mix(in oklab, var(--primary-foreground) 85%, transparent);
}
.mobile-service-group { display: flex; flex-direction: column; gap: 0.25rem; }
.mobile-service-group > span {
  padding-left: 1rem; font-family: var(--font-display); font-size: 0.875rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.02em; color: var(--primary-foreground);
}
.mobile-service-group a {
  padding-left: 2rem; font-size: 0.875rem; color: color-mix(in oklab, var(--primary-foreground) 70%, transparent);
  transition: color 0.2s;
}
.mobile-service-group a:hover { color: var(--accent); }
.mobile-cta { margin-top: 0.5rem; text-align: center; }

@media (min-width: 1024px) {
  .main-nav { display: flex; }
  .header-cta { display: block; }
  .menu-toggle { display: none; }
}

/* =========================================================
   WHATSAPP FAB
   ========================================================= */
.whatsapp-fab {
  position: fixed; bottom: 1.25rem; right: 1.25rem; z-index: 50;
  display: flex; align-items: center; gap: 0.5rem; background-color: var(--primary);
  padding: 0.75rem 1rem; font-family: var(--font-display); font-size: 0.875rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.02em; color: var(--primary-foreground);
  box-shadow: var(--shadow-hard); transition: transform 0.2s;
}
.whatsapp-fab:hover { transform: scale(1.05); }
.whatsapp-fab svg { width: 1.25rem; height: 1.25rem; }
.whatsapp-fab span { display: none; }
@media (min-width: 640px) { .whatsapp-fab span { display: inline; } }

/* =========================================================
   HERO CAROUSEL (home)
   ========================================================= */
.hero-carousel { position: relative; overflow: hidden; border-bottom: 1px solid var(--border); }
.hero-carousel-bg { position: absolute; inset: 0; }
.hero-carousel-slide { position: absolute; inset: 0; opacity: 0; transition: opacity 0.7s; }
.hero-carousel-slide.is-active { opacity: 1; }
.hero-carousel-slide img { position: absolute; inset: 0; height: 100%; width: 100%; object-fit: cover; transform: scale(1); transition: transform 7s ease-out; }
.hero-carousel-slide.is-active img { transform: scale(1.05); }
.hero-carousel-overlay { position: absolute; inset: 0; background-image: var(--gradient-hero); }
.hero-carousel-content { position: relative; max-width: 80rem; margin-inline: auto; padding: 5rem 1rem 4rem; color: var(--ondark); }
.hero-carousel-grid { display: grid; gap: 2rem; }
.hero-carousel-eyebrow { font-family: var(--font-mono); font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.2em; color: var(--accent); }
.hero-carousel-title { margin-top: 0.75rem; max-width: 42rem; font-size: 1.875rem; text-transform: uppercase; line-height: 0.98; }
.hero-carousel-text { margin-top: 1rem; max-width: 42rem; font-size: 1rem; color: var(--ondark-muted); }
.hero-carousel-actions { margin-top: 1.75rem; display: flex; flex-wrap: wrap; gap: 0.75rem; }
.hero-btn-accent {
  display: inline-flex; align-items: center; gap: 0.5rem; background-color: var(--accent);
  padding: 0.9rem 1.5rem; font-family: var(--font-display); font-size: 0.875rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.02em; color: var(--accent-foreground); transition: opacity 0.2s;
}
.hero-btn-accent:hover { opacity: 0.9; }
.hero-btn-accent svg { width: 1rem; height: 1rem; }
.hero-btn-outline {
  border: 1px solid var(--ondark); padding: 0.9rem 1.5rem; font-family: var(--font-display);
  font-size: 0.875rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.02em;
  color: var(--ondark); transition: background-color 0.2s, color 0.2s;
}
.hero-btn-outline:hover { background-color: var(--ondark); color: var(--primary); }
.hero-btn-ghost {
  border: 1px solid color-mix(in oklab, var(--ondark-muted) 50%, transparent); padding: 0.9rem 1.5rem;
  font-family: var(--font-display); font-size: 0.875rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.02em; color: var(--ondark); transition: border-color 0.2s, color 0.2s;
}
.hero-btn-ghost:hover { border-color: var(--accent); color: var(--accent); }
.hero-stats { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; align-self: end; }
.hero-stats dt { font-family: var(--font-display); font-size: 2.25rem; font-weight: 900; color: var(--accent); }
.hero-stats dd { margin-top: 0.25rem; font-family: var(--font-mono); font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.15em; color: var(--ondark-muted); }
.hero-carousel-controls { margin-top: 2.5rem; display: flex; align-items: center; gap: 1rem; }
.hero-carousel-arrow {
  border: 1px solid color-mix(in oklab, var(--ondark-muted) 40%, transparent);
  background-color: color-mix(in oklab, var(--primary) 30%, transparent);
  padding: 0.5rem; color: var(--ondark); backdrop-filter: blur(4px); transition: background-color 0.2s, color 0.2s;
}
.hero-carousel-arrow:hover { background-color: var(--accent); color: var(--accent-foreground); }
.hero-carousel-arrow svg { width: 1.25rem; height: 1.25rem; }
.hero-carousel-dots { display: flex; flex: 1; flex-wrap: wrap; gap: 0.5rem; }
.hero-carousel-dot { height: 0.375rem; width: 1.5rem; background-color: color-mix(in oklab, var(--ondark-muted) 50%, transparent); transition: all 0.2s; }
.hero-carousel-dot.is-active { width: 3rem; background-color: var(--accent); }
.hero-carousel-counter { font-family: var(--font-mono); font-size: 0.75rem; color: var(--ondark-muted); }
@media (min-width: 1024px) { .hero-carousel-grid { grid-template-columns: 1.25fr 1fr; } .hero-carousel-title { font-size: 3rem; } .hero-carousel-text { font-size: 1.125rem; } }

/* =========================================================
   PAGE HERO (páginas internas)
   ========================================================= */
.page-hero { position: relative; overflow: hidden; border-bottom: 1px solid var(--border); }
.page-hero img { position: absolute; inset: 0; height: 100%; width: 100%; object-fit: cover; }
.page-hero-overlay { position: absolute; inset: 0; background-image: var(--gradient-hero); }
.page-hero-content { position: relative; max-width: 80rem; margin-inline: auto; padding: 5rem 1rem; color: var(--ondark); }
.page-hero-content .eyebrow { color: var(--accent); }
.page-hero-content h1 { margin-top: 1rem; max-width: 56rem; font-size: 2.25rem; text-transform: uppercase; line-height: 0.95; }
.page-hero-content p { margin-top: 1.5rem; max-width: 42rem; font-size: 1.125rem; color: var(--ondark-muted); }
@media (min-width: 640px) { .page-hero-content { padding-block: 7rem; } .page-hero-content h1 { font-size: 3.75rem; } }

/* =========================================================
   SECCIONES GENÉRICAS
   ========================================================= */
.section { padding-block: 5rem; }
.section.border-y { border-block: 1px solid var(--border); }
.section.bg-surface { background-color: var(--surface); }
.section.bg-steel { background-color: var(--steel); color: var(--steel-foreground); }
.section.bg-primary { border-block: 1px solid color-mix(in oklab, var(--primary-soft) 40%, transparent); background-color: var(--primary); }
.section h2 { margin-top: 0.75rem; max-width: 48rem; font-size: 2rem; text-transform: uppercase; }
.section.bg-primary h2, .section.bg-steel h2 { color: var(--ondark); }
.on-steel { color: var(--ondark); }
.on-steel-muted { color: color-mix(in oklab, var(--ondark-muted) 75%, transparent); }
@media (min-width: 640px) { .section h2 { font-size: 2.5rem; } }

/* -------- Quiénes somos -------- */
.about-grid { display: grid; gap: 2.5rem; }
.about-grid img { height: 100%; width: 100%; border: 1px solid var(--border); object-fit: cover; }
.about-copy { margin-top: 1.25rem; display: flex; flex-direction: column; gap: 1rem; color: var(--muted-foreground); }
.about-stats { margin-top: 2rem; display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; }
.about-stats dt { font-family: var(--font-display); font-size: 2.25rem; font-weight: 900; color: var(--primary); }
.about-stats dd { margin-top: 0.25rem; font-family: var(--font-mono); font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.15em; }
.about-link {
  margin-top: 2rem; display: inline-flex; align-items: center; gap: 0.5rem; border: 1px solid var(--border);
  padding: 0.75rem 1.5rem; font-family: var(--font-display); font-size: 0.875rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.02em; transition: border-color 0.2s, color 0.2s;
}
.about-link:hover { border-color: var(--primary); color: var(--primary); }
.about-link svg { width: 1rem; height: 1rem; }
@media (min-width: 1024px) { .about-grid { grid-template-columns: 1fr 1.1fr; } .about-stats { grid-template-columns: repeat(4, 1fr); } }

/* -------- Servicios (home) -------- */
.services-grid { margin-top: 3rem; display: grid; gap: 1.5rem; }
.service-card { display: flex; flex-direction: column; overflow: hidden; transition: border-color 0.2s; }
.service-card:hover { border-color: var(--primary); }
.service-card-img { overflow: hidden; }
.service-card-img img { height: 12rem; width: 100%; object-fit: cover; transition: transform 0.5s; }
.service-card:hover .service-card-img img { transform: scale(1.05); }
.service-card-body { display: flex; flex: 1; flex-direction: column; padding: 1.5rem; }
.service-card-body svg.icon { width: 1.5rem; height: 1.5rem; color: var(--primary); }
.service-card-body h3 { margin-top: 1rem; font-size: 1.5rem; text-transform: uppercase; }
.service-card-claim { margin-top: 0.25rem; font-family: var(--font-mono); font-size: 0.75rem; text-transform: uppercase; color: var(--primary); }
.service-card-list { margin-top: 1rem; flex: 1; display: flex; flex-direction: column; gap: 0.5rem; }
.service-card-list a {
  display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; border: 1px solid var(--border);
  padding: 0.5rem 0.75rem; font-size: 0.875rem; color: var(--muted-foreground); transition: border-color 0.2s, color 0.2s;
}
.service-card-list a:hover { border-color: var(--primary); color: var(--primary); }
.service-card-list a svg { width: 0.875rem; height: 0.875rem; flex-shrink: 0; color: var(--primary); }
@media (min-width: 1024px) { .services-grid { grid-template-columns: repeat(3, 1fr); } }

/* -------- Sectores -------- */
.sectores-grid { display: grid; gap: 1rem; }
.sector-card {
  border: 1px solid color-mix(in oklab, var(--steel-foreground) 15%, transparent);
  background-color: color-mix(in oklab, var(--steel-foreground) 4%, transparent);
  padding: 1.5rem; transition: border-color 0.2s;
}
.sector-card:hover { border-color: color-mix(in oklab, var(--accent) 50%, transparent); }
.sector-card svg.icon { width: 1.5rem; height: 1.5rem; color: var(--accent); }
.sector-card h3 { margin-top: 1rem; font-size: 1.25rem; text-transform: uppercase; }
.sector-card p { margin-top: 0.5rem; font-size: 0.875rem; }
@media (min-width: 640px) { .sectores-grid { grid-template-columns: repeat(2, 1fr); } }

/* -------- Slider de proyectos (scroll horizontal) -------- */
.proyectos-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1.5rem; }
.proyectos-head h2 { margin-top: 0.75rem; max-width: 42rem; font-size: 2rem; text-transform: uppercase; }
.proyectos-head p { margin-top: 1rem; max-width: 42rem; color: var(--muted-foreground); }
.section.bg-primary .proyectos-head p { color: var(--ondark-muted); }
.proyectos-controls { display: flex; gap: 0.5rem; }
.proyectos-arrow { border: 1px solid var(--border); padding: 0.5rem; transition: border-color 0.2s, color 0.2s; }
.proyectos-arrow:hover { border-color: var(--primary); color: var(--primary); }
.section.bg-primary .proyectos-arrow { border-color: color-mix(in oklab, var(--primary-foreground) 40%, transparent); color: var(--primary-foreground); }
.section.bg-primary .proyectos-arrow:hover { border-color: var(--primary-foreground); background-color: var(--primary-foreground); color: var(--primary); }
.proyectos-arrow svg { width: 1.25rem; height: 1.25rem; }
.proyectos-track {
  margin-top: 2.5rem; display: flex; gap: 1.5rem; overflow-x: auto; padding-bottom: 1rem;
  scroll-snap-type: x mandatory; scrollbar-width: none;
}
.proyectos-track::-webkit-scrollbar { display: none; }
.proyecto-card {
  flex-shrink: 0; scroll-snap-align: start; width: 85%; display: flex; flex-direction: column; overflow: hidden;
  transition: border-color 0.2s;
}
.proyecto-card:hover { border-color: var(--primary); }
.proyecto-card-img { position: relative; overflow: hidden; }
.proyecto-card-img img { height: 13rem; width: 100%; object-fit: cover; transition: transform 0.5s; }
.proyecto-card:hover .proyecto-card-img img { transform: scale(1.05); }
.proyecto-card-tag {
  position: absolute; bottom: 0; left: 0; background-color: var(--primary); padding: 0.25rem 0.75rem;
  font-family: var(--font-mono); font-size: 0.75rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.05em; color: var(--primary-foreground);
}
.proyecto-card-body { display: flex; flex: 1; flex-direction: column; padding: 1.5rem; }
.proyecto-card-linea { font-family: var(--font-mono); font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.15em; color: var(--primary); }
.proyecto-card-body h3 { margin-top: 0.75rem; font-size: 1.25rem; text-transform: uppercase; }
.proyecto-card-body p.ubicacion { margin-top: 0.5rem; font-size: 0.875rem; color: var(--muted-foreground); }
.proyecto-card-link { margin-top: 1.25rem; display: inline-flex; align-items: center; gap: 0.5rem; font-family: var(--font-display); font-size: 0.875rem; font-weight: 700; text-transform: uppercase; color: var(--primary); }
.proyecto-card-link svg { width: 1rem; height: 1rem; }
@media (min-width: 640px) { .proyecto-card { width: calc((100% - 1.5rem) / 2); } }
@media (min-width: 1024px) { .proyecto-card { width: calc((100% - 3rem) / 3); } }

/* -------- Proceso -------- */
.proceso-grid { margin-top: 3rem; display: grid; gap: 1.5rem; }
.proceso-card { display: flex; flex-direction: column; overflow: hidden; border: 1px solid color-mix(in oklab, var(--primary-foreground) 15%, transparent); background-color: color-mix(in oklab, var(--primary-foreground) 6%, transparent); transition: border-color 0.2s; }
.proceso-card:hover { border-color: color-mix(in oklab, var(--accent) 50%, transparent); }
.proceso-card-img { position: relative; overflow: hidden; }
.proceso-card-img img { height: 11rem; width: 100%; object-fit: cover; }
.proceso-card-num {
  position: absolute; left: 1rem; top: 1rem; background-color: var(--accent); padding: 0.25rem 0.75rem;
  font-family: var(--font-mono); font-size: 0.75rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.05em; color: var(--accent-foreground);
}
.proceso-card-body { display: flex; flex: 1; flex-direction: column; padding: 1.5rem; }
.proceso-card-body h3 { font-size: 1.25rem; text-transform: uppercase; color: var(--ondark); }
.proceso-card-body p { margin-top: 0.5rem; font-size: 0.875rem; color: color-mix(in oklab, var(--ondark-muted) 75%, transparent); }
@media (min-width: 640px) { .proceso-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .proceso-grid { grid-template-columns: repeat(4, 1fr); } }

/* -------- Cobertura -------- */
.cobertura-tags { margin-top: 2.5rem; display: flex; flex-wrap: wrap; gap: 0.75rem; }
.cobertura-tags span, .cobertura-tags a {
  border: 1px solid var(--border); padding: 0.75rem 1.25rem; font-family: var(--font-display);
  font-size: 0.875rem; text-transform: uppercase; letter-spacing: 0.02em; display: inline-flex;
  align-items: center; gap: 0.5rem;
}
.cobertura-tags svg { width: 1rem; height: 1rem; color: var(--primary); }

/* =========================================================
   CTA
   ========================================================= */
.cta-grid { display: grid; align-items: center; gap: 2rem; }
.cta-copy p.eyebrow { color: var(--accent); }
.cta-copy h2 { margin-top: 0.75rem; font-size: 1.875rem; text-transform: uppercase; color: var(--primary-foreground); }
.cta-copy p.text { margin-top: 1rem; max-width: 42rem; color: var(--ondark-muted); }
.cta-actions { display: flex; flex-direction: column; gap: 0.75rem; }
.cta-actions a {
  display: flex; align-items: center; justify-content: center; gap: 0.5rem;
  border: 1px solid color-mix(in oklab, var(--primary-foreground) 40%, transparent);
  padding: 1rem 1.5rem; font-family: var(--font-display); font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.02em; color: var(--primary-foreground); transition: background-color 0.2s, color 0.2s;
}
.cta-actions a:hover { background-color: var(--primary-foreground); color: var(--primary); }
.cta-actions a svg { width: 1.25rem; height: 1.25rem; }
.cta-actions a.mono { font-family: var(--font-mono); font-size: 0.875rem; text-transform: none; letter-spacing: normal; }
@media (min-width: 768px) { .cta-grid { grid-template-columns: 1.4fr 1fr; } .cta-copy h2 { font-size: 2.25rem; } }

/* =========================================================
   FOOTER
   ========================================================= */
.site-footer { border-top: 1px solid var(--border); background-color: var(--surface); }
.footer-grid { display: grid; gap: 2.5rem; padding-block: 3.5rem; }
.footer-brand-col p.eyebrow { color: var(--accent); }
.footer-brand-col h3 { margin-top: 0.5rem; font-size: 1.5rem; text-transform: uppercase; }
.footer-brand-col p.desc { margin-top: 0.75rem; max-width: 28rem; font-size: 0.875rem; color: var(--muted-foreground); }
.footer-contact { margin-top: 1.25rem; display: flex; flex-direction: column; gap: 0.5rem; font-size: 0.875rem; }
.footer-contact a { display: flex; align-items: center; gap: 0.5rem; transition: color 0.2s; }
.footer-contact a:hover { color: var(--primary); }
.footer-contact svg { width: 1rem; height: 1rem; color: var(--primary); flex-shrink: 0; }
.footer-contact p { display: flex; align-items: center; gap: 0.5rem; color: var(--muted-foreground); }
.footer-col h4 { font-family: var(--font-mono); font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.2em; color: var(--muted-foreground); }
.footer-col ul { margin-top: 1rem; display: flex; flex-direction: column; gap: 0.75rem; font-size: 0.875rem; }
.footer-service-name { display: block; font-family: var(--font-display); font-weight: 700; text-transform: uppercase; letter-spacing: 0.02em; color: var(--foreground); }
.footer-service-list { margin-top: 0.25rem; display: flex; flex-direction: column; gap: 0.25rem; }
.footer-service-list a { color: var(--muted-foreground); transition: color 0.2s; }
.footer-service-list a:hover { color: var(--primary); }
.footer-coverage li { color: var(--muted-foreground); }
.footer-bottom { border-top: 1px solid var(--border); }
.footer-bottom-inner {
  max-width: 80rem; margin-inline: auto; padding: 1.25rem 1rem; font-family: var(--font-mono); font-size: 0.75rem;
  color: var(--muted-foreground); display: flex; flex-direction: column; gap: 0.5rem;
}
@media (min-width: 768px) { .footer-grid { grid-template-columns: repeat(4, 1fr); } .footer-brand-col { grid-column: span 2; } .footer-bottom-inner { flex-direction: row; align-items: center; justify-content: space-between; } }

/* =========================================================
   PÁGINA DE SERVICIOS (listado)
   ========================================================= */
.servicio-article { display: grid; overflow: hidden; margin-block: 1.5rem; }
.servicio-article img { height: 14rem; width: 100%; object-fit: cover; }
.servicio-article-body { padding: 1.75rem; }
.servicio-count { font-family: var(--font-mono); font-size: 0.75rem; color: var(--primary); }
.servicio-article-body h2 { margin-top: 0.5rem; font-size: 1.5rem; text-transform: uppercase; }
.servicio-claim { margin-top: 0.25rem; font-family: var(--font-display); font-size: 0.875rem; text-transform: uppercase; letter-spacing: 0.02em; color: var(--primary); }
.servicio-intro { margin-top: 1rem; font-size: 0.875rem; color: var(--muted-foreground); }
.sistemas-grid { margin-top: 1.5rem; display: grid; gap: 0.75rem; }
.sistema-link {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem;
  border: 1px solid var(--border); background-color: var(--secondary); padding: 0.75rem 1rem;
  transition: border-color 0.2s;
}
.sistema-link:hover { border-color: var(--primary); }
.sistema-link .name { display: block; font-family: var(--font-display); font-size: 0.875rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.02em; color: var(--foreground); }
.sistema-link:hover .name { color: var(--primary); }
.sistema-link .claim { margin-top: 0.125rem; display: block; font-family: var(--font-mono); font-size: 0.7rem; text-transform: uppercase; color: var(--muted-foreground); }
.sistema-link svg { margin-top: 0.25rem; width: 1rem; height: 1rem; flex-shrink: 0; color: var(--primary); }
@media (min-width: 768px) { .servicio-article { grid-template-columns: 1fr 1.3fr; } .servicio-article img { height: 100%; } }
@media (min-width: 640px) { .sistemas-grid { grid-template-columns: repeat(2, 1fr); } }

.alcance-grid { margin-top: 1.5rem; display: grid; gap: 1.5rem; }
.alcance-item { border-left: 2px solid var(--primary); padding-left: 1.25rem; }
.alcance-item h3 { font-size: 1.25rem; text-transform: uppercase; }
.alcance-item p { margin-top: 0.5rem; font-size: 0.875rem; color: var(--muted-foreground); }
@media (min-width: 768px) { .alcance-grid { grid-template-columns: repeat(3, 1fr); } }

/* =========================================================
   PÁGINA DE SISTEMA (detalle)
   ========================================================= */
.back-link { display: inline-flex; align-items: center; gap: 0.5rem; font-family: var(--font-mono); font-size: 0.75rem; text-transform: uppercase; color: var(--muted-foreground); transition: color 0.2s; }
.back-link:hover { color: var(--primary); }
.back-link svg { width: 0.875rem; height: 0.875rem; }
.sistema-resumen { margin-top: 1.5rem; max-width: 56rem; font-size: 1.125rem; color: var(--muted-foreground); }
.sistema-metodo-badge {
  margin-top: 1.25rem; display: inline-flex; align-items: center; gap: 0.5rem; border: 1px solid var(--border);
  padding: 0.5rem 0.75rem; font-family: var(--font-mono); font-size: 0.75rem; text-transform: uppercase; color: var(--muted-foreground);
}
.sistema-metodo-badge svg { width: 1rem; height: 1rem; color: var(--primary); }

.sistema-columns { margin-top: 2rem; display: grid; gap: 2rem; }
.sistema-block-title { display: flex; align-items: center; gap: 0.5rem; font-family: var(--font-display); font-size: 0.875rem; text-transform: uppercase; letter-spacing: 0.15em; }
.sistema-block-title svg { width: 1rem; height: 1rem; color: var(--primary); }
.propiedades-panel { padding: 1.5rem; }
.propiedades-list { margin-top: 1.25rem; }
.propiedades-list > div { display: flex; justify-content: space-between; gap: 1.5rem; padding-block: 0.625rem; font-size: 0.875rem; border-bottom: 1px solid var(--border); }
.propiedades-list > div:last-child { border-bottom: none; }
.propiedades-list dt { color: var(--muted-foreground); }
.propiedades-list dd { text-align: right; font-family: var(--font-mono); }
.sistema-sub-block + .sistema-sub-block { margin-top: 2rem; }
.simple-list { margin-top: 1rem; display: flex; flex-direction: column; gap: 0.5rem; font-size: 0.875rem; color: var(--muted-foreground); }
.simple-list li { display: flex; gap: 0.5rem; }
.simple-list .dot { margin-top: 0.5rem; height: 0.375rem; width: 0.375rem; flex-shrink: 0; background-color: var(--primary); }
.simple-list svg { margin-top: 0.125rem; width: 1rem; height: 1rem; flex-shrink: 0; color: var(--primary); }
@media (min-width: 1024px) { .sistema-columns { grid-template-columns: 1.1fr 1fr; } }

.sistema-detail-grid { margin-top: 3rem; display: grid; gap: 2rem; }
.metodo-list { margin-top: 1rem; display: flex; flex-direction: column; gap: 0.75rem; }
.metodo-list li { display: flex; gap: 1rem; font-size: 0.875rem; color: var(--muted-foreground); }
.metodo-list .num { font-family: var(--font-mono); color: var(--primary); }
.metodo-list .txt { border-left: 1px solid var(--border); padding-left: 1rem; }
.ejemplos-list { margin-top: 1rem; display: flex; flex-direction: column; gap: 0.75rem; }
.ejemplos-list p { border-left: 2px solid var(--primary); background-color: color-mix(in oklab, var(--secondary) 40%, transparent); padding: 1rem; font-size: 0.875rem; color: var(--muted-foreground); }
.nota-tecnica { margin-top: 1rem; font-family: var(--font-mono); font-size: 0.75rem; text-transform: uppercase; line-height: 1.6; color: var(--muted-foreground); }
.btn-cotizar-sistema {
  margin-top: 1.5rem; display: inline-block; background-color: var(--primary); padding: 0.75rem 1.25rem;
  font-family: var(--font-display); font-size: 0.875rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.02em; color: var(--primary-foreground); transition: opacity 0.2s;
}
.btn-cotizar-sistema:hover { opacity: 0.9; }
@media (min-width: 1024px) { .sistema-detail-grid { grid-template-columns: repeat(2, 1fr); } }

.otros-sistemas-tags { margin-top: 1.25rem; display: flex; flex-wrap: wrap; gap: 0.75rem; }
.otros-sistemas-tags a {
  border: 1px solid var(--border); padding: 0.75rem 1.25rem; font-family: var(--font-display);
  font-size: 0.875rem; text-transform: uppercase; letter-spacing: 0.02em; transition: border-color 0.2s, color 0.2s;
}
.otros-sistemas-tags a:hover { border-color: var(--primary); color: var(--primary); }

/* =========================================================
   NOSOTROS
   ========================================================= */
.valores-grid { margin-top: 2rem; display: grid; gap: 1.5rem; }
@media (min-width: 640px) { .valores-grid { grid-template-columns: repeat(2, 1fr); } }
.cobertura-grid { margin-top: 2rem; display: grid; gap: 0.75rem; }
.cobertura-grid > div {
  display: flex; align-items: center; gap: 0.75rem; border: 1px solid var(--border); padding: 1rem;
  font-family: var(--font-display); text-transform: uppercase;
}
.cobertura-grid svg { width: 1rem; height: 1rem; color: var(--primary); }
.cobertura-note { margin-top: 1.25rem; font-family: var(--font-mono); font-size: 0.75rem; text-transform: uppercase; color: var(--muted-foreground); }
@media (min-width: 640px) { .cobertura-grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1024px) { .cobertura-grid { grid-template-columns: repeat(4, 1fr); } }

/* =========================================================
   CONTACTO
   ========================================================= */
.contacto-layout { display: grid; gap: 2.5rem; }
.contacto-form-panel { padding: 1.75rem; }
.contacto-form-panel h2 { font-size: 1.5rem; text-transform: uppercase; }
.contacto-form-panel > p { margin-top: 0.5rem; font-size: 0.875rem; color: var(--muted-foreground); }
.contacto-form { margin-top: 1.75rem; display: grid; gap: 1rem; }
.contacto-form .full { grid-column: 1 / -1; }
.contacto-form label { font-family: var(--font-mono); font-size: 0.75rem; text-transform: uppercase; color: var(--muted-foreground); }
.contacto-form input, .contacto-form select, .contacto-form textarea {
  margin-top: 0.5rem; width: 100%; border: 1px solid var(--border); background-color: var(--background);
  padding: 0.75rem 1rem; font-size: 0.875rem; color: var(--foreground);
}
.contacto-form textarea { min-height: 110px; resize: vertical; }
.contacto-form input:focus, .contacto-form select:focus, .contacto-form textarea:focus { outline: none; border-color: var(--primary); }
.contacto-submit {
  grid-column: 1 / -1; display: flex; align-items: center; justify-content: center; gap: 0.5rem;
  background-color: var(--primary); padding: 1rem 1.5rem; font-family: var(--font-display); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.02em; color: var(--primary-foreground); transition: opacity 0.2s;
}
.contacto-submit:hover { opacity: 0.9; }
.contacto-submit svg { width: 1rem; height: 1rem; }
.contacto-form-note { grid-column: 1 / -1; font-family: var(--font-mono); font-size: 0.68rem; text-transform: uppercase; color: var(--muted-foreground); }
.contacto-sidebar { display: flex; flex-direction: column; gap: 1rem; }
.info-card { display: flex; align-items: flex-start; gap: 1rem; padding: 1.5rem; transition: border-color 0.2s; }
a.info-card:hover { border-color: var(--primary); }
.info-card svg { width: 1.5rem; height: 1.5rem; color: var(--primary); flex-shrink: 0; }
.info-card .label { display: block; font-family: var(--font-display); font-size: 1.125rem; text-transform: uppercase; }
.info-card .value { display: block; margin-top: 0.125rem; font-family: var(--font-mono); font-size: 0.875rem; color: var(--muted-foreground); }
.info-card .value.plain { font-family: var(--font-body); }
.info-card .coverage-note { margin-top: 0.5rem; display: block; font-family: var(--font-mono); font-size: 0.75rem; text-transform: uppercase; color: var(--muted-foreground); }
.residencial-note { border-left: 2px solid var(--primary); background-color: color-mix(in oklab, var(--secondary) 40%, transparent); padding: 1.25rem; font-size: 0.875rem; color: var(--muted-foreground); }
@media (min-width: 640px) { .contacto-form { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .contacto-layout { grid-template-columns: 1.2fr 1fr; } }
