/*
Theme Name: GSNE Services
Theme URI: https://gsne.com.au
Author: GSNE Services Pty Ltd
Description: Elementor-compatible WordPress theme for GSNE Services - Geotechnical & Environmental Consultancy. Designed as a lightweight starter theme optimized for Elementor page builder.
Version: 1.14.56
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: gsne
Tags: elementor, engineering, geotechnical, environmental, consultancy
Requires at least: 6.0
Tested up to: 6.5
Requires PHP: 7.4
*/

/* ===== GSNE Design System ===== */
:root {
  --gsne-bg: #ffffff;
  --gsne-fg: hsl(210, 25%, 15%);
  --gsne-primary: hsl(175, 70%, 41%);
  --gsne-primary-fg: #ffffff;
  --gsne-secondary: hsl(270, 45%, 35%);
  --gsne-secondary-fg: #ffffff;
  --gsne-accent: hsl(120, 60%, 45%);
  --gsne-accent-fg: #ffffff;
  --gsne-muted: hsl(210, 20%, 96%);
  --gsne-muted-fg: hsl(210, 15%, 45%);
  --gsne-border: hsl(210, 20%, 90%);
  --gsne-card: #ffffff;
  --gsne-card-fg: hsl(210, 25%, 15%);
  --gsne-hero-gradient: linear-gradient(135deg, hsl(210, 25%, 15%) 0%, hsl(220, 30%, 20%) 50%, hsl(230, 25%, 25%) 100%);
  --gsne-primary-gradient: linear-gradient(135deg, hsl(175, 70%, 41%) 0%, hsl(195, 80%, 45%) 100%);
  --gsne-accent-gradient: linear-gradient(135deg, hsl(120, 60%, 45%) 0%, hsl(160, 70%, 40%) 100%);
  --gsne-shadow-soft: 0 4px 20px hsla(210, 25%, 15%, 0.06);
  --gsne-shadow-card: 0 8px 30px hsla(210, 25%, 15%, 0.08);
  --gsne-shadow-elevated: 0 20px 60px hsla(210, 25%, 15%, 0.12);
  --gsne-glow-primary: 0 0 60px hsla(175, 70%, 41%, 0.3);
  --gsne-radius: 0.5rem;
}

/* ===== Reset & Base ===== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; border: 0 solid var(--gsne-border); }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  font-family: 'Inter', system-ui, -apple-system, sans-serif;
  color: var(--gsne-fg);
  background: var(--gsne-bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  line-height: 1.6;
}
h1, h2, h3, h4, h5, h6 {
  font-family: 'Montserrat', system-ui, sans-serif;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.2;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--gsne-primary); text-decoration: none; transition: color 0.3s; }
a:hover { color: hsl(175, 70%, 35%); }

/* ===== Container ===== */
.gsne-container { max-width: 1400px; margin: 0 auto; padding: 0 1.5rem; }

/* ===== Utility Classes ===== */
.text-gradient {
  background: var(--gsne-primary-gradient);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
.bg-hero { background: var(--gsne-hero-gradient); }
.bg-primary-gradient { background: var(--gsne-primary-gradient); }
.bg-muted { background: var(--gsne-muted); }
.shadow-soft { box-shadow: var(--gsne-shadow-soft); }
.shadow-card { box-shadow: var(--gsne-shadow-card); }
.shadow-elevated { box-shadow: var(--gsne-shadow-elevated); }
.shadow-glow-primary { box-shadow: var(--gsne-glow-primary); }

/* ===== Header ===== */
.gsne-header {
  position: fixed; top: 0; left: 0; right: 0; z-index: 50;
  background: rgba(255,255,255,0.95); backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--gsne-border);
}
.gsne-header-inner {
  display: flex; align-items: center; justify-content: space-between;
  height: 7rem; padding: 0.5rem 0;
}
.gsne-logo img { height: 6rem; width: auto; }
.gsne-nav { display: flex; align-items: center; gap: 0.25rem; }
.gsne-nav a {
  padding: 0.5rem 1rem; border-radius: var(--gsne-radius);
  font-size: 0.875rem; font-weight: 500; color: var(--gsne-muted-fg);
  transition: all 0.2s;
}
.gsne-nav a:hover, .gsne-nav a.active { color: var(--gsne-fg); background: var(--gsne-muted); }
.gsne-nav-dropdown { position: relative; }
.gsne-nav-dropdown .dropdown-menu {
  display: none; position: absolute; top: 100%; left: 0; margin-top: 0.25rem;
  width: 16rem; background: var(--gsne-card); border: 1px solid var(--gsne-border);
  border-radius: 0.5rem; box-shadow: var(--gsne-shadow-elevated); padding: 0.5rem 0;
}
.gsne-nav-dropdown:hover .dropdown-menu { display: block; }
.gsne-nav-dropdown .dropdown-menu a {
  display: block; padding: 0.5rem 1rem; font-size: 0.875rem;
  color: var(--gsne-muted-fg);
}
.gsne-nav-dropdown .dropdown-menu a:hover { color: var(--gsne-fg); background: var(--gsne-muted); }

/* CTA Button */
.gsne-btn {
  display: inline-flex; align-items: center; gap: 0.5rem;
  padding: 0.625rem 1.5rem; border-radius: var(--gsne-radius);
  font-size: 0.875rem; font-weight: 600; cursor: pointer;
  transition: all 0.3s; border: none; text-decoration: none;
}
.gsne-btn-primary { background: var(--gsne-primary); color: var(--gsne-primary-fg); }
.gsne-btn-primary:hover { background: hsl(175, 70%, 36%); color: var(--gsne-primary-fg); }
.gsne-btn-outline {
  background: transparent; color: var(--gsne-primary-fg);
  border: 1px solid rgba(255,255,255,0.3);
}
.gsne-btn-outline:hover { background: rgba(255,255,255,0.1); color: var(--gsne-primary-fg); }
.gsne-btn-lg { padding: 0.875rem 2rem; font-size: 1rem; }

/* Mobile menu */
.gsne-mobile-toggle { display: none; background: none; border: none; cursor: pointer; padding: 0.5rem; color: var(--gsne-fg); }
.gsne-mobile-menu { display: none; background: var(--gsne-bg); border-bottom: 1px solid var(--gsne-border); padding: 1.5rem; }
@media (max-width: 1023px) {
  .gsne-nav, .gsne-header-cta { display: none; }
  .gsne-mobile-toggle { display: block; }
  .gsne-mobile-menu.active { display: block; }
  .gsne-mobile-menu a { display: block; padding: 0.5rem 0; font-weight: 500; color: var(--gsne-muted-fg); }
  .gsne-mobile-menu .submenu { padding-left: 1rem; }
  .gsne-mobile-menu .submenu a { font-size: 0.875rem; padding: 0.375rem 0; }
}

