.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.icon-sprite{position:absolute;width:0;height:0;overflow:hidden}.web-page-v2{background:#fff;color:#1d2254}.web-hero{display:grid;grid-template-columns:67% 33%;min-height:610px}.web-hero-copy{padding:34px max(32px,calc((100vw - 1440px)/2 + 24px)) 54px;display:flex;flex-direction:column;justify-content:center}.breadcrumbs{display:flex;gap:13px;font-size:13px;margin:0 0 68px;color:#59708a}.breadcrumbs span,.web-kicker{color:#20bfa0}.web-kicker{font-size:14px;font-weight:700;margin:0 0 30px}.web-hero h1{font-size:clamp(44px,4.15vw,68px);line-height:1.04;letter-spacing:-.045em;margin:0 0 30px;max-width:820px}.web-lead{font-size:18px;line-height:1.55;color:#35415f;max-width:650px;margin:0 0 36px}.web-hero-copy .btn{align-self:flex-start}.web-hero-image{min-width:0;overflow:hidden}.web-hero-image img{width:100%;height:100%;object-fit:cover;object-position:center}
.web-pillars{padding:78px 0 86px}.pillar-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.pillar{padding:0 40px;border-right:1px solid #d9e1e6}.pillar:first-child{padding-left:0}.pillar:last-child{padding-right:0;border-right:0}.pillar header{display:flex;gap:28px;align-items:flex-start;margin-bottom:26px}.pillar header>b{font-size:42px;line-height:1;color:#2bc7aa;font-weight:400}.pillar h3{font-size:25px;margin:7px 0 12px}.pillar header p{font-size:16px;margin:0}.service-stack{display:grid;gap:26px}.web-service{display:grid;grid-template-columns:64px 1fr;gap:18px;align-items:center}.service-glyph,.commerce-icon,.commerce-steps span{width:56px;height:56px;border:1.5px solid #36ceb2;border-radius:50%;display:grid;place-items:center;color:#20bfa0}.service-glyph{background:linear-gradient(145deg,#fff,#effdfa);box-shadow:0 8px 24px rgba(32,191,160,.10)}.service-glyph svg{width:31px;height:31px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.web-service h4{font-size:16px;margin:0 0 7px}.web-service p{font-size:14px;line-height:1.45;color:#4d5870;margin:0}
.commerce-route{padding:66px 0;background:linear-gradient(90deg,#f7fbfb,#edf8f8)}.commerce-grid{display:grid;grid-template-columns:260px 1fr;gap:40px;align-items:center}.commerce-intro h2{font-size:30px;line-height:1.08;margin:18px 0}.commerce-intro p{font-size:16px;line-height:1.55;color:#48546d}.commerce-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:18px}.commerce-steps li{position:relative}.commerce-steps li:not(:last-child)::after{content:"";position:absolute;top:48px;left:62px;width:calc(100% - 48px);height:1px;background:#7fd8c7}.commerce-steps b{display:block;color:#20bfa0;font-weight:400;margin:0 0 14px}.commerce-steps span{width:48px;height:48px;font-size:20px;margin-bottom:20px;background:#f8ffff}.commerce-steps h3{font-size:14px;margin:0 0 9px}.commerce-steps p{font-size:13px;line-height:1.45;color:#536078;margin:0}.route-cta{grid-column:2;background:#1d2254;color:#fff;justify-self:start;margin-top:10px}
.web-projects{padding:62px 0 72px;overflow:hidden}.project-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.project-heading p,.project-heading span{font-size:13px;font-weight:700;color:#20bfa0}.project-carousel{width:100%;overflow:hidden;outline:none}.project-track{display:flex;width:max-content;gap:24px;will-change:transform;animation:projectMarquee 78s linear infinite}@media(hover:hover) and (pointer:fine){.project-carousel:hover .project-track{animation-play-state:paused}}.project-card{width:min(430px,30vw);flex:0 0 auto}.project-card img{width:100%;height:auto;aspect-ratio:1886/994;object-fit:contain;border-radius:9px}.project-card h3{font-size:15px;margin:16px 0 0}.project-card p{font-size:14px;color:#536078;margin:0 0 12px}.project-card small{font-size:11px;color:#71809c}@keyframes projectMarquee{to{transform:translateX(calc(-50% - 12px))}}
.web-final-cta{background:#1d2254;color:#fff;padding:44px 0}.web-final-cta .container{display:grid;grid-template-columns:100px minmax(0,1fr) auto;gap:42px;align-items:center}.final-arrow{width:72px;height:72px;border:1.5px solid #2ed2b3;border-radius:50%;display:grid;place-items:center;color:#51edc8;font-size:38px}.web-final-cta h2{font-size:32px;line-height:1.1;margin:0 0 9px;max-width:680px}.web-final-cta p{font-size:15px;color:rgba(255,255,255,.76);margin:0}.web-page-v2 .social-icon{font-size:12px;font-weight:700}
@media(max-width:1100px){.web-hero{grid-template-columns:60% 40%}.pillar{padding:0 22px}.commerce-grid{grid-template-columns:1fr}.commerce-steps,.route-cta{grid-column:1}}
@media(max-width:900px){.web-hero{display:flex;flex-direction:column;min-height:0}.web-hero-copy{padding:42px var(--m-gutter) 48px}.breadcrumbs{margin-bottom:42px}.web-kicker{margin-bottom:20px}.web-hero h1{font-size:clamp(42px,12vw,62px);line-height:1.01;overflow-wrap:normal!important}.web-lead{font-size:18px}.web-hero-copy .btn{width:100%;min-height:58px}.web-hero-image{aspect-ratio:4/3}.web-pillars{padding:58px 0}.pillar-grid{grid-template-columns:1fr}.pillar{padding:36px 0!important;border-right:0;border-bottom:1px solid #d9e1e6}.pillar:first-child{padding-top:0!important}.pillar header>b{font-size:38px}.web-service{grid-template-columns:64px 1fr}.commerce-route{padding:58px 0}.commerce-grid{gap:32px}.commerce-intro h2{font-size:36px}.commerce-steps{grid-template-columns:1fr 1fr;gap:30px 20px}.commerce-steps li:not(:last-child)::after{display:none}.route-cta{width:100%}.web-projects{padding:54px 0}.project-heading{align-items:flex-start;gap:20px}.project-card{width:78vw}.project-card h3{font-size:16px}.project-track{animation-duration:64s}.web-final-cta{padding:58px 0}.web-final-cta .container{grid-template-columns:1fr;gap:28px}.web-final-cta h2{font-size:36px}.web-final-cta .btn{width:100%;min-height:58px}}
@media(max-width:480px){.web-hero h1{font-size:clamp(39px,11.6vw,50px)}.web-hero-image{aspect-ratio:1/1}.pillar header{gap:18px}.commerce-steps{grid-template-columns:1fr}.project-heading{display:grid}.final-arrow{width:64px;height:64px}}
@media(prefers-reduced-motion:reduce){.project-carousel{overflow-x:auto}.project-track{animation:none}.project-track .project-card[aria-hidden="true"]{display:none}}
.commerce-icon,.commerce-steps span{background:linear-gradient(145deg,#fff,#effdfa);box-shadow:0 8px 24px rgba(32,191,160,.10)}
.commerce-icon svg,.commerce-steps span svg{width:31px;height:31px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.commerce-steps span svg{width:27px;height:27px}
.project-card img{box-shadow:0 5px 18px rgba(29,34,84,.09)}
.project-card h3{margin-top:18px}
.project-card p{margin-top:6px;line-height:1.45}
.project-card .project-description{font-size:14px;line-height:1.5;color:#536078;max-width:42ch;text-transform:none}

.project-visual{position:relative;display:block;aspect-ratio:1886/994;border-radius:9px;overflow:hidden;box-shadow:0 5px 18px rgba(29,34,84,.09)}
.project-visual img{display:block;width:100%;height:100%;object-fit:contain;border-radius:0;box-shadow:none}
.project-visual .project-duotone{position:absolute;inset:0;transition:opacity .35s ease}
@media(hover:hover) and (pointer:fine){.project-card:hover .project-duotone{opacity:0}}
@media(prefers-reduced-motion:reduce){.project-visual .project-duotone{transition:none}}

.project-card{display:flex;flex-direction:column}
.project-link{display:block;color:inherit;text-decoration:none;border-radius:9px}
.project-link:focus-visible{outline:3px solid #1d2254;outline-offset:5px}
.project-carousel:focus-visible .project-track,.project-carousel:has(.project-link:focus-visible) .project-track{animation-play-state:paused}
.project-card-copy{padding-top:17px}
.project-card .project-sector{color:#159d89;font-size:12px;font-weight:700;letter-spacing:.06em;line-height:1.4;margin:0 0 6px}
.project-card h3{font-size:17px;line-height:1.25;margin:0 0 9px}
.project-card .project-description{font-size:14px;line-height:1.5;max-width:42ch;margin:0;color:#536078}
.project-visit{display:inline-flex;align-items:center;gap:10px;margin-top:14px;font-size:12px;font-weight:700;letter-spacing:.05em;color:#1d2254}
.project-visit span{font-size:17px;line-height:1;transition:transform .25s ease}
@media(hover:hover) and (pointer:fine){.project-link:hover .project-duotone{opacity:0}.project-link:hover .project-visit span{transform:translate(2px,-2px)}}
.project-link:focus-visible .project-duotone{opacity:0}
@media(prefers-reduced-motion:reduce){.project-visit span{transition:none}}

/* Hero de Web & E-commerce sin imagen */
.web-page-v2 .web-hero{display:block;min-height:0;background:#1d2254;color:#fff}
.web-page-v2 .web-hero-copy{max-width:1440px;margin:0 auto;padding:72px 48px 100px}
.web-page-v2 .breadcrumbs{color:rgba(255,255,255,.7);margin-bottom:76px}
.web-page-v2 .breadcrumbs a{color:inherit}
.web-page-v2 .web-kicker{color:#51edc8}
.web-page-v2 .web-hero h1{max-width:1050px}
.web-page-v2 .web-lead{color:rgba(255,255,255,.85);margin-bottom:0}
@media(max-width:900px){.web-page-v2 .web-hero-copy{padding:42px var(--m-gutter) 72px}.web-page-v2 .breadcrumbs{margin-bottom:48px}}

/* Icon system: 48-unit grid, rounded 2.3-unit strokes and a simple circular frame. */
.web-page-v2 .service-glyph,.web-page-v2 .commerce-icon,.web-page-v2 .commerce-steps span{background:#eafff9;box-shadow:none;border:2px solid #1d2254;color:#1d2254;border-radius:50%}
.web-page-v2 .service-glyph svg,.web-page-v2 .commerce-icon svg,.web-page-v2 .commerce-steps span svg{stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round;fill:none}
.web-page-v2 .service-glyph{width:60px;height:60px}
.web-page-v2 .service-glyph svg{width:34px;height:34px}
.web-page-v2 .commerce-icon{width:64px;height:64px}
.web-page-v2 .commerce-icon svg{width:36px;height:36px}
.web-page-v2 .commerce-steps span{width:54px;height:54px}
.web-page-v2 .commerce-steps span svg{width:30px;height:30px}
.web-page-v2 .commerce-route{background:#51edc8;color:#1d2254}
.web-page-v2 .commerce-intro p,.web-page-v2 .commerce-steps p{color:#1d2254}
.web-page-v2 .commerce-steps b{color:#1d2254}
.web-page-v2 .commerce-steps li:not(:last-child)::after{background:#1d2254;opacity:.4}
.web-page-v2 .commerce-route .route-cta{background:#1d2254;color:#fff}
@media(max-width:900px){.web-page-v2 .web-service{grid-template-columns:64px 1fr}}
.web-page-v2 .web-hero{position:relative}
.web-page-v2 .web-hero-copy{padding-bottom:136px}
.web-page-v2 .web-hero-scroll{display:flex;bottom:38px;color:rgba(255,255,255,.82);text-decoration:none}
.web-page-v2 .web-hero-scroll:focus-visible{outline:2px solid #51edc8;outline-offset:8px}
@media(max-width:900px){.web-page-v2 .web-hero-copy{padding-bottom:28px}.web-page-v2 .web-hero-scroll{position:static;width:max-content;max-width:calc(100% - 2 * var(--m-gutter));margin:0 var(--m-gutter) 44px;font-size:10px;line-height:1.5}}
.web-page-v2 .web-lead{font-size:clamp(20px,1.8vw,24px);line-height:1.5;max-width:760px;margin-bottom:34px}
.web-page-v2 .web-hero-message{border-left:3px solid #51edc8;padding-left:22px;margin:0 0 28px;max-width:760px}
.web-page-v2 .web-hero-message p{font-size:clamp(18px,1.5vw,21px);line-height:1.4;margin:0 0 8px}
.web-page-v2 .web-hero-message p:last-child{font-size:17px;color:rgba(255,255,255,.78);margin-bottom:0}
.web-page-v2 .web-hero-cta{opacity:1;transform:none;animation:none;min-height:60px;display:inline-flex;align-items:center;gap:14px}
.web-page-v2 .web-projects{padding-top:38px}
@media(max-width:900px){.web-page-v2 .web-lead{font-size:20px}.web-page-v2 .web-hero-message{padding-left:16px}.web-page-v2 .web-hero-cta{width:100%;max-width:420px;justify-content:center;text-align:center}}
.web-page-v2 .commerce-route{background:#1d2254;color:#fff}
.web-page-v2 .commerce-intro p,.web-page-v2 .commerce-steps p{color:rgba(255,255,255,.84)}
.web-page-v2 .commerce-steps b{color:#51edc8}
.web-page-v2 .commerce-steps li:not(:last-child)::after{background:#51edc8;opacity:.65}
.web-page-v2 .commerce-route .route-cta{background:#51edc8;color:#1d2254}
.web-page-v2 .commerce-route .route-cta:hover,.web-page-v2 .commerce-route .route-cta:focus-visible{background:#80f4d8;color:#1d2254}

/* Home's top/bottom breathing room, with height set by the actual content. */
.web-page-v2 .web-hero{min-height:0}
.web-page-v2 .web-hero-copy{box-sizing:border-box;min-height:0;padding:66px 48px;justify-content:center}
.web-page-v2 .web-hero-actions{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;width:100%}
.web-page-v2 .web-hero-scroll{position:static;display:inline-flex;align-self:flex-end;margin:0 0 5px;white-space:nowrap;flex-shrink:0}
@media(max-width:900px){
  .web-page-v2 .web-hero{min-height:0}
  .web-page-v2 .web-hero-copy{min-height:0;padding:48px var(--m-gutter) 54px}
  .web-page-v2 .web-hero-actions{flex-direction:column;align-items:stretch;gap:30px}
  .web-page-v2 .web-hero-scroll{align-self:flex-start;max-width:100%;margin:0;white-space:normal}
}
.web-page-v2 .web-pillars{background:#51edc8;color:#1d2254}
.web-page-v2 .pillar{border-color:rgba(29,34,84,.28)}
.web-page-v2 .pillar header>b{color:#1d2254}
.web-page-v2 .web-service p{color:#28315e}
.project-visual--css-duotone img{filter:grayscale(1);transition:filter .35s ease}
.project-visual--css-duotone::before,.project-visual--css-duotone::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;transition:opacity .35s ease}
.project-visual--css-duotone::before{background:#51edc8;mix-blend-mode:multiply}
.project-visual--css-duotone::after{background:#1d2254;mix-blend-mode:screen}
@media(hover:hover) and (pointer:fine){.project-link:hover .project-visual--css-duotone::before,.project-link:hover .project-visual--css-duotone::after{opacity:0}.project-link:hover .project-visual--css-duotone img{filter:none}}
.project-link:focus-visible .project-visual--css-duotone::before,.project-link:focus-visible .project-visual--css-duotone::after{opacity:0}
.project-link:focus-visible .project-visual--css-duotone img{filter:none}
@media(prefers-reduced-motion:reduce){.project-visual--css-duotone img,.project-visual--css-duotone::before,.project-visual--css-duotone::after{transition:none}}
.web-page-v2 .web-pillars-title{font-size:clamp(34px,3.6vw,54px);line-height:1.08;letter-spacing:-.035em;max-width:820px;margin:0 0 56px;color:#1d2254}
@media(max-width:900px){.web-page-v2 .web-pillars-title{margin-bottom:34px;font-size:clamp(32px,8.5vw,46px)}}

/* Ajustes editoriales y movimiento discreto en Web & E-commerce */
.web-page-v2 .hero-highlight{color:#51edc8}
.web-page-v2 .web-hero-message p:last-child{font-size:clamp(18px,1.5vw,21px);color:inherit}
.web-page-v2 .web-hero-scroll{font-size:14px;line-height:1.35;letter-spacing:.12em}
.web-page-v2 .web-pillars-title,.web-page-v2 .commerce-intro h2{font-size:clamp(30px,2.6vw,38px);line-height:1.14;letter-spacing:-.025em}
.web-page-v2 .web-pillars-title{max-width:820px}
@media(max-width:900px){.web-page-v2 .web-pillars-title,.web-page-v2 .commerce-intro h2{font-size:clamp(27px,6vw,34px)}}
@media(prefers-reduced-motion:no-preference){
 .web-page-v2 .web-kicker,.web-page-v2 .web-hero h1,.web-page-v2 .web-lead,.web-page-v2 .web-hero-message,.web-page-v2 .web-hero-actions{animation:webEnter .75s both;animation-timing-function:cubic-bezier(.2,.7,.2,1)}
 .web-page-v2 .web-hero h1{animation-delay:.08s}.web-page-v2 .web-lead{animation-delay:.16s}.web-page-v2 .web-hero-message{animation-delay:.23s}.web-page-v2 .web-hero-actions{animation-delay:.3s}
 .web-page-v2 .project-card .project-visual{transition:transform .4s ease}
 .web-page-v2 .project-link:hover .project-visual,.web-page-v2 .project-link:focus-visible .project-visual{transform:translateY(-4px)}
}
@keyframes webEnter{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

/* Tipografía uniforme en el mensaje principal y acceso exacto al carrusel. */
.web-page-v2 .web-lead,.web-page-v2 .web-hero-message p,.web-page-v2 .web-hero-message p:last-child{font-size:clamp(20px,1.8vw,24px);line-height:1.5}
.web-page-v2 .web-hero-scroll{align-self:flex-end;margin:0}
.web-page-v2 #carrusel-web{scroll-margin-top:96px}
@media(max-width:900px){.web-page-v2 .web-lead,.web-page-v2 .web-hero-message p,.web-page-v2 .web-hero-message p:last-child{font-size:20px;line-height:1.5}.web-page-v2 .web-hero-scroll{align-self:flex-start;margin:0}}

.web-page-v2 .commerce-intro p{font-weight:500}
/* Trazo común para los pictogramas de servicios y proceso. */
.web-page-v2 .service-glyph svg,.web-page-v2 .commerce-icon svg,.web-page-v2 .commerce-steps span svg{stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
/* Carrusel de proyectos con el mismo lenguaje visual que Señalética. */
.web-page-v2 .web-projects{padding:76px 0 84px;background:#fff;overflow:hidden}
.web-page-v2 .project-carousel{overflow-x:auto;scrollbar-width:none;scroll-snap-type:x mandatory;overscroll-behavior-inline:contain}
.web-page-v2 .project-carousel::-webkit-scrollbar{display:none}
.web-page-v2 .project-track{display:flex;width:auto;gap:18px;animation:none;will-change:auto}
.web-page-v2 .project-card{width:calc((100% - 36px)/3);flex:0 0 calc((100% - 36px)/3);scroll-snap-align:start}
.web-page-v2 .project-visual.web-mockup{position:relative;aspect-ratio:3/4;border-radius:8px;overflow:hidden;background:linear-gradient(145deg,#eaf0f5,#c8d2df);box-shadow:0 10px 28px rgba(29,34,84,.12);padding:12% 7% 19%;box-sizing:border-box}
.web-page-v2 .project-visual.web-mockup::before{content:"";position:absolute;inset:10% 7% 19%;border:8px solid #1d2254;border-radius:8px 8px 4px 4px;background:#1d2254;box-shadow:0 3px 0 rgba(29,34,84,.25);z-index:0}
.web-page-v2 .project-visual.web-mockup::after{content:"";position:absolute;left:0;right:0;bottom:10%;height:3%;background:#1d2254;border-radius:50%;box-shadow:0 6px 0 rgba(29,34,84,.18);z-index:2}
.web-page-v2 .project-visual.web-mockup>img{position:relative;z-index:1;width:100%;height:100%;object-fit:cover;border-radius:2px;filter:grayscale(1) contrast(.95);transition:filter .5s ease,transform .7s cubic-bezier(.2,.8,.2,1)}
.web-page-v2 .project-visual.web-mockup .project-duotone{position:absolute;inset:12% 7% 19%;width:auto;height:auto;opacity:1;z-index:1;object-fit:cover}
.web-page-v2 .project-card-copy{padding:17px 2px 0}
.web-page-v2 .project-card .project-sector{color:#159d89}
.web-page-v2 .project-link:hover .project-visual.web-mockup>img{filter:grayscale(0);transform:scale(1.025)}
.web-project-controls{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-top:24px}
.web-project-controls>span{margin-right:6px;color:#1d2254;font-size:12px;font-weight:700;letter-spacing:.1em}
.web-project-controls button{width:46px;height:46px;border:0;border-radius:50%;background:#1d2254;color:#51edc8;font-size:24px;line-height:1;cursor:pointer;transition:transform .2s ease,background .2s ease,color .2s ease}
.web-project-controls button:hover,.web-project-controls button:focus-visible{background:#51edc8;color:#1d2254;transform:translateY(-2px)}
@media(max-width:900px){.web-page-v2 .project-card{flex-basis:calc((100% - 18px)/2);width:calc((100% - 18px)/2)}}
@media(max-width:650px){.web-page-v2 .project-card{flex-basis:84%;width:84%}.web-page-v2 .web-projects{padding:56px 0}.web-project-controls{justify-content:flex-end}}
@media(prefers-reduced-motion:reduce){.web-project-controls button{transition:none}}

.web-page-v2 .web-hero{position:relative;overflow:hidden}.web-page-v2 .web-hero-copy{position:relative;z-index:1;max-width:950px;margin-left:max(0px,calc((100vw - 1440px)/2));margin-right:28%;}.web-hero-sketch{position:absolute;right:max(3%,calc((100vw - 1510px)/2));top:7%;width:min(34vw,470px);height:78%;object-fit:contain;transform:rotate(5deg);opacity:.86;pointer-events:none;animation:webSketchDraw 2.4s cubic-bezier(.25,.55,.18,1) .25s both;-webkit-mask-image:linear-gradient(105deg,#000 43%,transparent 57%);mask-image:linear-gradient(105deg,#000 43%,transparent 57%);-webkit-mask-size:250% 100%;mask-size:250% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
@keyframes webSketchDraw{from{-webkit-mask-position:100% 0;mask-position:100% 0}to{-webkit-mask-position:0 0;mask-position:0 0}}
@media(max-width:1100px){.web-page-v2 .web-hero-copy{margin-left:0;margin-right:30%;max-width:68%}.web-hero-sketch{right:1%;width:35vw;top:12%;height:68%}}
@media(max-width:900px){.web-page-v2 .web-hero-copy{margin:0;max-width:none}.web-hero-sketch{position:relative;display:block;right:auto;top:auto;width:min(74vw,410px);height:auto;max-height:360px;margin:-36px auto 36px;transform:rotate(5deg)}}
@media(prefers-reduced-motion:reduce){.web-hero-sketch{animation:none;-webkit-mask-image:none;mask-image:none}}

/* Mockups fotográficos: misma proporción y ritmo visual que el carrusel de Señalética. */
.web-page-v2 .project-visual.web-mockup{
  aspect-ratio:3/4;
  padding:0;
  border-radius:8px;
  background:#d9d1c5 url('web-mockup-desk.webp?v=2') center 58%/cover no-repeat;
  box-shadow:0 10px 28px rgba(29,34,84,.14);
}
.web-page-v2 .project-visual.web-mockup::before{
  content:"";
  position:absolute;
  inset:0;
  border:0;
  border-radius:8px;
  background:linear-gradient(180deg,rgba(29,34,84,0) 0%,rgba(29,34,84,.08) 48%,rgba(29,34,84,.82) 78%,#1d2254 100%);
  box-shadow:none;
  z-index:2;
}
.web-page-v2 .project-visual.web-mockup::after{
  content:"";
  position:absolute;
  left:13%; right:13%; top:22%; height:31%;
  border:6px solid rgba(20,24,30,.9);
  border-radius:5px;
  background:rgba(20,24,30,.22);
  box-shadow:0 3px 0 rgba(0,0,0,.2);
  z-index:0;
  pointer-events:none;
}
.web-page-v2 .project-visual.web-mockup>img{
  position:absolute;
  z-index:1;
  left:14%; top:23%; width:72%; height:29%;
  object-fit:cover;
  border-radius:1px;
  filter:grayscale(.12) contrast(.98) saturate(.9);
  transition:filter .5s ease,transform .7s cubic-bezier(.2,.8,.2,1);
}
.web-page-v2 .project-visual.web-mockup .project-duotone{display:none}
.web-page-v2 .project-card-copy{position:relative;z-index:3;padding:17px 2px 0}
.web-page-v2 .project-card .project-sector{color:#159d89}
@media(hover:hover){.web-page-v2 .project-link:hover .project-visual.web-mockup>img{filter:grayscale(0) saturate(1);transform:scale(1.025)}}

/* El carrusel web replica exactamente la composición editorial de Señalética. */
.web-page-v2 .project-card{position:relative}
.web-page-v2 .project-visual.web-mockup::before{background:linear-gradient(180deg,rgba(29,34,84,0) 0%,rgba(29,34,84,.08) 42%,rgba(29,34,84,.76) 72%,#1d2254 100%)}
.web-page-v2 .project-card-copy{position:absolute;left:20px;right:20px;bottom:22px;padding:0;color:#fff;z-index:4;display:grid;gap:7px;pointer-events:none}
.web-page-v2 .project-card-copy .project-sector{margin:0;color:#51edc8;font-size:12px;font-weight:700;letter-spacing:.1em;line-height:1.4}
.web-page-v2 .project-card-copy h3{margin:0;color:#fff;font-size:clamp(18px,1.65vw,25px);font-weight:600;line-height:1.15}
.web-page-v2 .project-card-copy .project-description{margin:0;color:rgba(255,255,255,.92);font-size:15px;line-height:1.42;font-weight:400;min-height:86px}
@media(max-width:650px){.web-page-v2 .project-card-copy{left:18px;right:18px;bottom:18px}.web-page-v2 .project-card-copy .project-description{min-height:96px;font-size:14px;line-height:1.35}.web-page-v2 .project-card-copy h3{font-size:22px}}

/* Mismo contenedor, proporciones y controles que Señalética. */
.web-page-v2 .web-projects-wrap{min-width:0}
.web-page-v2 .project-carousel{width:100%;scroll-snap-type:none;outline-offset:5px}
.web-page-v2 .project-card{min-width:0;scroll-snap-align:none}
.web-page-v2 .project-visual.web-mockup{width:100%}
.web-page-v2 .web-project-controls{gap:12px;margin-top:26px}
.web-page-v2 .web-project-controls>span{margin-right:7px;letter-spacing:.09em}
.web-page-v2 .web-project-controls button{width:58px;height:58px;border:2px solid #1d2254;display:grid;place-items:center;font:600 34px/1 Arial,sans-serif;box-shadow:0 5px 15px rgba(29,34,84,.17)}
.web-page-v2 .web-project-controls button:focus-visible{outline:3px solid #1d2254;outline-offset:3px}
@media(max-width:650px){.web-page-v2 .project-visual.web-mockup{aspect-ratio:4/5}.web-page-v2 .web-project-controls{gap:9px}.web-page-v2 .web-project-controls>span{font-size:10px;letter-spacing:.04em;margin-right:auto}.web-page-v2 .web-project-controls button{width:54px;height:54px}}


/* Una escena por proyecto y captura encajada en la pantalla fotografiada. */
.web-page-v2 .project-card[data-project-index="1"]{--mockup-image:url("web-mockups/mockup-01-edited.webp")}
.web-page-v2 .project-card[data-project-index="2"]{--mockup-image:url("web-mockups/mockup-02-edited.webp")}
.web-page-v2 .project-card[data-project-index="3"]{--mockup-image:url("web-mockups/mockup-03.webp?v=2")}
.web-page-v2 .project-card[data-project-index="4"]{--mockup-image:url("web-mockups/mockup-04-edited.webp")}
.web-page-v2 .project-card[data-project-index="5"]{--mockup-image:url("web-mockups/mockup-05-edited.webp")}
.web-page-v2 .project-card[data-project-index="6"]{--mockup-image:url("web-mockups/mockup-06-edited.webp")}
.web-page-v2 .project-card[data-project-index="7"]{--mockup-image:url("web-mockups/mockup-07-edited.webp")}
.web-page-v2 .project-card[data-project-index="8"]{--mockup-image:url("web-mockups/mockup-08.webp?v=2")}
.web-page-v2 .project-card[data-project-index="9"]{--mockup-image:url("web-mockups/mockup-09.webp?v=2")}
.web-page-v2 .project-card[data-project-index="10"]{--mockup-image:url("web-mockups/mockup-15-edited.webp")}
.web-page-v2 .project-card[data-project-index="11"]{--mockup-image:url("web-mockups/mockup-10.webp?v=3")}
.web-page-v2 .project-card[data-project-index="12"]{--mockup-image:url("web-mockups/mockup-11-legal.webp")}
.web-page-v2 .project-card[data-project-index="13"]{--mockup-image:url("web-mockups/mockup-12-psychology.webp")}
.web-page-v2 .project-card[data-project-index="14"]{--mockup-image:url("web-mockups/mockup-13-edited.webp")}
.web-page-v2 .project-card[data-project-index="15"]{--mockup-image:url("web-mockups/mockup-14.webp?v=3")}
.web-page-v2 .project-card[data-project-index="16"]{--mockup-image:url("web-mockups/mockup-16-edited.webp")}
.web-page-v2 .project-visual.web-mockup{
  background-image:var(--mockup-image);
  background-position:center;
  background-size:100% 100%;
}
.web-page-v2 .project-visual.web-mockup::after{display:none}
.web-page-v2 .project-visual.web-mockup>img{
  left:18.6%;
  top:22.6%;
  width:63.2%;
  height:29%;
  object-fit:cover;
  object-position:center;
  filter:grayscale(1) contrast(.98);
  transform:none;
}
/* Estas escenas tienen la notebook en otra posición: encajar cada captura en su pantalla. */
.web-page-v2 .project-card[data-project-index="9"] .project-visual.web-mockup>img{left:19.3%;top:27.2%;width:62.1%;height:28.4%}
.web-page-v2 .project-card[data-project-index="11"] .project-visual.web-mockup>img{left:21.8%;top:28.2%;width:57.9%;height:25.5%}
.web-page-v2 .project-card[data-project-index="12"] .project-visual.web-mockup>img{left:21.4%;top:32.5%;width:58%;height:26.7%}
.web-page-v2 .project-card[data-project-index="6"] .project-visual.web-mockup>img,
.web-page-v2 .project-card[data-project-index="10"] .project-visual.web-mockup>img{object-fit:contain;background:#0b2544}
.web-page-v2 .project-card[data-project-index="14"] .project-visual.web-mockup>img{object-fit:contain;background:#0b2544}
@media(hover:hover){
  .web-page-v2 .project-link:hover .project-visual.web-mockup>img{
    filter:grayscale(0);
    transform:none;
  }
}

/* La fotografía completa y la pantalla recuperan el color juntas. */
.web-page-v2 .project-visual.web-mockup{background-image:none}
.web-page-v2 .project-visual.web-mockup::after{
  display:block;
  content:"";
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  border:0;
  border-radius:inherit;
  background:var(--mockup-image) center/100% 100% no-repeat;
  box-shadow:none;
  z-index:0;
  filter:grayscale(1) contrast(.95);
  transition:filter .5s ease;
  pointer-events:none;
}
@media(hover:hover){
  .web-page-v2 .project-card:hover .project-visual.web-mockup::after{filter:grayscale(0)}
  .web-page-v2 .project-card:hover .project-visual.web-mockup>img{filter:grayscale(0);transform:none}
}
.web-page-v2 .project-card:focus-within .project-visual.web-mockup::after{filter:grayscale(0)}
.web-page-v2 .project-card:focus-within .project-visual.web-mockup>img{filter:grayscale(0);transform:none}
@media(prefers-reduced-motion:reduce){
  .web-page-v2 .project-visual.web-mockup::after,
  .web-page-v2 .project-visual.web-mockup>img{transition:none}
}

/* La franja de estrategia digital comparte la presentación de Señalética. */
.web-page-v2:not(.signage-page) .web-pillars .web-service p{color:#4d5870}
@media(min-width:1000px){
  .web-page-v2:not(.signage-page) .web-pillars-title{
    max-width:none;
    font-size:clamp(29px,2.35vw,36px);
    white-space:nowrap;
  }
}

/* El proceso digital sigue la misma composición y animación que el de Señalética. */
.web-page-v2 .signage-process{background:#fff;color:#1d2254;padding:78px 0 86px}
.web-page-v2 .signage-process .commerce-grid{display:grid;grid-template-columns:1fr;gap:42px}
.web-page-v2 .signage-process .commerce-intro{max-width:780px}
.web-page-v2 .signage-process .commerce-intro h2{font-size:clamp(30px,2.6vw,38px);line-height:1.14;letter-spacing:-.025em;margin:0;color:#1d2254}
@media(min-width:901px){
  .web-page-v2 .signage-process .commerce-intro{max-width:none}
  .web-page-v2 .signage-process .commerce-intro h2{font-size:clamp(24px,2.45vw,34px);white-space:nowrap}
  .web-page-v2 .signage-process .route-cta{justify-self:end}
}
.web-page-v2 .signage-process .commerce-steps{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:18px;position:relative}
.web-page-v2 .signage-process .commerce-steps::before{content:"";position:absolute;z-index:0;top:26px;left:27px;right:calc(16.6667% - 42px);height:2px;background:#51edc8}
.web-page-v2 .signage-process .commerce-steps li{position:relative;z-index:1;min-width:0}
.web-page-v2 .signage-process .commerce-steps li:not(:last-child)::after{display:none}
.web-page-v2 .signage-process .commerce-steps span{width:54px;height:54px;margin:0 0 20px;background:#eafff9;border:2px solid #1d2254;border-radius:50%;color:#1d2254;box-shadow:none}
.web-page-v2 .signage-process .commerce-steps span svg{width:29px;height:29px;stroke-width:1.9}
.web-page-v2 .signage-process .commerce-steps h3{font-size:16px;line-height:1.25;margin:0 0 9px;color:#1d2254}
.web-page-v2 .signage-process .commerce-steps p{font-size:13px;line-height:1.45;color:#1d2254;margin:0}
.web-page-v2 .signage-process .route-cta{grid-column:1;margin-top:0}
@media(prefers-reduced-motion:no-preference){
  .web-page-v2 .signage-process.process-ready .commerce-steps::before{transform:scaleX(0);transform-origin:left center;transition:transform 1.15s cubic-bezier(.2,.65,.2,1)}
  .web-page-v2 .signage-process.process-ready.is-active .commerce-steps::before{transform:scaleX(1);transition-delay:1.27s}
}
@media(max-width:1100px){
  .web-page-v2 .signage-process .commerce-steps{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:34px}
  .web-page-v2 .signage-process .commerce-steps::before{display:none}
}
@media(max-width:650px){
  .web-page-v2 .signage-process{padding:62px 0}
  .web-page-v2 .signage-process .commerce-steps{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 20px}
  .web-page-v2 .signage-process .commerce-intro h2{font-size:clamp(27px,6vw,34px)}
  .web-page-v2 .signage-process .commerce-steps p{font-size:14px}
}

/* Cierre de Diseño Web, con la composición del cierre de Señalética. */
.digital-final-cta{background:#1d2254;color:#fff;padding:clamp(80px,8vw,120px) 0}
.digital-final-inner{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:clamp(36px,4.5vw,70px);align-items:center}
.digital-final-eyebrow{color:#51edc8;font-size:clamp(18px,1.5vw,22px);font-weight:700;letter-spacing:.1em;margin:0 0 26px}
.digital-final-points ul{list-style:none;padding:0;margin:0}
.digital-final-points li{display:grid;grid-template-columns:56px minmax(0,1fr);align-items:center;gap:20px;border-top:1px solid rgba(255,255,255,.2);padding:22px 0;color:rgba(255,255,255,.86);font-size:clamp(22px,1.85vw,27px);line-height:1.22}
.digital-final-points li:last-child{border-bottom:1px solid rgba(255,255,255,.2)}
.digital-final-points strong{color:#fff;font-weight:700}
.digital-final-icon{display:grid;place-items:center;width:48px;height:48px;border:1px solid rgba(81,237,200,.46);border-radius:50%;background:rgba(81,237,200,.08);color:#51edc8}
.digital-final-icon svg{width:27px;height:27px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.digital-final-copy{display:flex;flex-direction:column;align-items:flex-end;text-align:right;min-width:0}
.digital-final-copy h2{font-size:clamp(36px,3.5vw,58px);line-height:1.02;letter-spacing:-.054em;color:#fff;margin:0 0 36px;max-width:530px}
.digital-final-copy h2 span{color:#51edc8}
.digital-final-button{display:inline-flex;align-items:center;justify-content:center;gap:18px;min-height:60px;padding:0 28px;background:#51edc8;color:#1d2254;text-decoration:none;white-space:nowrap;box-shadow:0 14px 34px rgba(0,0,0,.16)}
.digital-final-button:hover,.digital-final-button:focus-visible{background:#80f4d8;color:#1d2254}
.digital-final-button:focus-visible{outline:3px solid #51edc8;outline-offset:4px}
.digital-final-chat{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:900px){
  .digital-final-inner{grid-template-columns:1fr;gap:52px}
  .digital-final-points li{font-size:clamp(19px,3vw,24px)}
  .digital-final-copy h2{font-size:clamp(38px,9.5vw,58px)}
  .digital-final-button{width:100%;max-width:430px}
}
@media(max-width:520px){
  .digital-final-cta{padding:62px 0}
  .digital-final-eyebrow{font-size:14px}
  .digital-final-points li{font-size:19px;padding:18px 0}
  .digital-final-copy h2{font-size:clamp(35px,9.4vw,48px)}
  .digital-final-button{font-size:14px;padding:0 19px}
}

/* Carga diferida de las escenas del carrusel y animación compartida del hero. */
.web-design-page .project-visual.web-mockup::after{background-image:none}
.web-design-page .project-card.is-image-ready .project-visual.web-mockup::after{background-image:var(--mockup-image)}
.web-design-page .web-kicker,.web-design-page .web-hero h1,.web-design-page .web-lead,
.web-design-page .web-hero-message,.web-design-page .web-hero-actions{animation:none}

.web-design-page .project-carousel{overflow-anchor:none}
