/* Brand tokens and shared layout */
:root{--navy:#122e43;--teal:#216c70;--text:#4c5e69;--line:#dce3e6;--light:#f2f5f5;--white:#fff;--container:1240px}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;background:var(--white);color:var(--navy);font-family:Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.65}a{color:inherit;text-decoration:none}button{font:inherit}a,button,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid #399b9a;outline-offset:6px}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.15;font-weight:500}p{color:var(--text)}.container{width:min(var(--container),calc(100% - 96px));margin-inline:auto}.section{padding-block:112px}.eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.16em;color:var(--teal);margin-bottom:28px}h2{font-size:clamp(2rem,3.2vw,2.85rem);letter-spacing:-.035em}h3{font-size:1.4rem;letter-spacing:-.025em}.skip-link{position:fixed;top:-100px;left:20px;z-index:10;padding:12px;background:white}.skip-link:focus{top:12px}
/* Navigation */
.site-header{position:sticky;top:0;background:rgba(255,255,255,.97);z-index:5;border-bottom:1px solid var(--line)}.header-inner{min-height:92px;display:flex;align-items:center;justify-content:space-between;gap:24px}.wordmark{display:inline-flex;align-items:baseline;font-size:1.9rem;letter-spacing:-.065em;font-weight:800;line-height:1}.wordmark span{font-weight:400}.wordmark i{display:block;width:6px;height:6px;background:var(--teal);margin-left:5px}nav{display:flex;align-items:center;gap:34px}nav a{font-size:.875rem;transition:color .2s}nav a:hover,.text-link:hover{color:var(--teal)}nav .nav-contact{border-left:1px solid var(--line);padding-left:30px}.nav-contact span{margin-left:22px}.menu-toggle{background:none;border:1px solid var(--line);padding:8px 12px;color:var(--navy)}.menu-toggle:not([hidden]){display:none}
/* Hero: photography-ready frame; approved image uses .hero-photo. */

.hero {
  padding-top: 64px;
  display: grid;
  grid-template-columns: minmax(0, 1.18fr) minmax(0, 1fr);
  column-gap: 56px;
  align-items: center;
}
.hero-copy { padding: 20px 0 32px; min-width: 0; }
.hero .eyebrow { margin-bottom: 12px; }
.brand-description { font-size: .8125rem; color: #63717a; margin-bottom: 30px; }
h1 {
  font-size: clamp(2.5rem, 4.1vw, 3.625rem);
  letter-spacing: -.05em;
  line-height: 1.12;
  max-width: 660px;
}
h1 span { color: var(--teal); }
.hero-description { margin-top: 28px; max-width: 490px; font-size: 1rem; line-height: 1.8; }
.hero-actions { display: flex; align-items: center; gap: 28px; flex-wrap: wrap; margin-top: 36px; }
.button { display: inline-flex; align-items: center; gap: 28px; padding: 16px 22px; background: var(--navy); color: white; font-size: .875rem; transition: background .2s, transform .2s; }
.button:hover { background: var(--teal); transform: translateY(-2px); }
.text-link { font-size: .875rem; transition: color .2s; }
.text-link span { margin-left: 12px; }
.hero-visual {
  width: 100%;
  aspect-ratio: 1 / 1;
  max-height: 570px;
  background: #edf0f1;
  border: 1px solid #e1e6e8;
  border-radius: 3px;
  position: relative;
  overflow: hidden;
}
.hero-photo { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.hero-baseline{grid-column:1/-1;margin-top:44px;border-top:1px solid var(--line);padding:23px 0 28px;display:flex;justify-content:space-between;font-size:.75rem;color:var(--text)}.hero-baseline a span{margin-left:20px}
/* Editorial sections */
.about{background:var(--light);margin-top:30px}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:120px}.about h2{max-width:500px}.about-copy{padding-top:45px}.about-copy p+p{margin-top:22px}.lead{font-size:1.5rem;line-height:1.4;color:var(--navy)}.about-note{border-top:1px solid #cbd6d9;margin-top:32px;padding-top:24px;font-size:.875rem}.about-note span{color:var(--teal);margin-right:16px}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:60px;margin-bottom:52px}.section-heading>p{max-width:360px}.services-grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}.service-card{padding:30px 25px 28px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;flex-direction:column;transition:background .25s}.service-card:hover{background:var(--light)}.card-number{color:var(--teal);font-size:.8rem;margin-bottom:44px}.service-card h3{min-height:84px;line-height:1.3;font-size:1.3rem}.service-card p{font-size:.875rem;margin-top:18px;margin-bottom:40px;line-height:1.8}.card-tag{font-size:.625rem;letter-spacing:.09em;color:var(--teal);margin-top:auto}.sectors{background:var(--light)}.sector-grid{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}.sector-grid li{background:var(--light);padding:32px;font-size:1.125rem}.why{display:grid;grid-template-columns:.75fr 1.5fr;gap:100px}.why-intro>p:last-child{margin-top:28px}.advantages{display:grid;grid-template-columns:1fr 1fr;gap:36px}.advantages article{border-top:1px solid var(--line);padding-top:24px;display:flex;gap:18px}.advantages article>span{font-size:.7rem;color:var(--teal);padding-top:4px}.advantages h3{font-size:1.0625rem;line-height:1.4}.advantages p{font-size:.875rem;margin-top:12px}
/* Contact and footer */
.contact{background:var(--navy);color:white}.contact-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:140px}.contact .eyebrow{color:#a2cecc}.contact h2{max-width:540px;font-size:clamp(2.3rem,3.7vw,3.4rem)}.contact p{color:#bfccd5}.contact .contact-brand{margin-top:38px;margin-bottom:6px;color:white;letter-spacing:.06em;font-size:1.1rem}.contact-grid>div>p:last-child{font-size:.875rem}.contact-details{padding-top:48px}.contact-intro{font-size:1.15rem;margin-bottom:28px}.contact dl{margin:0}.contact dl>div{border-top:1px solid #3b5263;padding:20px 0;display:flex;justify-content:space-between;gap:20px}.contact dt{font-size:.875rem}.contact dd{font-size:.8125rem;color:#bfccd5;margin:0}.contact-note{font-size:.75rem;margin-top:24px}.site-footer{padding-block:48px 28px}.footer-top{display:flex;align-items:center;gap:30px;padding-bottom:40px}.footer-top p{font-size:.8125rem}.footer-top>span{margin-left:auto;font-size:.6875rem;letter-spacing:.15em}.footer-bottom{border-top:1px solid var(--line);padding-top:24px;display:flex;justify-content:space-between;gap:32px;font-size:.75rem}.legal-links{display:flex;gap:26px}.legal-links details{max-width:240px}.legal-links summary{cursor:pointer}.legal-links details p{margin-top:14px}.reveal{opacity:1}.reveal.pending{opacity:0;transform:translateY(18px)}.reveal{transition:opacity .65s,transform .65s}
@media(min-width:1500px){.hero{padding-top:90px}}
@media(max-width:1100px){.container{width:calc(100% - 64px)}.hero{gap:32px}.hero-actions{gap:22px}.about-grid{gap:64px}.services-grid{grid-template-columns:repeat(2,1fr)}.service-card h3{min-height:0}.service-card{padding:32px}.card-number{margin-bottom:28px}.why{gap:50px}.contact-grid{gap:64px}}
@media(max-width:760px){html{scroll-padding-top:92px}.container{width:calc(100% - 40px)}.section{padding-block:72px}.header-inner{min-height:76px;flex-wrap:wrap;gap:0}.wordmark{font-size:1.7rem}.menu-toggle:not([hidden]){display:block}nav{width:100%;flex-wrap:wrap;gap:20px;padding:20px 0}nav .nav-contact{border:0;padding-left:0}.js nav{display:none}.js nav.is-open{display:flex;flex-direction:column;align-items:stretch;gap:0}.js nav a{padding:12px 0}.nav-contact span{margin-left:10px}.hero{padding-top:44px;grid-template-columns:1fr;gap:0}.hero-copy{padding:0 0 40px}h1{font-size:clamp(2.6rem,9.3vw,4rem);max-width:560px}.hero-description{max-width:540px}.hero .eyebrow{font-size:.6875rem}.hero-visual{aspect-ratio:4/3;max-height:none}.hero-baseline{margin-top:24px;font-size:.6875rem;gap:20px}.hero-baseline>span{max-width:180px}.hero-baseline a{white-space:nowrap}.about{margin-top:8px}.about-grid,.why,.contact-grid{grid-template-columns:1fr;gap:36px}.about-copy{padding-top:0}.section-heading{display:block;margin-bottom:36px}.section-heading>p{margin-top:24px;max-width:540px}.eyebrow{margin-bottom:20px}.services-grid{grid-template-columns:1fr 1fr}.service-card{padding:24px 20px}.service-card h3{font-size:1.15rem}.sector-grid{grid-template-columns:1fr 1fr}.sector-grid li{padding:25px 20px;font-size:1rem}.advantages{gap:28px}.why-intro br{display:none}.contact-details{padding-top:0}.footer-top{flex-wrap:wrap;gap:18px}.footer-top p{width:100%;order:3}.footer-bottom{flex-direction:column;gap:20px}.legal-links{flex-wrap:wrap}}
@media(max-width:420px){.services-grid,.advantages{grid-template-columns:1fr}.hero-actions{align-items:flex-start;flex-direction:column}.hero-baseline{font-size:.625rem}.hero-baseline a span{margin-left:7px}.contact dl>div{flex-direction:column;gap:5px}.sector-grid li{padding:22px 14px;font-size:.9375rem}.service-card h3 br{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}.reveal.pending{opacity:1;transform:none}.button:hover{transform:none}}

/* Stack the hero before landscape copy or photography becomes cramped. */
@media (min-width: 761px) and (max-width: 900px) {
  .hero { grid-template-columns: 1fr; gap: 0; padding-top: 48px; }
  .hero-copy { padding: 0 0 40px; }
  .hero h1 { font-size: 3.25rem; }
  .hero-visual { aspect-ratio: 4 / 3; max-height: none; }
  nav { gap: 22px; }
  nav .nav-contact { padding-left: 20px; }
  .nav-contact span { margin-left: 12px; }
}
@media (max-width: 760px) {
  .hero h1 { font-size: clamp(2.375rem, 7.7vw, 3.5rem); max-width: 620px; }
  .hero .brand-description { font-size: .8125rem; margin-bottom: 24px; }
}
@media (max-width: 480px) {
  .hero h1 { font-size: clamp(2rem, 9.3vw, 2.375rem); max-width: 350px; }
  .hero-actions { flex-direction: column; align-items: flex-start; gap: 22px; }
}

/* Photography: stable frames reserve space before image load. */
.hero-photo { position: absolute; inset: 0; object-position: 50% 50%; }
.about-grid { grid-template-columns: minmax(0, .45fr) minmax(0, .55fr); column-gap: 80px; row-gap: 44px; align-items: center; }
.about-heading { grid-column: 1 / -1; }
.about-heading h2 { max-width: 760px; }
.about-visual { position: relative; aspect-ratio: 4 / 3; overflow: hidden; border-radius: 3px; background: #e5e9e7; }
.about-photo { position: absolute; inset: 0; display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%; }
.about-copy { padding-top: 0; }
/* Two equal groups keep the brand rail continuous at the loop boundary. */
.brands { padding-block: 84px; border-bottom: 1px solid var(--line); }
.brands-heading { display: flex; justify-content: space-between; align-items: flex-end; gap: 32px; }
.brands h2 { max-width: 760px; font-size: clamp(1.75rem, 2.5vw, 2.3rem); }
.brands-heading p { margin-top: 18px; font-size: .9375rem; }
.brand-marquee { overflow: hidden; margin-top: 40px; mask-image: linear-gradient(to right, transparent, black 48px, black calc(100% - 48px), transparent); }
.brand-track { display: flex; width: max-content; }
.js .brand-track { animation: brand-drift 32s linear infinite; }
.brand-list { display: flex; flex-shrink: 0; gap: 64px; padding: 0 64px 0 0; margin: 0; list-style: none; }
.brand-list li { width: 170px; height: 84px; display: flex; align-items: center; justify-content: center; }
.brand-list img { display: block; width: auto; height: auto; max-width: 146px; max-height: 48px; object-fit: contain; filter: grayscale(1); opacity: .72; transition: filter .25s, opacity .25s; }
.brand-list .brand-oxxo { max-width: 96px; }
.brand-list .brand-seat { width: 44px; }
.brand-list .brand-perro { width: 39px; }
.brand-list .brand-lala { max-height: 64px; }
.brand-list img:hover { filter: grayscale(0); opacity: 1; }
.brand-marquee:hover .brand-track { animation-play-state: paused; }
@keyframes brand-drift { to { transform: translateX(-50%); } }
html:not(.js) .brand-track { width: 100%; }
html:not(.js) .brand-list { flex-wrap: wrap; justify-content: center; padding: 0; }
html:not(.js) .brand-list[aria-hidden] { display: none; }
/* Contact fields retain the navy section and clear Spanish feedback. */
.contact-grid { gap: 80px; grid-template-columns: 1fr 1fr; }
.contact-form { min-width: 0; }
.contact-form .contact-intro { margin-bottom: 6px; }
.form-hint { font-size: .75rem; margin-bottom: 24px; }
.form-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 22px 20px; }
.form-field { min-width: 0; }
.form-field label { display: block; font-size: .8125rem; margin-bottom: 8px; }
.form-field input, .form-field textarea { display: block; width: 100%; border: 1px solid #637a8a; border-radius: 2px; background: #1a384c; color: white; padding: 12px; font: inherit; line-height: 1.5; }
.form-field textarea { resize: vertical; min-height: 134px; }
.form-field input:focus-visible, .form-field textarea:focus-visible { outline: 2px solid #a2cecc; outline-offset: 3px; }
.form-field [aria-invalid="true"] { border-color: #ffc2b6; }
.form-message { grid-column: 1 / -1; }
.field-error { display: block; color: #ffc2b6; font-size: .75rem; margin-top: 4px; }
.field-error:empty { display: none; }
.message-meta { display: flex; justify-content: space-between; gap: 16px; padding-top: 6px; font-size: .75rem; color: #bfccd5; }
#mensaje-count { margin-left: auto; white-space: nowrap; }
.form-submit { margin-top: 24px; background: #fff; color: var(--navy); border: 1px solid white; cursor: pointer; }
.form-submit:hover { background: #dfefed; }
.form-submit:disabled { opacity: .65; cursor: wait; }
.form-status { margin-top: 20px; font-size: .875rem; }
.form-status:empty { display: none; }
.form-status strong { display: block; color: white; margin-bottom: 8px; font-size: 1.1rem; }
@media (max-width: 1100px) {
  .js .brand-track { animation-duration: 35s; }
  .brand-list { gap: 48px; padding-right: 48px; }
  .brand-list li { width: 150px; }
  .contact-grid { gap: 48px; }
}
@media (max-width: 760px) {
  .brands { padding-block: 64px; }
  .brands-heading { display: block; }
.brand-marquee { margin-top: 24px; mask-image: linear-gradient(to right, transparent, black 24px, black calc(100% - 24px), transparent); }
  .js .brand-track { animation-duration: 38s; }
  .brand-list { gap: 36px; padding-right: 36px; }
  .brand-list li { width: 140px; height: 76px; }
  .brand-list img { max-width: 130px; max-height: 44px; }
  .brand-list .brand-lala { max-height: 60px; }
  .contact-grid { grid-template-columns: 1fr; gap: 40px; }
}
@media (max-width: 480px) { .form-fields { grid-template-columns: 1fr; gap: 20px; } }
@media (prefers-reduced-motion: reduce) {
  .brand-marquee { mask-image: none; }
  .js .brand-track { width: 100%; transform: none; animation: none; }
  .brand-list { width: 100%; flex-wrap: wrap; justify-content: center; gap: 20px 28px; padding: 0; }
  .brand-list li { max-width: calc(50% - 14px); }
  .brand-list[aria-hidden] { display: none; }
}
@media (max-width: 1100px) { .about-grid { column-gap: 48px; } }
@media (max-width: 900px) { .hero-photo { object-position: 50% 50%; } }
@media (max-width: 800px) {
  .about-grid { grid-template-columns: 1fr; gap: 32px; }
  .about-visual { width: 100%; max-height: 360px; }
  .about-photo { object-position: 50% 43%; }
}

/* Editorial services and independent sector tiles. */
#servicios, #sectores { padding-block: 112px; }
#servicios .section-heading, #sectores .section-heading { margin-bottom: 40px; }
#servicios .section-heading > p { max-width: 310px; }
#servicios .services-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 24px; border: 0; }
#servicios .service-card { padding: 36px 40px; border: 1px solid transparent; border-radius: 8px; background: #f4f7f7; transition: transform .25s, border-color .25s, background .25s, opacity .65s; }
.service-card-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 34px; }
#servicios .card-number { margin: 0; font-size: .75rem; letter-spacing: .08em; }
.line-icon { width: 32px; height: 32px; flex-shrink: 0; fill: none; stroke: currentColor; stroke-width: 1.35; stroke-linecap: round; stroke-linejoin: round; }
#servicios .service-card h3 { min-height: 0; max-width: 390px; font-size: clamp(1.4rem,2.1vw,1.8rem); line-height: 1.2; text-wrap: balance; }
#servicios .service-card p { max-width: 470px; margin: 18px 0 30px; font-size: .9375rem; line-height: 1.75; }
#servicios .card-tag { padding-top: 12px; font-size: .625rem; letter-spacing: .12em; }
#servicios .service-card-featured { background: var(--navy); color: white; }
#servicios .service-card-featured p { color: #c9d5de; }
#servicios .service-card-featured .card-number, #servicios .service-card-featured .card-tag, #servicios .service-card-featured .line-icon { color: #a2cecc; }
#sectores { background: #f4f7f7; }
#sectores .sector-grid { grid-template-columns: repeat(3,minmax(0,1fr)); gap: 24px; background: none; border: 0; }
#sectores .sector-grid li { background: white; border-radius: 8px; padding: 30px; min-height: 168px; display: grid; grid-template-columns: 1fr auto; align-content: space-between; gap: 30px 10px; transition: background .25s, color .25s; }
#sectores .line-icon { grid-column: 1 / -1; }
.sector-name { font-size: 1.0625rem; line-height: 1.4; text-wrap: balance; }
.sector-mark { align-self: end; color: var(--teal); font-size: 1rem; transition: transform .25s; }
@media (hover: hover) {
  #servicios .service-card:hover { transform: translateY(-4px); border-color: var(--teal); }
  #servicios .service-card-featured:hover { border-color: #a2cecc; }
  #sectores .sector-grid li:hover { background: #e9f0ef; color: var(--teal); }
  #sectores .sector-grid li:hover .sector-mark { transform: translate(3px,-3px); }
}
@media (max-width: 1100px) {
  #servicios, #sectores { padding-block: 88px; }
  #servicios .service-card { padding: 30px; }
  #sectores .sector-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 760px) {
  #servicios, #sectores { padding-block: 72px; }
  #servicios .section-heading > p { max-width: 460px; }
  #servicios .services-grid { grid-template-columns: 1fr; gap: 20px; }
  #servicios .service-card { padding: 28px; }
  #servicios .service-card h3 { font-size: 1.5rem; }
  .service-card-top { margin-bottom: 28px; }
  #sectores .sector-grid { gap: 20px; }
  #sectores .sector-grid li { padding: 26px; }
}
@media (max-width: 480px) {
  #sectores .sector-grid { grid-template-columns: 1fr; gap: 16px; }
  #sectores .sector-grid li { display: flex; align-items: center; min-height: 102px; gap: 20px; padding: 24px; }
  #sectores .sector-name { flex: 1; max-width: 205px; font-size: 1rem; }
  #sectores .sector-mark { align-self: center; }
  #sectores .line-icon { width: 28px; height: 28px; }
}
@media (prefers-reduced-motion: reduce) {
  #servicios .service-card:hover, #sectores .sector-grid li:hover .sector-mark { transform: none; }
}

/* Final contact and legal pages share the established typography. */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.contact-grid { grid-template-columns: minmax(0,.38fr) minmax(0,.62fr); gap: 72px; align-items: start; }
.contact h2 { font-size: clamp(2rem,3vw,2.75rem); }
.contact .contact-description { margin-top: 24px; font-size: .9375rem; line-height: 1.75; }
.contact-copy > p:not(.eyebrow):not(.contact-brand) { font-size: .9375rem; }
.contact-email { display: inline-block; margin-top: 22px; font-size: .9375rem; }
address { font-style: normal; }
.contact address { margin-top: 14px; color: #bfccd5; font-size: .8125rem; line-height: 1.8; }
.contact address a:hover, .footer-contact a:hover { text-decoration: underline; text-underline-offset: 4px; }
.contact-form .contact-intro { font-size: 1.25rem; font-weight: 500; margin-bottom: 12px; }
.form-privacy { margin-top: 22px; font-size: .75rem; line-height: 1.7; }
.form-privacy a { color: #fff; text-decoration: underline; text-underline-offset: 3px; }
.form-submit { margin-top: 16px; }
.site-footer .footer-top { align-items: flex-start; justify-content: space-between; gap: 36px; }
.footer-identity p { margin-top: 16px; }
.footer-contact { font-size: .875rem; }
.footer-contact address { margin-top: 10px; color: var(--text); font-size: .75rem; line-height: 1.8; }
.site-footer .legal-links { display: flex; width: auto; align-items: flex-start; gap: 24px; padding: 0; }
.site-footer .legal-links a { font-size: .75rem; }
.legal-page { max-width: 960px; padding-block: 88px 100px; }
.legal-page h1 { max-width: none; font-size: clamp(2.25rem,4vw,3.5rem); }
.legal-intro { max-width: 680px; margin-top: 24px; font-size: 1.0625rem; }
.legal-updated { margin-top: 16px; font-size: .75rem; }
.legal-body { max-width: 760px; margin-block: 52px; }
.legal-body section + section { margin-top: 36px; }
.legal-body h2 { font-size: 1.4rem; letter-spacing: -.02em; margin-bottom: 16px; }
.legal-body p + p { margin-top: 16px; }
.legal-body ul { color: var(--text); padding-left: 22px; }
.legal-body a { color: var(--teal); text-decoration: underline; text-underline-offset: 3px; overflow-wrap: anywhere; }
.legal-body li + li { margin-top: 6px; }
@media (max-width: 1100px) { .contact-grid { gap: 40px; } }
@media (max-width: 900px) { .contact-grid { grid-template-columns: 1fr; gap: 44px; } .contact-copy { max-width: 620px; } }
@media (max-width: 760px) {
  .site-footer .footer-top { flex-direction: column; gap: 26px; }
  .footer-identity p { width: auto; }
  .legal-page { padding-block: 56px 72px; }
  .legal-body { margin-block: 36px; }
}