/* ===== Hero Section ===== */
.gsne-hero {
  position: relative; min-height: 100vh; display: flex; align-items: center;
  overflow: hidden;
}
.gsne-hero .hero-bg {
  position: absolute; inset: 0; background-size: cover; background-position: center;
  opacity: 0.5;
}
.gsne-hero .hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to bottom, transparent, rgba(23,30,38,0.5) 50%, hsl(210,25%,15%));
}
.gsne-hero .hero-content { position: relative; z-index: 10; padding: 8rem 0 5rem; max-width: 56rem; }
.gsne-hero .hero-badge {
  display: inline-flex; align-items: center; gap: 0.5rem;
  padding: 0.5rem 1rem; border-radius: 9999px;
  background: rgba(30,160,140,0.2); border: 1px solid rgba(30,160,140,0.3);
  margin-bottom: 2rem; font-size: 0.875rem; font-weight: 500; color: rgba(255,255,255,0.8);
}
.gsne-hero h1 {
  font-size: clamp(2.25rem, 5vw, 3.75rem); color: var(--gsne-primary-fg); margin-bottom: 1.5rem;
}
.gsne-hero .hero-subtitle { font-size: clamp(1rem, 2vw, 1.25rem); color: rgba(255,255,255,0.7); max-width: 42rem; margin-bottom: 2.5rem; line-height: 1.7; }
.gsne-hero .hero-buttons { display: flex; flex-wrap: wrap; gap: 1rem; margin-bottom: 4rem; }
.gsne-hero .trust-indicators { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.gsne-hero .trust-item {
  display: flex; align-items: center; gap: 1rem;
  background: rgba(255,255,255,0.05); backdrop-filter: blur(8px);
  border-radius: 0.5rem; padding: 1rem; border: 1px solid rgba(255,255,255,0.1);
}
.gsne-hero .trust-icon {
  width: 3rem; height: 3rem; border-radius: 0.5rem;
  background: rgba(30,160,140,0.2); display: flex; align-items: center; justify-content: center;
  color: var(--gsne-primary); flex-shrink: 0;
}
.gsne-hero .trust-label { font-weight: 600; color: var(--gsne-primary-fg); }
.gsne-hero .trust-sublabel { font-size: 0.875rem; color: rgba(255,255,255,0.6); }
@media (max-width: 640px) {
  .gsne-hero .trust-indicators { grid-template-columns: 1fr; }
  .gsne-hero .hero-buttons { flex-direction: column; }
}

/* Floating animation */
@keyframes float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-20px); } }
.animate-float { animation: float 6s ease-in-out infinite; }
.gsne-hero .decorative-blob {
  position: absolute; border-radius: 50%; filter: blur(48px);
}

/* ===== Clients Section ===== */
.gsne-clients { padding: 4rem 0; background: var(--gsne-muted); border-top: 1px solid var(--gsne-border); border-bottom: 1px solid var(--gsne-border); }
.gsne-clients p { text-align: center; color: var(--gsne-muted-fg); font-weight: 500; margin-bottom: 2.5rem; }
.gsne-clients-grid {
  display: grid; grid-template-columns: repeat(6, 1fr); gap: 2rem; align-items: center;
}
.gsne-clients-grid .client-item {
  display: flex; align-items: center; justify-content: center; height: 4rem;
  padding: 0 1.5rem; background: var(--gsne-card); border-radius: 0.5rem;
  border: 1px solid var(--gsne-border);
}
@media (max-width: 768px) { .gsne-clients-grid { grid-template-columns: repeat(2, 1fr); } }

/* ===== Services Section ===== */
.gsne-services { padding: 6rem 0; }
.gsne-section-header { text-align: center; max-width: 48rem; margin: 0 auto 4rem; }
.gsne-section-header .section-label {
  display: block; color: var(--gsne-primary); font-weight: 600;
  font-size: 0.875rem; text-transform: uppercase; letter-spacing: 0.1em; margin-bottom: 1rem;
}
.gsne-section-header h2 { font-size: clamp(1.875rem, 4vw, 3rem); color: var(--gsne-fg); margin-bottom: 1.5rem; }
.gsne-section-header p { color: var(--gsne-muted-fg); font-size: 1.125rem; }
.gsne-services-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5rem;
}
.gsne-service-card {
  display: block; padding: 1.5rem; background: var(--gsne-card);
  border-radius: 0.75rem; border: 1px solid var(--gsne-border);
  box-shadow: var(--gsne-shadow-soft); transition: all 0.3s; text-decoration: none;
}
.gsne-service-card:hover { border-color: rgba(30,160,140,0.3); box-shadow: var(--gsne-shadow-card); }
.gsne-service-card .service-icon {
  width: 3rem; height: 3rem; border-radius: 0.5rem;
  background: var(--gsne-primary-gradient); display: flex; align-items: center; justify-content: center;
  margin-bottom: 1.25rem; box-shadow: var(--gsne-glow-primary);
  color: var(--gsne-primary-fg); transition: transform 0.3s;
}
.gsne-service-card:hover .service-icon { transform: scale(1.1); }
.gsne-service-card h3 {
  font-size: 1.125rem; color: var(--gsne-fg); margin-bottom: 0.5rem;
  transition: color 0.3s;
}
.gsne-service-card:hover h3 { color: var(--gsne-primary); }
.gsne-service-card p { color: var(--gsne-muted-fg); font-size: 0.875rem; line-height: 1.6; margin-bottom: 1rem; }
.gsne-service-card .learn-more {
  display: inline-flex; align-items: center; color: var(--gsne-primary);
  font-size: 0.875rem; font-weight: 500;
}
@media (max-width: 1024px) { .gsne-services-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .gsne-services-grid { grid-template-columns: 1fr; } }

/* ===== About Section ===== */
.gsne-about { padding: 6rem 0; background: var(--gsne-muted); }
.gsne-about-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; align-items: center; }
.gsne-about .about-label { display: block; color: var(--gsne-primary); font-weight: 600; font-size: 0.875rem; text-transform: uppercase; letter-spacing: 0.1em; margin-bottom: 1rem; }
.gsne-about h2 { font-size: clamp(1.875rem, 4vw, 3rem); color: var(--gsne-fg); margin-bottom: 1.5rem; }
.gsne-about p { color: var(--gsne-muted-fg); font-size: 1.125rem; line-height: 1.7; margin-bottom: 1.5rem; }
.gsne-about .highlights { margin-bottom: 2rem; }
.gsne-about .highlight-item { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1rem; }
.gsne-about .highlight-icon { width: 1.25rem; height: 1.25rem; color: var(--gsne-accent); flex-shrink: 0; }
.gsne-about .about-image { position: relative; }
.gsne-about .about-image img, .gsne-about .about-image > div { aspect-ratio: 4/3; border-radius: 1rem; overflow: hidden; object-fit: cover; }
.gsne-about .stats-overlay {
  position: absolute; bottom: 0; left: 0; right: 0; padding: 2rem;
  background: linear-gradient(to top, rgba(23,30,38,0.9), transparent);
  border-radius: 0 0 1rem 1rem;
}
.gsne-about .stats-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; text-align: center; }
.gsne-about .stat-value { font-size: 1.875rem; font-weight: 700; color: var(--gsne-primary-fg); font-family: 'Montserrat', sans-serif; }
.gsne-about .stat-label { font-size: 0.75rem; color: rgba(255,255,255,0.7); }
@media (max-width: 1024px) { .gsne-about-grid { grid-template-columns: 1fr; } }

