:root{
  --primary:#173f73;
  --primary-2:#245b9c;
  --green:#8dac3f;
  --green-dark:#718f2c;
  --ink:#172033;
  --muted:#647087;
  --soft:#f4f7fb;
  --line:#dfe6ef;
  --white:#fff;
  --danger:#c44141;
  --shadow:0 18px 48px rgba(23,63,115,.14);
  --radius:22px;
  --container:1180px;
}


/* =========================================================
   BASE
   ========================================================= */

*,
*::before,
*::after{
  box-sizing:border-box;
}

html{
  scroll-behavior:smooth;
}

body{
  margin:0;
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  color:var(--ink);
  background:#fff;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

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

a{
  color:inherit;
  text-decoration:none;
}

button,
input,
select,
textarea{
  font:inherit;
}

button{
  cursor:pointer;
}

.container{
  width:min(calc(100% - 32px),var(--container));
  margin-inline:auto;
}

.eyebrow{
  display:inline-flex;
  align-items:center;
  gap:8px;
  margin:0 0 14px;
  color:var(--primary);
  font-size:.79rem;
  font-weight:900;
  letter-spacing:.12em;
  text-transform:uppercase;
}

.eyebrow::before{
  content:"";
  width:28px;
  height:3px;
  flex:0 0 28px;
  border-radius:99px;
  background:var(--green);
}

h1,
h2,
h3{
  margin:0;
  line-height:1.08;
  letter-spacing:-.035em;
}

h1{
  font-size:clamp(2.35rem,5.6vw,4.9rem);
}

h2{
  font-size:clamp(2rem,4vw,3.35rem);
}

h3{
  font-size:1.18rem;
}

p{
  margin:0;
}

.muted{
  color:var(--muted);
}

.section{
  padding:92px 0;
}

.section-soft{
  background:var(--soft);
}

.section-head{
  max-width:760px;
  margin-bottom:38px;
}

.section-head p{
  margin-top:16px;
  color:var(--muted);
  font-size:1.05rem;
}

section[id]{
  scroll-margin-top:95px;
}


/* =========================================================
   TOPBAR
   ========================================================= */

.topbar{
  background:var(--primary);
  color:#fff;
  font-size:.9rem;
}

.topbar-inner{
  min-height:40px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
}

.topbar a{
  font-weight:800;
}

.topbar-note{
  opacity:.9;
}


/* =========================================================
   HEADER
   ========================================================= */

.header{
  position:sticky;
  top:0;
  z-index:1000;
  background:rgba(255,255,255,.94);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(223,230,239,.85);
}

.nav{
  min-height:78px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:28px;
}

.logo{
  display:flex;
  align-items:center;
  flex:0 0 auto;
}

.logo img{
  width:178px;
  height:auto;
}

.nav-links{
  display:flex;
  align-items:center;
  gap:28px;
  font-weight:750;
  color:#37445a;
}

.nav-links a{
  transition:color .2s ease;
}

.nav-links a:hover{
  color:var(--primary);
}

.nav-actions{
  display:flex;
  align-items:center;
  gap:12px;
}


/* =========================================================
   BOTONES
   ========================================================= */

.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  min-height:52px;
  padding:0 22px;
  border-radius:14px;
  border:1px solid transparent;
  font-weight:900;
  line-height:1.2;
  text-align:center;
  transition:
    transform .22s ease,
    background-color .22s ease,
    color .22s ease,
    box-shadow .22s ease,
    border-color .22s ease;
}

.btn:hover{
  transform:translateY(-2px);
}

.btn-primary{
  background:var(--primary);
  color:#fff;
  box-shadow:0 12px 28px rgba(23,63,115,.22);
}

.btn-primary:hover{
  background:#10345f;
}

.btn-green{
  background:var(--green);
  color:#122000;
  box-shadow:0 12px 28px rgba(141,172,63,.3);
}

.btn-green:hover{
  background:var(--green-dark);
  color:#fff;
}

.btn-outline{
  border-color:var(--line);
  background:#fff;
  color:var(--primary);
}

.btn-outline:hover{
  border-color:#bdc9d8;
  background:#f8fafc;
}

.btn-sm{
  min-height:44px;
  padding:0 17px;
  border-radius:12px;
  font-size:.94rem;
}


