/* ==========================================================================
   Sharda Infotech — Design tokens, reset, typography, grid, utilities
   ========================================================================== */

:root {
	/* Brand palette: blue #2B5595, black #000000, white #FFFFFF.
	   The dark/light blues are a shade and a tint of the brand blue (for gradients). */
	--c-blue: #2B5595;
	--c-blue-dark: #1B3A6B;
	--c-blue-light: #6E97D6;
	--c-black: #000000;
	--c-white: #FFFFFF;

	/* Neutrals (tints of black/white) */
	--c-ink: #000000;
	--c-ink-2: #0D0D0D;
	--c-gray: #6B6B6B;
	--c-gray-dark: #444444;
	--c-mist: #F5F6F8;
	--c-line: #E4E6EB;

	/* Semantic (light) */
	--bg: var(--c-white);
	--surface: var(--c-white);
	--text: var(--c-gray-dark);
	--heading: var(--c-black);
	--border: var(--c-line);
	--link: var(--c-blue);

	/* Gradients */
	--grad-brand: linear-gradient(135deg, var(--c-blue) 0%, var(--c-blue-light) 100%);
	--grad-cta: linear-gradient(135deg, var(--c-blue) 0%, #3D6DB5 100%);
	--grad-deep: linear-gradient(135deg, var(--c-black) 0%, var(--c-blue-dark) 55%, var(--c-blue) 100%);

	/* Type */
	--font-heading: 'Space Grotesk', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--font-body: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--fs-small: 0.875rem;
	--fs-base: clamp(1rem, 0.97rem + 0.15vw, 1.0625rem);
	--fs-lead: clamp(1.0625rem, 1rem + 0.4vw, 1.3125rem);
	--fs-h4: clamp(1.125rem, 1.05rem + 0.4vw, 1.375rem);
	--fs-h3: clamp(1.3rem, 1.15rem + 0.8vw, 1.75rem);
	--fs-h2: clamp(1.9rem, 1.4rem + 2.4vw, 3.25rem);
	--fs-h1: clamp(2.5rem, 1.5rem + 4.8vw, 5rem);

	/* Layout */
	--container: 1280px;
	--gutter: clamp(20px, 4vw, 40px);
	--section-y: clamp(56px, 8vw, 120px);
	--radius: 18px;
	--radius-sm: 12px;
	--radius-pill: 999px;

	/* Elevation */
	--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.06), 0 2px 8px rgba(0, 0, 0, 0.05);
	--shadow-md: 0 8px 24px rgba(0, 0, 0, 0.09);
	--shadow-lg: 0 24px 60px rgba(0, 0, 0, 0.16);

	--ease: cubic-bezier(0.22, 1, 0.36, 1);
	--header-h: clamp(88px, calc(5.7vw + 30px), 126px);
}

/* Dark surface scope: add .is-dark to any section, or data-theme="dark" on <html> */
.is-dark,
[data-theme='dark'] {
	--bg: var(--c-ink);
	--surface: var(--c-ink-2);
	--text: #B0B0B0;
	--heading: #FFFFFF;
	--border: rgba(255, 255, 255, 0.09);
	--link: #8FB0E3;
	--shadow-sm: none;
	--shadow-md: 0 8px 30px rgba(0, 0, 0, 0.4);
}

/* Reset ------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
	margin: 0;
	background: var(--bg);
	color: var(--text);
	font-family: var(--font-body);
	font-size: var(--fs-base);
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}
img, svg, video { max-width: 100%; height: auto; display: block; }
a { color: var(--link); text-decoration: none; }
a:hover { text-decoration: underline; }
ul, ol { margin: 0; padding: 0; }
p { margin: 0 0 1em; }
button { font: inherit; cursor: pointer; }

:focus-visible {
	outline: 3px solid var(--c-blue);
	outline-offset: 3px;
	border-radius: 4px;
}

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}

/* Typography -------------------------------------------------------------- */
h1, h2, h3, h4, h5, h6 {
	margin: 0 0 0.5em;
	font-family: var(--font-heading);
	font-weight: 700;
	line-height: 1.08;
	letter-spacing: -0.025em;
	color: var(--heading);
}
h1 { font-size: var(--fs-h1); letter-spacing: -0.035em; }
h2 { font-size: var(--fs-h2); }
h3 { font-size: var(--fs-h3); }
h4 { font-size: var(--fs-h4); }
.lead { font-size: var(--fs-lead); line-height: 1.55; }