/* ===== Projects Section ===== */
.gsne-projects { padding: 6rem 0; }
.gsne-projects-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; margin-bottom: 3rem; }
.gsne-project-card {
  background: var(--gsne-card); border-radius: 0.75rem; overflow: hidden;
  border: 1px solid var(--gsne-border); box-shadow: var(--gsne-shadow-soft);
  transition: all 0.3s;
}
.gsne-project-card:hover { box-shadow: var(--gsne-shadow-card); }
.gsne-project-card .project-image { aspect-ratio: 16/9; overflow: hidden; }
.gsne-project-card .project-image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s; }
.gsne-project-card:hover .project-image img { transform: scale(1.05); }
.gsne-project-card .project-content { padding: 1.5rem; }
.gsne-project-card .project-sector {
  display: inline-block; padding: 0.25rem 0.5rem; background: rgba(30,160,140,0.1);
  color: var(--gsne-primary); border-radius: 0.375rem; font-size: 0.75rem; font-weight: 500;
  margin-bottom: 0.5rem;
}
.gsne-project-card h3 { font-size: 1.25rem; color: var(--gsne-fg); margin-bottom: 0.5rem; }
.gsne-project-card p { color: var(--gsne-muted-fg); font-size: 0.875rem; line-height: 1.6; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
@media (max-width: 768px) { .gsne-projects-grid { grid-template-columns: 1fr; } }

/* Projects page full grid */
.gsne-projects-full-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 0.5rem; }
.gsne-projects-full-grid .project-tile {
  position: relative; aspect-ratio: 1; overflow: hidden; border-radius: 0.5rem; cursor: pointer;
}
.gsne-projects-full-grid .project-tile img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s; }
.gsne-projects-full-grid .project-tile:hover img { transform: scale(1.1); }
.gsne-projects-full-grid .project-tile .tile-overlay {
  position: absolute; inset: 0; background: rgba(23,30,38,0); transition: all 0.3s;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 1rem; text-align: center;
}
.gsne-projects-full-grid .project-tile:hover .tile-overlay { background: rgba(23,30,38,0.8); }
.gsne-projects-full-grid .project-tile .tile-overlay h3,
.gsne-projects-full-grid .project-tile .tile-overlay p {
  color: white; opacity: 0; transition: opacity 0.3s;
}
.gsne-projects-full-grid .project-tile:hover .tile-overlay h3,
.gsne-projects-full-grid .project-tile:hover .tile-overlay p { opacity: 1; }
.gsne-projects-full-grid .project-tile .tile-overlay h3 { font-size: 0.875rem; margin-bottom: 0.5rem; }
.gsne-projects-full-grid .project-tile .tile-overlay p { font-size: 0.75rem; color: rgba(255,255,255,0.8); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
@media (max-width: 1024px) { .gsne-projects-full-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 640px) { .gsne-projects-full-grid { grid-template-columns: repeat(2, 1fr); } }

/* Filter buttons */
.gsne-filters { padding: 2rem 0; background: var(--gsne-muted); border-bottom: 1px solid var(--gsne-border); position: sticky; top: 7rem; z-index: 40; }
.gsne-filters-inner { display: flex; flex-wrap: wrap; gap: 0.75rem; justify-content: center; }
.gsne-filter-btn {
  padding: 0.5rem 1rem; border-radius: 9999px; font-size: 0.875rem; font-weight: 500;
  background: var(--gsne-card); color: var(--gsne-muted-fg); border: 1px solid var(--gsne-border);
  cursor: pointer; transition: all 0.2s;
}
.gsne-filter-btn:hover { color: var(--gsne-fg); }
.gsne-filter-btn.active { background: var(--gsne-primary); color: var(--gsne-primary-fg); border-color: var(--gsne-primary); }

/* ===== Insights Section ===== */
.gsne-insights { padding: 6rem 0; background: var(--gsne-muted); }
.gsne-insights-header { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; margin-bottom: 3rem; }
.gsne-insights-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; }
.gsne-insight-card {
  background: var(--gsne-card); border-radius: 0.75rem; overflow: hidden;
  border: 1px solid var(--gsne-border); box-shadow: var(--gsne-shadow-soft);
  transition: all 0.3s;
}
.gsne-insight-card:hover { box-shadow: var(--gsne-shadow-card); }
.gsne-insight-card .insight-image { aspect-ratio: 16/9; overflow: hidden; }
.gsne-insight-card .insight-image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s; }
.gsne-insight-card:hover .insight-image img { transform: scale(1.05); }
.gsne-insight-card .insight-content { padding: 1.5rem; }
.gsne-insight-card .insight-meta { display: flex; align-items: center; gap: 1rem; font-size: 0.875rem; color: var(--gsne-muted-fg); margin-bottom: 0.75rem; }
.gsne-insight-card .insight-category { padding: 0.25rem 0.5rem; background: rgba(30,160,140,0.1); color: var(--gsne-primary); border-radius: 0.375rem; font-size: 0.75rem; font-weight: 500; }
.gsne-insight-card h3 { font-size: 1.125rem; color: var(--gsne-fg); margin-bottom: 0.5rem; transition: color 0.3s; }
.gsne-insight-card:hover h3 { color: var(--gsne-primary); }
.gsne-insight-card p { color: var(--gsne-muted-fg); font-size: 0.875rem; line-height: 1.6; margin-bottom: 1rem; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
@media (max-width: 768px) { .gsne-insights-grid { grid-template-columns: 1fr; } .gsne-insights-header { flex-direction: column; align-items: flex-start; } }

/* ===== Certifications ===== */
.gsne-certifications { padding: 4rem 0; }
.gsne-cert-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: center; }
.gsne-cert-card {
  display: flex; align-items: center; gap: 1rem; padding: 1.25rem;
  background: var(--gsne-card); border-radius: 0.75rem; border: 1px solid var(--gsne-border);
  box-shadow: var(--gsne-shadow-soft);
}
.gsne-cert-card .cert-icon {
  width: 3rem; height: 3rem; border-radius: 0.5rem;
  background: rgba(30,160,140,0.1); display: flex; align-items: center; justify-content: center;
  color: var(--gsne-primary); flex-shrink: 0;
}
.gsne-cert-card h3 { font-size: 1rem; color: var(--gsne-fg); }
.gsne-cert-card p { color: var(--gsne-muted-fg); font-size: 0.875rem; }
@media (max-width: 768px) { .gsne-cert-grid { grid-template-columns: 1fr; } }

/* ===== Memberships ===== */
.gsne-memberships { padding: 4rem 0; background: var(--gsne-muted); }
.gsne-memberships-grid {
  display: flex; flex-wrap: wrap; justify-content: center; align-items: center;
  gap: 1.5rem 2rem;
}
.gsne-memberships-grid img {
  max-height: 6rem; max-width: 12.5rem; object-fit: contain;
  filter: grayscale(100%); transition: filter 0.3s;
}
.gsne-memberships-grid img:hover { filter: grayscale(0%); }

/* ===== CTA Section ===== */
.gsne-cta { padding: 6rem 0; position: relative; overflow: hidden; }
.gsne-cta .cta-content { position: relative; z-index: 10; max-width: 48rem; margin: 0 auto; text-align: center; }
.gsne-cta h2 { font-size: clamp(1.875rem, 4vw, 3rem); color: var(--gsne-primary-fg); margin-bottom: 1.5rem; }
.gsne-cta p { color: rgba(255,255,255,0.7); font-size: 1.125rem; max-width: 36rem; margin: 0 auto 2.5rem; }
.gsne-cta .cta-buttons { display: flex; flex-wrap: wrap; gap: 1rem; justify-content: center; }

