/* Source: assets/botones-v134.css */
/* Shared feedback without overriding existing transforms or special effects. */
body :is(button,[role="button"],a.btn,a.mas,a[class*="cta"],a[class*="download"],a[class*="read129"],a.cv-online98,.et-gallery-open,.et-diagram-open,summary){transition:background-color .2s ease,border-color .2s ease,color .2s ease,box-shadow .2s ease,opacity .2s ease,translate .2s ease,scale .16s ease; -webkit-tap-highlight-color:transparent}
@media(hover:hover){body :is(button,[role="button"],a.btn,a.mas,a[class*="cta"],a[class*="download"],a[class*="read129"],a.cv-online98,.et-gallery-open,.et-diagram-open):not(:disabled):not([aria-disabled="true"]):hover{translate:0 -2px}}
body :is(button,[role="button"],a.btn,a.mas,a[class*="cta"],a[class*="download"],a[class*="read129"],a.cv-online98,.et-gallery-open,.et-diagram-open,summary):not(:disabled):not([aria-disabled="true"]):active{scale:.97;translate:0 0}
body :is(button,[role="button"],a.btn,a.mas,a[class*="cta"],a[class*="download"],a[class*="read129"],a.cv-online98,summary):focus-visible{outline:2px solid var(--menu-accent117,var(--senal,#f5c518));outline-offset:4px}
body :is(button,[role="button"],a.btn,a.mas,a[class*="cta"],a[class*="download"],a[class*="read129"],a.cv-online98).tap-feedback134{animation:tapFeedback134 .3s ease-out}
@keyframes tapFeedback134{0%{scale:.96}60%{scale:1.02}100%{scale:1}}
@media(prefers-reduced-motion:reduce){body :is(button,[role="button"],a.btn,a.mas,a[class*="cta"],a[class*="download"],a[class*="read129"],a.cv-online98,summary){animation:none!important;transition:none!important;translate:none!important;scale:1!important}}
body #hd .marca img{transition:filter .3s ease!important}
body #hd .marca:is(:hover,:focus-visible,:active) img{filter:brightness(1.18)!important}
@media(hover:none){body #hd .marca:active img{transition:none!important}}
@media(prefers-reduced-motion:reduce){body #hd .marca img{transition:none!important}}


/* Source: assets/obra-destino-v135.css */
.portfolio-page #grp-clientes .book-group105.obra-destino135>summary::after{opacity:0!important}
.portfolio-page #grp-clientes .journey-card.obra-seleccionada135{position:relative;outline:3px solid #e4b318!important;outline-offset:3px!important;border-radius:4px;scroll-margin-block:130px 30px;animation:obraLlegada135 .7s ease-out}
.portfolio-page #grp-clientes .journey-card.obra-seleccionada135 .project-cue{color:#785c08!important;font-weight:700}
@keyframes obraLlegada135{from{outline-color:#fff0aa;outline-offset:7px}to{outline-color:#e4b318;outline-offset:3px}}
@media(prefers-reduced-motion:reduce){.portfolio-page #grp-clientes .journey-card.obra-seleccionada135{animation:none}}
.portfolio-page #grp-clientes .journey-card.obra-seleccionada135{animation:obraLlegada140 1.6s cubic-bezier(.22,.61,.36,1)!important}
@keyframes obraLlegada140{0%{outline-color:#fff0aa;outline-offset:8px;translate:0 0}30%{translate:0 -7px}55%{translate:0 2px}75%{translate:0 -2px}100%{outline-color:#e4b318;outline-offset:3px;translate:0 0}}
@media(prefers-reduced-motion:reduce){.portfolio-page #grp-clientes .journey-card.obra-seleccionada135{animation:none!important}}


/* Source: assets/scroll-v144.css */
/* Dedicated bottom rail: content scrolls above it, with WhatsApp above the rail. */
body{padding-bottom:calc(58px + env(safe-area-inset-bottom,0px))!important;scroll-padding-bottom:70px}
.page-scroll144{--scroll-accent:#f5c518;position:fixed;inset:auto 0 0;z-index:80;display:flex;justify-content:center;align-items:center;box-sizing:border-box;height:calc(58px + env(safe-area-inset-bottom,0px));padding:6px 20px calc(6px + env(safe-area-inset-bottom,0px));background:#15232e;border-top:1px solid #ffffff26}
body[data-foundation] .page-scroll144{--scroll-accent:#8ac426;background:#1c3652}
.page-scroll144[hidden]{display:none}
.page-scroll144 button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-width:104px;min-height:44px;padding:8px 18px;background:transparent;border:1px solid var(--scroll-accent);border-radius:24px;color:var(--scroll-accent);font-family:inherit;font-size:14px;font-weight:600;line-height:1.2;cursor:pointer;transition:background .25s,color .25s,transform .25s}
.page-scroll144 button:hover,.page-scroll144 button:focus-visible{background:var(--scroll-accent);color:#15232e;outline:2px solid var(--scroll-accent);outline-offset:2px}
body:has(dialog[open]) .page-scroll144,body:has(.mobile-nav.open) .page-scroll144{visibility:hidden}
body .wa{bottom:calc(76px + env(safe-area-inset-bottom,0px))!important}
html{scroll-padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}
@media(prefers-reduced-motion:reduce){.page-scroll144 button{transition:none!important}}
.page-scroll144{justify-content:flex-start;padding-inline:clamp(18px,4vw,58px)}
.page-scroll144 button{border:0;border-radius:0;min-width:0;padding-inline:4px;box-shadow:none;background:transparent}
.page-scroll144 button:hover,.page-scroll144 button:focus-visible{background:transparent;color:var(--scroll-accent);outline:none;text-decoration:underline;text-underline-offset:5px}


/* Source: assets/alianza-interaccion-v181.css */
/* Keep the footer image's original sizing and alignment. */
a.alianza-inicio:not(.acp3d) { display: contents; }
a.alianza-inicio img { transition: filter .3s ease; }
a.alianza-inicio:is(:hover,:focus-visible,:active) img { filter: brightness(1.18); }
a.acp3d {
  color: inherit;
  text-decoration: none;
  cursor: grab;
  touch-action: pan-y;
  user-select: none;
  -webkit-user-select: none;
  -webkit-user-drag: none;
  -webkit-tap-highlight-color: transparent;
}
a.acp3d.is-dragging { cursor: grabbing; }
/* Filters on the parent flatten preserve-3d in Safari and Chromium.
   The fixed link receives gestures; its rotating child is never a hit target. */
a.acp3d .acp3d__obj {
  width: min(100%, var(--acp-ancho));
  flex: 0 0 auto;
  pointer-events: none;
  transform-style: preserve-3d;
  -webkit-transform-style: preserve-3d;
  backface-visibility: visible;
  -webkit-backface-visibility: visible;
  filter: none;
  transition: none;
}
/* Keep the bright rear face on phones too, instead of hiding half the turn. */
a.acp3d .acp3d__obj i {
  display: block;
  backface-visibility: visible;
  -webkit-backface-visibility: visible;
}


/* Source: assets/proyecto-postes-ddv-v243.css */
/* Postes de concreto para confinamiento DDV · v243. */
.project-postes-ddv .native-hero>a{display:block}
.project-postes-ddv .native-scope{min-width:0}
.project-postes-ddv .native-scope>p{margin:0 0 1.1em}
.project-postes-ddv .native-scope>.native-amount243{margin-top:28px}
.native-contract243 strong,.native-contract243 span{display:block}
.native-contract243 span{margin-top:8px;overflow-wrap:anywhere}
.native-amount243 span{display:block;font-size:12px;letter-spacing:.1em;text-transform:uppercase}
.native-amount243 strong{display:block;margin-top:8px;font-size:clamp(24px,3vw,34px);line-height:1.3;color:#182f4d}
.project-postes-ddv .native-gallery-grid figure>a{aspect-ratio:4/3}
.project-postes-ddv .native-gallery-grid img{width:100%;height:100%;max-height:none;object-fit:contain}
.project-postes-ddv .native-gallery-grid .native-report243{grid-column:1/-1;width:100%;max-width:880px;justify-self:center}
.project-postes-ddv .native-gallery-grid .native-report243>a{aspect-ratio:auto}
.project-postes-ddv .native-gallery-grid .native-report243 img{height:auto}
.portfolio-page #project-viewer:has(#viewer-photo[src*="/tren-maya-postes-ddv-v243/"]) #viewer-scope{overflow-wrap:anywhere;white-space:pre-line}
@media(max-width:700px){.native-amount243 strong{font-size:26px}}


/* Source: assets/proyecto-catenaria-v244.css */
/* Obra civil y cimentación para catenaria · v244. */
.project-catenaria244 .native-hero>a{display:block}
.project-catenaria244 .native-scope{min-width:0}
.project-catenaria244 .native-scope>p{margin:0 0 1.1em}
.project-catenaria244 .native-scope>.native-amount244{margin-top:28px}
.native-amount244 span{display:block;font-size:12px;letter-spacing:.1em;text-transform:uppercase}
.native-amount244 strong{display:block;margin-top:8px;font-size:clamp(24px,3vw,34px);line-height:1.3;color:#182f4d}
.project-catenaria244 .native-gallery-grid figure>a{aspect-ratio:3/4}
.project-catenaria244 .native-gallery-grid img{width:100%;height:100%;max-height:none;object-fit:contain}
.portfolio-page #project-viewer:has(#viewer-photo[src*="/tren-maya-catenaria-v244/"]) #viewer-scope{white-space:pre-line}
@media(max-width:700px){.native-amount244 strong{font-size:26px}}


/* Source: assets/proyecto-viaducto-v245.css */
/* Obra civil y cimentación para viaducto · v245. */
.project-viaducto245 .native-hero>a{display:block}
.project-viaducto245 .native-scope{min-width:0}
.project-viaducto245 .native-scope>p{margin:0 0 1.1em}
.project-viaducto245 .native-scope>.native-amount245{margin-top:28px}
.native-amount245 span{display:block;font-size:12px;letter-spacing:.1em;text-transform:uppercase}
.native-amount245 strong{display:block;margin-top:8px;font-size:clamp(24px,3vw,34px);line-height:1.3;color:#182f4d}
.project-viaducto245 .native-gallery-grid figure>a{aspect-ratio:4/3}
.project-viaducto245 .native-gallery-grid img{width:100%;height:100%;max-height:none;object-fit:contain}
.project-viaducto245 .native-gallery-grid figure:last-child{grid-column:1/-1}
.project-viaducto245 .native-gallery-grid figure:last-child>a{aspect-ratio:auto}
.project-viaducto245 .native-gallery-grid figure:last-child img{height:auto}
.portfolio-page #project-viewer:has(#viewer-photo[src*="/tren-maya-viaducto-v245/"]) #viewer-scope{white-space:pre-line}
@media(max-width:700px){.native-amount245 strong{font-size:26px}}


/* The three additional category shortcuts use the existing filter controller. */
.portfolio-page .specialty-atlas79 .map-routes > .specialty-all275 {
  grid-column:1/span 3;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;flex-wrap:wrap;
  gap:8px 24px;min-height:66px;padding:18px 24px!important;
}
.portfolio-page .specialty-atlas79 .map-routes > :is(button,a) {min-width:0;max-width:100%;box-sizing:border-box}
.portfolio-page .specialty-atlas79 .map-routes > .specialty-all275 strong,
.portfolio-page .specialty-atlas79 .map-routes > .specialty-all275 small {margin:0}
.portfolio-page .specialty-atlas79 .map-routes > .specialty-all275 strong {flex:0 1 auto}
.portfolio-page .specialty-atlas79 .map-routes > .specialty-all275 small {flex:1 1 220px;white-space:normal}
.portfolio-page .specialty-atlas79 .map-routes > .specialty-all275 i {position:static;margin-left:auto}
@media(max-width:1000px) {
  .portfolio-page .specialty-atlas79 .map-routes > .specialty-all275 {grid-column:1/span 2}
}
@media(max-width:400px) {
  .portfolio-page .specialty-atlas79 .map-routes > .specialty-all275 {grid-column:1;flex-direction:column;align-items:flex-start}
  .portfolio-page .specialty-atlas79 .map-routes > .specialty-all275 small {flex:0 1 auto}
}
