/*
Theme Name: GNEXTSYS
Theme URI: https://www.gnextsys.com/
Description: Child theme of Hello Elementor for the GNEXTSYS website. Registers the Portfolio post type, its taxonomies and project fields, adds the project template and shared card styles used by the Elementor pages.
Author: GNEXTSYS
Version: 1.1.5
Template: hello-elementor
Text Domain: gnextsys
*/

/* Contact form ([gx_contact_form]) */
.gx-form { display: block; }
.gx-form-hp { position: absolute; left: -9999px; top: -9999px; height: 0; overflow: hidden; }
.gx-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.gx-form-grid label { display: flex; flex-direction: column; gap: 6px; font: 600 13px/1.4 var(--gx-font-body); color: var(--gx-ink); }
.gx-form-grid .gx-form-full { grid-column: 1 / -1; }
.gx-form input, .gx-form select, .gx-form textarea { width: 100%; font: 400 15px/1.5 var(--gx-font-body); color: var(--gx-ink); background: #fff; border: 1px solid var(--gx-line); border-radius: 10px; padding: 12px 14px; transition: border-color .15s, box-shadow .15s; }
.gx-form input:focus, .gx-form select:focus, .gx-form textarea:focus { outline: none; border-color: var(--gx-coral); box-shadow: 0 0 0 3px rgba(249,110,91,.18); }
.gx-form textarea { resize: vertical; min-height: 140px; }
.gx-form-consent { font: 400 13px/1.5 var(--gx-font-body); color: var(--gx-muted); margin: 14px 0 16px; }
.gx-form-consent a { color: var(--gx-coral-dark); }
.gx-form-btn { display: inline-flex; align-items: center; gap: 8px; background: var(--gx-coral); color: #fff; border: 0; border-radius: 8px; padding: 14px 26px; font: 600 16px/1 var(--gx-font-body); cursor: pointer; transition: background .15s, transform .15s; }
.gx-form-btn:hover { background: var(--gx-coral-dark); transform: translateY(-1px); }
.gx-form-errors { background: #FFF1F0; border: 1px solid #FFC9C2; color: #9F2B1E; border-radius: 10px; padding: 12px 16px; margin-bottom: 16px; font: 400 14px/1.5 var(--gx-font-body); }
.gx-form-errors ul { margin: 0; padding-left: 18px; }
.gx-form-success { background: #ECFDF5; border: 1px solid #A7F3D0; color: #065F46; border-radius: 12px; padding: 18px 20px; font: 400 15px/1.6 var(--gx-font-body); }
@media (max-width: 767px) { .gx-form-grid { grid-template-columns: 1fr; } }

/* Footer: keep the four columns on one row at desktop, centre the legal row */
@media (min-width: 1025px) {
	.e-con.gx-fcol { flex-shrink: 1; min-width: 0; }
	.e-con.gx-fcol .elementor-icon-list-text { white-space: normal; }
}
.elementor-widget.gx-legal .elementor-icon-list-items { justify-content: center; text-align: center; }
.elementor-widget.gx-legal .elementor-icon-list-item { white-space: nowrap; }

:root {
	--gx-ink: #0B1220; --gx-navy: #121C33; --gx-coral: #F96E5B; --gx-coral-dark: #E2543F; --gx-coral-soft: #FFEDE9;
	--gx-text: #334155; --gx-muted: #64748B; --gx-mist: #F5F7FA; --gx-line: #E5E9F0; --gx-teal: #1FB5A5;
	--gx-font-head: "Plus Jakarta Sans", "Segoe UI", system-ui, sans-serif; --gx-font-body: "Figtree", "Segoe UI", system-ui, sans-serif; --gx-font-mono: "JetBrains Mono", ui-monospace, Menlo, monospace;
}

/* ---------- Global refinements ---------- */
html { scroll-behavior: smooth; }
body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; overflow-x: hidden; }
img { height: auto; max-width: 100%; }
a:focus-visible, button:focus-visible, [tabindex]:focus-visible { outline: 2px solid var(--gx-coral); outline-offset: 3px; }
.elementor-widget-text-editor p:last-child { margin-bottom: 0; }

/* ---------- Card system (used by Elementor widgets/containers via CSS classes) ---------- */
.gx-card { background: #fff; border: 1px solid var(--gx-line); border-radius: 16px; padding: 28px; transition: box-shadow .25s ease, transform .25s ease, background .25s ease; }
.gx-card:hover { box-shadow: 0 14px 34px -14px rgba(11, 18, 32, .18); transform: translateY(-2px); }
.gx-card-dark { background: rgba(255, 255, 255, .05); border-color: rgba(255, 255, 255, .1); }
.gx-card-dark:hover { background: rgba(255, 255, 255, .08); box-shadow: 0 14px 34px -14px rgba(0, 0, 0, .5); }
.gx-shadow { border-color: transparent; box-shadow: 0 12px 32px -12px rgba(11, 18, 32, .14); }
.gx-shadow:hover { transform: none; }
.gx-pad-sm { padding: 22px; }
.gx-pad-lg { padding: 40px; }
/* widths inside flex rows */
.elementor-widget.gx-w2, .elementor-widget.gx-w3, .elementor-widget.gx-w4, .elementor-widget.gx-w7,
.e-con.gx-w2, .e-con.gx-w3, .e-con.gx-w4, .e-con.gx-w7 { flex-grow: 1; flex-shrink: 1; min-width: 0; }
.elementor-widget.gx-w2, .e-con.gx-w2 { --container-widget-width: 47%; --width: 47%; width: 47%; }
.elementor-widget.gx-w3, .e-con.gx-w3 { --container-widget-width: 31.5%; --width: 31.5%; width: 31.5%; }
.elementor-widget.gx-w4, .e-con.gx-w4 { --container-widget-width: 23.5%; --width: 23.5%; width: 23.5%; }
.elementor-widget.gx-w7, .e-con.gx-w7 { --container-widget-width: 13%; --width: 13%; width: 13%; }
@media (max-width: 1024px) {
	.elementor-widget.gx-w3, .elementor-widget.gx-w4, .e-con.gx-w3, .e-con.gx-w4 { --container-widget-width: 48%; --width: 48%; width: 48%; }
	.elementor-widget.gx-w7, .e-con.gx-w7 { --container-widget-width: 31%; --width: 31%; width: 31%; }
}
@media (max-width: 767px) {
	.elementor-widget.gx-w2, .elementor-widget.gx-w3, .elementor-widget.gx-w4, .elementor-widget.gx-w7,
	.e-con.gx-w2, .e-con.gx-w3, .e-con.gx-w4, .e-con.gx-w7 { --container-widget-width: 100%; --width: 100%; width: 100%; }
	.gx-card { padding: 22px; }
	.gx-pad-lg { padding: 26px; }
}
/* icon-box links: whole card clickable feel */
.gx-card.elementor-widget-icon-box .elementor-icon-box-title a { color: inherit; }
.gx-card.elementor-widget-icon-box:hover .elementor-icon-box-title a { color: var(--gx-coral-dark); }

/* hero */
.e-con.gx-hero { position: relative; overflow: hidden; isolation: isolate; }
.e-con.gx-hero::before { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
	background: radial-gradient(600px 420px at 85% 15%, rgba(249, 110, 91, .32), transparent 70%), radial-gradient(520px 420px at 10% 95%, rgba(31, 181, 165, .22), transparent 70%),
		linear-gradient(rgba(255, 255, 255, .035) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .035) 1px, transparent 1px);
	background-size: auto, auto, 40px 40px, 40px 40px; }
.e-con.gx-hero::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .25), transparent); }
.gx-hero-art img { filter: drop-shadow(0 30px 50px rgba(0, 0, 0, .45)); animation: gx-float 7s ease-in-out infinite; }
@keyframes gx-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
@media (prefers-reduced-motion: reduce) { .gx-hero-art img { animation: none; } }
@media (min-width: 1025px) { .gx-hero-art img { max-width: 112%; width: 112%; margin-right: -12%; } }