/* ===== Footer ===== */
.gsne-footer { background: var(--gsne-fg); color: var(--gsne-bg); padding: 0; }
.gsne-footer-grid, .gsne-footer-layout { display: grid; grid-template-columns: 1.05fr 0.6fr 1.65fr 0.7fr; gap: 4rem; align-items: start; }
.gsne-footer-services { margin-left: 0; }
.gsne-footer-services-list { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 3rem; align-items: start; }
.gsne-footer-services-list ul { margin: 0; min-width: 0; }
.gsne-footer-services-list li { break-inside: avoid; -webkit-column-break-inside: avoid; page-break-inside: avoid; }
.gsne-footer-services-list a { display: inline-block; max-width: 100%; line-height: 1.35; }
.gsne-footer-logo { height: 5.5rem; width: auto; filter: brightness(0) invert(1); margin-bottom: 1.75rem; }
.gsne-footer p { color: rgba(255,255,255,0.72); line-height: 1.55; margin-bottom: 1.5rem; }
.gsne-footer h4 { font-family: 'Montserrat', sans-serif; font-size: 1.125rem; font-weight: 800; margin-bottom: 1.4rem; color: #fff; letter-spacing: 0; }
.gsne-footer ul { list-style: none; padding: 0; margin: 0; }
.gsne-footer ul li { margin-bottom: 0.8rem; }
.gsne-footer ul a { color: rgba(255,255,255,0.72); transition: color 0.3s; }
.gsne-footer ul a:hover { color: var(--gsne-primary); }
.gsne-footer .contact-item { display: flex; align-items: flex-start; gap: 0.75rem; margin-bottom: 1rem; }
.gsne-footer .contact-item svg, .gsne-footer .contact-item .icon { color: var(--gsne-primary); width: 1.25rem; height: 1.25rem; flex-shrink: 0; margin-top: 0.125rem; }
.gsne-footer .contact-item span, .gsne-footer .contact-item a { color: rgba(255,255,255,0.72); font-size: 0.875rem; }
.gsne-footer-bottom, .gsne-footer-bottom-bar {
  border-top: 1px solid rgba(255,255,255,0.12); margin-top: 3.25rem; padding: 1.75rem 0 0;
  display: flex; justify-content: space-between; align-items: center; gap: 1.5rem;
}
.gsne-footer-bottom p, .gsne-footer-bottom-bar { color: rgba(255,255,255,0.52); font-size: 0.875rem; margin: 0; }
.gsne-footer-bottom a, .gsne-footer-bottom-bar a { color: rgba(255,255,255,0.58); font-size: 0.875rem; }
.gsne-footer-bottom a:hover, .gsne-footer-bottom-bar a:hover { color: var(--gsne-bg); }
.gsne-footer-brand-logo img { max-width: 100%; height: auto; filter: brightness(0) invert(1); margin: 0 0 1.85rem; }
.gsne-footer-brand-copy { max-width: 245px; color: rgba(255,255,255,0.72); font-size: 1rem; line-height: 1.5; }
.gsne-footer-social { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 999px; background: rgba(255,255,255,0.10); color: rgba(255,255,255,0.82); margin-top: 1.25rem; }
.gsne-footer-layout h4, .gsne-footer-layout .elementor-heading-title { font-size: 18px !important; color: #fff !important; margin: 0 0 1.45rem !important; }
.gsne-footer-list, .gsne-footer-contact-list { list-style: none; padding: 0; margin: 0; }
.gsne-footer-list li { margin: 0 0 .78rem; }
.gsne-footer-list a { color: rgba(255,255,255,0.74); font-size: 14px; line-height: 1.5; text-decoration: none; }
.gsne-footer-layout .gsne-footer-quick a { font-size: 16px; }
.gsne-footer-services-columns { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 3rem; }
.gsne-footer-contact-list li { display: grid; grid-template-columns: 20px minmax(0,1fr); gap: .8rem; align-items: start; margin: 0 0 1.05rem; color: rgba(255,255,255,0.74); line-height: 1.45; }
.gsne-footer-contact-list svg { width: 18px; height: 18px; color: var(--gsne-primary); margin-top: 2px; }
.gsne-footer-contact-list a { color: rgba(255,255,255,0.74); text-decoration: none; }
@media (max-width: 1100px) { .gsne-footer-grid, .gsne-footer-layout { grid-template-columns: 1fr 1fr; gap: 3rem; } .gsne-footer-services-columns { gap: 2rem; } }
@media (max-width: 768px) { .gsne-footer-grid, .gsne-footer-layout { grid-template-columns: 1fr; gap: 2.5rem; } .gsne-footer-services { margin-left: 0; } .gsne-footer-services-list, .gsne-footer-services-columns { grid-template-columns: 1fr; row-gap: 0; } .gsne-footer-bottom, .gsne-footer-bottom-bar { flex-direction: column; align-items: flex-start; gap: 1rem; } }

/* ===== Sub-page Banners ===== */
.gsne-page-banner { min-height: 400px; display: flex; align-items: center; padding-top: 5rem; padding-bottom: 5rem; }
.gsne-page-banner h1 { font-size: clamp(2.5rem, 4.6vw, 3.75rem); color: var(--gsne-primary-fg); margin-bottom: 1.125rem; line-height: 1.08; letter-spacing: 0; }
.gsne-page-banner p { color: rgba(255,255,255,0.85); font-size: clamp(1rem, 1.5vw, 1.125rem); line-height: 1.45; max-width: 48rem; }

/* ===== Contact Form ===== */
.gsne-contact-grid { display: grid; grid-template-columns: 1fr 2fr; gap: 3rem; }
.gsne-form-card { background: var(--gsne-card); border-radius: 1rem; border: 1px solid var(--gsne-border); padding: 2rem; box-shadow: var(--gsne-shadow-soft); }
.gsne-form-group { margin-bottom: 1.5rem; }
.gsne-form-group label { display: block; font-size: 0.875rem; font-weight: 500; color: var(--gsne-fg); margin-bottom: 0.5rem; }
.gsne-form-group input, .gsne-form-group select, .gsne-form-group textarea {
  width: 100%; padding: 0.625rem 0.75rem; border: 1px solid var(--gsne-border); border-radius: var(--gsne-radius);
  background: var(--gsne-bg); color: var(--gsne-fg); font-size: 0.875rem; font-family: inherit;
}
.gsne-form-group input:focus, .gsne-form-group select:focus, .gsne-form-group textarea:focus {
  outline: none; border-color: var(--gsne-primary); box-shadow: 0 0 0 3px rgba(30,160,140,0.15);
}
.gsne-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }
@media (max-width: 1024px) { .gsne-contact-grid { grid-template-columns: 1fr; } }
@media (max-width: 640px) { .gsne-form-row { grid-template-columns: 1fr; } }

/* ===== Team Grid ===== */
.gsne-team-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; }
.gsne-team-card { background: var(--gsne-card); border-radius: 0.75rem; overflow: hidden; border: 1px solid var(--gsne-border); box-shadow: var(--gsne-shadow-soft); }
.gsne-team-card .team-image { aspect-ratio: 4/3; background: var(--gsne-muted); display: flex; align-items: center; justify-content: center; overflow: hidden; }
.gsne-team-card .team-image img { width: 100%; height: 100%; object-fit: cover; }
.gsne-team-card .team-info { padding: 1.5rem; }
.gsne-team-card h3 { font-size: 1.25rem; color: var(--gsne-fg); margin-bottom: 0.25rem; }
.gsne-team-card .team-role { color: var(--gsne-primary); font-size: 0.875rem; font-weight: 500; margin-bottom: 0.75rem; }
.gsne-team-card .team-bio { color: var(--gsne-muted-fg); font-size: 0.875rem; }
@media (max-width: 768px) { .gsne-team-grid { grid-template-columns: 1fr; } }

