/* Improvements scoped to the requested sections. */
.foundation-banner{position:relative;isolation:isolate;overflow:hidden;padding-top:clamp(220px,30vw,420px)}
.foundation-banner-photo{position:absolute;top:0;left:0;width:100%;height:620px;object-fit:cover;object-position:center 45%;z-index:-2}
.foundation-banner::before{content:"";position:absolute;inset:0 0 auto;height:640px;z-index:-1;background:linear-gradient(180deg,rgba(27,36,48,.12),rgba(27,36,48,.2) 25%,var(--concreto) 96%)}
.foundation-banner .head{max-width:900px}.foundation-banner .lede{color:#e4e8ed}
/* Natural aspect ratios reveal the entire original photograph, without frames. */
#ecko .proy-fotos{align-items:start;gap:10px}
#ecko .proy-fotos .fp-main,#ecko .proy-fotos .fp-side{aspect-ratio:auto;height:auto;overflow:visible;background:transparent;padding:0;border:0}
#ecko .proy-fotos .fp-side{grid-template-rows:auto auto;align-items:start;gap:10px}
#ecko .proy-fotos img{width:100%;height:auto;aspect-ratio:auto;object-fit:contain;display:block}
.soil-detail{margin-top:24px;border-top:1px solid #ffffff30;border-bottom:1px solid #ffffff30}
.soil-detail summary{cursor:pointer;min-height:58px;padding:16px 0;display:flex;gap:12px;align-items:center;justify-content:space-between;font-weight:600;font-size:14px;list-style:none}
.soil-detail summary::-webkit-details-marker{display:none}.soil-detail summary span{color:var(--senal);font-family:'IBM Plex Mono',monospace;font-size:12px}
.soil-content{padding:0 0 22px}.soil-content>p{font-size:14px;color:#d0d6df;max-width:65ch}
.soil-section{height:270px;position:relative;margin:38px 0 32px;border-top:2px solid var(--senal);border-bottom:1px dashed #ffffff40}
.ground-label{position:absolute;left:0;top:-28px;font-size:12px;color:var(--senal)}
.soil-layers{position:absolute;inset:0;display:grid;grid-template-rows:25% 35% 40%;overflow:hidden}
.soil-layers i:nth-child(1){background:repeating-linear-gradient(160deg,#7e6c512c 0 2px,#7e6c514a 2px 12px)}
.soil-layers i:nth-child(2){background:repeating-linear-gradient(20deg,#77695144 0 1px,#77695122 1px 9px)}
.soil-layers i:nth-child(3){background:repeating-linear-gradient(160deg,#4b56633b 0 2px,#4b56636b 2px 20px)}
.soil-pile{position:absolute;left:23%;top:0;width:30px;height:var(--depth);background:linear-gradient(90deg,#c8cfd7,#f1f2f5 50%,#818c98);border:1px solid white;transform-origin:top;box-shadow:0 0 24px #0003}
.soil-detail[open] .soil-pile{animation:descend 1.6s ease-out both}
.soil-depth{position:absolute;left:42%;top:calc(var(--depth) - 42px);color:var(--senal);font-size:26px;line-height:1.2}
.soil-depth small{display:block;font-size:11px;font-weight:400;color:#e1e6ed;margin-top:5px}
.soil-scale{position:absolute;bottom:-25px;right:0;font-size:11px;color:#b3becb}
.soil-content .soil-note{font-size:11px;color:#aab5c4;margin-top:38px}.soil-replay{border:1px solid #ffffff45;background:transparent;color:var(--senal);padding:10px 15px;cursor:pointer}
@keyframes descend{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.trajectory-route .tabla{position:relative;padding-left:30px;border-left:1px solid #ffffff35;margin-left:12px}
.trajectory-route .route-stop{display:block;position:relative;padding:0;border:0;border-bottom:1px solid #ffffff20;margin:0}
.trajectory-route .route-stop::before{content:"";position:absolute;width:11px;height:11px;border-radius:50%;left:-36px;top:30px;background:var(--concreto);border:2px solid var(--senal)}
.trajectory-route .route-stop[open]::before{background:var(--senal);box-shadow:0 0 0 5px #f5c5181a}
.route-stop summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:22px;padding:22px 0;font-size:clamp(18px,2.3vw,27px);font-weight:600;line-height:1.25}
.route-stop summary::-webkit-details-marker{display:none}.route-stop summary::after{content:'+';margin-left:auto;color:var(--senal);font-size:24px;font-weight:400}.route-stop[open] summary::after{content:'−'}
.route-stop .route-number{font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--senal);flex:none}
.route-stop>.chips{padding:0 0 28px}.route-stop .chip.lista{flex:1 1 320px;max-width:none}.route-stop .chip-photo .ph{height:auto;aspect-ratio:auto}.route-stop .chip-photo img{height:auto;object-fit:contain}
@media(max-width:700px){.foundation-banner{padding-top:240px}.foundation-banner-photo{height:420px}.foundation-banner::before{height:450px}.foundation-banner .head .btn{margin-left:0}.soil-detail summary{align-items:flex-start;flex-direction:column;gap:6px}.soil-section{height:230px}.trajectory-route .tabla{padding-left:20px;margin-left:5px}.trajectory-route .route-stop::before{left:-26px}.route-stop summary{gap:12px}.route-stop .chip{max-width:100%}}
@media(prefers-reduced-motion:reduce){.soil-detail[open] .soil-pile{animation:none}}
/* The trajectory sits on the original light portfolio background. */
.trajectory-route .tabla{border-left-color:#b8b3a9;border-top:0}
.trajectory-route .route-stop{border-bottom-color:#d5d0c6}
.trajectory-route .route-stop::before{background:var(--cal);border-color:#a8850b}
.trajectory-route .route-stop[open]::before{background:var(--senal)}
.trajectory-route .route-number,.trajectory-route summary::after{color:#8a6c00}
/* Align photographic slides to the viewport, including fractional mobile widths. */
#destacados-track{gap:0;scroll-padding:0}
#destacados-track>.obra{scroll-snap-align:start;scroll-snap-stop:always}
#obras{padding-top:30px}
#obras>.wrap>.sub:first-child{margin-top:0!important}
.foundation-metrics{display:grid;grid-template-columns:minmax(110px,.65fr) minmax(0,2fr);gap:0;margin-top:28px;align-items:stretch;border:1px solid #ffffff25}
.pile-count{padding:24px 16px;background:var(--senal);color:var(--concreto);display:flex;flex-direction:column;justify-content:center;gap:12px}
.pile-count>b{font-size:clamp(34px,4vw,54px);line-height:1;font-weight:800}
.pile-count>span{font-family:'IBM Plex Mono',monospace;font-size:11px;line-height:1.5;text-transform:uppercase}
.soil-feature{padding:22px 20px 14px;min-width:0;background:#1b243075}
.soil-heading{display:flex;flex-direction:column;gap:10px;font-size:14px}.soil-heading>span{font-size:12px;color:#cbd2dc}.soil-heading b{color:var(--senal)}
.soil-feature .soil-section{height:230px;margin:40px 0 32px}
.soil-feature .soil-pile{transform:scaleY(0);left:15%;width:26px}
.soil-feature.is-visible .soil-pile{animation:descend 1.8s cubic-bezier(.2,.65,.3,1) forwards}
.soil-feature .soil-depth{left:39%;font-size:27px}.soil-feature .soil-note{font-size:10px;line-height:1.5;color:#adb7c6;margin:0}
.route-stop{scroll-margin-top:100px}.route-stop.is-current summary{color:#8a6c00}
@media(max-width:700px){.foundation-metrics{grid-template-columns:94px minmax(0,1fr)}.pile-count{padding:16px 10px}.pile-count>b{font-size:34px}.pile-count>span{font-size:10px}.soil-feature{padding:18px 12px 12px}.soil-heading{font-size:13px}.soil-heading>span{font-size:11px}.soil-feature .soil-section{height:210px}.soil-feature .soil-pile{left:9%;width:20px}.soil-feature .soil-depth{left:32%;font-size:25px}.soil-depth small{font-size:10px}.soil-scale{font-size:10px}#obras{padding-top:24px}}
@media(prefers-reduced-motion:reduce){.soil-feature .soil-pile{transform:none}.soil-feature.is-visible .soil-pile{animation:none}}
.diameter-view{margin:20px 0 22px;padding:14px 0;border-top:1px solid #ffffff20;border-bottom:1px solid #ffffff20;text-align:center}
.diameter-view>p{margin:0 0 10px;font-size:11px;color:#cbd2dc}
.diameter-view svg{display:block;width:140px;max-width:100%;height:auto;margin:0 auto;overflow:visible}
.diameter-axis{stroke:#ffffff25;stroke-width:1;stroke-dasharray:3 4}
.diameter-ring{fill:none;stroke:var(--senal);stroke-width:2;opacity:0;transform-origin:70px 70px}
.diameter-ring:nth-of-type(2){stroke:#e7edf4}.diameter-ring:nth-of-type(3){stroke:#9db3c9}
.diameter-values{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 12px;margin-top:10px}
.diameter-label{color:var(--senal);font-size:12px;font-family:'IBM Plex Mono',monospace;opacity:0}
.diameter-label:nth-child(2){color:#e7edf4}.diameter-label:nth-child(3){color:#9db3c9}
.diameter-view>small{display:block;color:#adb7c6;font-size:10px;margin-top:8px}
.soil-feature.is-visible .diameter-ring{animation:ring-arrive .65s ease-out var(--ring-delay) forwards}
.soil-feature.is-visible .diameter-label{animation:ring-label .4s ease-out var(--ring-delay) forwards}
@keyframes ring-arrive{from{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}
@keyframes ring-label{to{opacity:1}}
@media(max-width:700px){.diameter-view svg{width:120px}.diameter-label{font-size:11px}}
@media(prefers-reduced-motion:reduce){.diameter-ring,.diameter-label{opacity:1}.soil-feature.is-visible .diameter-ring,.soil-feature.is-visible .diameter-label{animation:none}}
.foundation-banner-photo{left:-1%;width:102%;max-width:none}
.logos{display:flex;flex-wrap:wrap;background:transparent!important;border:0;gap:1px}
.logos figure{flex:1 1 calc(33.333% - 2px);aspect-ratio:3/1;min-width:0;border:1px solid #ffffff20;padding:20px}
.logos img{max-height:64px;max-width:85%}
#ecko{padding-top:40px}
#ecko>.wrap>.lede{max-width:74ch;margin-top:0}
#ecko .ecko-brand{padding:28px 0;grid-template-columns:260px minmax(0,1fr);gap:40px;margin-top:24px!important}
.ecko-brand .mk{position:relative}.ecko-brand .mk img{mix-blend-mode:lighten;max-width:260px}
.ecko-brand p{font-size:14px;max-width:70ch}
.foundation-metrics{display:block;border:0;background:#1b243070}
.pile-count{flex-direction:row;justify-content:flex-start;align-items:center;padding:16px 22px;gap:18px;background:transparent;border-bottom:1px solid #ffffff25;color:var(--senal)}
.pile-count>b{font-size:38px}.pile-count>span{max-width:160px;color:#d2d9e2}
.soil-feature{padding:20px 24px;background:transparent}
.soil-heading{flex-direction:row;justify-content:space-between;flex-wrap:wrap}
.soil-feature .soil-section{height:320px;margin-top:38px}
.bore-plan{position:absolute;top:8px;right:5%;width:140px;text-align:center;z-index:2;background:#1b2430d9;border-radius:50%;padding:4px}
.bore-plan svg{width:100%;display:block}.bore-current{display:block;color:var(--senal);font:12px 'IBM Plex Mono',monospace;white-space:nowrap}
.bore-ring{fill:none;stroke:#9cabb9;stroke-width:1;opacity:0;transform-origin:center}.final-ring{stroke:var(--senal);stroke-width:2.3}
.bore-measure{stroke:#ffffff50;stroke-dasharray:3 4;fill:none}
.soil-feature.is-visible .bore-ring{animation:ring-arrive .35s ease-out var(--delay) forwards}
.soil-feature .soil-pile{left:18%;width:34px}.soil-feature .soil-depth{left:36%;top:auto;bottom:16px;font-size:32px}
#ecko .proy-fotos{grid-template-columns:var(--gallery-columns,1fr 1fr);align-items:start}
#ecko .proy-fotos .fp-side{display:grid;grid-template-columns:1fr;grid-template-rows:auto auto}
#ecko .proy-fotos img{width:100%;height:auto;aspect-ratio:auto;object-fit:contain}
@media(min-width:1050px){#ecko .proy{padding:36px}.soil-feature .soil-section{height:280px}.bore-plan{right:12%;width:150px}}
@media(max-width:700px){.logos figure{flex-basis:calc(50% - 2px);aspect-ratio:2/1;padding:12px}.logos img{max-height:48px}#ecko .ecko-brand{grid-template-columns:1fr;gap:20px}.ecko-brand .mk{justify-items:start}.ecko-brand .mk img{width:230px!important}.soil-feature{padding:18px 14px}.soil-heading{flex-direction:column}.bore-plan{right:3%;width:116px}.soil-feature .soil-pile{left:12%;width:26px}.soil-feature .soil-depth{left:38%;font-size:29px}.soil-feature .soil-section{height:300px}#ecko .proy-fotos{grid-template-columns:1fr}#ecko .proy-fotos .fp-side{grid-template-columns:var(--side-columns,1fr 1fr);grid-template-rows:auto}#ecko .proy-fotos .fp-side.one{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.bore-ring{opacity:1}.soil-feature.is-visible .bore-ring{animation:none}}
.ecko-brand .mk img{mix-blend-mode:normal;filter:url(#ecko-background)}
/* The bore footprint lies horizontally beneath the drilling bar. */
.soil-feature .soil-section{--tool-x:25%}
.soil-feature .soil-pile.drill-bar{left:var(--tool-x);width:30px;margin-left:-15px;background:none;border:0;box-shadow:none;z-index:3}
.drill-shaft{position:absolute;inset:0 9px 12px;background:linear-gradient(90deg,#687682,#e4eaf0 43%,#8b99a6 68%,#45535e);border:1px solid #d0d7de}
.drill-flutes{position:absolute;inset:12px 2px 15px;background:repeating-linear-gradient(155deg,transparent 0 12px,#4f606f 12px 15px,#d9e2e9 15px 18px,transparent 18px 29px);border-radius:4px}
.drill-tip{position:absolute;bottom:0;left:0;width:30px;height:20px;background:linear-gradient(90deg,#586878,#e4eaf0 45%,#627382);clip-path:polygon(5% 0,95% 0,80% 60%,50% 100%,20% 60%)}
.soil-feature .bore-plan{left:var(--tool-x);right:auto;top:var(--depth);width:150px;height:58px;margin-left:-75px;margin-top:-20px;padding:0;border-radius:0;background:none;z-index:2}
.bore-plan svg{position:absolute;left:0;top:0;width:150px;height:150px;transform:scaleY(.34);transform-origin:center top;overflow:visible}
.bore-plan .bore-current{position:absolute;top:55px;left:0;right:0;font-size:12px}
.bore-plan::after{content:'Huella de perforación';position:absolute;top:74px;left:-20px;right:-20px;font-size:10px;color:#c4ced8;text-align:center}
.soil-feature .soil-depth{left:auto;right:5%;top:calc(var(--depth) - 45px);bottom:auto;font-size:30px}
.soil-feature .soil-section{margin-bottom:105px}
@media(max-width:700px){.soil-feature .soil-section{--tool-x:29%;margin-bottom:105px}.soil-feature .bore-plan{width:120px;margin-left:-60px}.bore-plan svg{width:120px;height:120px}.bore-plan .bore-current{top:46px}.bore-plan::after{top:65px;font-size:9px}.soil-feature .soil-depth{right:0;left:auto;font-size:27px}.soil-feature .soil-depth small{font-size:10px}}
.reading-progress{position:fixed;left:0;top:0;bottom:0;width:3px;z-index:150;background:var(--senal);transform:scaleY(var(--reading-progress,0));transform-origin:top;pointer-events:none}
#ecko .ecko-brand{grid-template-columns:1fr;gap:24px;padding-top:12px}
#ecko .ecko-brand .mk{width:100%;display:block;overflow:hidden}
#ecko .ecko-brand .mk img{width:100%!important;max-width:none;height:auto;margin:0;display:block}
#ecko .ecko-brand p{max-width:none;columns:2;column-gap:36px}
.soil-feature .soil-section{margin-top:135px}
.mini-rig{position:absolute;width:146px;height:101px;top:-99px;left:calc(var(--tool-x) - 35px);overflow:visible;z-index:4}
.soil-feature .ground-label{left:auto;right:0;top:-25px}
.drill-collars{position:absolute;bottom:31px;left:5px;right:5px;height:28px;border-top:4px solid #b9c5cc;border-bottom:4px solid #87949e;background:repeating-linear-gradient(0deg,#60717f 0 4px,#c8d2d9 4px 7px);border-radius:5px}
.drill-bucket{position:absolute;bottom:0;left:-6px;width:42px;height:34px;border:1px solid #d0b28b;border-radius:3px 3px 7px 7px;background:linear-gradient(90deg,#705743,#c0a481 45%,#80654a);box-shadow:inset 0 -5px #524334}
.drill-bucket::before{content:"";position:absolute;left:-1px;right:-1px;top:-4px;height:9px;border:2px solid #b69b76;border-radius:50%;background:#493e32}
.drill-bucket i{position:absolute;inset:0 17px;background:#a28b6c;border-left:1px solid #d2bca1;transform:skew(-12deg)}
.route-stop{overflow-anchor:none}.trajectory-route .route-stop summary{touch-action:manipulation}
.logo-banner{margin-top:32px;border-block:1px solid var(--linea)}
.logo-banner-controls{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 0;font-size:12px;color:var(--acero)}
.logo-rotation-toggle{background:transparent;color:inherit;border:1px solid #9aa1a8;padding:9px 12px;cursor:pointer;min-height:40px}
.logos.home-logo-track{display:flex;flex-wrap:nowrap;gap:0;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin:0;background:white!important;padding:12px 0}
.home-logo-track::-webkit-scrollbar{display:none}.logos.home-logo-track figure{flex:0 0 25%;aspect-ratio:auto;height:150px;scroll-snap-align:start;border:0;padding:22px;display:flex;justify-content:center;align-items:center}
.logos.home-logo-track img{max-width:100%;max-height:90px;width:auto;height:auto}
.logos.company-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:30px}
.logos.company-cards figure{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;aspect-ratio:auto;min-height:230px;background:white;border:1px solid #e1ded5;padding:28px;box-shadow:0 6px 18px #1b243006}
.logos.company-cards img{height:90px;max-height:90px;width:100%;max-width:100%;object-fit:contain;object-position:left center;margin-bottom:24px}
.company-cards figcaption{font-weight:600;font-size:14px;line-height:1.45;color:var(--concreto);border-top:2px solid var(--senal);padding-top:14px;width:100%}
.company-cards figcaption small{display:block;font-size:10px;font-weight:400;letter-spacing:.03em;margin-top:7px;color:var(--acero)}
@media(max-width:700px){#ecko .ecko-brand p{columns:1}.mini-rig{width:126px;height:88px;top:-86px;left:calc(var(--tool-x) - 30px)}.soil-feature .soil-section{margin-top:120px}.logos.home-logo-track figure{flex-basis:50%;height:140px;padding:18px}.logos.company-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.logos.company-cards figure{padding:16px;min-height:220px}.logos.company-cards img{height:75px;max-height:75px}.company-cards figcaption{font-size:12px}.logo-banner-controls{align-items:center}}
@media(max-width:360px){.logos.company-cards{grid-template-columns:1fr}}

.company-cards figcaption{min-height:100px}.logos.company-cards img{flex-shrink:0}