/* industry image cards */
.e-con.gx-ind { overflow: hidden; isolation: isolate; transition: transform .3s ease, box-shadow .3s ease; }
.e-con.gx-ind:hover { transform: translateY(-4px); box-shadow: 0 20px 40px -18px rgba(11, 18, 32, .45); }
.e-con.gx-ind h3 { position: relative; padding-left: 14px; }
.e-con.gx-ind h3::before { content: ""; position: absolute; left: 0; top: .2em; bottom: .2em; width: 3px; border-radius: 2px; background: var(--gx-coral); }

/* chips */
.gx-chip { display: inline-block; padding: 5px 12px; border-radius: 999px; background: rgba(15, 23, 42, .06); font-size: 13px; font-weight: 500; line-height: 1.3; margin: 0 6px 6px 0; }
.gx-card-dark .gx-chip { background: rgba(255, 255, 255, .1); color: #fff; }
.gx-chips { margin: 4px 0 18px; }

/* buttons used in PHP templates */
.gx-btn { display: inline-flex; align-items: center; gap: 8px; padding: 14px 26px; border-radius: 8px; font: 600 16px/1 var(--gx-font-body); text-decoration: none; transition: background .2s ease, color .2s ease, border-color .2s ease; }
.gx-btn-primary { background: var(--gx-coral); color: #fff; }
.gx-btn-primary:hover { background: var(--gx-coral-dark); color: #fff; }
.gx-btn-ghost { background: transparent; color: #fff; border: 1px solid rgba(255, 255, 255, .35); }
.gx-btn-ghost:hover { background: rgba(255, 255, 255, .1); color: #fff; }
.gx-btn-ghost-dark { background: transparent; color: var(--gx-ink); border: 1px solid var(--gx-line); }
.gx-btn-ghost-dark:hover { background: var(--gx-mist); color: var(--gx-ink); }

/* ---------- Project (portfolio) single template ---------- */
.gx-wrap { max-width: 1200px; margin: 0 auto; padding: 0 24px; }
.gx-eyebrow { font: 500 13px/1.4 var(--gx-font-mono); letter-spacing: 1.5px; text-transform: uppercase; color: var(--gx-coral); margin-bottom: 14px; }
.gx-eyebrow a { color: inherit; text-decoration: none; }
.gx-project-hero { background: linear-gradient(150deg, #0B1220, #162040); color: #fff; padding: 88px 0 150px; }
.gx-project-hero .gx-eyebrow { color: #FFB199; }
.gx-project-hero-grid { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, .8fr); gap: 48px; align-items: end; }
.gx-project h1.gx-project-title { font: 700 clamp(34px, 5vw, 54px)/1.1 var(--gx-font-head); letter-spacing: -1px; color: #fff; margin: 0 0 18px; }
.gx-project .gx-project-content h2, .gx-project .gx-project-more h2 { color: var(--gx-ink); }
.gx-project .gx-side-cta h3 { color: #fff; }
@media (max-width: 1024px) { .gx-project-hero-grid { grid-template-columns: 1fr; gap: 28px; align-items: start; } .gx-project-facts { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); } }
.gx-project-summary { font: 400 19px/1.6 var(--gx-font-body); color: rgba(255, 255, 255, .78); margin: 0 0 26px; max-width: 640px; }
.gx-project-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.gx-project-facts { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 24px; margin: 0; padding: 26px; background: rgba(255, 255, 255, .05); border: 1px solid rgba(255, 255, 255, .1); border-radius: 16px; }
.gx-project-facts dt { font: 500 12px/1.3 var(--gx-font-mono); letter-spacing: 1.2px; text-transform: uppercase; color: rgba(255, 255, 255, .55); margin-bottom: 6px; }
.gx-project-facts dd { margin: 0; font: 500 16px/1.4 var(--gx-font-body); color: #fff; }
.gx-project-figure-wrap { margin-top: -96px; }
.gx-project-figure { margin: 0; border-radius: 20px; overflow: hidden; box-shadow: 0 30px 60px -24px rgba(11, 18, 32, .45); border: 1px solid var(--gx-line); background: #fff; }
.gx-project-figure img { display: block; width: 100%; height: auto; }
.gx-project-body { padding: 72px 0 96px; }
.gx-project-grid { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 56px; align-items: start; }
.gx-project-content h2 { font: 700 30px/1.2 var(--gx-font-head); letter-spacing: -.5px; color: var(--gx-ink); margin: 40px 0 14px; }
.gx-project-content h2:first-child { margin-top: 0; }
.gx-prose { font: 400 17px/1.7 var(--gx-font-body); color: var(--gx-text); }
.gx-prose p { margin: 0 0 1.1em; }
.gx-features { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 12px 24px; }
.gx-features li { position: relative; padding-left: 28px; font: 400 16px/1.5 var(--gx-font-body); color: var(--gx-text); }
.gx-features li::before { content: ""; position: absolute; left: 0; top: 7px; width: 16px; height: 16px; border-radius: 50%; background: var(--gx-coral-soft); box-shadow: inset 0 0 0 2px var(--gx-coral); }
.gx-project-side { position: sticky; top: 100px; display: grid; gap: 20px; }
.gx-side-card { background: #fff; border: 1px solid var(--gx-line); border-radius: 16px; padding: 26px; }
.gx-side-card h3 { font: 600 13px/1.4 var(--gx-font-mono); letter-spacing: 1.2px; text-transform: uppercase; color: var(--gx-muted); margin: 0 0 10px; }
.gx-side-card h3 + .gx-chips { margin-top: 0; }
.gx-side-card p { margin: 0; font: 400 16px/1.5 var(--gx-font-body); }
.gx-side-cta { background: var(--gx-ink); color: #fff; border-color: var(--gx-ink); }
.gx-side-cta h3 { font: 600 20px/1.3 var(--gx-font-head); color: #fff; text-transform: none; letter-spacing: 0; }
.gx-side-cta p { color: rgba(255, 255, 255, .72); margin-bottom: 18px; }
.gx-project-more { background: var(--gx-mist); padding: 80px 0 96px; }
.gx-project-more h2 { font: 700 36px/1.15 var(--gx-font-head); letter-spacing: -1px; color: var(--gx-ink); margin: 0 0 28px; }
.gx-more-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; margin-bottom: 28px; }
.gx-more-card { display: block; background: #fff; border: 1px solid var(--gx-line); border-radius: 16px; overflow: hidden; text-decoration: none; color: var(--gx-ink); transition: box-shadow .25s ease, transform .25s ease; }
.gx-more-card:hover { box-shadow: 0 14px 34px -14px rgba(11, 18, 32, .18); transform: translateY(-2px); }
.gx-more-card img { display: block; width: 100%; aspect-ratio: 3 / 2; object-fit: cover; object-position: top; }
.gx-more-title { display: block; padding: 18px 20px 6px; font: 600 18px/1.3 var(--gx-font-head); }
.gx-more-excerpt { display: block; padding: 0 20px 20px; font: 400 14px/1.55 var(--gx-font-body); color: var(--gx-muted); }
@media (max-width: 900px) {
	.gx-project-hero { padding: 64px 0 120px; }
	.gx-project-hero-grid, .gx-project-grid { grid-template-columns: 1fr; gap: 28px; }
	.gx-project-side { position: static; }
	.gx-more-grid { grid-template-columns: 1fr; }
	.gx-features { grid-template-columns: 1fr; }
}

/* ---------- Blog (Insights) single: Hello Elementor defaults, lightly refined ---------- */
.single-post .site-main, .blog .site-main, .archive .site-main { max-width: 1200px; margin: 0 auto; padding: 48px 24px; }
.single-post .entry-title { font: 700 clamp(30px, 4vw, 44px)/1.15 var(--gx-font-head); letter-spacing: -1px; color: var(--gx-ink); }
.single-post .entry-content { max-width: 760px; font: 400 17px/1.75 var(--gx-font-body); color: var(--gx-text); }
.single-post .entry-content h2 { font: 700 28px/1.25 var(--gx-font-head); color: var(--gx-ink); margin-top: 1.6em; }
.single-post .entry-content h3 { font: 600 22px/1.3 var(--gx-font-head); color: var(--gx-ink); margin-top: 1.4em; }
.single-post .entry-content a { color: var(--gx-coral-dark); }
.single-post .entry-content img { border-radius: 12px; }