/* ===== Values Grid ===== */
.gsne-values-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 2rem; }
.gsne-value-card { text-align: center; padding: 1.5rem; }
.gsne-value-card .value-icon {
  width: 3.5rem; height: 3.5rem; border-radius: 0.75rem;
  background: var(--gsne-primary-gradient); display: flex; align-items: center; justify-content: center;
  margin: 0 auto 1.25rem; box-shadow: var(--gsne-glow-primary); color: var(--gsne-primary-fg);
}
.gsne-value-card h3 { font-size: 1.25rem; color: var(--gsne-fg); margin-bottom: 0.5rem; }
.gsne-value-card p { color: var(--gsne-muted-fg); font-size: 0.875rem; }
@media (max-width: 768px) { .gsne-values-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .gsne-values-grid { grid-template-columns: 1fr; } }

/* ===== Services List (Services Page) ===== */
.gsne-service-list-item { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: center; margin-bottom: 4rem; }
.gsne-service-list-item.reverse .service-content { order: 2; }
.gsne-service-list-item.reverse .service-image { order: 1; }
.gsne-service-list-item .service-content .icon-wrap {
  width: 3.5rem; height: 3.5rem; border-radius: 0.75rem;
  background: var(--gsne-primary-gradient); display: flex; align-items: center; justify-content: center;
  margin-bottom: 1.5rem; box-shadow: var(--gsne-glow-primary); color: var(--gsne-primary-fg);
}
.gsne-service-list-item h2 { font-size: 1.875rem; color: var(--gsne-fg); margin-bottom: 1rem; }
.gsne-service-list-item p { color: var(--gsne-muted-fg); font-size: 1.125rem; margin-bottom: 1.5rem; }
.gsne-service-list-item .feature-list { list-style: none; padding: 0; margin-bottom: 2rem; }
.gsne-service-list-item .feature-list li { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; color: var(--gsne-fg); }
.gsne-service-list-item .feature-list .check { color: var(--gsne-accent); flex-shrink: 0; }
.gsne-service-list-item .service-image img, .gsne-service-list-item .service-image .placeholder {
  aspect-ratio: 4/3; border-radius: 1rem; overflow: hidden; object-fit: cover; border: 1px solid var(--gsne-border);
}
.gsne-service-list-item .service-image .placeholder {
  background: var(--gsne-muted); display: flex; align-items: center; justify-content: center; color: var(--gsne-muted-fg); font-size: 0.875rem;
}
@media (max-width: 1024px) {
  .gsne-service-list-item { grid-template-columns: 1fr; }
  .gsne-service-list-item.reverse .service-content, .gsne-service-list-item.reverse .service-image { order: unset; }
}

/* ===== Elementor Overrides ===== */
.elementor-page .gsne-header { position: fixed; }
body.elementor-default, body.elementor-template-full-width { margin: 0; }
.elementor-section.elementor-section-full_width > .elementor-container { max-width: 100%; }

/* Elementor Global Colors mapping */
.elementor-kit-global .e-global-color-primary { color: var(--gsne-primary); }
.elementor-kit-global .e-global-color-secondary { color: var(--gsne-secondary); }
.elementor-kit-global .e-global-color-accent { color: var(--gsne-accent); }

/* WordPress defaults */
.wp-block-button__link { text-decoration: none; }
.alignwide { max-width: 1200px; margin-left: auto; margin-right: auto; }
.alignfull { max-width: 100%; margin-left: 0; margin-right: 0; }