/* =========================================================
   BOTÓN PULSE
   ========================================================= */

.btn-pulse{
  animation:pulse-green 2s infinite;
}

@keyframes pulse-green{
  0%{
    box-shadow:0 0 0 0 rgba(141,172,63,.7);
  }

  70%{
    box-shadow:0 0 0 15px rgba(141,172,63,0);
  }

  100%{
    box-shadow:0 0 0 0 rgba(141,172,63,0);
  }
}


/* =========================================================
   HERO
   ========================================================= */

.hero{
  position:relative;
  overflow:hidden;
  padding:72px 0 76px;
  background:
    radial-gradient(
      circle at 15% 10%,
      rgba(141,172,63,.13),
      transparent 27%
    ),
    linear-gradient(
      135deg,
      #f8fbff 0%,
      #eef4fa 100%
    );
}

.hero::after{
  content:"";
  position:absolute;
  right:-120px;
  bottom:-160px;
  width:440px;
  height:440px;
  border-radius:50%;
  background:rgba(36,91,156,.08);
}

.hero-grid{
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(380px,.95fr);
  gap:56px;
  align-items:center;
}

.hero-copy{
  max-width:690px;
  min-width:0;
}

.hero h1 span{
  color:var(--primary);
}

.hero-lead{
  max-width:650px;
  margin-top:22px;
  color:#4c5a70;
  font-size:clamp(1.05rem,1.8vw,1.24rem);
}

.hero-actions{
  display:flex;
  flex-wrap:wrap;
  gap:13px;
  margin-top:30px;
}

.hero-points{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
  margin-top:32px;
}

.hero-point{
  display:flex;
  align-items:center;
  gap:10px;
  min-width:0;
  color:#334158;
  font-size:.91rem;
  font-weight:800;
}

.check{
  flex:0 0 24px;
  width:24px;
  height:24px;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:#e8f1d2;
  color:#58731b;
  font-size:.78rem;
}

.hero-media{
  position:relative;
  min-width:0;
}

.hero-photo{
  min-height:540px;
  overflow:hidden;
  border-radius:30px;
  background:#dfe7ef;
  box-shadow:var(--shadow);
}

.hero-photo img{
  width:100%;
  height:100%;
  min-height:540px;
  object-fit:cover;
  object-position:center;
}

.floating-card{
  position:absolute;
  left:-34px;
  bottom:34px;
  width:min(310px,85%);
  padding:20px;
  border-radius:18px;
  background:#fff;
  box-shadow:0 18px 45px rgba(17,39,67,.22);
}

.floating-card strong{
  display:block;
  color:var(--primary);
  font-size:1.02rem;
}

.floating-card span{
  display:block;
  margin-top:4px;
  color:var(--muted);
  font-size:.91rem;
}


/* =========================================================
   TRUST STRIP
   ========================================================= */

.trust-strip{
  border-bottom:1px solid var(--line);
  background:#fff;
}

.trust-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:1px;
  background:var(--line);
}

.trust-item{
  min-width:0;
  padding:25px 20px;
  background:#fff;
  text-align:center;
}

.trust-item strong{
  display:block;
  color:var(--primary);
  font-size:1.4rem;
}

.trust-item span{
  display:block;
  margin-top:5px;
  color:var(--muted);
  font-size:.9rem;
  line-height:1.4;
}


/* =========================================================
   CERTIFICACIONES Y AUTORIZACIONES
   ========================================================= */

.certifications{
  width:100%;
  padding:80px 0;
  background:#fff;
  border-bottom:1px solid var(--line);
}

.certifications-head{
  width:100%;
  max-width:900px;
  margin:0 auto 42px;
  text-align:center;
}

.certifications-head .eyebrow{
  justify-content:center;
}

.certifications-head h2{
  margin:0;
  color:var(--ink);
}

.certifications-head > p:last-child{
  max-width:820px;
  margin:14px auto 0;
  color:var(--muted);
  font-size:1.02rem;
  line-height:1.65;
}

.cert-grid{
  width:100%;
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:24px;
  align-items:stretch;
}

