/* ==========================================================================
   geoservices.cloud — detalles de diseno que Elementor gratuito no cubre.
   Colores, tipografias y tamanos se editan en Elementor (Ajustes del sitio y
   cada widget); aqui solo va lo que necesita CSS: barrita verde de los
   titulos, cabecera fija, separadores, tarjetas, formulario y Recursos.
   ========================================================================== */
:root{
	--gs-marino:#15263F; --gs-azul:#1F5FAE; --gs-verde:#3DAA5C; --gs-verde-osc:#2F8F4B;
	--gs-gris:#EEF2F7; --gs-texto:#4A5568; --gs-borde:#DDE3EC; --gs-oscuro:#0F1C30;
	--gs-barra-sup:40px;
}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
[id]{scroll-margin-top:110px}
body{color:var(--gs-texto);-webkit-font-smoothing:antialiased}
.elementor-widget-text-editor p:last-child{margin-bottom:0}

/* --- Cabecera fija: la barra superior se va con el scroll y queda la blanca */
/* !important: Header Footer Elementor fija #masthead{position:relative}; sin
 * esto el top negativo solo desplaza la cabecera y oculta la barra superior. */
html body #masthead{position:-webkit-sticky!important;position:sticky!important;top:calc(-1 * var(--gs-barra-sup));z-index:990;background:#fff;box-shadow:0 2px 16px rgba(21,38,63,.08)}
.admin-bar #masthead{top:calc(32px - var(--gs-barra-sup))}
@media (max-width:782px){.admin-bar #masthead{top:calc(46px - var(--gs-barra-sup))}}
@media (max-width:767px){:root{--gs-barra-sup:0px}}
.gs-barra-superior{min-height:var(--gs-barra-sup)}
.gs-barra-superior .elementor-icon-list-item a:hover .elementor-icon-list-text{text-decoration:underline}

/* Logo */
.gs-logo{display:inline-flex;align-items:center;line-height:0}
.gs-logo img{display:block;height:54px;width:auto;max-width:100%}
.gs-logo--blanco img{height:50px}
.gs-logo__texto{font:800 22px/1.1 Montserrat,sans-serif;color:var(--gs-marino)}
.gs-logo--blanco .gs-logo__texto{color:#fff}
@media (max-width:767px){.gs-cabecera .gs-logo img{height:40px}}

/* Menu (Header Footer Elementor) */
.gs-cabecera .hfe-nav-menu .sub-menu{border-top:3px solid var(--gs-verde);box-shadow:0 14px 30px rgba(21,38,63,.14);border-radius:0 0 6px 6px;overflow:hidden}
.gs-cabecera .hfe-nav-menu__toggle{cursor:pointer}
.gs-cabecera .hfe-search-button-wrapper .hfe-search-icon-toggle i,
.gs-cabecera .hfe-search-button-wrapper .hfe-search-icon-toggle svg{color:var(--gs-marino);fill:var(--gs-marino)}
@media (max-width:1024px){
	.gs-cabecera .hfe-nav-menu__layout-horizontal .hfe-nav-menu{box-shadow:0 18px 30px rgba(21,38,63,.16);border-top:3px solid var(--gs-verde)}
	.gs-cabecera .hfe-nav-menu .sub-menu{border-top:0;box-shadow:none}
}

/* --- Titulos de seccion: barrita verde corta delante --------------------- */
.gs-titulo-seccion .elementor-heading-title{display:flex;align-items:center;gap:14px}
.gs-titulo-seccion .elementor-heading-title::before{content:"";flex:0 0 36px;height:4px;border-radius:2px;background:var(--gs-verde)}
.gs-titulo-seccion--centro .elementor-heading-title{justify-content:center}

/* Rotulo con barra vertical verde (hero y cabeceras de pagina) */
.gs-rotulo .elementor-heading-title{border-left:4px solid var(--gs-verde);padding-left:14px}

/* Botones */
.gs-boton-enlace .elementor-button{padding:0;background:transparent}
.gs-boton-enlace .elementor-button .elementor-button-icon{transition:transform .2s ease}
.gs-boton-enlace .elementor-button:hover .elementor-button-icon{transform:translateX(4px)}
.gs-boton-contorno .elementor-button{box-shadow:inset 0 0 0 2px rgba(255,255,255,.85)}
.gs-boton-contorno .elementor-button:hover{box-shadow:inset 0 0 0 2px #fff}

/* --- Hero ------------------------------------------------------------------ */
.gs-hero{overflow:hidden}
.gs-capas img{filter:drop-shadow(0 22px 34px rgba(0,0,0,.35));animation:gs-flotar 8s ease-in-out infinite}
@keyframes gs-flotar{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@media (prefers-reduced-motion:reduce){.gs-capas img{animation:none}}
.gs-manuscrita .elementor-heading-title{font-family:'Caveat',cursive}
.gs-hero-items{background:linear-gradient(180deg,rgba(12,24,42,.35),rgba(12,24,42,.72));border-top:1px solid rgba(255,255,255,.18);backdrop-filter:blur(2px)}
@media (min-width:768px){
	.gs-hero-items .gs-hero-item + .gs-hero-item{border-left:1px solid rgba(255,255,255,.35)}
}
@media (max-width:767px){
	.gs-hero-items .gs-hero-item{border-top:1px solid rgba(255,255,255,.14)}
	.gs-hero-visual{max-width:420px;margin:0 auto}
}

/* --- Tarjetas -------------------------------------------------------------- */
.gs-tarjeta{overflow:hidden;box-shadow:0 6px 24px rgba(21,38,63,.08);transition:transform .2s ease,box-shadow .2s ease}
.gs-tarjeta:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(21,38,63,.14)}
.gs-tarjeta .gs-tarjeta__img img{display:block;width:100%;height:190px;object-fit:cover}
.gs-tarjeta .gs-tarjeta__img{line-height:0}
.gs-tarjeta .gs-tarjeta__img a{display:block}   /* el enlace en linea encogia la imagen en movil */
.gs-tarjeta__cuerpo{flex-grow:1}
.gs-tarjeta__cuerpo > .gs-boton-enlace,
.gs-tarjeta__cuerpo > .e-con-inner > .gs-boton-enlace{margin-top:auto}
.gs-tarjeta-servicio{background:#fff;border:1px solid var(--gs-borde);border-radius:10px;padding:28px 26px;transition:border-color .2s ease,box-shadow .2s ease}
.gs-tarjeta-servicio:hover{border-color:var(--gs-azul);box-shadow:0 12px 30px rgba(21,38,63,.10)}
.gs-proyecto .elementor-image-box-img{width:100%!important;margin-bottom:16px!important;overflow:hidden;border-radius:8px;line-height:0}
.gs-proyecto .elementor-image-box-img img{width:100%;height:200px;object-fit:cover;transition:transform .35s ease}
.gs-proyecto:hover .elementor-image-box-img img{transform:scale(1.04)}
.gs-img-redondeada img{border-radius:10px;box-shadow:0 14px 34px rgba(21,38,63,.14)}

@media (min-width:1025px){
	.gs-columnas-lineas > .elementor-element + .elementor-element{border-left:1px solid #cfd8e4}
}
.gs-columnas-lineas > .elementor-element{padding:4px 22px}

/* Sobre nosotros (dividido): el texto se alinea con el ancho del sitio */
@media (min-width:1025px){
	.gs-mitad-izq{padding-left:max(20px,calc((100vw - 1200px) / 2 + 20px))!important}
}
.gs-tarjeta-flotante{backdrop-filter:blur(4px);box-shadow:0 14px 34px rgba(0,0,0,.18)}
.gs-tarjeta-flotante::before{content:"";display:block;width:44px;height:4px;border-radius:2px;background:var(--gs-verde);margin-bottom:14px}

.gs-cliente{background:#fff;border:1px solid var(--gs-borde);border-radius:8px;padding:18px 18px}

/* Franja "Geografia + SIG + ..." */
.gs-mas{color:var(--gs-verde);padding:0 .15em}

/* Nota destacada */
.gs-nota{background:#fff;border-left:4px solid var(--gs-verde);border-radius:6px;padding:18px 22px;box-shadow:0 4px 18px rgba(21,38,63,.06)}

/* --- Pie ------------------------------------------------------------------- */
.gs-pie .elementor-icon-list-item a:hover .elementor-icon-list-text{color:#fff;text-decoration:underline}
.gs-pie-legal a{color:rgba(255,255,255,.8);text-decoration:none}
.gs-pie-legal a:hover{color:#fff;text-decoration:underline}
.gs-cordillera img{max-width:260px;opacity:.9}

/* --- Formulario (Fluent Forms) -------------------------------------------- */
/* Los mensajes de error van en posicion absoluta dentro de un hueco reservado.
 * Si empujaran el contenido, al salir de un campo con error (blur) el mensaje
 * desaparece, todo sube ~20 px ENTRE el mousedown y el mouseup, y el clic en la
 * casilla de consentimiento se pierde: comprobado con la secuencia
 * "enviar vacio -> rellenar -> marcar casilla". */
.gs-formulario .ff-el-group{margin-bottom:26px;position:relative}
.gs-formulario .ff-el-group .error,
.gs-formulario .ff-el-group .text-danger{position:absolute;left:0;top:100%;margin-top:3px;line-height:1.3}
.gs-formulario .ff-t-container .ff-el-group{margin-bottom:26px}
.gs-formulario .ff-el-input--label label{font-weight:600;color:var(--gs-marino);font-size:14px}
.gs-formulario .ff-el-form-control{border:1px solid #cdd6e3;border-radius:6px;padding:12px 14px;font:inherit;font-size:15px;color:var(--gs-marino);background:#fff}
.gs-formulario .ff-el-form-control:focus{border-color:var(--gs-azul);box-shadow:0 0 0 3px rgba(31,95,174,.15);outline:0}
.gs-formulario .ff-el-tc label,.gs-formulario .ff_t_c{font-size:14px}
.gs-formulario .ff-el-tc a{color:var(--gs-azul);text-decoration:underline}
.gs-formulario .ff-btn-submit{background-color:var(--gs-verde)!important;border-color:var(--gs-verde)!important;color:#fff!important;border-radius:6px;padding:15px 30px;font:700 15px/1 Montserrat,sans-serif;letter-spacing:.02em}
.gs-formulario .ff-btn-submit:hover{background-color:var(--gs-verde-osc)!important}
.gs-formulario .ff-message-success{border:0;border-left:4px solid var(--gs-verde);background:#eef8f1;color:var(--gs-marino);border-radius:6px;padding:18px 20px;box-shadow:none}
.gs-formulario .error{font-size:13px}

/* --- Recursos -------------------------------------------------------------- */
.gs-recursos-vacio{max-width:720px;margin:0 auto;text-align:center;background:#fff;border:1px dashed #c3cedd;border-radius:12px;padding:48px 32px}
.gs-recursos-vacio h2{font:800 24px/1.3 Montserrat,sans-serif;color:var(--gs-marino);margin:14px 0 10px}
.gs-recursos-vacio p{margin:0 0 8px}
.gs-recursos{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
@media (max-width:1024px){.gs-recursos{grid-template-columns:repeat(2,1fr)}}
@media (max-width:767px){.gs-recursos{grid-template-columns:1fr}}
.gs-recurso{background:#fff;border:1px solid var(--gs-borde);border-radius:10px;overflow:hidden;display:flex;flex-direction:column}
.gs-recurso__img{width:100%;height:190px;object-fit:cover;display:block}
.gs-recurso__cuerpo{padding:22px;display:flex;flex-direction:column;gap:8px;flex-grow:1}
.gs-recurso__cuerpo time{font-size:13px;color:#718096}
.gs-recurso__cuerpo h3{font:700 18px/1.35 Montserrat,sans-serif;margin:0}
.gs-recurso__cuerpo h3 a{color:var(--gs-marino);text-decoration:none}
.gs-recurso__mas{margin-top:auto;font-weight:600;color:var(--gs-azul);text-decoration:none}

/* --- Paginas que no son de Elementor (entradas, busqueda, 404) -------------- */
body:not(.elementor-page) .site-main{max-width:860px;margin:0 auto;padding:56px 20px 72px}
body:not(.elementor-page) .site-main .entry-title,
body:not(.elementor-page) .site-main .page-title{font:800 34px/1.25 Montserrat,sans-serif;color:var(--gs-marino)}
body:not(.elementor-page) .site-main h2{font:700 24px/1.3 Montserrat,sans-serif;color:var(--gs-marino);margin-top:1.6em}
body:not(.elementor-page) .site-main h3{font:700 19px/1.35 Montserrat,sans-serif;color:var(--gs-marino)}
body:not(.elementor-page) .site-main a{color:var(--gs-azul)}
body.search .site-main article{padding:18px 0;border-bottom:1px solid var(--gs-borde)}
body.search .site-main article .entry-title{font-size:20px}
.gs-legal h2{font:700 22px/1.3 Montserrat,sans-serif;color:var(--gs-marino);margin:1.6em 0 .5em}
.gs-legal h3{font:700 18px/1.35 Montserrat,sans-serif;color:var(--gs-marino)}
.gs-legal{max-width:860px}
.gs-banner__titulo .elementor-heading-title{max-width:860px}