/* Contact Form 7 / WPForms Styling Override */
.gsne-form-card .wpcf7-form,
.gsne-form-card .wpforms-container {
    width: 100%;
}
.gsne-form-card .wpcf7-form input[type="text"],
.gsne-form-card .wpcf7-form input[type="email"],
.gsne-form-card .wpcf7-form input[type="tel"],
.gsne-form-card .wpcf7-form select,
.gsne-form-card .wpcf7-form textarea {
    width: 100%;
    padding: 0.625rem 0.75rem;
    border: 1px solid var(--gsne-border);
    border-radius: 0.5rem;
    background: var(--gsne-background);
    color: var(--gsne-foreground);
    font-size: 0.875rem;
    transition: border-color 0.2s, box-shadow 0.2s;
}
.gsne-form-card .wpcf7-form input:focus,
.gsne-form-card .wpcf7-form select:focus,
.gsne-form-card .wpcf7-form textarea:focus {
    outline: none;
    border-color: var(--gsne-primary);
    box-shadow: 0 0 0 3px rgba(14,165,233,0.15);
}
.gsne-form-card .wpcf7-form .wpcf7-submit {
    background: var(--gsne-primary);
    color: #fff;
    padding: 0.75rem 2rem;
    border: none;
    border-radius: 0.5rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.2s;
}
.gsne-form-card .wpcf7-form .wpcf7-submit:hover {
    background: var(--gsne-primary-dark, #0284c7);
}
.gsne-form-card .wpcf7-response-output {
    border-radius: 0.5rem;
    margin-top: 1rem;
}

/* v1.1 additions */
.gsne-team-card--bio-only .team-info { padding: 1.75rem; }
.gsne-team-card--bio-only { display: flex; }
.project-tile.is-highlighted { outline: 4px solid var(--gsne-primary); outline-offset: 2px; transition: outline 0.3s ease; }

/* Smooth scrolling + sticky-header anchor offset for /services/ anchor jumps */
html { scroll-behavior: smooth; }
.elementor-section[id] { scroll-margin-top: 100px; }

/* Affiliations: grayscale logos with color on hover (applies inside Elementor sections too) */
.gsne-affiliations img,
.elementor-section.gsne-affiliations img {
  filter: grayscale(100%);
  opacity: 0.85;
  transition: filter 0.3s ease, opacity 0.3s ease;
}
.gsne-affiliations img:hover,
.elementor-section.gsne-affiliations img:hover {
  filter: grayscale(0%);
  opacity: 1;
}

/* ============================================================
 * Services long-form page (page-services.php)
 * ============================================================ */
.gsne-service-jumpnav { padding: 3rem 0; background: var(--gsne-muted); border-bottom: 1px solid var(--gsne-border); }
.gsne-jumpnav-eyebrow { text-align: center; color: var(--gsne-primary); font-size: 0.875rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; margin: 0 0 0.5rem; }
.gsne-jumpnav-title { text-align: center; font-size: clamp(1.5rem, 3vw, 2rem); margin: 0 0 1.5rem; color: var(--gsne-fg); }
.gsne-jumpnav-list { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.5rem 0.75rem; list-style: none; padding: 0; margin: 0; }
.gsne-jumpnav-list a { display: inline-block; padding: 0.5rem 1rem; background: #fff; border: 1px solid var(--gsne-border); border-radius: 999px; font-size: 0.875rem; font-weight: 600; color: var(--gsne-fg); text-decoration: none; transition: all 0.2s; }
.gsne-jumpnav-list a:hover { background: var(--gsne-primary); border-color: var(--gsne-primary); color: #fff; }

.gsne-service-block { padding: 5rem 0; scroll-margin-top: 7rem; }
.gsne-service-block.is-alt { background: var(--gsne-muted); }
.gsne-service-grid { display: grid; grid-template-columns: 1.2fr 1fr; gap: 3rem; align-items: start; }
.gsne-service-block.is-alt .gsne-service-grid { grid-template-columns: 1fr 1.2fr; }
.gsne-service-block.is-alt .gsne-service-text { order: 2; }
.gsne-service-block.is-alt .gsne-service-media { order: 1; }
.gsne-service-text h2 { font-size: clamp(1.5rem, 2.5vw, 2rem); margin: 0 0 1rem; color: var(--gsne-fg); }
.gsne-service-text h3 { font-size: 1rem; margin: 1.5rem 0 0.75rem; color: var(--gsne-fg); text-transform: uppercase; letter-spacing: 0.05em; }
.gsne-service-overview { color: var(--gsne-muted-fg); font-size: 1.0625rem; line-height: 1.7; margin: 0 0 1rem; }
.gsne-service-features { list-style: none; padding: 0; margin: 0 0 1.5rem; display: grid; gap: 0.5rem; }
.gsne-service-features li { position: relative; padding-left: 1.75rem; color: var(--gsne-fg); }
.gsne-service-features li::before { content: ""; position: absolute; left: 0; top: 0.4em; width: 1.1rem; height: 1.1rem; border-radius: 50%; background: var(--gsne-accent, #2eb82e); }
.gsne-service-features li::after { content: ""; position: absolute; left: 0.32rem; top: 0.7em; width: 0.5rem; height: 0.28rem; border-left: 2px solid #fff; border-bottom: 2px solid #fff; transform: rotate(-45deg); }
.gsne-service-media img { width: 100%; height: auto; border-radius: 1rem; box-shadow: var(--gsne-shadow-card, 0 10px 30px rgba(0,0,0,0.08)); }
.gsne-service-media .gsne-image-placeholder { aspect-ratio: 4/3; background: #e5e7eb; border-radius: 1rem; display: flex; align-items: center; justify-content: center; color: var(--gsne-muted-fg); font-size: 0.875rem; }
.gsne-deliverables { margin-top: 1.5rem; padding: 1.5rem; background: #fff; border: 1px solid var(--gsne-border); border-radius: 0.75rem; }
.gsne-service-block.is-alt .gsne-deliverables { background: var(--gsne-bg, #fff); }
.gsne-deliverables h3 { margin: 0 0 0.75rem; font-size: 1rem; color: var(--gsne-fg); }
.gsne-deliverables ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.4rem; }
.gsne-deliverables li { position: relative; padding-left: 1.25rem; color: var(--gsne-fg); font-size: 0.9375rem; }
.gsne-deliverables li::before { content: "›"; position: absolute; left: 0; top: 0; color: var(--gsne-primary); font-weight: 700; }

@media (max-width: 900px) {
    .gsne-service-grid,
    .gsne-service-block.is-alt .gsne-service-grid { grid-template-columns: 1fr; gap: 2rem; }
    .gsne-service-block.is-alt .gsne-service-text { order: 2; }
    .gsne-service-block.is-alt .gsne-service-media { order: 1; }
    .gsne-service-block { padding: 3rem 0; }
}


/* ===== v1.14.26 Elementor parity fixes ===== */
.gsne-footer-elementor { padding: 0 !important; background: transparent !important; }
.gsne-footer-elementor .elementor-section { margin-top: 0; }
.gsne-footer-builder-page .gsne-footer-builder-canvas { padding: 0; }
.gsne-page-banner,
body.page:not(.home) .gsne-elementor-canvas > article > .elementor > .elementor-section:first-child { min-height: 400px !important; height: 400px !important; padding-top: 80px !important; padding-bottom: 80px !important; }
.gsne-page-banner > .elementor-container,
body.page:not(.home) .gsne-elementor-canvas > article > .elementor > .elementor-section:first-child > .elementor-container { max-width: 1400px !important; min-height: 0 !important; }
.gsne-page-banner .elementor-heading-title,
body.page:not(.home) .gsne-elementor-canvas > article > .elementor > .elementor-section:first-child .elementor-heading-title { color: #fff !important; line-height: 1.08 !important; letter-spacing: 0 !important; margin: 0 !important; }
.gsne-page-banner .elementor-heading-title span,
body.page:not(.home) .gsne-elementor-canvas > article > .elementor > .elementor-section:first-child .elementor-widget-heading:nth-of-type(2) .elementor-heading-title,
body.page:not(.home) .gsne-elementor-canvas > article > .elementor > .elementor-section:first-child .elementor-widget-heading + .elementor-widget-heading .elementor-heading-title { color: var(--gsne-primary) !important; }
.gsne-page-banner .elementor-widget-heading,
body.page:not(.home) .gsne-elementor-canvas > article > .elementor > .elementor-section:first-child .elementor-widget-heading { display: inline-block !important; width: auto !important; max-width: 100% !important; margin: 0 .18em 0 0 !important; vertical-align: baseline; }
.gsne-page-banner .elementor-widget-text-editor,
.gsne-page-banner .elementor-widget-text-editor p,
body.page:not(.home) .gsne-elementor-canvas > article > .elementor > .elementor-section:first-child .elementor-widget-text-editor,
body.page:not(.home) .gsne-elementor-canvas > article > .elementor > .elementor-section:first-child .elementor-widget-text-editor p { display: block !important; margin-bottom: 0 !important; }
.gsne-services-intro { padding-bottom: 44px !important; }
.gsne-home-services-row,
body.home .gsne-elementor-canvas > article > .elementor > .elementor-section:nth-child(3),
body.home .gsne-elementor-canvas > article > .elementor > .elementor-section:nth-child(4),
body.home .gsne-elementor-canvas > article > .elementor > .elementor-section:nth-child(5) { padding-top: 20px !important; padding-bottom: 20px !important; }
.gsne-home-services-row-last,
body.home .gsne-elementor-canvas > article > .elementor > .elementor-section:nth-child(5) { padding-bottom: 140px !important; }
body.home .gsne-elementor-canvas > article > .elementor > .elementor-section:nth-last-child(2) { padding-top: 130px !important; padding-bottom: 40px !important; }
body.home .gsne-elementor-canvas > article > .elementor > .elementor-section:last-child { padding-top: 0 !important; padding-bottom: 130px !important; }
.gsne-proj-filters { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.5rem; }
.gsne-proj-card[style*="display: none"], .project-tile[style*="display: none"] { display: none !important; }
@media (max-width: 767px) {
  .gsne-page-banner,
  body.page:not(.home) .gsne-elementor-canvas > article > .elementor > .elementor-section:first-child { min-height: 360px !important; height: 360px !important; }
  .gsne-page-banner .elementor-heading-title,
  body.page:not(.home) .gsne-elementor-canvas > article > .elementor > .elementor-section:first-child .elementor-heading-title { font-size: 38px !important; }
  .gsne-page-banner-subtitle,
  body.page:not(.home) .gsne-elementor-canvas > article > .elementor > .elementor-section:first-child .elementor-widget-text-editor p { font-size: 16px !important; }
}


/* ===== v1.14.28 forced homepage refresh/parity fixes ===== */
body.home .gsne-home-hero,
body.home .gsne-elementor-canvas > article > .elementor > .elementor-section:first-child {
  min-height: 820px !important;
  height: auto !important;
  padding-top: 168px !important;
  padding-bottom: 128px !important;
  display: flex !important;
  align-items: center !important;
}
body.home .gsne-elementor-canvas > article > .elementor > .elementor-section:first-child .elementor-background-overlay {
  opacity: .42 !important;
  background-size: cover !important;
  background-position: center center !important;
}
.gsne-hero-badge {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .5rem 1rem;
  border-radius: 999px;
  color: rgba(255,255,255,.84);
  background: rgba(31,178,166,.2);
  border: 1px solid rgba(31,178,166,.32);
  font-weight: 600;
  font-size: .875rem;
  margin: 0 0 2rem;
}
.gsne-hero-badge-icon { color: var(--gsne-primary); font-weight: 800; }
.gsne-hero-buttons { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; margin: 0; }
.gsne-trust-indicators { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; max-width: 920px; }
.gsne-trust-item { display: flex; align-items: center; gap: 1rem; padding: 1rem; border-radius: .5rem; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.12); backdrop-filter: blur(8px); }
.gsne-trust-icon { width: 3rem; height: 3rem; flex: 0 0 3rem; border-radius: .5rem; display: flex; align-items: center; justify-content: center; color: var(--gsne-primary); background: rgba(31,178,166,.2); font-size: 1.1rem; }
.gsne-trust-item strong { display: block; color: #fff; font-weight: 700; line-height: 1.2; }
.gsne-trust-item span { display: block; color: rgba(255,255,255,.62); font-size: .875rem; line-height: 1.35; margin-top: .15rem; }
.gsne-clients-strip { border-top: 1px solid var(--gsne-border); }
.gsne-clients-strip-logos { border-bottom: 1px solid var(--gsne-border); }
.gsne-client-logo-placeholder { display: flex; align-items: center; justify-content: center; min-height: 4rem; padding: 0 1rem; background: #fff; border: 1px solid var(--gsne-border); border-radius: .5rem; color: var(--gsne-muted-fg); font-weight: 600; font-size: .875rem; text-align: center; }
body.home .gsne-elementor-canvas > article > .elementor > .elementor-section:nth-last-child(2) { padding-top: 130px !important; padding-bottom: 40px !important; }
body.home .gsne-elementor-canvas > article > .elementor > .elementor-section:last-child { padding-top: 0 !important; padding-bottom: 130px !important; }
@media (max-width: 1023px) {
  .gsne-trust-indicators { grid-template-columns: 1fr; max-width: 560px; }
}
@media (max-width: 767px) {
  body.home .gsne-home-hero,
  body.home .gsne-elementor-canvas > article > .elementor > .elementor-section:first-child { min-height: 760px !important; padding-top: 128px !important; padding-bottom: 88px !important; }
  .gsne-hero-buttons { flex-direction: column; align-items: stretch; }
  .gsne-hero-buttons .gsne-btn { justify-content: center; }
}

/* v1.14.29 — force Lovable parity for editable Elementor sections */
.gsne-featured-projects-heading .elementor-heading-title,
body.home .elementor-widget-heading .elementor-heading-title:has(+ *) {
  letter-spacing: 0;
}
.gsne-featured-projects-row .elementor-container {
  align-items: stretch;
}
.gsne-featured-project-col > .elementor-widget-wrap {
  background: var(--gsne-card);
  border: 1px solid var(--gsne-border);
  border-radius: 12px;
  box-shadow: var(--gsne-shadow-soft);
  overflow: hidden;
  padding: 0 !important;
  transition: transform .3s ease, box-shadow .3s ease;
}
.gsne-featured-project-col > .elementor-widget-wrap:hover {
  transform: translateY(-2px);
  box-shadow: var(--gsne-shadow-card);
}
.gsne-featured-project-card .elementor-image-box-img {
  display: block;
  margin: 0 !important;
  overflow: hidden;
  width: 100% !important;
}
.gsne-featured-project-card .elementor-image-box-img img {
  width: 100% !important;
  height: 220px !important;
  object-fit: cover;
  display: block;
  transition: transform .5s ease;
}
.gsne-featured-project-card:hover .elementor-image-box-img img {
  transform: scale(1.05);
}
.gsne-featured-project-card .elementor-image-box-content {
  padding: 24px;
  text-align: left;
}
.gsne-featured-project-card .elementor-image-box-title {
  margin: 0 0 8px;
  font-size: 20px !important;
  line-height: 1.25;
}
.gsne-featured-project-card .elementor-image-box-title a {
  color: var(--gsne-fg) !important;
}
.gsne-featured-project-card .elementor-image-box-title a:hover {
  color: var(--gsne-primary) !important;
}
.gsne-featured-sector {
  display: inline-flex;
  width: max-content;
  margin: 0 0 12px;
  padding: 4px 9px;
  border-radius: 6px;
  background: hsla(175, 70%, 41%, .10);
  color: var(--gsne-primary);
  font-size: 12px;
  font-weight: 700;
  line-height: 1.2;
}
.gsne-featured-desc {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  color: var(--gsne-muted-fg);
  font-size: 14px;
  line-height: 1.55;
}

/* Style older home Featured Projects blocks too, even before page reinstall. */
body.home .elementor-widget-image-box:not(.gsne-featured-project-card) .elementor-image-box-wrapper {
  max-width: 100%;
}
body.home .elementor-widget-image-box:not(.gsne-featured-project-card) .elementor-image-box-img img {
  width: 100%;
  height: 220px;
  object-fit: cover;
}
body.home .elementor-widget-image-box:not(.gsne-featured-project-card) .elementor-image-box-content {
  padding: 18px 6px 0;
}

.gsne-team-row .elementor-container {
  align-items: stretch;
}
.gsne-team-card-spaced > .elementor-widget-wrap {
  min-height: 184px;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}
.gsne-team-card-spaced .elementor-heading-title {
  margin-bottom: 24px !important;
  letter-spacing: 0;
}
.gsne-team-card-empty > .elementor-widget-wrap {
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none !important;
}

.gsne-footer-elementor .elementor-section:first-child > .elementor-container,
.gsne-footer-layout {
  max-width: 1288px;
  margin-left: auto;
  margin-right: auto;
}
.gsne-footer-elementor .elementor-section:first-child .elementor-widget-image img {
  width: 220px !important;
  max-width: min(220px, 100%) !important;
  height: auto !important;
  filter: brightness(0) invert(1);
}
.gsne-footer-elementor .elementor-section:first-child .elementor-widget-heading .elementor-heading-title {
  color: #fff !important;
  font-size: 18px !important;
  line-height: 1.25 !important;
}
.gsne-footer-elementor .elementor-section:first-child .elementor-widget-text-editor,
.gsne-footer-elementor .elementor-section:first-child .elementor-widget-text-editor a {
  color: rgba(255,255,255,.74) !important;
}
@media (max-width: 767px) {
  .gsne-featured-project-card .elementor-image-box-img img,
  body.home .elementor-widget-image-box:not(.gsne-featured-project-card) .elementor-image-box-img img { height: 190px !important; }
  .gsne-team-card-spaced > .elementor-widget-wrap { min-height: auto; }
}

/* v1.14.30 — footer column top-alignment + Lovable-style Contact "Get in Touch" */
.gsne-footer-main-section > .elementor-container,
.gsne-footer-elementor .elementor-section:first-child > .elementor-container {
  align-items: flex-start !important;
}
.gsne-footer-main-section .elementor-column,
.gsne-footer-elementor .elementor-section:first-child .elementor-column {
  align-self: flex-start !important;
}
.gsne-footer-main-section .elementor-column > .elementor-column-wrap,
.gsne-footer-main-section .elementor-column > .elementor-widget-wrap,
.gsne-footer-elementor .elementor-section:first-child .elementor-column > .elementor-column-wrap,
.gsne-footer-elementor .elementor-section:first-child .elementor-column > .elementor-widget-wrap {
  align-content: flex-start !important;
  justify-content: flex-start !important;
}
/* All four footer-column headings sit on the same baseline */
.gsne-footer-main-section .elementor-widget-heading:first-child,
.gsne-footer-elementor .elementor-section:first-child .elementor-column .elementor-widget-heading:first-child {
  margin-top: 0 !important;
}
.gsne-footer-brand .elementor-widget-image { margin-top: 0 !important; }

/* Contact page — "Get in Touch" Lovable parity */
.gsne-contact-lead { color: var(--gsne-muted-fg, #5b6470) !important; margin: 0 0 1.75rem; line-height: 1.55; }
.gsne-contact-rows { list-style: none; padding: 0; margin: 0; }
.gsne-contact-rows li {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr);
  gap: 0.9rem;
  margin: 0 0 1.5rem;
  align-items: start;
}
.gsne-contact-ic { color: var(--gsne-primary); display: inline-flex; margin-top: 2px; }
.gsne-contact-ic svg { width: 20px; height: 20px; }
.gsne-contact-title {
  font-family: 'Montserrat', sans-serif;
  font-size: 1rem;
  font-weight: 700;
  color: var(--gsne-fg, #0f1c2e);
  margin: 0 0 0.25rem;
  line-height: 1.3;
}
.gsne-contact-body, .gsne-contact-body p { color: var(--gsne-muted-fg, #5b6470) !important; font-size: 0.9rem; line-height: 1.5; margin: 0; }
.gsne-contact-body a { color: var(--gsne-muted-fg, #5b6470) !important; text-decoration: none; }
.gsne-contact-body a:hover { color: var(--gsne-primary) !important; }
.gsne-contact-sub { font-size: 0.78rem; color: var(--gsne-muted-fg, #7a828d) !important; display: inline-block; margin-top: 2px; }

/* v1.14.34 — force Contact page body copy readable on white backgrounds */
body:not(.home) .gsne-contact-lead,
body:not(.home) .gsne-contact-body,
body:not(.home) .gsne-contact-body p,
body:not(.home) .gsne-contact-body a,
body:not(.home) .gsne-contact-sub,
body:not(.home) .gsne-contact-grid p,
body:not(.home) .gsne-contact-grid a,
body:not(.home) .gsne-contact-grid .elementor-widget-text-editor {
  color: var(--gsne-muted-fg, #627384) !important;
  -webkit-text-fill-color: var(--gsne-muted-fg, #627384) !important;
  opacity: 1 !important;
}
body:not(.home) .gsne-contact-grid h2,
body:not(.home) .gsne-contact-grid h3,
body:not(.home) .gsne-contact-title {
  color: var(--gsne-fg, #1d2630) !important;
  -webkit-text-fill-color: var(--gsne-fg, #1d2630) !important;
}
body:not(.home) .gsne-contact-ic,
body:not(.home) .gsne-contact-ic svg {
  color: var(--gsne-primary, #1fb2a6) !important;
  -webkit-text-fill-color: var(--gsne-primary, #1fb2a6) !important;
}


/* v14.37 — extra breathing room beneath the Latest Insights / Latest Articles card rows */
.gsne-home-insights-cards.elementor-section,
.gsne-insights-page-cards.elementor-section {
  padding-bottom: 140px !important;
}
@media (max-width: 768px) {
  .gsne-home-insights-cards.elementor-section,
  .gsne-insights-page-cards.elementor-section {
    padding-bottom: 80px !important;
  }
}

/* ===== v1.14.40 single post title sizing fix ===== */
.single .gsne-page-banner {
  min-height: 320px !important;
  height: auto !important;
  padding-top: 64px !important;
  padding-bottom: 64px !important;
}
.single .gsne-page-banner h1 {
  font-size: clamp(2rem, 3.2vw, 2.875rem) !important;
  line-height: 1.14 !important;
  letter-spacing: 0 !important;
  max-width: 980px !important;
  margin: 0 !important;
}
@media (max-width: 767px) {
  .single .gsne-page-banner {
    min-height: 260px !important;
    padding-top: 48px !important;
    padding-bottom: 48px !important;
  }
  .single .gsne-page-banner h1 {
    font-size: 30px !important;
  }
}


/* v14.46 - remove header bottom border on single posts (line above featured image) */
body.single-post .gsne-header { border-bottom: 0 !important; }

/* v14.47 - remove stray divider/border above featured image on single posts */
body.single-post main hr:first-child,
body.single-post .gsne-container > hr:first-child,
body.single-post article > hr:first-of-type,
body.single-post .elementor > .elementor-section:first-child hr:first-child,
body.single-post .elementor-widget-divider:first-child { display: none !important; }
body.single-post main > *:first-child,
body.single-post article,
body.single-post .gsne-container { border-top: 0 !important; }

/* v14.48 - force left-align banner heading on posts/insights page (overrides Elementor centered alignment) */
.gsne-posts-page-content,
.gsne-posts-page-content * { text-align: left !important; }
.gsne-posts-page-content .elementor-heading-title,
.gsne-posts-page-content h1,
.gsne-posts-page-content h2,
.gsne-posts-page-content p { text-align: left !important; }

/* v14.51 - hard force Insights/posts banner content to the left edge of the site container */
body.blog .gsne-page-insights .gsne-page-banner,
body.home.blog .gsne-page-insights .gsne-page-banner,
.gsne-page-insights .gsne-page-banner.gsne-insights-banner {
  text-align: left !important;
  justify-content: flex-start !important;
}
body.blog .gsne-page-insights .gsne-page-banner > .gsne-container,
body.home.blog .gsne-page-insights .gsne-page-banner > .gsne-container,
.gsne-page-insights .gsne-page-banner.gsne-insights-banner > .gsne-container {
  width: 100% !important;
  max-width: 1400px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  text-align: left !important;
  align-items: flex-start !important;
  justify-content: flex-start !important;
}
body.blog .gsne-page-insights .gsne-page-banner h1,
body.blog .gsne-page-insights .gsne-page-banner p,
.gsne-page-insights .gsne-page-banner.gsne-insights-banner h1,
.gsne-page-insights .gsne-page-banner.gsne-insights-banner p,
.gsne-page-insights .gsne-page-banner.gsne-insights-banner span {
  text-align: left !important;
}

/* v14.52 - FINAL: pin Insights banner text to the normal content/card left edge */
body.blog .gsne-page-insights .gsne-insights-banner,
body.home.blog .gsne-page-insights .gsne-insights-banner,
.gsne-page-insights .gsne-insights-banner {
  text-align: left !important;
}
body.blog .gsne-page-insights .gsne-insights-banner .gsne-container,
body.home.blog .gsne-page-insights .gsne-insights-banner .gsne-container,
.gsne-page-insights .gsne-insights-banner .gsne-container {
  max-width: 1400px !important;
  width: 100% !important;
  margin: 0 auto !important;
  padding-left: 1.5rem !important;
  padding-right: 1.5rem !important;
  text-align: left !important;
}
body.blog .gsne-page-insights .gsne-insights-banner h1,
body.blog .gsne-page-insights .gsne-insights-banner p,
body.home.blog .gsne-page-insights .gsne-insights-banner h1,
body.home.blog .gsne-page-insights .gsne-insights-banner p,
.gsne-page-insights .gsne-insights-banner h1,
.gsne-page-insights .gsne-insights-banner p {
  display: block !important;
  width: 100% !important;
  max-width: 900px !important;
  margin-left: 0 !important;
  margin-right: auto !important;
  text-align: left !important;
}