.cert-card{
  min-width:0;
  min-height:310px;
  display:flex;
  flex-direction:column;
  align-items:center;
  padding:30px 26px 28px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:22px;
  text-align:center;
  box-shadow:0 12px 34px rgba(23,63,115,.08);
  transition:
    transform .24s ease,
    box-shadow .24s ease,
    border-color .24s ease;
}

.cert-card:hover{
  transform:translateY(-5px);
  border-color:#c8d5e4;
  box-shadow:var(--shadow);
}

.cert-logo{
  width:100%;
  height:125px;
  min-height:125px;
  display:flex;
  align-items:center;
  justify-content:center;
  margin:0 0 22px;
}

.cert-logo img{
  display:block;
  width:auto !important;
  height:auto !important;
  max-width:100%;
  max-height:105px;
  margin:0 auto;
  object-fit:contain;
}

/* REPSE */

.cert-card:nth-child(1) .cert-logo img{
  width:220px !important;
  max-width:85%;
}

/* CONOCER */

.cert-card:nth-child(2) .cert-logo img{
  width:150px !important;
  max-width:75%;
}

/* COFEPRIS */

.cert-card:nth-child(3) .cert-logo img{
  width:120px !important;
  max-width:65%;
}

.cert-card h3{
  margin:0;
  color:var(--primary);
  font-size:1.24rem;
  font-weight:800;
  line-height:1.25;
  letter-spacing:-.02em;
}

.cert-card p{
  max-width:340px;
  margin:10px auto 0;
  color:var(--muted);
  font-size:.94rem;
  line-height:1.65;
}

.cert-benefits{
  width:100%;
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:12px;
  margin-top:30px;
}

.cert-benefit{
  min-width:0;
  min-height:52px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:10px 12px;
  border:1px solid #e4eaf1;
  border-radius:13px;
  background:var(--soft);
  color:#39465b;
  font-size:.84rem;
  font-weight:850;
  line-height:1.3;
  text-align:center;
}


/* =========================================================
   CARDS GENERALES
   ========================================================= */

.card{
  min-width:0;
  padding:27px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:var(--radius);
  transition:
    transform .24s ease,
    box-shadow .24s ease,
    border-color .24s ease;
}

.card:hover{
  transform:translateY(-5px);
  border-color:#cbd8e6;
  box-shadow:var(--shadow);
}

.icon{
  width:52px;
  height:52px;
  display:grid;
  place-items:center;
  margin-bottom:20px;
  border-radius:15px;
  background:#eef4fb;
  color:var(--primary);
  font-size:1.5rem;
}

.card p{
  margin-top:10px;
  color:var(--muted);
  font-size:.96rem;
}

.card-link{
  display:inline-flex;
  align-items:center;
  gap:7px;
  margin-top:18px;
  color:var(--primary);
  font-size:.93rem;
  font-weight:900;
  transition:color .2s ease;
}

.card-link:hover{
  color:var(--primary-2);
}


/* =========================================================
   SPLIT / PROCESO
   ========================================================= */

.split{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:58px;
  align-items:center;
}

.split > *{
  min-width:0;
}

.photo-card{
  overflow:hidden;
  border-radius:28px;
  box-shadow:var(--shadow);
}

.photo-card img{
  width:100%;
  min-height:520px;
  object-fit:cover;
  object-position:center;
}

.process-intro{
  margin-top:18px;
}

.feature-list{
  display:grid;
  gap:18px;
  margin-top:28px;
}

.feature{
  display:grid;
  grid-template-columns:45px minmax(0,1fr);
  gap:14px;
  align-items:start;
}

.feature-number{
  width:45px;
  height:45px;
  display:grid;
  place-items:center;
  border-radius:13px;
  background:var(--primary);
  color:#fff;
  font-weight:900;
}

.feature p{
  margin-top:5px;
  color:var(--muted);
  font-size:.95rem;
}

.process-cta{
  margin-top:30px;
}


/* =========================================================
   SERVICIOS
   ========================================================= */

.cards{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:22px;
}

.service-card{
  min-width:0;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  padding:0;
  background:#fff;
  border:1px solid var(--line);
  border-radius:var(--radius);
  transition:
    transform .24s ease,
    box-shadow .24s ease,
    border-color .24s ease;
}

.service-card:hover{
  transform:translateY(-5px);
  border-color:#cbd8e6;
  box-shadow:var(--shadow);
}