.text-gradient {
	background: var(--grad-brand);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

/* Layout ------------------------------------------------------------------ */
.container {
	width: 100%;
	max-width: calc(var(--container) + var(--gutter) * 2);
	margin-inline: auto;
	padding-inline: var(--gutter);
}
.section { padding-block: var(--section-y); }
.section--tight { padding-block: calc(var(--section-y) * 0.6); }

.grid { display: grid; gap: clamp(16px, 2vw, 28px); grid-template-columns: repeat(12, 1fr); }
.grid > * { grid-column: span 12; }
.grid--2, .grid--3, .grid--4 { grid-template-columns: 1fr; }
@media (min-width: 640px) {
	.grid--2, .grid--3, .grid--4 { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
	.grid--3 { grid-template-columns: repeat(3, 1fr); }
	.grid--4 { grid-template-columns: repeat(4, 1fr); }
	.col-5 { grid-column: span 5; } .col-6 { grid-column: span 6; } .col-7 { grid-column: span 7; }
}

/* Utilities --------------------------------------------------------------- */
.screen-reader-text, .skip-link:not(:focus) {
	position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0;
	overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.skip-link:focus {
	position: fixed; top: 12px; left: 12px; z-index: 1000; padding: 12px 20px;
	background: var(--c-black); color: #fff; border-radius: var(--radius-sm);
}
.text-center { text-align: center; }
.stack > * + * { margin-top: var(--stack, 1rem); }



/* ==========================================================================
   Components: buttons, cards, badges, section headings, icon tiles
   ========================================================================== */

/* Buttons ----------------------------------------------------------------- */
.btn {
	--btn-py: 0.95rem; --btn-px: 1.75rem;
	position: relative;
	display: inline-flex; align-items: center; justify-content: center; gap: 0.6rem;
	padding: var(--btn-py) var(--btn-px);
	border: 1.5px solid transparent;
	border-radius: var(--radius-pill);
	font-family: var(--font-heading);
	font-size: 1rem; font-weight: 600; line-height: 1;
	text-decoration: none !important;
	transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease), background 0.25s, color 0.25s, border-color 0.25s;
	white-space: nowrap;
}
.btn svg { width: 1.1em; height: 1.1em; transition: transform 0.25s var(--ease); }
.btn:hover svg { transform: translateX(3px); }

/* Primary: reserved for conversion points */
.btn--primary {
	background: var(--grad-cta); color: #fff;
	box-shadow: 0 10px 28px rgba(43, 85, 149, 0.35);
}
.btn--primary:hover { transform: translateY(-2px); box-shadow: 0 16px 36px rgba(43, 85, 149, 0.4); color: #fff; }

.btn--secondary { background: transparent; color: var(--heading); border-color: var(--heading); }
.btn--secondary:hover { background: var(--heading); color: var(--bg); }

.btn--ghost { background: transparent; color: var(--link); padding-inline: 0.5rem; }
.btn--ghost:hover { color: var(--heading); }

.btn--icon { width: 48px; height: 48px; padding: 0; background: var(--surface); border-color: var(--border); color: var(--heading); }
.btn--icon:hover { border-color: var(--c-blue); color: var(--c-blue); }

.btn--sm { --btn-py: 0.7rem; --btn-px: 1.25rem; font-size: 0.9375rem; }
.btn--lg { --btn-py: 1.15rem; --btn-px: 2.1rem; font-size: 1.0625rem; }

.is-dark .btn--secondary { color: #fff; border-color: rgba(255, 255, 255, 0.4); }
.is-dark .btn--secondary:hover { background: #fff; color: var(--c-ink); border-color: #fff; }

/* Cards ------------------------------------------------------------------- */
.card {
	position: relative;
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: var(--radius);
	padding: clamp(24px, 2.4vw, 36px);
	box-shadow: var(--shadow-sm);
	transition: transform 0.35s var(--ease), box-shadow 0.35s var(--ease), border-color 0.35s;
}
.card--lift:hover { transform: translateY(-8px); box-shadow: var(--shadow-lg); border-color: transparent; }
.card__media { overflow: hidden; border-radius: calc(var(--radius) - 4px); }
.card__media img { width: 100%; transition: transform 0.6s var(--ease); }
.card:hover .card__media img { transform: scale(1.06); }

/* Badges / pills ---------------------------------------------------------- */
.badge {
	display: inline-flex; align-items: center; gap: 0.4rem;
	padding: 0.3rem 0.8rem;
	border-radius: var(--radius-pill);
	background: rgba(43, 85, 149, 0.1); color: var(--c-blue);
	font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.01em;
}
.badge--new { background: var(--grad-cta); color: #fff; }
.is-dark .badge { background: rgba(255, 255, 255, 0.08); color: #A9C2EA; }

/* Section heading pattern: eyebrow + heading + subtext -------------------- */
.section-head { max-width: 720px; margin-bottom: clamp(36px, 5vw, 64px); }
.section-head.text-center { margin-inline: auto; }
.eyebrow {
	display: inline-flex; align-items: center; gap: 0.6rem;
	margin-bottom: 1rem;
	font-family: var(--font-heading);
	font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase;
	color: var(--c-blue);
}
.eyebrow::before { content: ''; width: 28px; height: 2px; background: var(--grad-brand); border-radius: 2px; }
.section-head p { font-size: var(--fs-lead); margin: 0; }

/* Icon tile --------------------------------------------------------------- */
.icon-tile {
	display: grid; place-items: center;
	width: 56px; height: 56px; margin-bottom: 1.5rem;
	border-radius: 16px; color: #fff; background: var(--grad-brand);
	box-shadow: 0 10px 24px rgba(43, 85, 149, 0.3);
}
.icon-tile svg { width: 26px; height: 26px; }



/* ==========================================================================
   Layout: header, footer, CTA banner, floating WhatsApp button
   (Styles ready now so the homepage design is real; markup ships in Phase 2)
   ========================================================================== */

/* Header ------------------------------------------------------------------ */
/* Compact white header: opaque from the start, padding kept to a minimum so
   it hugs the logo instead of leaving an empty band above the hero. */
.site-header {
	position: sticky; top: 0; z-index: 100;
	background: #FFFFFF;
	border-bottom: 1px solid var(--c-line);
	box-shadow: 0 1px 2px rgba(15, 23, 42, 0.03);
	transition: background 0.35s, box-shadow 0.35s var(--ease), border-color 0.35s;
}
/* 3-column grid (not flex) so the nav is genuinely centered in the header,
   regardless of how much wider the logo is than the CTA button. */
.site-header__inner { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; column-gap: 40px; height: var(--header-h); transition: height 0.3s var(--ease); }
.site-header__inner > .brand { justify-self: start; }
.site-header__inner > .main-nav { justify-self: center; }
.site-header__inner > .site-header__cta { justify-self: end; }
.site-header.is-scrolled {
	border-color: transparent;
	background: #FFFFFF;
	box-shadow: 0 12px 32px -12px rgba(15, 23, 42, 0.16), 0 2px 8px rgba(15, 23, 42, 0.06);
}
/* The frosted-glass look (backdrop-filter) is desktop-only: it's expensive to
   repaint on phone GPUs on every scroll frame, which can visibly stutter the
   very first swipe. Plain white + shadow reads almost identically here since
   the header is already opaque. */
@media (hover: hover) and (pointer: fine) {
	.site-header.is-scrolled { background: rgba(255, 255, 255, 0.92); -webkit-backdrop-filter: saturate(1.6) blur(10px); backdrop-filter: saturate(1.6) blur(10px); }
}
.site-header.is-scrolled .site-header__inner { height: clamp(72px, calc(4.6vw + 24px), 101px); }

.brand { display: inline-flex; align-items: center; gap: 0.6rem; font-family: var(--font-heading); font-weight: 700; font-size: 1.4rem; letter-spacing: -0.03em; color: #fff; text-decoration: none !important; }
/* Logo artwork has black text, so it sits on a white pill over dark backgrounds */
.brand__logo { height: 48px; width: auto; padding: 4px 14px; border-radius: 14px; background: #fff; transition: height 0.35s var(--ease), transform 0.35s var(--ease); }
/* Header is white: no pill needed, and padding kept minimal so the header
   hugs its content. Scales fluidly with the viewport (clamp), never jumping
   between sizes. */
.site-header .brand__logo { height: clamp(60px, 5.7vw, 96px); padding: 0; border-radius: 0; background: none; }
.site-header.is-scrolled .brand__logo { height: clamp(48px, 4.6vw, 77px); }
.brand:hover .brand__logo, .brand:focus-visible .brand__logo { transform: scale(1.045); }
@media (max-width: 1023px) and (min-width: 640px) {
	/* Nav + CTA are hidden below 1024px (hamburger menu only). */
	:root { --header-h: clamp(96px, calc(10vw + 24px), 154px); }
	.site-header .brand__logo { height: clamp(72px, 10vw, 130px); }
	.site-header.is-scrolled .brand__logo { height: clamp(58px, 8vw, 104px); }
	.site-header.is-scrolled .site-header__inner { height: clamp(77px, calc(8vw + 19px), 123px); }
}
@media (max-width: 639px) {
	:root { --header-h: clamp(64px, calc(15vw + 16px), 100px); }
	.site-header .brand__logo { height: clamp(48px, 15vw, 84px); }
	.site-header.is-scrolled .brand__logo { height: clamp(38px, 12vw, 67px); }
	.site-header.is-scrolled .site-header__inner { height: clamp(51px, calc(12vw + 13px), 80px); }
}
.site-footer .brand__logo { height: 56px; }
.brand__mark { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 11px; background: var(--grad-brand); color: #fff; font-size: 1.1rem; }

.main-nav ul { display: flex; gap: 6px; list-style: none; }
.main-nav a { display: block; padding: 0.55rem 0.95rem; border-radius: var(--radius-pill); color: var(--c-gray-dark); font-weight: 500; font-size: 0.9375rem; text-decoration: none; transition: color 0.2s, background 0.2s; }
.main-nav a:hover, .main-nav .current-menu-item > a { color: var(--c-blue); background: rgba(43, 85, 149, 0.08); }

.nav-toggle { display: none; }
@media (max-width: 1023px) {
	.site-header__inner { grid-template-columns: 1fr auto; column-gap: 20px; }
	.main-nav, .site-header .btn--primary { display: none; }
	.nav-toggle { display: grid; place-items: center; width: 44px; height: 44px; background: transparent; border: 1px solid var(--c-line); border-radius: 12px; color: var(--c-black); }
	.mobile-menu .nav-toggle { border-color: rgba(255, 255, 255, 0.2); color: #fff; }
}
/* CTA banner -------------------------------------------------------------- */
.cta-banner { position: relative; overflow: hidden; border-radius: clamp(24px, 3vw, 40px); padding: clamp(40px, 7vw, 96px); background: var(--grad-deep); color: #DADADA; text-align: center; isolation: isolate; }
.cta-banner h2 { color: #fff; max-width: 16ch; margin-inline: auto; }
.cta-banner p { max-width: 52ch; margin: 0 auto 2rem; font-size: var(--fs-lead); }
.cta-banner__actions { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; }
.cta-banner::before, .cta-banner::after { content: ''; position: absolute; z-index: -1; border-radius: 50%; filter: blur(70px); opacity: 0.55; animation: blob 14s ease-in-out infinite alternate; }
.cta-banner::before { width: 380px; height: 380px; background: var(--c-blue); top: -120px; left: -80px; }
.cta-banner::after { width: 340px; height: 340px; background: var(--c-blue-light); bottom: -140px; right: -60px; animation-delay: -6s; }
@keyframes blob { to { transform: translate(60px, 40px) scale(1.15); } }

/* Footer ------------------------------------------------------------------ */
.site-footer { background: var(--c-ink); color: #A3A3A3; padding-top: clamp(56px, 7vw, 96px); }
.site-footer h4 { color: #fff; font-size: 1rem; letter-spacing: 0; margin-bottom: 1.25rem; }
.footer-grid { display: grid; gap: 40px; grid-template-columns: 1fr; }
@media (min-width: 640px) { .footer-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .footer-grid { grid-template-columns: 1.6fr 1fr 1fr 1.4fr; } }
.footer-links { list-style: none; display: grid; gap: 0.7rem; }
.footer-links a { color: #A3A3A3; }
.footer-links a:hover { color: #fff; text-decoration: none; }
.newsletter { display: flex; gap: 8px; padding: 6px; background: rgba(255, 255, 255, 0.06); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: var(--radius-pill); }
.newsletter input { flex: 1; min-width: 0; padding: 0 1rem; background: transparent; border: 0; color: #fff; font: inherit; }
.newsletter input:focus { outline: none; }
.newsletter:focus-within { border-color: var(--c-blue); }
.socials { display: flex; gap: 10px; margin-top: 1.5rem; }
.socials a { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; background: rgba(255, 255, 255, 0.06); color: #fff; transition: background 0.2s, transform 0.2s; }
.socials a:hover { background: var(--c-blue); transform: translateY(-3px); }
.socials svg { width: 18px; height: 18px; }
.footer-bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; margin-top: 56px; padding-block: 24px; border-top: 1px solid rgba(255, 255, 255, 0.08); font-size: var(--fs-small); }
.footer-bottom a { color: #A3A3A3; margin-left: 1.25rem; }

/* WhatsApp floating button ------------------------------------------------ */
.whatsapp-btn { position: fixed; right: 22px; bottom: 22px; z-index: 90; display: grid; place-items: center; width: 58px; height: 58px; border-radius: 50%; background: #25D366; color: #fff; box-shadow: 0 10px 28px rgba(37, 211, 102, 0.45); }
.whatsapp-btn svg { width: 28px; height: 28px; }
.whatsapp-btn::after { content: ''; position: absolute; inset: 0; border-radius: 50%; border: 2px solid #25D366; animation: pulse 2s ease-out infinite; }
@keyframes pulse { to { transform: scale(1.6); opacity: 0; } }

/* ==========================================================================
   Phase 2 additions
   ========================================================================== */

html { scroll-padding-top: calc(var(--header-h) + 16px); }
.admin-bar .site-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .site-header { top: 46px; } }

/* Light (white-text) logo needs no pill */
.brand__logo--light { padding: 0; background: none; border-radius: 0; height: 44px; }
.site-header.is-scrolled .brand__logo--light { height: 38px; }
.site-footer .brand__logo--light { height: 52px; }
/* No nav in this 2-item variant (logo + CTA only) -- back to flex space-between. Currently unused (no landing-page template), kept for forward-compatibility. */
.site-header--minimal .site-header__inner { display: flex; align-items: center; justify-content: space-between; }

/* Top bar */
.topbar { background: #000000; border-bottom: 1px solid rgba(255, 255, 255, 0.06); font-size: var(--fs-small); }
.topbar__inner { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 40px; }
.topbar__contact { display: flex; flex-wrap: wrap; gap: 4px 24px; list-style: none; }
.topbar a { display: inline-flex; align-items: center; gap: 0.45rem; color: #C2C2C2; }
.topbar a:hover { color: #fff; text-decoration: none; }
.topbar__social { display: flex; gap: 14px; }
@media (max-width: 767px) { .topbar__social { display: none; } }

/* Desktop dropdowns */
.main-nav .menu-item { position: relative; }
.main-nav .menu-item-has-children > a::after { content: ''; display: inline-block; width: 6px; height: 6px; margin: 0 0 3px 8px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg); }
.main-nav .sub-menu { position: absolute; top: calc(100% + 6px); left: 0; z-index: 10; flex-direction: column; gap: 2px; min-width: 230px; padding: 8px; list-style: none; background: #fff; border: 1px solid var(--c-line); border-radius: 14px; box-shadow: var(--shadow-md); opacity: 0; visibility: hidden; transform: translateY(8px); transition: opacity 0.2s, transform 0.2s var(--ease), visibility 0.2s; }
.main-nav .sub-menu a { border-radius: 10px; }
.main-nav .menu-item:hover > .sub-menu, .main-nav .menu-item:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: none; display: flex; }

/* Mobile menu */
.mobile-overlay { position: fixed; inset: 0; z-index: 998; background: rgba(0, 0, 0, 0.6); opacity: 0; visibility: hidden; transition: opacity 0.3s, visibility 0.3s; }
.mobile-menu { position: fixed; top: 0; right: 0; bottom: 0; z-index: 999; display: flex; flex-direction: column; width: min(400px, 100%); padding: 20px 24px 28px; overflow-y: auto; background: var(--c-ink); color: #C2C2C2; transform: translateX(100%); visibility: hidden; transition: transform 0.35s var(--ease), visibility 0s linear 0.35s; }
.menu-open .mobile-overlay { opacity: 1; visibility: visible; }
.menu-open .mobile-menu { transform: none; visibility: visible; transition-delay: 0s; }
.menu-open { overflow: hidden; }
.mobile-menu__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 28px; }
.mobile-nav .menu { list-style: none; }
.mobile-nav a { display: block; padding: 0.95rem 0; border-bottom: 1px solid rgba(255, 255, 255, 0.08); color: #fff; font-family: var(--font-heading); font-size: 1.2rem; font-weight: 600; text-decoration: none; }
.mobile-nav .sub-menu { list-style: none; padding-left: 1rem; }
.mobile-nav .sub-menu a { font-size: 1rem; font-weight: 500; color: #C2C2C2; }
.mobile-menu__foot { display: grid; gap: 4px; margin-top: auto; padding-top: 32px; }
.mobile-menu__foot .btn { margin-bottom: 16px; }
.mobile-menu__foot p { margin: 0; }
.mobile-menu__foot a { color: #C2C2C2; }
@media (min-width: 1024px) { .mobile-menu, .mobile-overlay { display: none; } }

/* NOTE: a full-screen preloader block used to live here. It's removed: no
   template in this theme actually renders a .preloader element (the concept
   was dropped during the WordPress conversion), so the CSS was dead weight --
   but a `position: fixed; inset: 0; z-index: 2000;` full-screen rule sitting
   unused in the stylesheet is exactly the class of latent "hidden overlay"
   risk worth eliminating outright rather than leaving dormant. */

/* Breadcrumbs */
.breadcrumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 0; list-style: none; font-size: var(--fs-small); }
.breadcrumbs li + li::before { content: '/'; margin: 0 0.6rem; opacity: 0.5; }
.breadcrumbs a { color: inherit; opacity: 0.8; }
.breadcrumbs a:hover { opacity: 1; }
.breadcrumbs [aria-current] { color: var(--heading); font-weight: 500; }
.is-dark .breadcrumbs [aria-current] { color: #fff; }

/* Footer additions */
.footer-widgets { display: grid; gap: 32px; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); margin-bottom: 48px; padding-bottom: 48px; border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
.footer-widgets .widget__title { color: #fff; font-size: 1rem; }
@media (min-width: 1024px) { .footer-grid--5 { grid-template-columns: 1.5fr 1fr 1fr 1fr 1.4fr; } }
.footer-brand__tagline { margin-top: 1.25rem; max-width: 34ch; }
.footer-contact { display: grid; gap: 0.7rem; margin-top: 1.5rem; list-style: none; font-size: 0.9375rem; }
.footer-contact li { display: flex; gap: 0.7rem; align-items: flex-start; }
.footer-contact svg { flex: none; margin-top: 4px; color: var(--c-blue-light); }
.footer-contact a { color: #A3A3A3; }
.footer-legal ul, .footer-legal__list { display: flex; gap: 1.25rem; list-style: none; }
.footer-legal a { margin-left: 0; }
.form-msg { min-height: 1.4em; margin: 0.75rem 0 0; font-size: var(--fs-small); }
.form-msg.is-error { color: #FCA5A5; }
.form-msg.is-success { color: #FFFFFF; }


/* Theme: blue CTA banner uses a white primary button so it stays visible */
.cta-banner .text-gradient { background-image: linear-gradient(135deg, #A9C2EA, #FFFFFF); }
.cta-banner .btn--primary { background: #fff; color: var(--c-blue); box-shadow: 0 10px 28px rgba(0, 0, 0, 0.3); }
.cta-banner .btn--primary:hover { color: var(--c-blue-dark); }
.cta-banner .btn--secondary { color: #fff; border-color: rgba(255, 255, 255, 0.5); }
.cta-banner .btn--secondary:hover { background: #fff; color: var(--c-blue); border-color: #fff; }


/* ==========================================================================
   Homepage sections
   ========================================================================== */

/* Hero -------------------------------------------------------------------- */
.hero { position: relative; overflow: hidden; isolation: isolate; padding-block: clamp(72px, 10vw, 150px) clamp(64px, 8vw, 120px); background: var(--c-ink); }
.hero__mesh { position: absolute; inset: 0; z-index: -1; }
.hero__mesh span { position: absolute; border-radius: 50%; filter: blur(90px); opacity: 0.55; animation: blob 16s ease-in-out infinite alternate; }
.hero__mesh span:nth-child(1) { width: 520px; height: 520px; background: var(--c-blue); top: -160px; left: -120px; }
.hero__mesh span:nth-child(2) { width: 460px; height: 460px; background: var(--c-blue-light); top: 20%; right: -140px; opacity: 0.4; animation-delay: -5s; }
.hero__mesh span:nth-child(3) { width: 380px; height: 380px; background: var(--c-blue-dark); bottom: -180px; left: 35%; opacity: 0.3; animation-delay: -9s; }
.hero__mesh::after { content: ''; position: absolute; inset: 0; background-image: radial-gradient(rgba(255, 255, 255, 0.07) 1px, transparent 1px); background-size: 28px 28px; mask-image: radial-gradient(ellipse at center, #000 30%, transparent 75%); -webkit-mask-image: radial-gradient(ellipse at center, #000 30%, transparent 75%); }

.hero__inner { display: grid; gap: 56px; align-items: center; }
@media (min-width: 1024px) { .hero__inner { grid-template-columns: 1.15fr 0.85fr; } }
.hero h1 { color: #fff; margin: 1.25rem 0 1.5rem; max-width: 14ch; }
.hero .lead { max-width: 52ch; color: #C2C2C2; }
.hero__actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 2.25rem; }
.hero__trust { display: flex; align-items: center; gap: 14px; margin-top: 2.75rem; color: #A3A3A3; font-size: var(--fs-small); }
.avatars { display: flex; }
.avatars span { width: 38px; height: 38px; margin-left: -10px; border-radius: 50%; border: 2px solid var(--c-ink); background: var(--grad-brand); display: grid; place-items: center; color: #fff; font-size: 0.75rem; font-weight: 600; }
.avatars span:first-child { margin-left: 0; }
.avatars span:nth-child(2) { background: var(--grad-cta); }
.avatars span:nth-child(3) { background: linear-gradient(135deg, #1B3A6B, #6E97D6); }
.hero__trust strong { color: #fff; }

.hero__visual { position: relative; }
.dash { padding: 22px; border-radius: 24px; background: rgba(255, 255, 255, 0.06); border: 1px solid rgba(255, 255, 255, 0.12); -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px); box-shadow: 0 40px 80px rgba(0, 0, 0, 0.45); }
.dash__top { display: flex; gap: 6px; margin-bottom: 18px; }
.dash__top i { width: 10px; height: 10px; border-radius: 50%; background: rgba(255, 255, 255, 0.2); }
.dash__kpis { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.kpi { padding: 16px; border-radius: 16px; background: rgba(255, 255, 255, 0.05); }
.kpi small { display: block; color: #A3A3A3; font-size: 0.75rem; }
.kpi b { display: block; margin-top: 4px; font-family: var(--font-heading); font-size: 1.6rem; color: #fff; letter-spacing: -0.02em; }
.kpi em { font-style: normal; font-size: 0.75rem; color: #8FB0E3; }
.bars { display: flex; align-items: flex-end; gap: 8px; height: 130px; margin-top: 12px; padding: 16px; border-radius: 16px; background: rgba(255, 255, 255, 0.05); }
.bars i { flex: 1; border-radius: 6px 6px 0 0; background: var(--grad-brand); opacity: 0.9; }
.float-chip { position: absolute; display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-radius: 16px; background: #fff; color: var(--c-black); font-family: var(--font-heading); font-weight: 600; font-size: 0.875rem; box-shadow: var(--shadow-lg); animation: float 6s ease-in-out infinite; z-index: 2; }
.float-chip svg { width: 20px; height: 20px; color: var(--c-blue); }
.float-chip--a { top: -32px; right: 8%; }
.float-chip--b { bottom: -22px; left: -4%; animation-delay: -3s; }
@keyframes float { 50% { transform: translateY(-12px); } }

/* Client logos marquee ---------------------------------------------------- */
.logos { padding-block: 44px; background: var(--c-ink); border-top: 1px solid rgba(255, 255, 255, 0.07); }
.logos p { text-align: center; margin-bottom: 26px; font-size: var(--fs-small); letter-spacing: 0.12em; text-transform: uppercase; color: #8A8A8A; }
.marquee { overflow: hidden; mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); }
.marquee__track { display: flex; gap: 64px; width: max-content; animation: marquee 30s linear infinite; }
.marquee:hover .marquee__track { animation-play-state: paused; }
.marquee__track span { font-family: var(--font-heading); font-weight: 700; font-size: 1.5rem; letter-spacing: -0.03em; color: #6B6B6B; white-space: nowrap; }
@keyframes marquee { to { transform: translateX(-50%); } }

/* Services ---------------------------------------------------------------- */
.service-card h3 { font-size: 1.35rem; margin-bottom: 0.6rem; }
.service-card p { margin-bottom: 1.25rem; }
.service-card .more { display: inline-flex; align-items: center; gap: 0.4rem; font-family: var(--font-heading); font-weight: 600; color: var(--c-blue); }
.service-card .more svg { width: 16px; transition: transform 0.25s var(--ease); }
.service-card:hover .more svg { transform: translateX(4px); }
.service-card:nth-child(2n) .icon-tile { background: var(--grad-cta); box-shadow: 0 10px 24px rgba(43, 85, 149, 0.3); }
.service-card:nth-child(3n) .icon-tile { background: var(--grad-deep); box-shadow: 0 10px 24px rgba(43, 85, 149, 0.3); }
.section__cta { margin-top: clamp(32px, 4vw, 56px); text-align: center; }

/* Why choose us ----------------------------------------------------------- */
.why { background: var(--surface); }
.why__inner { display: grid; gap: clamp(40px, 6vw, 88px); align-items: center; }
@media (min-width: 1024px) { .why__inner { grid-template-columns: 1fr 1fr; } }
.why__art { position: relative; aspect-ratio: 1 / 1; max-width: 520px; border-radius: 32px; background: var(--grad-deep); overflow: hidden; display: grid; place-items: center; }
.why__art::before, .why__art::after { content: ''; position: absolute; border-radius: 50%; filter: blur(50px); }
.why__art::before { width: 60%; height: 60%; background: var(--c-blue); top: -10%; left: -10%; opacity: 0.8; }
.why__art::after { width: 50%; height: 50%; background: var(--c-blue-light); bottom: -10%; right: -8%; opacity: 0.7; }
.why__badge { position: relative; z-index: 1; padding: 28px 34px; border-radius: 24px; background: rgba(255, 255, 255, 0.14); border: 1px solid rgba(255, 255, 255, 0.25); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); text-align: center; color: #fff; }
.why__badge b { display: block; font-family: var(--font-heading); font-size: clamp(3rem, 6vw, 4.5rem); line-height: 1; letter-spacing: -0.04em; }
.checklist { list-style: none; display: grid; gap: 1.4rem; margin-top: 2rem; }
.checklist li { display: grid; grid-template-columns: 36px 1fr; gap: 16px; }
.checklist .tick { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: rgba(43, 85, 149, 0.12); color: var(--c-blue); }
.checklist .tick svg { width: 18px; height: 18px; }
.checklist h4 { margin: 0 0 0.2rem; font-size: 1.15rem; letter-spacing: -0.01em; }
.checklist p { margin: 0; }

/* Stats ------------------------------------------------------------------- */
.stats { background: var(--c-ink); }
.stats__grid { display: grid; gap: 32px; grid-template-columns: repeat(2, 1fr); }
@media (min-width: 1024px) { .stats__grid { grid-template-columns: repeat(4, 1fr); } }
.stat { padding-left: 24px; border-left: 1px solid var(--border); }
.stat b { display: block; font-family: var(--font-heading); font-size: clamp(2.5rem, 5vw, 4.25rem); line-height: 1; letter-spacing: -0.04em; background: var(--grad-brand); -webkit-background-clip: text; background-clip: text; color: transparent; }
.stat span { display: block; margin-top: 0.6rem; }

/* Process ----------------------------------------------------------------- */
.process { position: relative; display: grid; gap: 24px; counter-reset: step; }
@media (min-width: 1024px) {
	.process { grid-template-columns: repeat(4, 1fr); }
	.process::before { content: ''; position: absolute; top: 28px; left: 8%; right: 8%; height: 2px; background: repeating-linear-gradient(90deg, var(--c-blue) 0 8px, transparent 8px 16px); opacity: 0.4; }
}
.step { position: relative; }
.step__num { position: relative; display: grid; place-items: center; width: 56px; height: 56px; margin-bottom: 1.4rem; border-radius: 50%; background: var(--surface); border: 2px solid var(--c-blue); color: var(--c-blue); font-family: var(--font-heading); font-weight: 700; font-size: 1.1rem; }
.step h3 { font-size: 1.35rem; }

/* Portfolio --------------------------------------------------------------- */
.filters { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 36px; }
.filters button { padding: 0.55rem 1.2rem; border-radius: var(--radius-pill); background: var(--surface); border: 1px solid var(--border); color: var(--text); font-weight: 500; transition: all 0.2s; }
.filters button:hover { border-color: var(--c-blue); color: var(--c-blue); }
.filters button.is-active { background: var(--heading); border-color: var(--heading); color: var(--bg); }
.work { display: grid; gap: 24px; }
@media (min-width: 640px) { .work { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .work { grid-template-columns: repeat(3, 1fr); } }
.work-card { position: relative; display: block; overflow: hidden; border-radius: var(--radius); aspect-ratio: 4 / 3; color: #fff; text-decoration: none !important; isolation: isolate; }
.work-card:nth-child(1), .work-card:nth-child(4) { aspect-ratio: 4 / 3.4; }
@media (min-width: 1024px) { .work-card:nth-child(1) { grid-column: span 2; aspect-ratio: auto; } }
.work-card__bg { position: absolute; inset: 0; z-index: -2; transition: transform 0.7s var(--ease); }
.work-card:hover .work-card__bg { transform: scale(1.08); }
.work-card::after { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, transparent 35%, rgba(0, 0, 0, 0.85)); }
.work-card__body { position: absolute; inset: auto 0 0 0; padding: 26px; }
.work-card h3 { color: #fff; font-size: 1.4rem; margin: 0.5rem 0 0.4rem; }
.work-card .badge { background: rgba(255, 255, 255, 0.16); color: #fff; -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.work-card__result { display: flex; gap: 8px; align-items: center; font-size: var(--fs-small); color: #DADADA; }
.work-card__result b { color: #FFFFFF; font-family: var(--font-heading); }
.g1 { background: linear-gradient(135deg, #2B5595, #6E97D6); }
.g2 { background: linear-gradient(135deg, #000000, #2B5595); }
.g3 { background: linear-gradient(135deg, #1B3A6B, #2B5595); }
.g4 { background: linear-gradient(135deg, #6E97D6, #1B3A6B); }
.g5 { background: linear-gradient(135deg, #2B5595, #000000); }

/* Testimonials ------------------------------------------------------------ */
.testimonials { background: var(--surface); }
.quote { display: flex; flex-direction: column; height: 100%; margin: 0; }
.stars { display: flex; gap: 3px; color: #2B5595; margin-bottom: 1.25rem; }
.stars svg { width: 18px; height: 18px; fill: currentColor; }
.quote blockquote { margin: 0 0 1.75rem; flex: 1; font-size: 1.0625rem; color: var(--heading); line-height: 1.6; }
.quote figcaption { display: flex; align-items: center; gap: 14px; }
.quote .avatar { width: 48px; height: 48px; border-radius: 50%; display: grid; place-items: center; color: #fff; font-weight: 600; background: var(--grad-brand); }
.quote strong { display: block; color: var(--heading); font-family: var(--font-heading); }
.quote small { color: var(--text); }
.slider-nav { display: flex; gap: 10px; justify-content: center; margin-top: 36px; }

/* Blog preview ------------------------------------------------------------ */
.post-card { padding: 0; overflow: hidden; display: flex; flex-direction: column; }
.post-card .card__media { border-radius: 0; aspect-ratio: 16 / 10; }
.post-card .card__media { display: block; }
.post-card .card__media > div, .post-card .card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s var(--ease); }
.post-card:hover .card__media > div, .post-card:hover .card__media img { transform: scale(1.06); }
.post-card__body { padding: 26px; display: flex; flex-direction: column; flex: 1; }
.post-card__meta { display: flex; align-items: center; gap: 12px; margin-bottom: 0.9rem; font-size: var(--fs-small); }
.post-card h3 { font-size: 1.25rem; letter-spacing: -0.02em; }
.post-card h3 a { color: var(--heading); }
.post-card h3 a:hover { color: var(--c-blue); text-decoration: none; }

/* Pricing teaser ---------------------------------------------------------- */
.pricing-teaser { display: grid; gap: 24px; align-items: center; padding: clamp(28px, 4vw, 56px); border-radius: var(--radius); background: var(--surface); border: 1px solid var(--border); }
@media (min-width: 900px) { .pricing-teaser { grid-template-columns: 1.3fr 1fr auto; } }
.pricing-teaser h3 { margin: 0 0 0.4rem; }
.pricing-teaser p { margin: 0; }
.price { font-family: var(--font-heading); color: var(--heading); font-size: 1rem; }
.price b { display: block; font-size: clamp(2.25rem, 4vw, 3.25rem); line-height: 1; letter-spacing: -0.04em; }

/* Phase 4 additions ------------------------------------------------------- */
.stretched-link { color: inherit; text-decoration: none !important; }
.stretched-link::after { content: ''; position: absolute; inset: 0; border-radius: inherit; }
.stretched-link:focus-visible { outline-offset: 6px; }
.process { list-style: none; }
.work-card__bg img { width: 100%; height: 100%; object-fit: cover; }
.quote blockquote p { margin: 0; }
.avatar--img { object-fit: cover; }
.hero__trust strong { font-family: var(--font-heading); font-size: 1.25rem; }
.filters[hidden] { display: none; }
.empty-notice { padding: 28px; border: 2px dashed var(--border); border-radius: var(--radius); text-align: center; color: var(--text); }


/* Blue-on-black legibility: gradient headline text and CTA-banner button on dark blue */
.is-dark .text-gradient { background-image: linear-gradient(135deg, #6E97D6 0%, #FFFFFF 100%); }


/* ==========================================================================
   Inner pages: page hero, FAQ, forms, team, timeline, blog, portfolio extras,
   page transitions. Uses the same tokens/components as the homepage.
   ========================================================================== */

/* Page transitions -------------------------------------------------------- */
@keyframes page-in { from { opacity: 0; transform: translateY(14px); } }
#main, .site-footer { animation: page-in 0.55s var(--ease) backwards; }
body.is-leaving #main, body.is-leaving .site-footer { opacity: 0; transform: translateY(-10px); transition: opacity 0.25s ease, transform 0.25s ease; }

/* Utilities --------------------------------------------------------------- */
.section--mist { background: var(--c-mist); }
.section-head--center { margin-inline: auto; text-align: center; }

/* Page hero --------------------------------------------------------------- */
.page-hero { position: relative; overflow: hidden; isolation: isolate; padding-block: clamp(56px, 8vw, 112px) clamp(48px, 6vw, 88px); background: var(--c-ink); }
.page-hero__inner { max-width: 840px; }
.page-hero h1 { color: #fff; margin: 1rem 0 1.25rem; font-size: clamp(2.25rem, 1.4rem + 3.6vw, 4rem); }
.page-hero .lead { max-width: 64ch; margin: 0; color: #C2C2C2; }
.page-hero .breadcrumbs { margin-bottom: 1.75rem; color: #A3A3A3; }
.page-hero__actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 2rem; }

/* Feature list ------------------------------------------------------------ */
.feature-list { list-style: none; display: grid; gap: 0.6rem; margin: 1.25rem 0 0; font-size: 0.9375rem; }
.feature-list li { display: flex; gap: 0.6rem; align-items: flex-start; }
.feature-list svg { flex: none; width: 18px; height: 18px; margin-top: 3px; color: var(--c-blue); }
.service-card .feature-list { margin-bottom: 0.5rem; }

/* Benefit cards (why choose us) ------------------------------------------- */
.benefit h3 { font-size: 1.2rem; margin-bottom: 0.5rem; }
.benefit p { margin: 0; }

/* FAQ --------------------------------------------------------------------- */
.faq { display: grid; gap: 12px; max-width: 860px; margin-inline: auto; }
.faq details { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 0 24px; transition: border-color 0.25s, box-shadow 0.25s; }
.faq details[open] { border-color: var(--c-blue); box-shadow: var(--shadow-md); }
.faq summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 20px 0; list-style: none; cursor: pointer; font-family: var(--font-heading); font-weight: 600; font-size: 1.0625rem; color: var(--heading); }
.faq summary::-webkit-details-marker { display: none; }
.faq summary svg { flex: none; width: 20px; height: 20px; color: var(--c-blue); transition: transform 0.25s var(--ease); }
.faq details[open] summary svg { transform: rotate(180deg); }
.faq__body { padding: 0 0 20px; }
.faq__body p { margin: 0; }

/* Forms ------------------------------------------------------------------- */
.form { display: grid; gap: 20px; }
.form__row { display: grid; gap: 20px; }
@media (min-width: 640px) { .form__row--2 { grid-template-columns: 1fr 1fr; } }
.field label { display: block; margin-bottom: 6px; font-weight: 600; font-size: 0.9375rem; color: var(--heading); }
.field input, .field select, .field textarea { width: 100%; padding: 14px 16px; border: 1.5px solid var(--border); border-radius: var(--radius-sm); background: #fff; color: var(--c-black); font: inherit; transition: border-color 0.2s, box-shadow 0.2s; }
.field textarea { min-height: 150px; resize: vertical; }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--c-blue); box-shadow: 0 0 0 4px rgba(43, 85, 149, 0.15); }
.field.has-error input, .field.has-error select, .field.has-error textarea { border-color: #DC2626; }
.field__error { margin: 6px 0 0; font-size: 0.8125rem; color: #B91C1C; }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.form .form-msg.is-error { color: #B91C1C; }
.form .form-msg.is-success { color: #15803D; }
.form .btn { justify-self: start; }

/* Contact ----------------------------------------------------------------- */
.info-card h3 { font-size: 1.15rem; margin-bottom: 0.4rem; }
.info-card p, .info-card a { margin: 0; word-break: break-word; }
.contact-grid { display: grid; gap: clamp(28px, 4vw, 56px); align-items: start; }
@media (min-width: 1024px) { .contact-grid { grid-template-columns: 1.3fr 0.7fr; } }
.next-steps { list-style: none; display: grid; gap: 1.25rem; margin-top: 1.5rem; counter-reset: ns; }
.next-steps li { position: relative; padding-left: 52px; counter-increment: ns; }
.next-steps li::before { content: counter(ns); position: absolute; left: 0; top: 0; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: rgba(43, 85, 149, 0.1); color: var(--c-blue); font-family: var(--font-heading); font-weight: 700; }
.next-steps h4 { margin: 0 0 0.2rem; font-size: 1.05rem; letter-spacing: -0.01em; }
.next-steps p { margin: 0; }
.map-frame { overflow: hidden; min-height: 340px; border: 1px solid var(--border); border-radius: var(--radius); aspect-ratio: 16 / 7; background: var(--c-mist); }
.map-frame iframe { width: 100%; height: 100%; min-height: 340px; border: 0; }
.hours-wrap { display: grid; gap: clamp(28px, 4vw, 56px); align-items: center; }
@media (min-width: 1024px) { .hours-wrap { grid-template-columns: 1fr 1fr; } }
.hours { width: 100%; border-collapse: collapse; }
.hours th, .hours td { padding: 16px 0; text-align: left; border-bottom: 1px solid var(--border); }
.hours th { font-family: var(--font-heading); font-weight: 600; color: var(--heading); }
.hours td { text-align: right; }
.hours tr:last-child th, .hours tr:last-child td { border-bottom: 0; }
.hours .is-closed { color: var(--c-gray); }

/* About ------------------------------------------------------------------- */
.mv { display: grid; gap: 24px; }
@media (min-width: 768px) { .mv { grid-template-columns: repeat(2, 1fr); } }
.mv h3 { margin-bottom: 0.6rem; }
.mv p { margin: 0; }
.team-card { text-align: center; }
.team-card__photo { display: grid; place-items: center; width: 112px; height: 112px; margin: 0 auto 1.25rem; border-radius: 50%; color: #fff; font-family: var(--font-heading); font-size: 2rem; font-weight: 700; }
.team-card h3 { margin-bottom: 0.2rem; font-size: 1.2rem; }
.team-card p { margin: 0; }
.timeline { list-style: none; position: relative; display: grid; gap: 36px; max-width: 760px; margin-inline: auto; padding-left: 44px; }
.timeline::before { content: ''; position: absolute; left: 11px; top: 8px; bottom: 8px; width: 2px; background: var(--border); }
.timeline li { position: relative; }
.timeline li::before { content: ''; position: absolute; left: -44px; top: 4px; width: 24px; height: 24px; border-radius: 50%; background: var(--surface); border: 2px solid var(--c-blue); }
.timeline__year { display: block; margin-bottom: 0.2rem; font-family: var(--font-heading); font-weight: 700; font-size: 1.25rem; color: var(--c-blue); }
.timeline h3 { margin: 0 0 0.3rem; font-size: 1.2rem; }
.timeline p { margin: 0; }
.industry { display: flex; align-items: center; gap: 14px; padding: 20px 22px; }
.industry svg { flex: none; width: 24px; height: 24px; color: var(--c-blue); }
.industry span { font-family: var(--font-heading); font-weight: 600; color: var(--heading); }

/* Portfolio --------------------------------------------------------------- */
.cat-card { display: block; color: inherit; text-decoration: none !important; }
.cat-card h3 { font-size: 1.2rem; margin-bottom: 0.3rem; }
.cat-card p { margin: 0; }
.result-grid { display: grid; gap: 24px; grid-template-columns: repeat(2, 1fr); }
@media (min-width: 1024px) { .result-grid { grid-template-columns: repeat(4, 1fr); } }
.result-card { text-align: center; }
.result-card b { display: block; font-family: var(--font-heading); font-size: clamp(2.25rem, 4vw, 3.25rem); line-height: 1; letter-spacing: -0.04em; background: var(--grad-brand); -webkit-background-clip: text; background-clip: text; color: transparent; }
.result-card span { display: block; margin-top: 0.6rem; }
.results-logos { margin-top: clamp(40px, 5vw, 72px); padding: 32px 0 0; border-top: 1px solid var(--border); }
.results-logos p { text-align: center; margin-bottom: 20px; font-size: var(--fs-small); letter-spacing: 0.12em; text-transform: uppercase; color: var(--c-gray); }
.results-logos .marquee__track span { color: #9A9A9A; }
.work.is-filtered .work-card:nth-child(1) { grid-column: auto; aspect-ratio: 4 / 3; }
.work-card[hidden] { display: none; }

/* Blog -------------------------------------------------------------------- */
.featured-grid { display: grid; gap: 24px; }
@media (min-width: 1024px) { .featured-grid { grid-template-columns: 1.35fr 1fr; } }
.featured-main { padding: 0; overflow: hidden; display: flex; flex-direction: column; }
.featured-main .card__media { border-radius: 0; aspect-ratio: 16 / 9; }
.featured-main .card__media > div { height: 100%; transition: transform 0.6s var(--ease); }
.featured-main:hover .card__media > div { transform: scale(1.05); }
.featured-main__body { padding: clamp(24px, 3vw, 36px); }
.featured-main h3 { font-size: clamp(1.4rem, 1.2rem + 1vw, 2rem); }
.featured-main h3 a, .featured-side h3 a { color: var(--heading); }
.featured-main h3 a:hover, .featured-side h3 a:hover { color: var(--c-blue); text-decoration: none; }
.featured-stack { display: grid; gap: 24px; }
.featured-side { display: flex; flex-direction: column; justify-content: center; }
.featured-side h3 { font-size: 1.25rem; }
.featured-side p { margin: 0; }
.post-card h3 { margin-bottom: 0.6rem; }
.post-card p { margin: 0; }
.post-card[hidden] { display: none; }
.chips { display: flex; flex-wrap: wrap; gap: 10px; }
.chips button { padding: 0.55rem 1.2rem; border-radius: var(--radius-pill); background: var(--surface); border: 1px solid var(--border); color: var(--text); font-weight: 500; transition: all 0.2s; }
.chips button:hover { border-color: var(--c-blue); color: var(--c-blue); }
.chips button.is-active { background: var(--heading); border-color: var(--heading); color: var(--bg); }
.newsletter-band { padding: clamp(36px, 6vw, 72px); border-radius: clamp(24px, 3vw, 40px); background: var(--grad-deep); color: #DADADA; text-align: center; }
.newsletter-band h2 { color: #fff; max-width: 18ch; margin-inline: auto; }
.newsletter-band p { max-width: 52ch; margin: 0 auto 1.75rem; font-size: var(--fs-lead); }
.newsletter-band .newsletter { max-width: 520px; margin-inline: auto; }
.newsletter-band .btn--primary { background: #fff; color: var(--c-blue); box-shadow: none; }
.newsletter-band .form-msg { text-align: center; }
.newsletter-band .form-msg.is-error { color: #FECACA; }
.newsletter-band .form-msg.is-success { color: #fff; }


/* ==========================================================================
   Services section (premium): glass cards, animated borders, tabs, ambient
   background with mouse interaction. Scoped with the .svc / .svc-* prefix.
   ========================================================================== */

@property --angle { syntax: '<angle>'; initial-value: 0deg; inherits: false; }

.svc { position: relative; overflow: hidden; isolation: isolate; padding-block: clamp(72px, 9vw, 128px); background: var(--c-ink); border-top: 1px solid rgba(255, 255, 255, 0.06); }
.svc > .container { position: relative; z-index: 1; }

/* Ambient background ------------------------------------------------------ */
.svc__bg { position: absolute; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; }
.svc__blob { position: absolute; border-radius: 50%; filter: blur(110px); opacity: 0.5; translate: calc(var(--sx, 0) * 40px) calc(var(--sy, 0) * 30px); transition: translate 0.6s ease-out; animation: svc-float 18s ease-in-out infinite alternate; }
.svc__blob--1 { width: 620px; height: 620px; top: -200px; left: -160px; background: var(--c-blue); }
.svc__blob--2 { width: 520px; height: 520px; top: 30%; right: -200px; background: var(--c-blue-light); opacity: 0.28; animation-delay: -6s; }
.svc__blob--3 { width: 560px; height: 560px; bottom: -260px; left: 25%; background: var(--c-blue-dark); opacity: 0.55; animation-delay: -11s; }
@keyframes svc-float { to { transform: translate(50px, 40px) scale(1.12); } }

.svc__shape { position: absolute; border: 1.5px solid rgba(110, 151, 214, 0.28); translate: calc(var(--sx, 0) * var(--k, 1) * 26px) calc(var(--sy, 0) * var(--k, 1) * 22px); transition: translate 0.5s ease-out; animation: svc-drift 9s ease-in-out infinite alternate; }
.svc__shape--ring { width: 120px; height: 120px; top: 12%; right: 9%; border-radius: 50%; }
.svc__shape--ring2 { width: 64px; height: 64px; bottom: 16%; left: 7%; border-radius: 50%; animation-delay: -3s; }
.svc__shape--square { width: 72px; height: 72px; top: 46%; left: 5%; border-radius: 16px; rotate: 18deg; animation-delay: -5s; }
.svc__shape--cross { width: 26px; height: 26px; top: 30%; right: 20%; border: 0; animation-delay: -2s; }
.svc__shape--cross::before, .svc__shape--cross::after { content: ''; position: absolute; background: rgba(143, 176, 227, 0.45); border-radius: 2px; }
.svc__shape--cross::before { left: 0; right: 0; top: 50%; height: 2px; margin-top: -1px; }
.svc__shape--cross::after { top: 0; bottom: 0; left: 50%; width: 2px; margin-left: -1px; }
@keyframes svc-drift { to { transform: translateY(-22px) rotate(8deg); } }

.svc__grid { position: absolute; inset: 0; background-image: radial-gradient(rgba(255, 255, 255, 0.07) 1px, transparent 1px); background-size: 28px 28px; -webkit-mask-image: radial-gradient(ellipse at 50% 25%, #000 15%, transparent 72%); mask-image: radial-gradient(ellipse at 50% 25%, #000 15%, transparent 72%); }

.svc__cursor { position: absolute; left: 0; top: 0; width: 560px; height: 560px; margin: -280px 0 0 -280px; border-radius: 50%; background: radial-gradient(circle, rgba(43, 85, 149, 0.32), transparent 62%); transform: translate(var(--cx, 50vw), var(--cy, 12%)); opacity: 0; transition: transform 0.35s ease-out, opacity 0.5s; }
.svc:hover .svc__cursor { opacity: 1; }

.svc__noise { position: absolute; inset: 0; opacity: 0.09; mix-blend-mode: overlay; background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .55 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>"); }

/* Header ------------------------------------------------------------------ */
.svc-head { max-width: 860px; margin: 0 auto clamp(36px, 5vw, 56px); text-align: center; }
.svc-head h2 { margin: 0 0 1.25rem; font-size: clamp(2.1rem, 1.3rem + 3.2vw, 3.9rem); line-height: 1.05; letter-spacing: -0.035em; text-wrap: balance; }
.svc-head p { max-width: 62ch; margin: 0 auto; font-size: var(--fs-lead); color: #B8B8B8; }

/* Category tabs ----------------------------------------------------------- */
.svc-tabs { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; width: fit-content; max-width: 100%; margin: 0 auto 18px; padding: 6px; border-radius: 999px; background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.1); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
.svc-tabs button { padding: 0.65rem 1.3rem; border: 0; border-radius: 999px; background: transparent; color: #B0B0B0; font-family: var(--font-heading); font-weight: 600; font-size: 0.9375rem; transition: background 0.3s var(--ease), color 0.3s, box-shadow 0.3s; }
.svc-tabs button:hover { color: #fff; }
.svc-tabs button.is-active { background: #fff; color: #000; box-shadow: 0 6px 20px rgba(255, 255, 255, 0.18); }
.svc__count { margin: 0 0 clamp(28px, 4vw, 44px); text-align: center; font-size: var(--fs-small); color: #8A8A8A; }
@media (max-width: 639px) {
	.svc-tabs { flex-wrap: nowrap; justify-content: flex-start; width: 100%; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
	.svc-tabs::-webkit-scrollbar { display: none; }
	.svc-tabs button { flex: none; }
}

/* Grid: 1 col mobile, 2 tablet, 3 desktop --------------------------------- */
.svc-grid { display: grid; gap: 24px; grid-template-columns: 1fr; }
@media (min-width: 640px) { .svc-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .svc-grid { grid-template-columns: repeat(3, 1fr); gap: 28px; } }

/* Card -------------------------------------------------------------------- */
.svc-card {
	--mx: 50%; --my: 0%;
	--g1: var(--c-blue); --g2: var(--c-blue-light);
	position: relative; display: flex; flex-direction: column; overflow: hidden; isolation: isolate;
	padding: clamp(26px, 2.4vw, 34px);
	border-radius: 24px;
	background: linear-gradient(180deg, rgba(255, 255, 255, 0.075), rgba(255, 255, 255, 0.02));
	border: 1px solid rgba(255, 255, 255, 0.09);
	-webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.07), 0 24px 50px -28px rgba(0, 0, 0, 0.9);
	transition: transform 0.45s var(--ease), box-shadow 0.45s var(--ease), border-color 0.35s;
}
.svc-card[hidden] { display: none; }
.svc-card:nth-child(3n + 2) { --g1: var(--c-blue-dark); --g2: var(--c-blue); }
.svc-card:nth-child(3n) { --g1: var(--c-blue); --g2: #9DBBEA; }
.svc-card > * { position: relative; z-index: 2; }

/* Soft glow that follows the cursor */
.svc-card::after { content: ''; position: absolute; inset: 0; z-index: 0; border-radius: inherit; background: radial-gradient(380px circle at var(--mx) var(--my), rgba(110, 151, 214, 0.2), transparent 62%); opacity: 0; transition: opacity 0.4s; pointer-events: none; }
/* Animated border */
.svc-card::before { content: ''; position: absolute; inset: 0; z-index: 1; border-radius: inherit; padding: 1.5px; background: conic-gradient(from var(--angle), transparent 0 52%, var(--c-blue-light) 72%, #fff 86%, transparent 100%); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask-composite: exclude; opacity: 0; transition: opacity 0.35s; animation: svc-spin 3.6s linear infinite; pointer-events: none; }
@keyframes svc-spin { to { --angle: 360deg; } }

.svc-card:hover, .svc-card:focus-within { transform: translateY(-8px); border-color: rgba(110, 151, 214, 0.25); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 34px 80px -26px rgba(43, 85, 149, 0.7), 0 0 0 1px rgba(110, 151, 214, 0.12); }
.svc-card:hover::before, .svc-card:focus-within::before, .svc-card:hover::after, .svc-card:focus-within::after { opacity: 1; }

/* Illustration (unique per card) */
.svc-card .svc-card__art { position: absolute; z-index: 1; top: 22px; right: 22px; width: 116px; height: 78px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; color: rgba(143, 176, 227, 0.32); transition: transform 0.6s var(--ease), color 0.35s; }
.svc-card:hover .svc-card__art { color: rgba(143, 176, 227, 0.7); transform: translate(-4px, 2px) scale(1.06) rotate(-2deg); }

/* Icon container */
.svc-card__icon { position: relative; display: grid; place-items: center; width: 60px; height: 60px; margin-bottom: 1.6rem; border-radius: 18px; color: #fff; background: linear-gradient(135deg, var(--g1), var(--g2)); box-shadow: 0 14px 30px -10px rgba(43, 85, 149, 0.9), inset 0 1px 0 rgba(255, 255, 255, 0.4); transition: transform 0.45s var(--ease), box-shadow 0.45s var(--ease); }
.svc-card__icon::after { content: ''; position: absolute; inset: 1px; border-radius: 17px; background: linear-gradient(160deg, rgba(255, 255, 255, 0.3), transparent 48%); pointer-events: none; }
.svc-card__icon svg { position: relative; z-index: 1; width: 28px; height: 28px; }
.svc-card:hover .svc-card__icon { transform: translateY(-3px) scale(1.07) rotate(-5deg); box-shadow: 0 20px 44px -10px rgba(110, 151, 214, 0.95), inset 0 1px 0 rgba(255, 255, 255, 0.5); }

.svc-card h3 { margin: 0 0 0.7rem; font-size: clamp(1.25rem, 1.1rem + 0.5vw, 1.5rem); letter-spacing: -0.02em; }
.svc-card > p { margin: 0 0 1.4rem; color: #B5B5B5; line-height: 1.6; }

.svc-card__features { list-style: none; display: grid; gap: 0.65rem; margin: 0 0 1.75rem; padding: 1.25rem 0 0; border-top: 1px solid rgba(255, 255, 255, 0.08); font-size: 0.9375rem; color: #D0D0D0; }
.svc-card__features li { display: flex; align-items: flex-start; gap: 0.7rem; }
.svc-card__features li::before { content: ''; flex: none; width: 18px; height: 18px; margin-top: 2px; border-radius: 50%; background: rgba(110, 151, 214, 0.2) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238FB0E3' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'><path d='M20 6 9 17l-5-5'/></svg>") center / 10px no-repeat; }

/* Explore button */
.svc-card__link { align-self: flex-start; display: inline-flex; align-items: center; gap: 0.6rem; margin-top: auto; padding: 0.75rem 1.2rem; border-radius: 999px; border: 1px solid rgba(255, 255, 255, 0.18); background: rgba(255, 255, 255, 0.04); color: #fff; font-family: var(--font-heading); font-weight: 600; font-size: 0.9375rem; line-height: 1; text-decoration: none !important; transition: background 0.3s var(--ease), color 0.3s, border-color 0.3s, transform 0.3s var(--ease); }
.svc-card__link svg { width: 18px; height: 18px; transition: transform 0.35s var(--ease); }
.svc-card:hover .svc-card__link { background: #fff; color: #000; border-color: #fff; }
.svc-card__link:hover svg, .svc-card:hover .svc-card__link svg { transform: translateX(5px); }
.svc-card__link:hover { transform: translateY(-1px); }

/* Entrance + filter animations -------------------------------------------- */
.js .svc-card:not(.is-in) { opacity: 0; }
.svc-card.is-in { animation: svc-in 0.75s var(--ease) var(--d, 0ms) backwards; }
@keyframes svc-in { from { opacity: 0; transform: translateY(34px) scale(0.97); } }
.svc-grid.is-switching .svc-card { opacity: 0 !important; transform: translateY(12px) scale(0.97); transition: opacity 0.2s ease, transform 0.2s ease; }

/* Bottom CTA -------------------------------------------------------------- */
.svc-cta { position: relative; overflow: hidden; isolation: isolate; margin-top: clamp(48px, 6vw, 88px); padding: clamp(36px, 6vw, 72px) clamp(24px, 5vw, 64px); text-align: center; border-radius: clamp(24px, 3vw, 36px); border: 1px solid rgba(255, 255, 255, 0.12); background: linear-gradient(135deg, rgba(43, 85, 149, 0.4), rgba(255, 255, 255, 0.04) 60%); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px); box-shadow: 0 40px 90px -40px rgba(43, 85, 149, 0.8), inset 0 1px 0 rgba(255, 255, 255, 0.1); }
.svc-cta::before { content: ''; position: absolute; z-index: -1; top: -40%; left: 50%; width: 70%; height: 90%; translate: -50% 0; border-radius: 50%; background: radial-gradient(circle, rgba(110, 151, 214, 0.35), transparent 65%); filter: blur(30px); }
.svc-cta h3 { margin: 0 0 0.8rem; font-size: clamp(1.75rem, 1.3rem + 1.8vw, 2.75rem); }
.svc-cta p { max-width: 54ch; margin: 0 auto 2rem; font-size: var(--fs-lead); color: #C2C2C2; }
.svc-cta__actions { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; }


/* ==========================================================================
   Statistics section: premium counter animation + hover interactions.
   Resting layout, colors, typography and spacing come from home.css, unchanged.
   ========================================================================== */

.stats .stat { position: relative; isolation: isolate; transition: opacity 0.8s var(--ease) var(--sd, 0ms), transform 0.8s var(--ease) var(--sd, 0ms), translate 0.5s var(--ease), border-color 0.45s ease; }
.stats .stat b { transform-origin: left center; transition: filter 0.7s ease, scale 0.5s var(--ease); }

/* Entrance: only hidden once the script has armed the section, so no-JS still shows the numbers */
.stats.is-armed .stat { opacity: 0; transform: translateY(28px); }
.stats.is-armed .stat.is-visible { opacity: 1; transform: none; }

/* Soft glow while counting */
.stats .stat.is-counting b { filter: drop-shadow(0 0 16px rgba(110, 151, 214, 0.6)) drop-shadow(0 0 4px rgba(143, 176, 227, 0.4)); }

/* Tiny bounce when the final value is reached */
.stats .stat.is-done b { animation: stat-pop 0.7s var(--ease) 1; }
@keyframes stat-pop { 0% { transform: scale(1); } 35% { transform: scale(1.09); } 65% { transform: scale(0.98); } 100% { transform: scale(1); } }

/* Hover interactions (mouse/trackpad only) */
.stats .stat span { opacity: 0.8; transition: opacity 0.4s ease, color 0.4s ease; }
.stats .stat::before { content: ''; position: absolute; z-index: -1; inset: -14px -12px -14px 0; border-radius: 18px; background: radial-gradient(120% 120% at 0% 50%, rgba(43, 85, 149, 0.3), rgba(43, 85, 149, 0.06) 60%, transparent 80%); box-shadow: 0 24px 50px -32px rgba(43, 85, 149, 0.9); opacity: 0; transition: opacity 0.45s var(--ease); pointer-events: none; }
.stats .stat::after { content: ''; position: absolute; top: 0; bottom: 0; left: -1px; width: 2px; background: linear-gradient(180deg, transparent, var(--c-blue-light) 30%, #fff 50%, var(--c-blue-light) 70%, transparent); box-shadow: 0 0 14px rgba(110, 151, 214, 0.75); opacity: 0; transition: opacity 0.45s var(--ease); pointer-events: none; }

@media (hover: hover) {
	.stats .stat:hover { translate: 0 -6px; border-left-color: rgba(110, 151, 214, 0.45); }
	.stats .stat:hover::before, .stats .stat:hover::after { opacity: 1; }
	.stats .stat:hover b { scale: 1.06; animation: stat-float 3.4s ease-in-out infinite; }
	.stats .stat:hover span { opacity: 1; color: #fff; }
}
@keyframes stat-float { 50% { translate: 0 -5px; } }

/* ==========================================================================
   Footer (premium). Scoped with the .ft / .ft-* prefix; loads after layout.css.
   ========================================================================== */

.ft { position: relative; overflow: hidden; isolation: isolate; padding-top: clamp(56px, 7vw, 96px); background: var(--c-ink); color: #A3A3A3; }
.ft::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(110, 151, 214, 0.55) 30%, rgba(255, 255, 255, 0.35) 50%, rgba(110, 151, 214, 0.55) 70%, transparent); }
.ft__glow { position: absolute; z-index: -1; top: -240px; left: 50%; width: min(1000px, 120%); height: 460px; translate: -50% 0; border-radius: 50%; background: radial-gradient(closest-side, rgba(43, 85, 149, 0.4), transparent); filter: blur(30px); pointer-events: none; }
.ft__dots { position: absolute; z-index: -1; inset: 0; background-image: radial-gradient(rgba(255, 255, 255, 0.05) 1px, transparent 1px); background-size: 28px 28px; -webkit-mask-image: linear-gradient(180deg, #000, transparent 55%); mask-image: linear-gradient(180deg, #000, transparent 55%); pointer-events: none; }

/* Newsletter panel -------------------------------------------------------- */
.ft-news { display: grid; gap: 24px; align-items: center; margin-bottom: clamp(48px, 6vw, 80px); padding: clamp(26px, 4vw, 44px); border: 1px solid transparent; border-radius: 28px; background: linear-gradient(rgba(12, 12, 14, 0.92), rgba(12, 12, 14, 0.92)) padding-box, linear-gradient(135deg, rgba(110, 151, 214, 0.65), rgba(255, 255, 255, 0.07) 42%, rgba(43, 85, 149, 0.55)) border-box; box-shadow: 0 40px 80px -50px rgba(43, 85, 149, 0.8); }
@media (min-width: 900px) { .ft-news { grid-template-columns: 1fr minmax(360px, 480px); gap: 48px; } }
.ft-news h3 { margin: 0 0 0.5rem; font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2.1rem); color: #fff; letter-spacing: -0.03em; }
.ft-news p { margin: 0; max-width: 46ch; color: #B5B5B5; }
.ft-news .newsletter { padding: 6px; }
.ft-news .newsletter input { min-height: 44px; }
.ft-news .newsletter input::placeholder { color: #8A8A8A; }
.ft-news .form-msg { margin: 0.75rem 0 0 0.5rem; }

/* Columns ----------------------------------------------------------------- */
.ft-grid { display: grid; gap: 44px 40px; grid-template-columns: 1fr; }
@media (min-width: 640px) {
	.ft-grid { grid-template-columns: repeat(2, 1fr); }
	.ft-brand, .ft-contact { grid-column: 1 / -1; }
}
@media (min-width: 1024px) {
	.ft-grid { grid-template-columns: 1.5fr 1fr 0.85fr 1.3fr; gap: 48px; }
	.ft-brand, .ft-contact { grid-column: auto; }
}

.ft-col h4 { position: relative; margin: 0 0 1.5rem; padding-bottom: 0.9rem; font-size: 1.0625rem; letter-spacing: -0.01em; color: #fff; }
.ft-col h4::after { content: ''; position: absolute; left: 0; bottom: 0; width: 28px; height: 2px; border-radius: 2px; background: var(--grad-brand); transition: width 0.4s var(--ease); }
.ft-col:hover h4::after { width: 48px; }

/* Brand */
.ft .brand__logo { height: 60px; }
/* Footer logo mark (si2.png) is a wide, tightly-cropped wordmark, not a
   square icon -- sized on its own so it reads clearly instead of rendering
   tiny inside the generic .brand__logo box height. */
.ft .ft-brand__logo { height: 44px; width: auto; }
@media (max-width: 639px) { .ft .ft-brand__logo { height: 38px; } }
.ft-brand__text { max-width: 40ch; margin: 1.5rem 0 0; line-height: 1.75; color: #A3A3A3; }

/* Social icons */
.ft-social { display: flex; flex-wrap: wrap; gap: 10px; margin: 1.75rem 0 0; padding: 0; list-style: none; }
.ft-social a { position: relative; display: grid; place-items: center; width: 44px; height: 44px; overflow: hidden; border-radius: 50%; border: 1px solid rgba(255, 255, 255, 0.12); background: rgba(255, 255, 255, 0.05); color: #fff; transition: transform 0.4s var(--ease), border-color 0.3s, box-shadow 0.4s var(--ease); }
.ft-social a::before { content: ''; position: absolute; inset: 0; border-radius: 50%; background: var(--grad-brand); opacity: 0; transform: scale(0.3); transition: opacity 0.3s, transform 0.45s var(--ease); }
.ft-social svg { position: relative; z-index: 1; width: 18px; height: 18px; transition: transform 0.4s var(--ease); }
.ft-social a:hover { transform: translateY(-5px); border-color: transparent; box-shadow: 0 14px 28px -8px rgba(43, 85, 149, 0.95), 0 0 0 4px rgba(110, 151, 214, 0.15); }
.ft-social a:hover::before { opacity: 1; transform: scale(1); }
.ft-social a:hover svg { transform: scale(1.18) rotate(-8deg); }

/* Link lists with animated underline */
.ft-links { display: grid; gap: 0.35rem; margin: 0; padding: 0; list-style: none; }
.ft-links a, .ft-bottom__nav a:not(.ft-top), .ft-contact-list a { position: relative; display: inline-block; padding: 0.2rem 0; color: #A3A3A3; font-size: 0.9375rem; text-decoration: none !important; transition: color 0.25s, transform 0.35s var(--ease); }
.ft-links a::after, .ft-bottom__nav a:not(.ft-top)::after, .ft-contact-list a::after { content: ''; position: absolute; left: 0; bottom: 0; width: 100%; height: 1px; background: linear-gradient(90deg, var(--c-blue-light), #fff); transform: scaleX(0); transform-origin: right; transition: transform 0.4s var(--ease); }
.ft-links a:hover, .ft-bottom__nav a:not(.ft-top):hover, .ft-contact-list a:hover { color: #fff; }
.ft-links a:hover { transform: translateX(6px); }
.ft-links a:hover::after, .ft-bottom__nav a:not(.ft-top):hover::after, .ft-contact-list a:hover::after { transform: scaleX(1); transform-origin: left; }

/* Get in touch */
.ft-contact-list { display: grid; gap: 1rem; margin: 0; padding: 0; list-style: none; }
.ft-contact-list li { display: flex; align-items: center; gap: 0.9rem; }
.ft-contact-list a { font-size: 0.9375rem; word-break: break-word; }
.ft-ico { flex: none; display: grid; place-items: center; width: 38px; height: 38px; border-radius: 12px; border: 1px solid rgba(255, 255, 255, 0.1); background: rgba(255, 255, 255, 0.05); color: var(--c-blue-light); transition: background 0.3s, color 0.3s, transform 0.4s var(--ease), border-color 0.3s; }
.ft-ico svg { width: 18px; height: 18px; }
.ft-contact-list li:hover .ft-ico, .ft-hours:hover .ft-ico { background: var(--grad-brand); color: #fff; border-color: transparent; transform: translateY(-2px) rotate(-6deg); }

.ft-hours { display: flex; align-items: flex-start; gap: 0.9rem; margin-top: 1.75rem; padding: 18px 20px; border: 1px solid rgba(255, 255, 255, 0.09); border-radius: 18px; background: rgba(255, 255, 255, 0.04); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.ft-hours h5 { margin: 0 0 0.35rem; font-family: var(--font-heading); font-size: 0.9375rem; color: #fff; letter-spacing: -0.01em; }
.ft-hours p { margin: 0; font-size: 0.9375rem; line-height: 1.55; }
.ft-hours p:last-child { color: #fff; font-weight: 500; }

.ft-cta { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 1.25rem; }
.ft-cta .btn svg { width: 1.05em; height: 1.05em; }
.ft-cta .btn:hover svg { transform: scale(1.18) rotate(-8deg); }

@media (min-width: 640px) and (max-width: 1023px) {
	.ft-contact { display: grid; grid-template-columns: 1fr 1fr; gap: 0 40px; align-items: start; }
	.ft-contact h4 { grid-column: 1 / -1; }
	.ft-hours { margin-top: 0; }
}

/* Bottom bar -------------------------------------------------------------- */
.ft-divider { height: 1px; margin-top: clamp(44px, 6vw, 72px); background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.16) 20%, rgba(110, 151, 214, 0.5) 50%, rgba(255, 255, 255, 0.16) 80%, transparent); }
.ft-bottom { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px 28px; padding: 26px 0 32px; font-size: 0.875rem; }
.ft-bottom__copy { margin: 0; color: #8A8A8A; }
.ft-bottom__nav { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 26px; }
.ft-bottom__nav a:not(.ft-top) { font-size: 0.875rem; }
.ft-top { display: grid; place-items: center; width: 40px; height: 40px; margin-left: 4px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, 0.14); background: rgba(255, 255, 255, 0.05); color: #fff; transition: transform 0.4s var(--ease), background 0.3s, border-color 0.3s; }
.ft-top svg { width: 18px; height: 18px; transform: rotate(-90deg); transition: transform 0.4s var(--ease); }
.ft-top:hover { background: var(--grad-brand); border-color: transparent; transform: translateY(-3px); }
.ft-top:hover svg { transform: rotate(-90deg) translateX(3px); }
@media (max-width: 639px) {
	.ft-bottom { flex-direction: column; align-items: flex-start; }
}


/* ==========================================================================
   Legal + sitemap pages (Privacy Policy, Terms & Conditions, Sitemap)
   ========================================================================== */

.prose { max-width: 820px; margin-inline: auto; }
.prose h2 { margin: 2.5rem 0 0.75rem; font-size: clamp(1.4rem, 1.2rem + 0.8vw, 1.85rem); }
.prose h2:first-of-type { margin-top: 0; }
.prose p, .prose li { line-height: 1.75; }
.prose ul { display: grid; gap: 0.4rem; margin: 0 0 1.25em; padding-left: 1.25rem; }
.prose .prose__meta { margin-bottom: 2rem; font-size: 0.875rem; color: var(--c-gray); }

.sitemap-grid { display: grid; gap: 24px; }
@media (min-width: 640px) { .sitemap-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .sitemap-grid { grid-template-columns: repeat(3, 1fr); } }
.sitemap-card h2 { margin-bottom: 0.25rem; font-size: 1.25rem; }
.sitemap-list { display: grid; gap: 0.5rem; margin: 1rem 0 0; padding: 0; list-style: none; }
.sitemap-list a { display: inline-block; padding: 0.15rem 0; font-weight: 500; }


/* ==========================================================================
   Contact page: premium hero, glass info cards, SaaS-style form.
   Scoped with .page-hero--contact / .ph-* / .ci-* / .cf-* prefixes.
   ========================================================================== */

/* -------------------------------------------------------------------------
   1. Hero: taller, animated gradient, floating particles, glass badges
   ---------------------------------------------------------------------- */
.page-hero--contact { display: grid; align-content: center; min-height: clamp(560px, 82vh, 820px); background: linear-gradient(125deg, #000000 0%, #0A1730 28%, #1B3A6B 55%, #0A1730 78%, #000000 100%); background-size: 260% 260%; animation: ph-shift 18s ease-in-out infinite; }
@keyframes ph-shift { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }
.page-hero--contact .page-hero__inner { max-width: 900px; }
.page-hero--contact h1 { font-size: clamp(2.4rem, 1.4rem + 4.2vw, 4.6rem); line-height: 1.04; letter-spacing: -0.035em; text-wrap: balance; }

/* Floating particles (pure CSS) */
.ph-particles { position: absolute; inset: 0; z-index: -1; overflow: hidden; pointer-events: none; }
.ph-particles i { position: absolute; bottom: -20px; left: var(--x); width: var(--s); height: var(--s); border-radius: 50%; background: rgba(160, 190, 235, 0.85); box-shadow: 0 0 12px rgba(110, 151, 214, 0.9); opacity: 0; animation: ph-rise var(--t) linear var(--d) infinite; }
@keyframes ph-rise {
	0% { transform: translate3d(0, 0, 0); opacity: 0; }
	12% { opacity: 0.85; }
	88% { opacity: 0.5; }
	100% { transform: translate3d(var(--dx, 24px), -900px, 0); opacity: 0; }
}

/* Fade-up entrance */
.cx-up { animation: cx-up 0.95s var(--ease) var(--cd, 0ms) backwards; }
@keyframes cx-up { from { opacity: 0; transform: translateY(30px); } }

/* Glass badges */
.ph-badges { display: flex; flex-wrap: wrap; gap: 12px; margin: 2.25rem 0 0; padding: 0; list-style: none; }
.ph-badges li { display: inline-flex; align-items: center; gap: 0.65rem; padding: 0.7rem 1.2rem 0.7rem 0.75rem; border: 1px solid rgba(255, 255, 255, 0.16); border-radius: 999px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.05)); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14), 0 14px 30px -18px rgba(0, 0, 0, 0.8); color: #fff; font-family: var(--font-heading); font-weight: 600; font-size: 0.9375rem; transition: transform 0.4s var(--ease), border-color 0.3s, box-shadow 0.4s var(--ease); }
.ph-badges li:hover { transform: translateY(-4px); border-color: rgba(143, 176, 227, 0.55); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18), 0 18px 40px -16px rgba(43, 85, 149, 0.9); }
.ph-badges__tick { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; background: var(--grad-brand); box-shadow: 0 6px 16px -4px rgba(43, 85, 149, 0.9); }
.ph-badges__tick svg { width: 14px; height: 14px; }

/* -------------------------------------------------------------------------
   2. Contact information: 2x2 glass cards
   ---------------------------------------------------------------------- */
.ci { position: relative; overflow: hidden; isolation: isolate; background: linear-gradient(180deg, #F1F3F7, #FFFFFF 70%); }
.ci__bg { position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.ci__bg i { position: absolute; border-radius: 50%; filter: blur(90px); animation: svc-float 20s ease-in-out infinite alternate; }
.ci__bg i:nth-child(1) { width: 480px; height: 480px; top: -160px; left: -120px; background: rgba(43, 85, 149, 0.28); }
.ci__bg i:nth-child(2) { width: 420px; height: 420px; bottom: -160px; right: -100px; background: rgba(110, 151, 214, 0.32); animation-delay: -8s; }

.ci-grid { display: grid; gap: 24px; grid-template-columns: 1fr; max-width: 1040px; margin-inline: auto; }
@media (min-width: 640px) { .ci-grid { grid-template-columns: repeat(2, 1fr); gap: 28px; } }

.ci-card { --mx: 50%; --my: 0%; position: relative; display: flex; flex-direction: column; overflow: hidden; isolation: isolate; padding: clamp(28px, 3vw, 40px); border: 1px solid rgba(255, 255, 255, 0.95); border-radius: 26px; background: linear-gradient(160deg, rgba(255, 255, 255, 0.88), rgba(255, 255, 255, 0.55)); -webkit-backdrop-filter: blur(18px) saturate(1.4); backdrop-filter: blur(18px) saturate(1.4); box-shadow: inset 0 1px 0 #fff, 0 26px 60px -34px rgba(27, 58, 107, 0.4), 0 2px 8px rgba(0, 0, 0, 0.04); transition: transform 0.45s var(--ease), box-shadow 0.45s var(--ease), border-color 0.3s; }
.ci-card > * { position: relative; z-index: 2; }
.ci-card::after { content: ''; position: absolute; inset: 0; z-index: 0; border-radius: inherit; background: radial-gradient(360px circle at var(--mx) var(--my), rgba(110, 151, 214, 0.22), transparent 62%); opacity: 0; transition: opacity 0.4s; pointer-events: none; }
.ci-card::before { content: ''; position: absolute; inset: 0; z-index: 1; border-radius: inherit; padding: 1.5px; background: conic-gradient(from var(--angle), transparent 0 50%, var(--c-blue-light) 72%, var(--c-blue) 86%, transparent 100%); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask-composite: exclude; opacity: 0; transition: opacity 0.35s; animation: cf-spin-angle 3.6s linear infinite; pointer-events: none; }
@keyframes cf-spin-angle { to { --angle: 360deg; } }
.ci-card:hover, .ci-card:focus-within { transform: translateY(-8px); box-shadow: inset 0 1px 0 #fff, 0 40px 90px -30px rgba(43, 85, 149, 0.55), 0 0 0 1px rgba(110, 151, 214, 0.2); }
.ci-card:hover::before, .ci-card:focus-within::before, .ci-card:hover::after, .ci-card:focus-within::after { opacity: 1; }

.ci-card__icon { position: relative; display: grid; place-items: center; width: 64px; height: 64px; margin-bottom: 1.5rem; border-radius: 20px; color: #fff; background: linear-gradient(135deg, var(--c-blue), var(--c-blue-light)); box-shadow: 0 16px 34px -12px rgba(43, 85, 149, 0.9), inset 0 1px 0 rgba(255, 255, 255, 0.4); transition: transform 0.45s var(--ease); }
.ci-card__icon::before { content: ''; position: absolute; inset: -6px; border-radius: 26px; border: 1.5px solid rgba(43, 85, 149, 0.35); opacity: 0; transform: scale(0.85); transition: opacity 0.4s, transform 0.5s var(--ease); }
.ci-card__icon svg { position: relative; width: 28px; height: 28px; }
.ci-card:hover .ci-card__icon { transform: translateY(-3px) rotate(-6deg) scale(1.05); }
.ci-card:hover .ci-card__icon::before { opacity: 1; transform: scale(1); }

.ci-card h3 { margin: 0 0 0.5rem; font-size: 1.35rem; letter-spacing: -0.02em; }
.ci-card__value { margin: 0 0 1.75rem; font-family: var(--font-heading); font-weight: 600; font-size: 1.125rem; line-height: 1.5; letter-spacing: -0.01em; color: var(--c-black); word-break: break-word; }
.ci-card__value a { position: relative; color: inherit; text-decoration: none; }
.ci-card__value a::after { content: ''; position: absolute; left: 0; bottom: -2px; width: 100%; height: 1.5px; background: var(--grad-brand); transform: scaleX(0); transform-origin: right; transition: transform 0.4s var(--ease); }
.ci-card__value a:hover::after { transform: scaleX(1); transform-origin: left; }

.ci-card__btn { align-self: flex-start; display: inline-flex; align-items: center; gap: 0.6rem; margin-top: auto; padding: 0.8rem 1.3rem; border: 1.5px solid rgba(43, 85, 149, 0.35); border-radius: 999px; background: rgba(255, 255, 255, 0.6); color: var(--c-blue); font-family: var(--font-heading); font-weight: 600; font-size: 0.9375rem; line-height: 1; text-decoration: none !important; transition: background 0.3s var(--ease), color 0.3s, border-color 0.3s, box-shadow 0.4s var(--ease), transform 0.3s var(--ease); }
.ci-card__btn svg { width: 18px; height: 18px; transition: transform 0.35s var(--ease); }
.ci-card__btn:hover, .ci-card:hover .ci-card__btn { background: var(--grad-cta); border-color: transparent; color: #fff; box-shadow: 0 14px 30px -12px rgba(43, 85, 149, 0.9); }
.ci-card__btn:hover svg, .ci-card:hover .ci-card__btn svg { transform: translateX(5px); }
.ci-card__btn:active { transform: scale(0.97); }

.ci-card__status { align-self: flex-start; display: inline-flex; align-items: center; gap: 0.6rem; margin-top: auto; padding: 0.7rem 1.1rem; border-radius: 999px; background: rgba(43, 85, 149, 0.08); color: var(--c-blue); font-family: var(--font-heading); font-weight: 600; font-size: 0.9375rem; line-height: 1; }
.ci-card__status i { width: 9px; height: 9px; border-radius: 50%; background: var(--c-gray); }
.ci-card__status.is-open { color: #15803D; background: rgba(21, 128, 61, 0.1); }
.ci-card__status.is-open i { background: #16A34A; box-shadow: 0 0 0 0 rgba(22, 163, 74, 0.6); animation: ci-pulse 1.8s ease-out infinite; }
@keyframes ci-pulse { to { box-shadow: 0 0 0 9px rgba(22, 163, 74, 0); } }

/* Entrance (only hidden once the script arms the grid) */
.ci-grid.is-armed .ci-card:not(.is-in) { opacity: 0; }
.ci-card.is-in { animation: ci-in 0.85s var(--ease) var(--d, 0ms) backwards; }
@keyframes ci-in { from { opacity: 0; transform: translateY(34px) scale(0.97); } }

/* -------------------------------------------------------------------------
   3. Contact form: premium SaaS look
   ---------------------------------------------------------------------- */
.cf { position: relative; overflow: hidden; padding: clamp(28px, 4vw, 52px); border: 1px solid var(--border); border-radius: 28px; background: #fff; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04), 0 40px 80px -48px rgba(27, 58, 107, 0.45); }
.cf::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: var(--grad-brand); }
.cf::after { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, transparent, var(--c-blue), #fff, var(--c-blue-light), transparent); background-size: 200% 100%; opacity: 0; animation: cf-bar 1.1s linear infinite; }
@keyframes cf-bar { to { background-position: -200% 0; } }
.cf.is-loading::after { opacity: 1; }

.cf__head { margin-bottom: clamp(28px, 3vw, 40px); }
.cf__eyebrow { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.35rem 0.85rem; border-radius: 999px; background: rgba(43, 85, 149, 0.09); color: var(--c-blue); font-family: var(--font-heading); font-weight: 600; font-size: 0.8125rem; letter-spacing: 0.02em; }
.cf__head h2 { margin: 1rem 0 0.5rem; font-size: clamp(1.6rem, 1.3rem + 1.2vw, 2.2rem); letter-spacing: -0.03em; }
.cf__head p { margin: 0; }

.cf__fields { display: grid; gap: 22px; transition: opacity 0.4s, filter 0.4s; }
.cf.is-loading .cf__fields { opacity: 0.55; filter: saturate(0.85); pointer-events: none; }
.cf__row { display: grid; gap: 22px; }
@media (min-width: 640px) { .cf__row--2 { grid-template-columns: 1fr 1fr; } }

/* Floating-label field */
.ff { position: relative; }
.ff input, .ff select, .ff textarea { width: 100%; padding: 27px 18px 10px; border: 1.5px solid #DADEE6; border-radius: 16px; background: #fff; color: var(--c-black); font: inherit; font-size: 1rem; line-height: 1.4; transition: border-color 0.25s, box-shadow 0.25s, background 0.25s; }
.ff textarea { min-height: 160px; padding-top: 32px; resize: vertical; }
.ff input { padding-right: 46px; }
.ff select { padding-right: 46px; appearance: none; -webkit-appearance: none; cursor: pointer; background: #fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236B6B6B' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>") right 16px center / 18px no-repeat; }
.ff input:hover, .ff select:hover, .ff textarea:hover { border-color: #B9C2D2; }
.ff input:focus, .ff select:focus, .ff textarea:focus { outline: none; border-color: var(--c-blue); box-shadow: 0 0 0 4px rgba(43, 85, 149, 0.12); }

.ff label { position: absolute; left: 19px; top: 19px; max-width: calc(100% - 60px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--c-gray); font-size: 1rem; line-height: 1.3; pointer-events: none; transform-origin: left top; transition: transform 0.28s var(--ease), color 0.25s; }
.ff.is-filled label, .ff:focus-within label, .ff input:not(:placeholder-shown) ~ label, .ff textarea:not(:placeholder-shown) ~ label, .ff:has(select option:checked:not([value=""])) label { transform: translateY(-11px) scale(0.78); color: var(--c-gray); }
.ff:focus-within label { color: var(--c-blue); }

/* Animated focus border */
.ff::before { content: ''; position: absolute; inset: 0; z-index: 1; border-radius: 16px; padding: 1.5px; background: conic-gradient(from var(--angle), transparent 0 40%, var(--c-blue-light) 68%, var(--c-blue) 84%, transparent 100%); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask-composite: exclude; opacity: 0; transition: opacity 0.3s; animation: cf-spin-angle 3s linear infinite; pointer-events: none; }
.ff:focus-within::before { opacity: 1; }

/* Live validation states */
.ff__status { position: absolute; top: 19px; right: 16px; width: 20px; height: 20px; color: #16A34A; opacity: 0; transform: scale(0.5); transition: opacity 0.25s, transform 0.4s var(--ease); pointer-events: none; }
.ff.is-valid .ff__status { opacity: 1; transform: scale(1); }
.ff.is-valid input { border-color: rgba(22, 163, 74, 0.55); }
.ff.is-invalid input, .ff.is-invalid select, .ff.is-invalid textarea { border-color: #DC2626; box-shadow: 0 0 0 4px rgba(220, 38, 38, 0.1); }
.ff.is-invalid label { color: #DC2626; }
.ff.is-invalid::before { opacity: 0; }
.ff__error { max-height: 0; margin: 0 0 0 6px; overflow: hidden; color: #B91C1C; font-size: 0.8125rem; line-height: 1.4; opacity: 0; transform: translateY(-4px); transition: max-height 0.3s var(--ease), opacity 0.3s, transform 0.3s var(--ease), margin 0.3s; }
.is-invalid > .ff__error, .is-invalid + .ff__error { max-height: 44px; margin-top: 7px; opacity: 1; transform: none; }
.ff.shake, .cf-consent.shake { animation: cf-shake 0.45s; }
@keyframes cf-shake { 20%, 60% { transform: translateX(-6px); } 40%, 80% { transform: translateX(6px); } }

/* Consent checkbox */
.cf-consent { display: grid; }
.cf-checkbox { display: inline-flex; align-items: flex-start; gap: 0.85rem; cursor: pointer; font-size: 0.9375rem; line-height: 1.5; }
.cf-checkbox input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.cf-checkbox__box { flex: none; display: grid; place-items: center; width: 24px; height: 24px; margin-top: 1px; border: 1.5px solid #B9C2D2; border-radius: 8px; background: #fff; color: #fff; transition: background 0.25s, border-color 0.25s, box-shadow 0.25s, transform 0.3s var(--ease); }
.cf-checkbox__box svg { width: 14px; height: 14px; transform: scale(0); transition: transform 0.35s var(--ease); }
.cf-checkbox:hover .cf-checkbox__box { border-color: var(--c-blue); }
.cf-checkbox input:focus-visible + .cf-checkbox__box { box-shadow: 0 0 0 4px rgba(43, 85, 149, 0.2); }
.cf-checkbox input:checked + .cf-checkbox__box { background: var(--grad-cta); border-color: transparent; transform: scale(1.06); }
.cf-checkbox input:checked + .cf-checkbox__box svg { transform: scale(1); }
.cf-checkbox a { font-weight: 600; }
.cf-consent.is-invalid .cf-checkbox__box { border-color: #DC2626; box-shadow: 0 0 0 4px rgba(220, 38, 38, 0.1); }
.cf-consent .ff__error { margin-left: 2.5rem; }

/* Buttons + loading */
.cf__actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 0.5rem; }
.cf__actions .btn { min-width: 0; }
.cf__actions .btn svg { width: 1.15em; height: 1.15em; }
.cf__actions .btn--secondary:hover svg { transform: scale(1.15) rotate(-8deg); }
.btn__spinner { display: none; width: 1.1em; height: 1.1em; border: 2px solid rgba(255, 255, 255, 0.4); border-top-color: #fff; border-radius: 50%; animation: cf-rotate 0.7s linear infinite; }
@keyframes cf-rotate { to { transform: rotate(360deg); } }
.cf.is-loading .btn__spinner { display: inline-block; }
.cf.is-loading .btn__arrow { display: none; }
.cf.is-loading [data-submit] { pointer-events: none; opacity: 0.9; }
.cf .form-msg { min-height: 1.4em; margin: 0; }
.cf .form-msg.is-error { color: #B91C1C; }
.cf .form-msg.is-success { color: #15803D; }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Success state */
.cf-done { display: grid; justify-items: center; gap: 0.75rem; padding: clamp(24px, 4vw, 48px) 0; text-align: center; }
.cf-done[hidden] { display: none; }
.cf-done__icon { position: relative; display: grid; place-items: center; width: 104px; height: 104px; margin-bottom: 0.5rem; }
.cf-done__icon::before { content: ''; position: absolute; inset: 0; border-radius: 50%; background: rgba(43, 85, 149, 0.1); animation: cf-ring 1.6s var(--ease) 0.9s infinite; }
@keyframes cf-ring { 0% { transform: scale(0.8); opacity: 1; } 100% { transform: scale(1.35); opacity: 0; } }
.cf-done__svg { position: relative; width: 88px; height: 88px; }
.cf-done__circle { fill: none; stroke: var(--c-blue); stroke-width: 2.5; stroke-dasharray: 152; stroke-dashoffset: 152; animation: cf-draw 0.7s var(--ease) forwards; }
.cf-done__mark { fill: none; stroke: var(--c-blue); stroke-width: 3.5; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 42; stroke-dashoffset: 42; animation: cf-draw 0.5s var(--ease) 0.55s forwards; }
@keyframes cf-draw { to { stroke-dashoffset: 0; } }
.cf-done h3 { margin: 0; font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem); animation: cx-up 0.7s var(--ease) 0.7s backwards; }
.cf-done p { max-width: 44ch; margin: 0; animation: cx-up 0.7s var(--ease) 0.85s backwards; }
.cf-done .btn { margin-top: 0.75rem; animation: cx-up 0.7s var(--ease) 1s backwards; }


/* ==========================================================================
   Homepage hero: load-in choreography (~1.4s).
   Only animation; the hero's layout, colors and typography are untouched.
   Sequence: nav (0s) > badge (.08s) > heading lines (.2s, staggered) >
   description (.5s) > buttons (.65s, from left / right) > dashboard zoom (.4s) > trust line (.9s)
   ========================================================================== */

/* Hidden until site.js adds .hero-go. If the script never runs, everything appears after 2.6s. */
.js .page-home:not(.hero-go) :is(.site-header__inner, .hero .badge:not(.badge--new), .hero h1, .hero .lead, .hero__actions .btn, .hero__visual, .hero__trust) {
	opacity: 0;
	animation: hero-safe 0.01s 2.6s forwards;
}
@keyframes hero-safe { to { opacity: 1; transform: none; } }

/* The page-wide fade on <main> would fight the hero sequence on the homepage */
.page-home #main { animation: none; }

/* "backwards" fill: hidden during each delay, but no leftover styles afterwards (hover keeps working) */
.page-home.hero-go .site-header__inner { animation: hero-down 0.7s var(--ease) 0s backwards; }
.page-home.hero-go .hero .badge:not(.badge--new) { animation: hero-fade 0.6s var(--ease) 0.08s backwards; }
.page-home.hero-go .hero h1 { animation: hero-up 0.8s var(--ease) 0.2s backwards; } /* fallback when lines could not be split */
.page-home.hero-go .hero h1.is-split { animation: none; }
.page-home.hero-go .hero .lead { animation: hero-up 0.7s var(--ease) 0.5s backwards; }
.page-home.hero-go .hero__actions .btn--primary { animation: hero-left 0.7s var(--ease) 0.65s backwards; }
.page-home.hero-go .hero__actions .btn--secondary { animation: hero-right 0.7s var(--ease) 0.65s backwards; }
/* .hero__visual: load-in zoom + continuous float are declared together in the block at the end of this file */
.page-home.hero-go .hero__trust { animation: hero-fade 0.6s var(--ease) 0.9s backwards; }

@keyframes hero-down { from { opacity: 0; transform: translateY(-18px); } }
@keyframes hero-fade { from { opacity: 0; transform: translateY(8px); } }
@keyframes hero-up { from { opacity: 0; transform: translateY(22px); } }
@keyframes hero-left { from { opacity: 0; transform: translateX(-34px); } }
@keyframes hero-right { from { opacity: 0; transform: translateX(34px); } }
@keyframes hero-zoom { from { opacity: 0; transform: scale(0.93); } }

/* Heading lines (created by site.js while the animation plays, then removed) */
.hl { display: block; overflow: hidden; padding-bottom: 0.14em; margin-bottom: -0.14em; }
.hl__in { display: block; }
.page-home:not(.hero-go) .hl__in { transform: translateY(105%); }
.page-home.hero-go .hl__in { animation: hero-line 0.75s var(--ease) calc(0.2s + var(--i, 0) * 0.11s) backwards; }
@keyframes hero-line { from { transform: translateY(105%); } }

/* ==========================================================================
   Dashboard illustration: continuous, natural floating (Apple-style).
   Uses the individual translate / scale properties, so it composes with the load-in
   zoom (which uses transform) without conflict. Appearance is unchanged.
   - drift: 21s closed loop sampled from sine waves = 9px up/down (7s cycle) + 5px left/right (10.5s cycle)
   - breathe: gentle 1 -> 1.02 scale, 8s ease-in-out
   ========================================================================== */
.page-home.hero-go .hero__visual {
	animation: hero-zoom 0.95s var(--ease) 0.4s backwards,
	           dash-drift 21s linear 1.4s infinite,
	           dash-breathe 8s ease-in-out 1.4s infinite alternate;
	will-change: translate, scale;
}
.page-home.hero-go .hero__visual.is-paused { animation-play-state: paused; }

@keyframes dash-drift {
	0% { translate: 0px 0px; }
	2.38% { translate: 1.47px -0.45px; }
	4.76% { translate: 2.82px -1.69px; }
	7.14% { translate: 3.91px -3.5px; }
	9.52% { translate: 4.65px -5.5px; }
	11.9% { translate: 4.99px -7.31px; }
	14.29% { translate: 4.87px -8.55px; }
	16.67% { translate: 4.33px -9px; }
	19.05% { translate: 3.4px -8.55px; }
	21.43% { translate: 2.17px -7.31px; }
	23.81% { translate: 0.75px -5.5px; }
	26.19% { translate: -0.75px -3.5px; }
	28.57% { translate: -2.17px -1.69px; }
	30.95% { translate: -3.4px -0.45px; }
	33.33% { translate: -4.33px 0px; }
	35.71% { translate: -4.87px -0.45px; }
	38.1% { translate: -4.99px -1.69px; }
	40.48% { translate: -4.65px -3.5px; }
	42.86% { translate: -3.91px -5.5px; }
	45.24% { translate: -2.82px -7.31px; }
	47.62% { translate: -1.47px -8.55px; }
	50% { translate: 0px -9px; }
	52.38% { translate: 1.47px -8.55px; }
	54.76% { translate: 2.82px -7.31px; }
	57.14% { translate: 3.91px -5.5px; }
	59.52% { translate: 4.65px -3.5px; }
	61.9% { translate: 4.99px -1.69px; }
	64.29% { translate: 4.87px -0.45px; }
	66.67% { translate: 4.33px 0px; }
	69.05% { translate: 3.4px -0.45px; }
	71.43% { translate: 2.17px -1.69px; }
	73.81% { translate: 0.75px -3.5px; }
	76.19% { translate: -0.75px -5.5px; }
	78.57% { translate: -2.17px -7.31px; }
	80.95% { translate: -3.4px -8.55px; }
	83.33% { translate: -4.33px -9px; }
	85.71% { translate: -4.87px -8.55px; }
	88.1% { translate: -4.99px -7.31px; }
	90.48% { translate: -4.65px -5.5px; }
	92.86% { translate: -3.91px -3.5px; }
	95.24% { translate: -2.82px -1.69px; }
	97.62% { translate: -1.47px -0.45px; }
	100% { translate: 0px 0px; }
}
@keyframes dash-breathe { from { scale: 1; } to { scale: 1.02; } }

/* ==========================================================================
   Our Founder section (About page). Scoped with .founder / .founder-card.
   Uses the site's tokens: colors, fonts, radii and easing are unchanged.
   ========================================================================== */

.founder { position: relative; overflow: hidden; isolation: isolate; padding-bottom: clamp(110px, 14vw, 200px); } /* extra room below for future founder details or team members */

/* Background: soft animated gradient glow + gentle floating shapes ---------- */
.founder__bg { position: absolute; inset: 0; z-index: -1; overflow: hidden; pointer-events: none; }
.founder__glow { position: absolute; top: 4%; left: 50%; width: min(900px, 130%); height: 560px; translate: -50% 0; border-radius: 50%; background: radial-gradient(closest-side, rgba(43, 85, 149, 0.22), rgba(110, 151, 214, 0.1) 55%, transparent); filter: blur(40px); animation: fdr-glow 14s ease-in-out infinite alternate; }
.founder__glow--2 { top: auto; bottom: -180px; left: 18%; width: 560px; height: 420px; background: radial-gradient(closest-side, rgba(110, 151, 214, 0.26), transparent); animation-duration: 18s; animation-delay: -6s; }
@keyframes fdr-glow { 0% { transform: translate3d(-4%, 0, 0) scale(1); opacity: 0.85; } 100% { transform: translate3d(5%, 6%, 0) scale(1.12); opacity: 1; } }

.founder__shape { position: absolute; border: 1.5px solid rgba(43, 85, 149, 0.2); animation: fdr-float 11s ease-in-out infinite alternate; }
.founder__shape--ring { top: 14%; left: 8%; width: 96px; height: 96px; border-radius: 50%; }
.founder__shape--ring2 { bottom: 20%; right: 9%; width: 140px; height: 140px; border-radius: 50%; border-color: rgba(110, 151, 214, 0.28); animation-duration: 14s; animation-delay: -4s; }
.founder__shape--square { top: 38%; right: 13%; width: 54px; height: 54px; border-radius: 14px; rotate: 16deg; animation-duration: 12s; animation-delay: -7s; }
.founder__shape--dot { bottom: 26%; left: 15%; width: 12px; height: 12px; border: 0; border-radius: 50%; background: rgba(43, 85, 149, 0.35); animation-duration: 9s; animation-delay: -2s; }
.founder__shape--dot2 { top: 22%; right: 26%; width: 8px; height: 8px; border: 0; border-radius: 50%; background: rgba(110, 151, 214, 0.55); animation-duration: 10s; animation-delay: -5s; }
@keyframes fdr-float { 0% { transform: translate3d(0, 0, 0); } 100% { transform: translate3d(14px, -22px, 0); } }

/* Fade-up when the section enters the viewport (hidden only once the script has armed it) */
.founder.is-armed:not(.is-in) .section-head, .founder.is-armed:not(.is-in) .founder-card { opacity: 0; }
.founder.is-in .section-head { animation: fdr-up 0.9s var(--ease) backwards; }
.founder.is-in .founder-card { animation: fdr-up 1s var(--ease) 0.25s backwards; }
@keyframes fdr-up { from { opacity: 0; transform: translateY(32px); } }

/* Members row: cards sit centered; more can be added and they will wrap neatly ---------- */
.founder__members { display: flex; flex-wrap: wrap; justify-content: center; gap: 32px; }

/* Founder card (glassmorphism) ------------------------------------------- */
.founder-card { position: relative; display: flex; flex-direction: column; align-items: center; width: min(100%, 420px); padding: clamp(40px, 5vw, 60px) clamp(24px, 4vw, 44px) clamp(36px, 4.5vw, 52px); text-align: center; border: 1px solid rgba(255, 255, 255, 0.95); border-radius: 32px; background: linear-gradient(160deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.58)); -webkit-backdrop-filter: blur(20px) saturate(1.4); backdrop-filter: blur(20px) saturate(1.4); box-shadow: inset 0 1px 0 #fff, 0 30px 70px -36px rgba(27, 58, 107, 0.45), 0 2px 10px rgba(0, 0, 0, 0.04); transition: transform 0.5s var(--ease), box-shadow 0.5s var(--ease); }
.founder-card:hover { transform: translateY(-8px); box-shadow: inset 0 1px 0 #fff, 0 44px 90px -34px rgba(43, 85, 149, 0.55), 0 0 0 1px rgba(110, 151, 214, 0.16); }

/* Photo: circular, empty placeholder. To use a real photo, put an <img> inside .founder-card__photo. */
.founder-card__photo { position: relative; display: grid; place-items: center; width: clamp(160px, 20vw, 196px); aspect-ratio: 1; margin-bottom: 1.75rem; border-radius: 50%; padding: 6px; background: conic-gradient(from var(--angle), var(--c-blue), var(--c-blue-light), #fff 40%, var(--c-blue-light) 60%, var(--c-blue)); animation: fdr-ring 9s linear infinite; box-shadow: 0 18px 44px -14px rgba(43, 85, 149, 0.55); transition: transform 0.5s var(--ease), box-shadow 0.5s var(--ease); }
@keyframes fdr-ring { to { --angle: 360deg; } }
.founder-card:hover .founder-card__photo { transform: scale(1.04); box-shadow: 0 24px 56px -14px rgba(43, 85, 149, 0.7); }
.founder-card__photo::before { content: ''; position: absolute; inset: 6px; border-radius: 50%; background: #fff; }
.founder-card__photo img { position: absolute; inset: 6px; z-index: 2; width: calc(100% - 12px); height: calc(100% - 12px); border-radius: 50%; object-fit: cover; }
.founder-card__ph { position: relative; z-index: 1; display: grid; place-items: center; width: calc(100% - 12px); height: calc(100% - 12px); overflow: hidden; border-radius: 50%; background: radial-gradient(circle at 30% 25%, rgba(255, 255, 255, 0.55), transparent 45%), linear-gradient(145deg, var(--c-blue-dark) 0%, var(--c-blue) 55%, var(--c-blue-light) 100%); }
.founder-card__ph::after { content: ''; position: absolute; inset: 0; border-radius: 50%; background: linear-gradient(115deg, transparent 35%, rgba(255, 255, 255, 0.22) 50%, transparent 65%); transform: translateX(-120%); transition: transform 0.9s var(--ease); }
.founder-card:hover .founder-card__ph::after { transform: translateX(120%); }
.founder-card__ph svg { position: relative; z-index: 1; width: 46%; height: 46%; fill: none; stroke: rgba(255, 255, 255, 0.78); stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; }

.founder-card h3 { margin: 0 0 0.4rem; font-size: clamp(1.6rem, 1.3rem + 1.2vw, 2.1rem); letter-spacing: -0.03em; }
.founder-card p { margin: 0; color: var(--c-blue); font-family: var(--font-heading); font-weight: 600; font-size: 1rem; letter-spacing: 0.01em; }


/* ==========================================================================
   Mobile hardening. Loads last, so it can fine-tune small screens without
   changing the design on tablet/desktop. Nothing here alters colors, fonts
   or the overall layout — only spacing/size tweaks scoped to narrow widths,
   plus a couple of safety nets and performance trims for phone GPUs.
   ========================================================================== */

/* NOTE: an `html, body { overflow-x: hidden; }` safety net used to live here,
   added as a guard against decorative elements causing horizontal overflow.
   It was removed: setting overflow-x on <html>/<body> is a documented cause
   of exactly the "first swipe doesn't scroll" bug on iOS Safari, since it can
   interfere with the browser's native scroll-gesture recognition. Every
   section with large decorative shapes (hero, services, footer, founder,
   contact, page-hero, cards, carousels) already clips its own overflow
   individually, which is the correct, safe way to prevent horizontal
   scrollbars without touching html/body. */

/* Hero dashboard: keep it comfortable on the smallest phones (<400px wide) */
@media (max-width: 400px) {
	.dash { padding: 16px; }
	.dash__kpis { grid-template-columns: 1fr; gap: 10px; }
	.kpi { padding: 14px; }
	.kpi b { font-size: 1.375rem; }
	.bars { height: 96px; padding: 12px; }
	.float-chip { padding: 10px 14px; font-size: 0.8125rem; }
	.float-chip--a { top: -22px; }
	.float-chip--b { bottom: -16px; }
}

/* Performance: several sections layer heavy blur() + backdrop-filter for a
   glass/glow effect. That is fine on desktop GPUs; on phones it is trimmed
   a little so scrolling stays smooth, without changing how it looks. */
@media (max-width: 640px) {
	.hero__mesh span { filter: blur(60px); }
	.svc__blob { filter: blur(70px); }
	.svc__cursor { display: none; } /* cursor-follow glow only matters with a mouse anyway */
	.founder__glow, .founder__glow--2 { filter: blur(26px); }
	.ft__glow { filter: blur(20px); }
	.ci__bg i { filter: blur(60px); }
	.page-hero--contact { animation: none; background-position: 30% 40%; } /* keep the gradient, skip the constant repaint */
}

/* Touch targets: filter/tab pills are text-sized by default; guarantee the
   40px minimum tap height on touch devices without changing their look. */
@media (pointer: coarse) {
	.svc-tabs button, .chips button, .filters button { min-height: 40px; }
}

/* Newsletter form (footer "Stay Updated" panel): on very narrow phones the
   email input and "Subscribe" button no longer both fit on one row, so the
   button gets squeezed past the edge of the screen. Stack them instead of
   letting the row overflow. */
@media (max-width: 479px) {
	.newsletter { flex-wrap: wrap; border-radius: var(--radius); }
	.newsletter input { flex-basis: 100%; padding: 10px 1rem; }
	.newsletter .btn { flex: 1 1 100%; justify-content: center; }
}