.service-card-media{
  width:100%;
  aspect-ratio:16 / 10;
  overflow:hidden;
  background:#edf2f7;
}

.service-card-media img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  transition:transform .4s ease;
}

.service-card:hover .service-card-media img{
  transform:scale(1.04);
}

.service-card-body{
  flex:1;
  min-width:0;
  display:flex;
  flex-direction:column;
  padding:0 27px 27px;
}

.service-card .icon{
  position:relative;
  z-index:2;
  width:56px;
  height:56px;
  margin-top:-28px;
  margin-bottom:18px;
  border:1px solid var(--line);
  border-radius:16px;
  background:#fff;
  box-shadow:0 10px 24px rgba(23,63,115,.14);
  font-size:1.45rem;
}

.service-card h3{
  color:var(--ink);
  font-size:1.16rem;
}

.service-card p{
  margin-top:10px;
  color:var(--muted);
  font-size:.96rem;
  line-height:1.65;
}

.service-card .card-link{
  margin-top:auto;
  padding-top:18px;
}

.service-links{
  display:flex;
  flex-wrap:wrap;
  gap:8px 16px;
  margin-top:auto;
  padding-top:18px;
}

.service-links .card-link{
  margin-top:0;
  padding-top:0;
}


/* =========================================================
   SECTORES
   ========================================================= */

.sector-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:22px;
  align-items:stretch;
}

.sector-card{
  min-width:0;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  border:1px solid var(--line);
  border-radius:24px;
  background:#fff;
  box-shadow:0 14px 36px rgba(23,63,115,.10);
  transition:
    transform .24s ease,
    box-shadow .24s ease;
}

.sector-card:hover{
  transform:translateY(-5px);
  box-shadow:var(--shadow);
}

.sector-card-media{
  width:100%;
  aspect-ratio:16 / 10;
  overflow:hidden;
  background:#e8edf3;
}

.sector-card-media img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  transition:transform .4s ease;
}

.sector-card:hover .sector-card-media img{
  transform:scale(1.035);
}

.sector-card-content{
  flex:1;
  min-height:190px;
  padding:24px 25px 26px;
  color:#fff;
}

.sector-card:nth-child(1) .sector-card-content{
  background:linear-gradient(135deg,#245b9c 0%,#0d2b4e 100%);
}

.sector-card:nth-child(2) .sector-card-content{
  background:linear-gradient(135deg,#7d9f38 0%,#18383d 100%);
}

.sector-card:nth-child(3) .sector-card-content{
  background:linear-gradient(135deg,#3b4f70 0%,#102744 100%);
}

.sector-card-heading{
  display:flex;
  align-items:center;
  gap:13px;
}

.sector-card-icon{
  flex:0 0 48px;
  width:48px;
  height:48px;
  display:grid;
  place-items:center;
  border-radius:15px;
  background:rgba(255,255,255,.16);
  color:#fff;
}

.sector-card-icon svg{
  width:27px;
  height:27px;
  stroke:currentColor;
  stroke-linecap:round;
  stroke-linejoin:round;
}

.sector-card h3{
  margin:0;
  color:#fff;
  font-size:1.45rem;
  letter-spacing:-.02em;
}

.sector-card p{
  margin-top:14px;
  color:rgba(255,255,255,.86);
  font-size:.96rem;
  line-height:1.65;
}


/* =========================================================
   REVIEWS
   ========================================================= */

.reviews{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:22px;
}

.review{
  min-width:0;
  padding:28px;
  border:1px solid var(--line);
  border-radius:22px;
  background:#fff;
}

.stars{
  margin-bottom:16px;
  color:#e2a400;
  letter-spacing:3px;
}

.review p{
  color:#46546b;
}

.review strong{
  display:block;
  margin-top:20px;
  color:var(--primary);
}

.review small{
  display:block;
  margin-top:2px;
  color:var(--muted);
}


/* =========================================================
   COBERTURA
   ========================================================= */

.coverage-intro{
  margin-top:18px;
}

.coverage{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin-top:26px;
}

.coverage span{
  padding:9px 14px;
  border:1px solid var(--line);
  border-radius:999px;
  background:#fff;
  color:#45536a;
  font-size:.9rem;
  font-weight:800;
}

.coverage-card .icon{
  margin-bottom:18px;
}

.coverage-card p{
  margin-top:10px;
}

.coverage-btn{
  margin-top:22px;
}


/* =========================================================
   COTIZACIÓN
   ========================================================= */

.quote{
  position:relative;
  overflow:hidden;
  background:linear-gradient(135deg,#12365f,#1d548e);
  color:#fff;
}

.quote::before{
  content:"";
  position:absolute;
  left:-120px;
  top:-160px;
  width:380px;
  height:380px;
  border-radius:50%;
  background:rgba(141,172,63,.14);
}

.quote-grid{
  position:relative;
  display:grid;
  grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);
  gap:52px;
  align-items:start;
}

.quote-copy{
  min-width:0;
}

.quote .eyebrow{
  color:#cce699;
}

.quote h2{
  max-width:600px;
}

.quote-copy > p{
  margin-top:18px;
  color:rgba(255,255,255,.8);
  font-size:1.05rem;
}

.contact-mini{
  display:grid;
  gap:12px;
  margin-top:30px;
}

.contact-mini a{
  font-weight:900;
}


/* =========================================================
   FORMULARIO
   ========================================================= */

.form-card{
  position:relative;
  min-width:0;
  padding:30px;
  border-radius:26px;
  background:#fff;
  color:var(--ink);
  box-shadow:0 25px 70px rgba(0,0,0,.23);
}

.form-card h3{
  margin:0;
  color:var(--primary);
  font-size:1.55rem;
}

.form-card > p{
  margin-top:8px;
  color:var(--muted);
}

.form-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:15px;
  margin-top:22px;
}

.field{
  min-width:0;
  display:grid;
  gap:7px;
}

.field.full{
  grid-column:1 / -1;
}

label{
  color:#39465b;
  font-size:.86rem;
  font-weight:900;
}

input,
select,
textarea{
  width:100%;
  min-width:0;
  padding:13px 14px;
  border:1px solid #d7e0ea;
  border-radius:12px;
  outline:none;
  background:#fff;
  color:var(--ink);
  transition:
    border-color .2s ease,
    box-shadow .2s ease,
    background-color .2s ease;
}

input:hover,
select:hover,
textarea:hover{
  border-color:#bdc9d8;
}

input:focus,
select:focus,
textarea:focus{
  border-color:var(--primary-2);
  box-shadow:0 0 0 4px rgba(36,91,156,.1);
}

input::placeholder,
textarea::placeholder{
  color:#929cad;
  opacity:1;
}

textarea{
  min-height:105px;
  resize:vertical;
}

input[aria-invalid="true"],
select[aria-invalid="true"],
textarea[aria-invalid="true"]{
  border-color:var(--danger);
  box-shadow:0 0 0 3px rgba(196,65,65,.08);
}


/* =========================================================
   HONEYPOT
   ========================================================= */

.hp-field{
  position:absolute !important;
  left:-10000px !important;
  top:auto !important;
  width:1px !important;
  height:1px !important;
  overflow:hidden !important;
  opacity:0 !important;
  pointer-events:none !important;
}


/* =========================================================
   RECAPTCHA
   ========================================================= */

.recaptcha-shell{
  position:relative;
  width:100%;
  min-height:78px;
  margin-top:16px;
  overflow:visible;
}

.recaptcha-container{
  width:100%;
  min-height:78px;
}

.recaptcha-container > div{
  max-width:100%;
}

.recaptcha-status{
  display:block;
  min-height:0;
  margin:8px 0 0;
  color:var(--danger);
  font-size:.84rem;
  font-weight:800;
  line-height:1.45;
}

.recaptcha-status[hidden]{
  display:none !important;
}


/* =========================================================
   ENVÍO FORMULARIO
   ========================================================= */

.form-submit{
  width:100%;
  min-height:54px;
  margin-top:16px;
  font-size:1.05rem;
}

.form-submit:disabled{
  opacity:.65;
  cursor:not-allowed;
  transform:none;
  box-shadow:none;
}

.form-submit.is-loading{
  position:relative;
  pointer-events:none;
  color:transparent !important;
}

.form-submit.is-loading::after{
  content:"";
  position:absolute;
  top:50%;
  left:50%;
  width:20px;
  height:20px;
  margin:-10px 0 0 -10px;
  border:3px solid rgba(23,32,51,.25);
  border-top-color:#172033;
  border-radius:50%;
  animation:formSpinner .75s linear infinite;
}

@keyframes formSpinner{
  to{
    transform:rotate(360deg);
  }
}


/* =========================================================
   ESTADO FORMULARIO
   ========================================================= */

.form-status{
  display:block;
  margin-top:12px;
  padding:11px 13px;
  border:1px solid #f0cccc;
  border-radius:10px;
  background:#fff2f2;
  color:var(--danger);
  font-size:.88rem;
  font-weight:800;
  line-height:1.45;
}

.form-status:empty,
.form-status[hidden]{
  display:none;
}

.form-status.success{
  border-color:#d8e7b5;
  background:#f2f8e5;
  color:#436514;
}

.form-status.error{
  border-color:#f0cccc;
  background:#fff2f2;
  color:var(--danger);
}

.privacy{
  margin-top:10px;
  color:#7a8497;
  text-align:center;
  font-size:.78rem;
  line-height:1.45;
}

.privacy-link{
  color:var(--primary);
  font-weight:800;
  text-decoration:underline;
  text-underline-offset:2px;
}


/* =========================================================
   FAQ
   ========================================================= */

.faq{
  display:grid;
  gap:12px;
  max-width:860px;
}

details{
  padding:0 20px;
  border:1px solid var(--line);
  border-radius:16px;
  background:#fff;
}

summary{
  position:relative;
  list-style:none;
  cursor:pointer;
  padding:20px 35px 20px 0;
  color:#2b3950;
  font-weight:900;
}

summary::-webkit-details-marker{
  display:none;
}

summary::after{
  content:"+";
  position:absolute;
  right:0;
  top:50%;
  transform:translateY(-50%);
  color:var(--primary);
  font-size:1.4rem;
  font-weight:900;
}

details[open] summary::after{
  content:"−";
}

details p{
  padding:0 0 20px;
  color:var(--muted);
}


/* =========================================================
   FOOTER
   ========================================================= */

footer{
  padding:50px 0 100px;
  background:#0d233e;
  color:#fff;
}

.footer-grid{
  display:grid;
  grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr) minmax(0,.8fr);
  gap:40px;
}

.footer-grid > *{
  min-width:0;
}

.footer-logo{
  width:180px;
  height:auto;
  opacity:1;
}

.footer-copy{
  max-width:430px;
  margin-top:18px;
  color:rgba(255,255,255,.68);
}

.footer-title{
  margin-bottom:15px;
  font-weight:900;
}

.footer-links{
  display:grid;
  gap:9px;
  color:rgba(255,255,255,.72);
}

.footer-links a{
  transition:color .2s ease;
}

.footer-links a:hover{
  color:#fff;
}

.copyright{
  display:flex;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:16px;
  margin-top:38px;
  padding-top:24px;
  border-top:1px solid rgba(255,255,255,.12);
  color:rgba(255,255,255,.55);
  font-size:.86rem;
}

.copyright a{
  transition:color .2s ease;
}

.copyright a:hover{
  color:#fff;
}


/* =========================================================
   MOBILE ACTION BAR
   ========================================================= */

.mobile-bar{
  display:none;
  position:fixed;
  left:12px;
  right:12px;
  bottom:12px;
  z-index:1200;
  grid-template-columns:1fr 1fr;
  gap:8px;
  padding:8px;
  border:1px solid var(--line);
  border-radius:17px;
  background:rgba(255,255,255,.96);
  box-shadow:0 12px 38px rgba(15,31,54,.25);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}

.mobile-bar .btn{
  min-height:48px;
  padding:0 10px;
  font-size:.86rem;
}


/* =========================================================
   WHATSAPP FLOAT
   ========================================================= */

.whatsapp-float{
  position:fixed;
  right:22px;
  bottom:22px;
  z-index:1400;
  display:flex;
  align-items:center;
  gap:11px;
  min-height:58px;
  padding:0 20px 0 14px;
  border-radius:999px;
  background:#25d366;
  color:#fff;
  box-shadow:0 16px 36px rgba(20,91,51,.35);
  font-weight:900;
  transition:
    transform .22s ease,
    background-color .22s ease;
}

.whatsapp-float:hover{
  transform:translateY(-3px) scale(1.02);
  background:#20bd5a;
}

.whatsapp-icon{
  width:38px;
  height:38px;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:rgba(255,255,255,.18);
  font-size:1.35rem;
}

.whatsapp-float::after{
  content:"";
  position:absolute;
  inset:-6px;
  border:2px solid rgba(37,211,102,.35);
  border-radius:999px;
  animation:whatsappPulse 2s infinite;
  pointer-events:none;
}

@keyframes whatsappPulse{
  0%{
    transform:scale(.92);
    opacity:.9;
  }

  70%{
    transform:scale(1.12);
    opacity:0;
  }

  100%{
    transform:scale(1.12);
    opacity:0;
  }
}


/* =========================================================
   PROTECCIÓN CONTRA OVERFLOW
   ========================================================= */

.hero-copy,
.hero-media,
.quote-copy,
.form-card,
.split > *,
.footer-grid > *,
.cert-card,
.service-card,
.sector-card,
.review{
  min-width:0;
}


/* =========================================================
   ACCESIBILIDAD
   ========================================================= */

a:focus-visible,
button:focus-visible,
summary:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible{
  outline:3px solid rgba(141,172,63,.65);
  outline-offset:3px;
}


/* =========================================================
   TABLET
   ========================================================= */

@media (max-width:980px){

  .nav-links{
    display:none;
  }

  .hero-grid,
  .split,
  .quote-grid{
    grid-template-columns:1fr;
  }

  .hero-grid{
    gap:38px;
  }

  .hero-photo,
  .hero-photo img{
    min-height:430px;
  }

  .floating-card{
    left:18px;
  }

  .cards{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .reviews{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .review:last-child{
    grid-column:1 / -1;
  }

  .trust-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .footer-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .footer-grid > div:first-child{
    grid-column:1 / -1;
  }

  /* Certificaciones */

  .certifications{
    padding:68px 0;
  }

  .cert-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .cert-card:last-child{
    grid-column:1 / -1;
    width:100%;
    max-width:560px;
    justify-self:center;
  }

  .cert-benefits{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .cert-benefit:last-child{
    grid-column:1 / -1;
  }

  /* Sectores */

  .sector-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .sector-card:last-child{
    grid-column:1 / -1;
    width:100%;
    max-width:700px;
    justify-self:center;
  }
}


/* =========================================================
   MÓVIL
   ========================================================= */

@media (max-width:680px){

  body{
    padding-bottom:82px;
  }

  .container{
    width:min(calc(100% - 28px),var(--container));
  }

  .topbar-note{
    display:none;
  }

  .topbar-inner{
    justify-content:center;
    text-align:center;
  }

  .nav{
    min-height:68px;
    gap:12px;
  }

  .logo img{
    width:145px;
  }

  .nav-actions .btn-outline{
    display:none;
  }

  .nav-actions .btn-primary{
    min-height:42px;
    padding:0 13px;
    font-size:.82rem;
  }

  /* Hero */

  .hero{
    padding:46px 0 52px;
  }

  .hero-grid{
    gap:32px;
  }

  .hero-actions{
    display:grid;
    grid-template-columns:1fr;
  }

  .hero-actions .btn{
    width:100%;
  }

  .hero-points{
    grid-template-columns:1fr;
  }

  .hero-photo,
  .hero-photo img{
    min-height:340px;
  }

  .floating-card{
    left:15px;
    right:15px;
    bottom:15px;
    width:auto;
    padding:16px;
  }

  /* Secciones */

  .section{
    padding:66px 0;
  }

  .section-head{
    margin-bottom:30px;
  }

  /* Trust */

  .trust-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .trust-item{
    padding:18px 8px;
  }

  .trust-item strong{
    font-size:1.1rem;
  }

  .trust-item span{
    font-size:.82rem;
  }

  /* Certificaciones */

  .certifications{
    padding:58px 0;
  }

  .certifications-head{
    margin-bottom:30px;
    text-align:left;
  }

  .certifications-head .eyebrow{
    justify-content:flex-start;
  }

  .certifications-head > p:last-child{
    margin-left:0;
    margin-right:0;
  }

  .cert-grid{
    grid-template-columns:1fr;
    gap:16px;
  }

  .cert-card,
  .cert-card:last-child{
    grid-column:auto;
    width:100%;
    max-width:none;
    min-height:auto;
    padding:24px 20px;
  }

  .cert-logo{
    height:105px;
    min-height:105px;
    margin-bottom:18px;
  }

  .cert-card:nth-child(1) .cert-logo img{
    width:200px !important;
    max-width:85%;
  }

  .cert-card:nth-child(2) .cert-logo img{
    width:135px !important;
    max-width:75%;
  }

  .cert-card:nth-child(3) .cert-logo img{
    width:110px !important;
    max-width:65%;
  }

  .cert-benefits{
    grid-template-columns:1fr;
    gap:9px;
    margin-top:20px;
  }

  .cert-benefit,
  .cert-benefit:last-child{
    grid-column:auto;
    justify-content:flex-start;
    min-height:48px;
    text-align:left;
  }

  /* Servicios */

  .cards{
    grid-template-columns:1fr;
  }

  .service-card-media{
    aspect-ratio:16 / 9;
  }

  .service-card-body{
    padding:0 22px 23px;
  }

  /* Proceso */

  .photo-card img{
    min-height:360px;
  }

  /* Sectores */

  .sector-grid{
    grid-template-columns:1fr;
  }

  .sector-card:last-child{
    grid-column:auto;
    width:100%;
    max-width:none;
  }

  .sector-card-media{
    aspect-ratio:16 / 9;
  }

  .sector-card-content{
    min-height:auto;
    padding:22px;
  }

  /* Reviews */

  .reviews{
    grid-template-columns:1fr;
  }

  .review:last-child{
    grid-column:auto;
  }

  /* Formulario */

  .form-card{
    padding:22px;
    border-radius:21px;
  }

  .form-card h3{
    font-size:1.4rem;
  }

  .form-grid{
    grid-template-columns:1fr;
    gap:14px;
    margin-top:20px;
  }

  .field.full{
    grid-column:auto;
  }

  input,
  select,
  textarea{
    font-size:16px;
  }

  /* reCAPTCHA */

  .recaptcha-shell{
    min-height:72px;
    overflow:hidden;
  }

  .recaptcha-container{
    width:108.7%;
    min-height:72px;
    transform:scale(.92);
    transform-origin:top left;
  }

  .form-submit{
    min-height:54px;
    font-size:1rem;
  }

  /* Footer */

  .footer-grid{
    grid-template-columns:1fr;
  }

  .footer-grid > div:first-child{
    grid-column:auto;
  }

  .copyright{
    align-items:flex-start;
    flex-direction:column;
  }

  /* Barra móvil */

  .mobile-bar{
    display:grid;
  }

  /* WhatsApp */

  .whatsapp-float{
    right:16px;
    bottom:92px;
    width:58px;
    height:58px;
    min-height:58px;
    padding:0;
    justify-content:center;
  }

  .whatsapp-float span:last-child{
    display:none;
  }

  .whatsapp-icon{
    width:44px;
    height:44px;
    background:transparent;
  }
}


/* =========================================================
   TELÉFONOS PEQUEÑOS
   ========================================================= */

@media (max-width:380px){

  .container{
    width:min(calc(100% - 24px),var(--container));
  }

  .logo img{
    width:132px;
  }

  .nav-actions .btn-primary{
    padding:0 10px;
    font-size:.76rem;
  }

  .form-card{
    padding:18px;
  }

  .recaptcha-shell{
    min-height:68px;
  }

  .recaptcha-container{
    width:119%;
    transform:scale(.84);
  }

  .trust-item{
    padding:16px 6px;
  }

  .trust-item strong{
    font-size:1rem;
  }

  .trust-item span{
    font-size:.78rem;
  }

  .cert-card{
    padding:22px 16px;
  }
}


/* =========================================================
   REDUCIR ANIMACIONES
   ========================================================= */

@media (prefers-reduced-motion:reduce){

  html{
    scroll-behavior:auto;
  }

  *,
  *::before,
  *::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
}