/* Simla Portfolio Widgets, base styles
   Every colour, size and radius can be overridden from the Elementor Style tab. */

:root {
	--spw-font-heading: "Cormorant Garamond", Georgia, "Times New Roman", serif;
	--spw-font-body: "Jost", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
	--spw-font-script: "Caveat", "Segoe Script", "Bradley Hand", "Brush Script MT", cursive;
	--spw-primary: #1d6bff;
	--spw-primary-2: #20a4ff;
	--spw-ink: #0a1a44;
	--spw-muted: #5a6a8a;
	--spw-soft: #eaf3ff;
}

.spw {
	--spw-primary: #1d6bff;
	--spw-primary-2: #20a4ff;
	--spw-ink: #0a1a44;
	--spw-muted: #5a6a8a;
	--spw-soft: #eaf3ff;
	--spw-line: rgba(29, 107, 255, .14);
	--spw-glass: rgba(255, 255, 255, .74);
	--spw-radius: 22px;
	--spw-shadow: 0 24px 60px -30px rgba(29, 107, 255, .5);
	--spw-gap: 24px;
	--spw-spv: 3;
	position: relative;
	box-sizing: border-box;
	width: 100%;
	color: var(--spw-muted);
	font-family: var(--spw-font-body);
	font-size: 1rem;
	line-height: 1.65;
	padding: 100px 30px;
}

.spw *,
.spw *::before,
.spw *::after { box-sizing: border-box; }

.spw :where(h1, h2, h3, h4, h5, h6, p, ul, ol, figure, blockquote) { margin: 0; padding: 0; }
.spw :where(ul, ol) { list-style: none; }
.spw :where(img) { max-width: 100%; height: auto; display: block; }
.spw a { text-decoration: none; }
.spw :where(h1, h2, h3, h4, h5, h6) { color: var(--spw-ink); line-height: 1.2; }

.spw-wrap {
	width: 100%;
	max-width: var(--spw-max, 1400px);
	margin-inline: auto;
	padding-inline: 0;
}

.spw a:focus-visible,
.spw button:focus-visible,
.spw .spw-track:focus-visible {
	outline: 3px solid var(--spw-primary);
	outline-offset: 3px;
	border-radius: 10px;
}

/* ---------- Shared pieces ---------- */

.spw-hl { color: var(--spw-primary); }

.spw-eyebrow {
	font-size: .78rem;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--spw-primary);
}

.spw-title {
	font-size: clamp(1.7rem, 3.2vw, 2.45rem);
	font-weight: 700;
	letter-spacing: -.01em;
	text-wrap: balance;
}

.spw-desc { max-width: 680px; text-wrap: pretty; }

.spw-head {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin-bottom: 40px;
	text-align: center;
	align-items: center;
}
.spw-head.is-left { text-align: start; align-items: start; }
.spw-head.is-right { text-align: end; align-items: end; }

.spw-card {
	position: relative;
	background: var(--spw-glass);
	border: 1px solid rgba(255, 255, 255, .95);
	border-radius: var(--spw-radius);
	box-shadow: var(--spw-shadow);
	-webkit-backdrop-filter: blur(14px);
	backdrop-filter: blur(14px);
	transition: translate .3s ease, box-shadow .3s ease;
}
.spw-card:hover { translate: 0 -6px; }

.spw-ico {
	display: inline-grid;
	place-items: center;
	flex: none;
	width: 52px;
	height: 52px;
	border-radius: 16px;
	font-size: 1.35rem;
	color: #fff;
	background: linear-gradient(135deg, var(--spw-primary), var(--spw-primary-2));
	box-shadow: 0 12px 24px -12px var(--spw-primary);
}
.spw-ico svg { width: 1em; height: 1em; fill: currentColor; }

.spw-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	padding: 14px 26px;
	border-radius: 14px;
	font-weight: 600;
	font-size: .95rem;
	line-height: 1.2;
	border: 1px solid transparent;
	cursor: pointer;
	transition: translate .25s ease, box-shadow .25s ease, background .25s ease, color .25s ease;
}
.spw-btn svg { width: 1em; height: 1em; fill: currentColor; }
.spw-btn:hover { translate: 0 -3px; }
.spw-btn--primary {
	color: #fff;
	background: linear-gradient(135deg, var(--spw-primary), var(--spw-primary-2));
	box-shadow: 0 16px 30px -14px var(--spw-primary);
}
.spw-btn--ghost {
	color: var(--spw-primary);
	background: #fff;
	border-color: rgba(29, 107, 255, .25);
}
.spw-btn--light { color: var(--spw-primary); background: #fff; }
.spw-btn--outline { color: #fff; border-color: rgba(255, 255, 255, .75); background: transparent; }

.spw-arrow {
	display: grid;
	place-items: center;
	flex: none;
	width: 42px;
	height: 42px;
	border-radius: 50%;
	color: #fff;
	background: linear-gradient(135deg, var(--spw-primary), var(--spw-primary-2));
	box-shadow: 0 12px 22px -12px var(--spw-primary);
	transition: translate .25s ease;
}
.spw-arrow:hover { translate: 4px 0; }
.spw-arrow svg { width: 1em; height: 1em; fill: currentColor; }

.spw-check li,
.spw-about__list li {
	position: relative;
	padding-inline-start: 28px;
}
.spw-check li::before,
.spw-about__list li::before {
	content: "";
	position: absolute;
	inset-inline-start: 0;
	top: .38em;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background-color: var(--spw-primary);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 12.5l4 4 8-9' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-size: 72%;
	background-position: center;
	background-repeat: no-repeat;
}

.spw-bar {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 20px 32px;
	margin-bottom: 36px;
}
.spw-bar .spw-head { margin-bottom: 0; }

.spw-more { font-weight: 600; font-size: .92rem; color: var(--spw-primary); white-space: nowrap; }
.spw-more:hover { text-decoration: underline; text-underline-offset: 4px; }

/* ---------- Scroll reveal (only active when JS has run) ---------- */

.spw.has-js[data-reveal] .spw-r {
	opacity: 0;
	transform: translateY(28px);
	transition: opacity .75s cubic-bezier(.2, .7, .2, 1), transform .75s cubic-bezier(.2, .7, .2, 1), translate .3s ease, box-shadow .3s ease;
	transition-delay: var(--spw-d, 0s);
}
.spw.has-js[data-reveal="fade"] .spw-r { transform: none; }
.spw.has-js[data-reveal="zoom"] .spw-r { transform: scale(.92); }
.spw.has-js[data-reveal="left"] .spw-r { transform: translateX(-36px); }
.spw.has-js[data-reveal="right"] .spw-r { transform: translateX(36px); }
.spw.has-js[data-reveal] .spw-r.is-in { opacity: 1; transform: none; }

/* ---------- Header ---------- */

.spw-header { padding-block: 0; z-index: 90; }
.spw-header__inner { position: relative; z-index: 90; width: 100%; }
.spw-header.is-stuck .spw-header__inner {
	position: fixed;
	top: var(--spw-sticky-top, 0px);
	left: 0;
	right: 0;
	animation: spw-drop .35s ease both;
}
body.admin-bar .spw-header.is-stuck .spw-header__inner { top: calc(32px + var(--spw-sticky-top, 0px)); }

.spw-header__bar {
	display: flex;
	align-items: center;
	gap: 28px;
	padding-block: 14px;
	background: rgba(255, 255, 255, .8);
	-webkit-backdrop-filter: blur(16px);
	backdrop-filter: blur(16px);
	border-bottom: 1px solid rgba(29, 107, 255, .08);
}
.spw-header.is-stuck .spw-header__bar { box-shadow: 0 14px 34px -22px rgba(10, 26, 68, .45); }

.spw-logo { display: inline-flex; flex-direction: column; line-height: 1.1; color: var(--spw-ink); flex: none; }
.spw-logo__name { font-size: 1.45rem; font-weight: 800; letter-spacing: -.02em; color: var(--spw-ink); }
.spw-logo__name b { color: var(--spw-primary); font-weight: 800; }
.spw-logo__sub { font-size: .72rem; color: var(--spw-muted); margin-top: 3px; }

.spw-nav { display: flex; align-items: center; flex: 1; gap: 24px; }
.spw-menu { display: flex; gap: 34px; margin-inline: auto; }
.spw-menu a {
	position: relative;
	display: inline-block;
	padding-block: 6px;
	font-size: .92rem;
	font-weight: 500;
	color: var(--spw-ink);
	transition: color .2s ease;
}
.spw-menu a::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	height: 2px;
	width: 100%;
	background: var(--spw-primary);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .3s ease;
}
.spw-menu a[aria-current] { color: var(--spw-primary); }
.spw-menu a[aria-current]::after { transform: scaleX(1); }
.spw-header .spw-btn { padding: 12px 22px; font-size: .88rem; }

.spw-burger {
	display: none;
	margin-inline-start: auto;
	width: 44px;
	height: 44px;
	border: 0;
	border-radius: 12px;
	background: var(--spw-soft);
	cursor: pointer;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 5px;
}
.spw-burger span { width: 20px; height: 2px; border-radius: 2px; background: var(--spw-ink); transition: transform .3s ease, opacity .3s ease; }
.spw-header.is-open .spw-burger span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.spw-header.is-open .spw-burger span:nth-child(2) { opacity: 0; }
.spw-header.is-open .spw-burger span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

@keyframes spw-drop { from { opacity: 0; transform: translateY(-14px); } to { opacity: 1; transform: none; } }

/* ---------- Hero ---------- */

.spw-hero { overflow: hidden; }
.spw-hero__grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: 32px; align-items: center; }
.spw-hero__copy { display: flex; flex-direction: column; align-items: flex-start; gap: 22px; max-width: 620px; }

.spw-badge {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 8px 16px;
	border-radius: 999px;
	font-size: .82rem;
	font-weight: 600;
	color: var(--spw-primary);
	background: rgba(29, 107, 255, .09);
	border: 1px solid rgba(29, 107, 255, .16);
}
.spw-badge__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--spw-primary); box-shadow: 0 0 0 0 rgba(29, 107, 255, .5); animation: spw-pulse 2.2s ease-out infinite; }
@keyframes spw-pulse { to { box-shadow: 0 0 0 10px rgba(29, 107, 255, 0); } }

.spw-hero__title { font-size: clamp(2.3rem, 4.8vw, 4rem); font-weight: 800; line-height: 1.08; letter-spacing: -.03em; }
.spw-hero__desc { max-width: 520px; font-size: 1.02rem; }

.spw-hero__stats { display: flex; flex-wrap: wrap; gap: 14px 32px; }
.spw-stat { display: flex; align-items: center; gap: 12px; }
.spw-stat .spw-ico { width: 44px; height: 44px; border-radius: 50%; font-size: 1.05rem; }
.spw-stat strong { display: block; font-size: 1.4rem; font-weight: 800; color: var(--spw-ink); line-height: 1.1; }
.spw-stat__label { font-size: .8rem; }

.spw-hero__actions { display: flex; flex-wrap: wrap; gap: 14px; }

.spw-clients { display: flex; align-items: center; gap: 14px; font-size: .9rem; }
.spw-avatars { display: flex; }
.spw-avatars li { width: 40px; height: 40px; margin-inline-start: -10px; border: 3px solid #fff; border-radius: 50%; overflow: hidden; background: var(--spw-soft); }
.spw-avatars li:first-child { margin-inline-start: 0; }
.spw-avatars img { width: 100%; height: 100%; object-fit: cover; }
.spw-clients strong { color: var(--spw-ink); }

.spw-hero--banner { display: flex; flex-direction: column; justify-content: center; align-items: stretch; gap: 36px; padding-top: 24px; padding-bottom: calc(var(--spw-strip-space, 150px) + 24px); min-height: clamp(560px, calc(41vw + 150px), 1100px); }
/* close the Elementor widget gap between header and hero (adjustable in the widget) */
.elementor-widget-spw-hero { margin-top: -20px; }
.spw-hero--banner .spw-hero__grid { position: relative; z-index: 2; flex: 1 1 auto; }
.spw-hero__trusted { position: absolute; z-index: 2; inset-inline: 30px; bottom: 28px; width: auto; }
.spw-hero__trusted .spw-trusted__strip { padding: 16px 28px 18px; background: #fff; border: 1px solid var(--spw-line); box-shadow: 0 22px 50px -30px rgba(29, 107, 255, .45); }
.spw-hero__trusted .spw-logoitem img { height: 34px; width: auto; max-width: none; filter: none; opacity: 1; transition: transform .25s ease; }
.spw-hero__trusted .spw-logoitem:hover img { transform: translateY(-2px); }
.spw-hero__trusted .spw-trusted__label { margin-bottom: 10px; font-size: .78rem; }
.spw-hero__bg { position: absolute; inset: 0 0 var(--spw-strip-space, 150px) 0; z-index: 0; overflow: hidden; }
/* let floating items drift above the top edge instead of being cut off */
.spw-hero--banner .spw-hero__bg { overflow: visible; clip-path: inset(-120px 0 0 0); }
/* The stage keeps the image's aspect ratio and is anchored right, so floating items are positioned against the picture itself and never drift onto the person. */
.spw-hero__stage { position: absolute; top: 0; left: 0; right: 0; aspect-ratio: 1715 / 917; }
.spw-hero__bgimg { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.spw-hero--banner.has-fade .spw-hero__bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(255, 255, 255, .94) 0%, rgba(255, 255, 255, .72) 34%, rgba(255, 255, 255, 0) 60%); }
.spw-hero__visual.is-overlay { align-self: stretch; min-height: 380px; }
.spw-hero__visual { position: relative; min-height: 460px; display: grid; place-items: end center; }
.spw-hero__glow {
	position: absolute;
	inset: 6% 6% 0;
	border-radius: 50%;
	background: radial-gradient(circle at 50% 40%, rgba(255, 255, 255, .95), rgba(125, 190, 255, .45) 60%, rgba(29, 107, 255, .18));
	border: 2px solid rgba(255, 255, 255, .85);
	box-shadow: inset 0 0 60px rgba(255, 255, 255, .8), 0 40px 80px -40px rgba(29, 107, 255, .6);
}
.spw-hero__img { position: relative; z-index: 2; max-height: 540px; width: auto; object-fit: contain; }

.spw-float {
	position: absolute;
	z-index: 3;
	display: flex;
	align-items: center;
	gap: 10px;
	background: rgba(255, 255, 255, .86);
	border: 1px solid #fff;
	box-shadow: 0 18px 40px -20px rgba(29, 107, 255, .65);
	-webkit-backdrop-filter: blur(12px);
	backdrop-filter: blur(12px);
	animation: spw-float 6s ease-in-out infinite;
	animation-delay: var(--spw-delay, 0s);
	transition: translate .3s ease-out;
}
.spw-float--bubble { width: 58px; height: 58px; border-radius: 18px; justify-content: center; font-size: 1.6rem; color: var(--spw-primary); }
.spw-float--card { padding: 12px 16px; border-radius: 18px; max-width: 190px; }
.spw-float--image { display: block; padding: 0; gap: 0; background: none; border: 0; box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none; filter: drop-shadow(0 18px 22px rgba(29, 107, 255, .28)); pointer-events: none; }
.spw-float--image img { display: block; width: 100%; height: auto; max-width: none; }
/* soft white backing so the text cards stay readable over the busy background */
.spw-float--image:not([aria-hidden="true"])::before { content: ""; position: absolute; inset: 14% 8% 18%; z-index: -1; border-radius: 24px; background: rgba(255, 255, 255, .62); filter: blur(10px); }
.spw-float__ico { font-size: 1.2rem; color: var(--spw-primary); display: grid; place-items: center; }
.spw-float__ico svg { width: 1em; height: 1em; fill: currentColor; }
.spw-float__big { display: block; font-size: 1.05rem; font-weight: 800; color: var(--spw-ink); line-height: 1.2; }
.spw-float__small { display: block; font-size: .72rem; line-height: 1.35; color: var(--spw-muted); }
@keyframes spw-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-12px); } }

/* ---------- Trusted by ---------- */

.spw-trusted__strip { padding: 22px 28px; text-align: center; }
.spw-trusted__label { margin-bottom: 14px; font-size: .85rem; font-weight: 600; color: var(--spw-muted); }
.spw-marquee { --spw-mgap: 56px; overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); }
.spw-marquee__track { display: flex; width: max-content; }
.spw-marquee ul { display: flex; align-items: center; gap: var(--spw-mgap); padding-inline-end: var(--spw-mgap); flex: none; }
.spw-marquee:not(.is-moving) { -webkit-mask-image: none; mask-image: none; }
.spw-marquee:not(.is-moving) .spw-marquee__track { width: 100%; justify-content: center; }
.spw-marquee:not(.is-moving) ul { flex-wrap: wrap; justify-content: center; padding-inline-end: 0; max-width: 100%; row-gap: 14px; }
.spw-marquee.is-moving.is-ready .spw-marquee__track { animation: spw-marq var(--spw-speed, 35s) linear infinite; }
.spw-marquee.is-moving:hover .spw-marquee__track { animation-play-state: paused; }
@keyframes spw-marq { to { transform: translateX(-50%); } }

.spw-logoitem { display: inline-flex; align-items: center; gap: 10px; font-size: 1.1rem; font-weight: 700; color: #6b7a99; white-space: nowrap; transition: color .25s ease; }
.spw-logoitem__ico { font-size: 1.5rem; display: grid; place-items: center; }
.spw-logoitem__ico svg { width: 1em; height: 1em; fill: currentColor; }
.spw-logoitem img { height: 32px; width: auto; filter: grayscale(1); opacity: .75; transition: filter .25s ease, opacity .25s ease; }
.spw-logoitem:hover img { filter: none; opacity: 1; }

/* ---------- Services ---------- */

.spw-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--spw-gap); }
/* section background wave + glass cards */
.spw-services { overflow: hidden; isolation: isolate; }
.spw-services__bg { position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.spw-services__bgimg { display: block; width: 100%; height: 100%; max-width: none; object-fit: cover; object-position: center bottom; }
.spw-services .spw-wrap { position: relative; z-index: 1; }
.spw-services .spw-eyebrow { letter-spacing: .14em; text-transform: uppercase; font-size: .72rem; font-weight: 700; }
.spw-services .spw-grid { margin-top: 8px; }
.spw-service { display: flex; flex-direction: column; gap: 14px; padding: 26px 24px 84px; min-height: 100%; border-radius: 26px; background: rgba(255, 255, 255, .62); border: 1px solid rgba(255, 255, 255, .95); box-shadow: 0 30px 60px -34px rgba(29, 107, 255, .5), inset 0 1px 0 rgba(255, 255, 255, .9); -webkit-backdrop-filter: blur(18px) saturate(1.3); backdrop-filter: blur(18px) saturate(1.3); }
.spw-service .spw-ico { width: 56px; height: 56px; border-radius: 50%; font-size: 1.5rem; border: 2px solid rgba(255, 255, 255, .85); box-shadow: 0 14px 26px -12px var(--spw-primary), inset 0 2px 6px rgba(255, 255, 255, .55); }
.spw-service__title { font-size: 1.12rem; font-weight: 800; line-height: 1.3; color: var(--spw-ink); }
.spw-check { display: grid; gap: 9px; font-size: .9rem; }
.spw-service .spw-arrow { position: absolute; inset-inline-end: 22px; bottom: 22px; }

/* ---------- About ---------- */

.spw-about__grid { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 56px; align-items: center; }
.spw-about--rev .spw-about__media { order: 2; }
.spw-about__media { position: relative; }
.spw-about__frame { position: relative; border-radius: 28px; background: linear-gradient(160deg, #fff, var(--spw-soft)); border: 1px solid #fff; box-shadow: var(--spw-shadow); overflow: hidden; }
.spw-about__img { width: 100%; object-fit: cover; }
.spw-about__years {
	position: absolute;
	top: 6%;
	inset-inline-end: -4%;
	width: 116px;
	height: 116px;
	border-radius: 50%;
	display: grid;
	place-content: center;
	text-align: center;
	line-height: 1.15;
	color: #fff;
	background: linear-gradient(135deg, var(--spw-primary), var(--spw-primary-2));
	box-shadow: 0 22px 40px -18px var(--spw-primary);
	animation: spw-float 7s ease-in-out infinite;
}
.spw-about__years strong { font-size: 1.9rem; font-weight: 800; }
.spw-about__years span { font-size: .72rem; max-width: 80px; }
.spw-about__mini { position: absolute; inset-inline-start: -4%; bottom: 8%; display: flex; align-items: center; gap: 12px; padding: 12px 18px; border-radius: 18px; }
.spw-about__mini strong { display: block; font-size: 1.1rem; font-weight: 800; color: var(--spw-ink); line-height: 1.1; }
.spw-about__mini span { font-size: .78rem; }
.spw-about__mini .spw-ico { width: 42px; height: 42px; border-radius: 12px; }

.spw-about__copy { display: flex; flex-direction: column; gap: 22px; }
.spw-about__copy .spw-head { margin-bottom: 0; }
.spw-about__list { display: grid; gap: 12px; color: var(--spw-ink); font-weight: 500; }
.spw-about__script {
	align-self: flex-end;
	font-family: var(--spw-font-script);
	font-size: 1.7rem;
	line-height: 1.15;
	max-width: 240px;
	text-align: center;
	color: var(--spw-primary);
	rotate: -5deg;
}

.spw-about__stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; margin-top: 48px; }
.spw-about__stat { display: flex; align-items: center; gap: 14px; padding: 18px 20px; border-radius: 18px; }
.spw-about__stat .spw-ico { width: 46px; height: 46px; border-radius: 14px; }
.spw-about__stat strong { display: block; font-size: 1.4rem; font-weight: 800; color: var(--spw-ink); line-height: 1.1; }
.spw-about__stat .spw-stat__label { font-size: .8rem; }

/* ---------- Slider ---------- */

.spw-slider { position: relative; }
.spw-track {
	display: flex;
	gap: var(--spw-gap);
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	scrollbar-width: none;
	padding: 14px 4px 34px;
	margin: -14px -4px -34px;
	cursor: grab;
	align-items: stretch;
}
.spw-track::-webkit-scrollbar { display: none; }
.spw-track.is-drag { scroll-snap-type: none; scroll-behavior: auto; cursor: grabbing; user-select: none; }
.spw-slide {
	flex: 0 0 calc((100% - (var(--spw-spv) - 1) * var(--spw-gap)) / var(--spw-spv));
	min-width: 0;
	scroll-snap-align: start;
}
.spw-track > .spw-slide { align-self: stretch; height: auto; }
.spw-slide[hidden] { display: none !important; }

.spw-navbtn {
	position: absolute;
	top: 42%;
	z-index: 5;
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	border: 1px solid #fff;
	border-radius: 50%;
	color: var(--spw-primary);
	background: rgba(255, 255, 255, .95);
	box-shadow: 0 14px 28px -14px rgba(29, 107, 255, .7);
	cursor: pointer;
	transition: opacity .2s ease, scale .2s ease;
}
.spw-navbtn:hover, .spw-navbtn:focus-visible { scale: 1.08; }
.spw .spw-navbtn:focus-visible { outline: 2px solid var(--spw-primary); outline-offset: 2px; }
.spw-navbtn[disabled] { opacity: .35; pointer-events: none; }
/* arrows sit fully outside the cards (44px button + 20px gap) */
.spw-prev { inset-inline-start: -64px; }
.spw-next { inset-inline-end: -64px; }
/* not enough side room on smaller screens: pull them back to the card edge */
@media (max-width: 1280px) {
	.spw-prev { inset-inline-start: -22px; }
	.spw-next { inset-inline-end: -22px; }
}

.spw-dots { display: flex; justify-content: center; gap: 8px; margin-top: 44px; }
.spw-dots button { width: 8px; height: 8px; padding: 0; border: 0; border-radius: 8px; background: rgba(29, 107, 255, .22); cursor: pointer; transition: width .3s ease, background .3s ease; }
.spw-dots button.is-active { width: 26px; background: var(--spw-primary); }

/* ---------- Projects ---------- */

.spw-filters { display: flex; flex-wrap: wrap; gap: 8px; }
.spw-filter { padding: 9px 18px; border: 1px solid rgba(29, 107, 255, .14); border-radius: 999px; font: inherit; font-size: .85rem; font-weight: 600; color: var(--spw-muted); background: rgba(255, 255, 255, .8); cursor: pointer; transition: color .2s ease, background .2s ease; }
.spw-filter.is-active { color: #fff; background: var(--spw-primary); border-color: var(--spw-primary); }

.spw-project { display: flex; flex-direction: column; overflow: hidden; padding: 0; }
@media (min-width: 1025px) { .spw-project { height: 470px; } }
.spw-project { align-self: stretch; }
.spw-project__shot { position: relative; height: 230px; background: var(--spw-soft); overflow: hidden; }
.spw-project__shot img { width: 100%; height: 100%; object-fit: cover; object-position: top; transition: scale .6s ease; }
.spw-project:hover .spw-project__shot img { scale: 1.05; }
.spw-project__dots { position: absolute; top: 10px; inset-inline-start: 12px; z-index: 2; display: flex; gap: 5px; }
.spw-project__dots i { width: 7px; height: 7px; border-radius: 50%; background: rgba(255, 255, 255, .9); box-shadow: 0 0 0 1px rgba(10, 26, 68, .12); }
.spw-project__body { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 18px 20px 20px; }
.spw-project__title { font-size: 1rem; font-weight: 700; }
.spw-project__tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.spw-project__tags li { padding: 3px 10px; border-radius: 8px; font-size: .72rem; font-weight: 500; color: var(--spw-primary); background: rgba(29, 107, 255, .08); }

/* ---------- Testimonials ---------- */

.spw-review { display: flex; flex-direction: column; gap: 16px; padding: 24px; height: auto; align-self: stretch; }
.spw-review__top { display: flex; align-items: center; justify-content: space-between; }
.spw-review__q { font-size: 1.5rem; color: rgba(29, 107, 255, .35); }
.spw-review__q svg { width: 1em; height: 1em; fill: currentColor; }
.spw-review__project { margin: -4px 0 -6px; font-size: .92rem; font-weight: 700; line-height: 1.35; color: var(--spw-ink); }
.spw-review blockquote { font-size: .95rem; color: var(--spw-ink); }
.spw-review__who { display: flex; align-items: center; gap: 12px; margin-top: auto; }
.spw-review__avatar { width: 46px; height: 46px; border-radius: 50%; object-fit: cover; }
.spw-review__name { display: block; font-size: .95rem; color: var(--spw-ink); }
.spw-review__country { font-size: .8rem; }

.spw-stars { display: inline-flex; gap: 3px; color: #ffb400; }
.spw-stars i {
	display: block;
	width: 16px;
	height: 16px;
	background: linear-gradient(90deg, currentColor var(--spw-fill, 100%), #d5def0 var(--spw-fill, 100%));
	clip-path: polygon(50% 0, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);
}

/* ---------- Technologies ---------- */

.spw-tech__grid { display: grid; grid-template-columns: repeat(10, minmax(0, 1fr)); gap: 16px; }
.spw-tech__item { display: flex; flex-direction: column; align-items: center; gap: 10px; text-align: center; padding: 8px 4px; }
.spw-tech__ico { display: grid; place-items: center; width: 64px; height: 64px; border-radius: 18px; font-size: 1.9rem; color: var(--spw-primary); background: #fff; box-shadow: 0 16px 30px -18px rgba(29, 107, 255, .6); transition: translate .3s ease; }
.spw-tech__ico svg { width: 1em; height: 1em; fill: currentColor; }
.spw-tech__ico img { width: 34px; height: 34px; object-fit: contain; }
.spw-tech__item:hover .spw-tech__ico { translate: 0 -6px; }
.spw-tech__label { font-size: .8rem; font-weight: 600; color: var(--spw-ink); }

/* ---------- Process ---------- */

.spw-steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 28px; }
.spw-step { display: flex; flex-direction: column; gap: 10px; }
.spw-step__top { display: flex; align-items: center; gap: 12px; margin-bottom: 8px; }
.spw-step__num { display: grid; place-items: center; flex: none; width: 36px; height: 36px; border-radius: 50%; font-size: .8rem; font-weight: 700; color: #fff; background: var(--spw-primary); }
.spw-step__line { position: relative; flex: 1; height: 2px; background: rgba(29, 107, 255, .14); overflow: hidden; border-radius: 2px; }
.spw-step__line::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, var(--spw-primary), var(--spw-primary-2)); transform-origin: left; transition: transform 1.1s ease .3s; }
.spw.has-js:not(.is-in) .spw-step__line::after { transform: scaleX(0); }
.spw-step:last-child .spw-step__line { visibility: hidden; }
.spw-step .spw-ico { width: 48px; height: 48px; border-radius: 14px; background: #fff; color: var(--spw-primary); box-shadow: 0 14px 26px -16px var(--spw-primary); }
.spw-step__title { font-size: 1.05rem; font-weight: 700; }
.spw-step__text { font-size: .9rem; }

/* ---------- CTA ---------- */

.spw-cta__box {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
	gap: 0;
	align-items: center;
	min-height: 300px;
	padding: 44px 0 44px 48px;
	overflow: hidden;
	border-radius: 22px;
	background:
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='520' height='320' viewBox='0 0 520 320' fill='none' stroke='%23fff' stroke-opacity='.16'%3E%3Cpath d='M-20 260C80 200 140 300 260 240S420 200 540 250'/%3E%3Cpath d='M-20 220C80 160 140 260 260 200S420 160 540 210'/%3E%3Cpath d='M-20 180C80 120 140 220 260 160S420 120 540 170'/%3E%3C/svg%3E") left bottom / 520px 320px no-repeat,
		linear-gradient(100deg, #1f6bff 0%, #1d87ff 55%, #29a6ff 100%);
	box-shadow: 0 34px 70px -38px var(--spw-primary);
}
.spw-cta__box::before { content: ""; position: absolute; inset: -40% auto auto -10%; width: 420px; height: 420px; border-radius: 50%; background: radial-gradient(circle, rgba(255, 255, 255, .22), transparent 70%); pointer-events: none; }
.spw-cta__copy { position: relative; z-index: 2; display: flex; flex-direction: column; align-items: flex-start; gap: 12px; max-width: 460px; }
.spw-cta .spw-eyebrow { color: #fff; font-size: .72rem; letter-spacing: .12em; }
.spw-cta .spw-title { color: #fff; font-size: clamp(1.7rem, 3vw, 2.35rem); font-weight: 800; line-height: 1.12; }
.spw-cta .spw-title .spw-hl { color: #fff; display: block; }
.spw-cta .spw-desc { color: rgba(255, 255, 255, .92); font-size: .95rem; line-height: 1.5; }
.spw-cta__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 10px; }
.spw-cta .spw-btn { padding: 12px 24px; font-size: .9rem; font-weight: 700; border-radius: 10px; }
.spw-cta .spw-btn--light { box-shadow: 0 10px 24px -14px rgba(10, 26, 68, .6); }
.spw-cta .spw-btn--outline { border: 1.5px solid rgba(255, 255, 255, .85); background: rgba(255, 255, 255, .06); }
.spw-cta__visual { position: relative; align-self: stretch; display: flex; align-items: center; justify-content: flex-end; min-height: 240px; }
.spw-cta__img {
	display: block;
	width: 100%;
	height: 100%;
	min-height: 260px;
	max-height: 360px;
	object-fit: cover;
	object-position: 40% 55%;
	border-radius: 0;
	box-shadow: none;
	-webkit-mask-image: radial-gradient(ellipse 70% 78% at 52% 52%, #000 52%, transparent 100%);
	mask-image: radial-gradient(ellipse 70% 78% at 52% 52%, #000 52%, transparent 100%);
}
.spw-cta__ticks {
	position: absolute;
	inset-inline-end: 28px;
	top: 50%;
	translate: 0 -50%;
	z-index: 3;
	display: grid;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
	font-family: var(--spw-font-script);
	font-size: 1.35rem;
	line-height: 1.1;
	color: #fff;
	rotate: -5deg;
	text-shadow: 0 2px 10px rgba(10, 40, 120, .45);
}
.spw-cta__ticks li { display: flex; align-items: center; gap: 8px; }
.spw-cta__ticks li:nth-child(2) { margin-inline-start: 6px; }
.spw-cta__ticks li:nth-child(3) { margin-inline-start: 14px; }
.spw-cta__ticks svg { flex: none; width: 1.2em; height: 1.2em; }

/* ---------- Footer ---------- */

.spw-footer__box {
	padding: 48px 40px 22px;
	border-radius: 30px;
	background: rgba(255, 255, 255, .72);
	border: 1px solid #fff;
	box-shadow: var(--spw-shadow);
	-webkit-backdrop-filter: blur(14px);
	backdrop-filter: blur(14px);
}
.spw-footer__grid { display: grid; grid-template-columns: 1.5fr 1fr 1.2fr; gap: 36px; }
.spw-footer__brand { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; }
.spw-footer__about { max-width: 300px; font-size: .9rem; }
.spw-footer__coltitle { margin-bottom: 18px; font-size: 1rem; font-weight: 700; }
.spw-footer__list { display: grid; gap: 11px; font-size: .9rem; }
.spw-footer__list a { color: var(--spw-muted); transition: color .2s ease; }
.spw-footer__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px 24px; margin-top: 36px; padding-top: 18px; border-top: 1px solid var(--spw-line); font-size: .82rem; }
.spw-footer__bottom ul { display: flex; gap: 22px; }
.spw-footer__bottom a { color: inherit; }

/* ---------- Responsive ---------- */

@media (max-width: 1100px) {
	.spw-footer__grid { grid-template-columns: 1fr 1fr; }
	.spw-tech__grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}

@media (max-width: 1024px) {
	/* Tablet: section padding 80px top/bottom, 30px left/right */
	.spw { padding: 80px 30px; }
	.spw-header { padding-block: 0; }
	.spw-hero--banner { min-height: 0; }
	.spw-hero--banner .spw-hero__bg { position: relative; inset: auto; order: 2; margin: 32px -30px -80px; width: calc(100% + 60px); }
	.spw-hero--banner .spw-hero__bgimg { height: auto; object-position: center; }
	.spw-hero--banner.has-fade .spw-hero__bg::after { display: none; }
	.spw-hero__visual.is-overlay { min-height: 0; }
	.spw-hero__trusted { order: 3; position: relative; inset-inline: auto; bottom: auto; width: 100%; }
	.spw-hero--banner .spw-hero__stage { position: relative; inset: auto; aspect-ratio: auto; }
	.spw-hero--banner .spw-hero__bgimg { height: auto; }
	/* floating items stay visible on every device: they are positioned in % of the image stage, so they scale with the picture */
	.spw-hero--banner .spw-hero__bg { overflow: visible; }
	.spw-hero--banner .spw-float { display: block; }
	.spw-hero__trusted .spw-marquee { --spw-mgap: 28px; }
	.spw-hero__trusted .spw-logoitem { font-size: .95rem; }
	.spw-hero__trusted .spw-logoitem img { height: 26px; }

	.spw-hero__grid,
	.spw-about__grid,
	.spw-cta__box { grid-template-columns: 1fr; }
	.spw-about--rev .spw-about__media { order: 0; }
	.spw-hero__visual { min-height: 400px; }
	.spw-about__stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.spw-cta__box { padding: 34px 24px 0; }
	.spw-cta__visual { min-height: 220px; margin-top: 8px; }
	.spw-cta__ticks { inset-inline-end: 12px; font-size: 1.1rem; }
	.spw-prev { inset-inline-start: -8px; }
	.spw-next { inset-inline-end: -8px; }

	.spw-burger { display: flex; }
	.spw-header__bar { position: relative; flex-wrap: wrap; }
	.spw-nav.is-panel {
		display: none;
		position: absolute;
		top: 100%;
		inset-inline: 12px;
		flex-direction: column;
		align-items: stretch;
		gap: 18px;
		padding: 22px;
		border-radius: 20px;
		background: #fff;
		box-shadow: 0 30px 60px -30px rgba(10, 26, 68, .5);
	}
	.spw-header.is-open .spw-nav.is-panel { display: flex; }
	.spw-menu { flex-direction: column; gap: 6px; margin: 0; }
	.spw-menu a { display: block; padding-block: 10px; }
	.spw-header__cta .spw-btn { width: 100%; }
}

@media (max-width: 767px) {
	/* Mobile: section padding 60px top/bottom, 15px left/right */
	.spw { padding: 60px 15px; }
	.spw-hero--banner .spw-hero__bg { margin: 28px -15px -60px; width: calc(100% + 30px); }
	.spw-header { padding-block: 0; }

	.spw-footer__grid { grid-template-columns: 1fr; }
	.spw-footer__box { padding: 34px 22px 18px; }
	.spw-steps { gap: 22px; }
	.spw-float--card { max-width: 150px; }
	/* small screens: enlarge the floating items a little so they stay readable (scale keeps their anchor point) */
	.spw-hero--banner .spw-float--image { scale: 1.35; }
	.spw-hero--banner .spw-float--image:not([aria-hidden="true"]) { scale: 1.15; transform-origin: right center; }
	.spw-hero__stats { gap: 14px 22px; }
	.spw-service { padding-bottom: 76px; }
}

@media (max-width: 480px) {
	.spw-hero--banner .spw-float--image { scale: 1.6; }
	.spw-hero--banner .spw-float--image:not([aria-hidden="true"]) { scale: 1.3; }
}

/* ---------- Reduced motion ---------- */

@media (prefers-reduced-motion: reduce) {
	.spw *,
	.spw *::before,
	.spw *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}


/* ======================================================================
   Design match pass (reference page): glass waves, white cards, flat footer
   ====================================================================== */

/* blue glass wave behind a section (switch in Style > Colors & Spacing) */
.spw-has-wave { overflow: hidden; isolation: isolate; }
/* background image added per section in Elementor (Style > Colors & Spacing); it drifts with scroll (--spw-py) and mouse (--spw-mx / --spw-my) */
.spw-has-wave::before { content: ""; position: absolute; inset: -90px -50px; z-index: -1; pointer-events: none; background-repeat: no-repeat; background-position: center center; background-size: cover; transform: translate3d(calc(var(--spw-mx, 0) * 1px), calc(var(--spw-py, 0) * 1px + var(--spw-my, 0) * 1px), 0); will-change: transform; }
.spw-has-wave.spw-bgfx-off::before { inset: 0; transform: none; will-change: auto; }
@media (prefers-reduced-motion: reduce) { .spw-has-wave::before { transform: none; } }
.spw-has-wave .spw-wrap { position: relative; z-index: 1; }

/* hero: outline feature icons instead of filled circles */
.spw-hero .spw-stat .spw-ico { width: auto; height: auto; background: none; box-shadow: none; color: var(--spw-primary); font-size: 1.9rem; border-radius: 0; }
.spw-hero .spw-stat strong { font-size: .95rem; line-height: 1.25; }
.spw-hero .spw-stat__label { font-size: .8rem; }
.spw-hero__trusted .spw-trusted__strip { border-radius: 22px; border-color: rgba(255, 255, 255, .95); }

/* services: whiter cards, bare icons, description text */
.spw-service { background: rgba(255, 255, 255, .9); border-radius: 22px; }
.spw-service .spw-ico { width: 56px; height: 56px; border-radius: 16px; border: 0; background: transparent; color: var(--spw-primary); box-shadow: none; font-size: 2.6rem; }
.spw-service__desc { font-size: .88rem; line-height: 1.55; margin-top: -6px; }

/* about: crisp white stat cards */
.spw-about__stat { background: rgba(255, 255, 255, .92); border: 1px solid #fff; box-shadow: 0 18px 40px -26px rgba(29, 107, 255, .45); }
.spw-about__stat .spw-ico { background: transparent; color: var(--spw-primary); box-shadow: none; font-size: 1.9rem; width: 48px; height: 48px; }

/* projects: white cards, quiet tags */
.spw-project { border-radius: 20px; background: rgba(255, 255, 255, .92); }
.spw-project__shot { margin: 10px 10px 0; height: 210px; flex: 1 0 auto; border-radius: 14px; }
.spw-project__tags li { color: var(--spw-muted); background: transparent; padding: 0 8px 0 0; border-radius: 0; font-size: .74rem; }
.spw-project__tags li + li { padding-inline-start: 8px; border-inline-start: 1px solid rgba(10, 26, 68, .16); }
.spw-filter { padding: 7px 16px; font-size: .82rem; }

/* testimonials: short accent line above the label, white cards */
.spw-testimonials .spw-eyebrow::before { content: ""; display: block; width: 44px; height: 3px; margin: 0 auto 10px; border-radius: 3px; background: var(--spw-primary); }
.spw-review { background: rgba(255, 255, 255, .94); border-radius: 18px; }

/* technologies: logos stand on their own, no tile */
.spw-tech__ico { width: 56px; height: 56px; border-radius: 0; background: none; box-shadow: none; }
.spw-tech__ico img { width: 48px; height: 48px; }

/* process: pill label, numbered circle + soft icon circle, dashed connector with arrow head */
.spw-process .spw-eyebrow { align-self: center; width: fit-content; padding: 5px 16px; border: 1px solid var(--spw-line); border-radius: 999px; background: rgba(255, 255, 255, .8); font-size: .7rem; letter-spacing: .12em; }
.spw-process .spw-title { font-size: clamp(1.4rem, 2.4vw, 1.85rem); font-weight: 800; }
.spw-step__top { gap: 10px; margin-bottom: 14px; }
.spw-step__num { width: 28px; height: 28px; font-size: .8rem; font-weight: 700; }
.spw-step .spw-ico { width: 48px; height: 48px; border-radius: 50%; background: rgba(29, 107, 255, .08); box-shadow: none; color: var(--spw-primary); font-size: 1.25rem; }
.spw-step__line { height: 0; margin-inline-end: 6px; border-top: 1.5px dashed rgba(29, 107, 255, .45); background: none; overflow: visible; border-radius: 0; }
.spw-step__line::after { inset: auto -2px auto auto; top: -5px; width: 8px; height: 8px; border: 0; border-top: 1.5px solid var(--spw-primary); border-right: 1.5px solid var(--spw-primary); background: none; transform: rotate(45deg); }
.spw.has-js:not(.is-in) .spw-step__line::after { transform: rotate(45deg); }
.spw-step__title { font-size: .82rem; font-weight: 800; letter-spacing: .02em; text-transform: uppercase; color: var(--spw-ink); }
.spw-step__text { font-size: .88rem; line-height: 1.5; color: var(--spw-ink); opacity: .8; max-width: 22ch; }


/* footer: flat on the page, no glass box */
.spw-footer__box { padding: 28px 0 6px; border: 0; border-radius: 0; background: none; box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none; }
.spw-footer__bottom { border-top: 1px solid var(--spw-line); }

/* about: image already carries its own badges, so show it bare (no frame) */
.spw-about--bare .spw-about__frame { background: none; border: 0; box-shadow: none; border-radius: 0; overflow: visible; }
.spw-about--bare .spw-about__img { display: block; width: 100%; height: auto; }

/* about: handwritten note sits right under the checklist, stats row moves up under the picture */
.spw-about__script { align-self: flex-start; max-width: none; text-align: start; font-size: 1.65rem; rotate: -2deg; margin-top: 2px; }
.spw-about--bare .spw-about__frame { margin-bottom: -12%; }
.spw-about--bare .spw-about__stats { margin-top: 24px; position: relative; z-index: 2; }
@media (max-width: 1024px) {
	.spw-about--bare .spw-about__frame { margin-bottom: -8%; }
	.spw-about__script { font-size: 1.45rem; }
}

/* about: match the reference (note + arrow beside the list, compact stats row, picture blended into the page) */
.spw-about__grid { gap: 40px; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.spw-about__listrow { display: flex; align-items: center; justify-content: space-between; gap: 18px; }
.spw-about__note { display: flex; align-items: center; gap: 6px; flex: none; color: var(--spw-primary); }
.spw-about__arrow { width: 56px; height: auto; flex: none; rotate: 8deg; }
.spw-about__script { align-self: auto; max-width: 170px; margin: 0; text-align: center; font-size: 1.5rem; line-height: 1.1; rotate: -8deg; }
.spw-about__list { gap: 10px; font-size: .95rem; }
.spw-about--bare .spw-about__img { -webkit-mask-image: linear-gradient(to right, transparent 0, #000 4%, #000 96%, transparent 100%), linear-gradient(to bottom, transparent 0, #000 5%, #000 84%, transparent 100%); -webkit-mask-composite: source-in; mask-image: linear-gradient(to right, transparent 0, #000 4%, #000 96%, transparent 100%), linear-gradient(to bottom, transparent 0, #000 5%, #000 84%, transparent 100%); mask-composite: intersect; }
.spw-about--bare .spw-about__frame { margin-bottom: -10%; }
.spw-about--bare .spw-about__stats { margin-top: 12px; }
.spw-about__stats { gap: 18px; align-items: stretch; }
.spw-about__stat { padding: 14px 20px; border-radius: 16px; }
.spw-about__stat strong { font-size: 1.25rem; }
@media (max-width: 767px) {
	.spw-about__listrow { flex-direction: column; align-items: flex-start; }
	.spw-about__script { max-width: none; rotate: -3deg; text-align: start; }
	.spw-about__arrow { display: none; }
}

/* ---------- Shape dividers (top / bottom of every section) ---------- */
.spw-shape { position: absolute; left: 0; right: 0; z-index: 2; height: 70px; line-height: 0; overflow: hidden; pointer-events: none; }
.spw-shape svg { display: block; width: 100%; height: 100%; }
.spw-shape path { fill: var(--spw-shape-color, #fff); }
.spw-shape--bottom { bottom: -1px; transform: scaleX(var(--spw-flip, 1)); }
.spw-shape--top { top: -1px; transform: rotate(180deg) scaleX(var(--spw-flip, 1)); }
@media (max-width: 767px) { .spw-shape { height: 44px; } }


/* ======================================================================
   Typography (Cormorant Garamond headings, Jost body)
   ====================================================================== */

.spw button,
.spw input,
.spw textarea,
.spw select { font-family: inherit; }

.spw :where(h1, h2, h3, h4, h5, h6, .spw-title, .spw-service__title, .spw-step__title, .spw-footer__coltitle, .spw-logo__name, .spw-about__stat strong, .spw-hero__stat strong, .spw-hero .spw-stat strong) {
	font-family: var(--spw-font-heading);
	letter-spacing: 0;
}
.spw :where(h1, h2, h3, .spw-title) { font-weight: 700; }
.spw .spw-title { line-height: 1.08; }
.spw .spw-service__title,
.spw .spw-step__title,
.spw .spw-footer__coltitle { font-size: 1.3rem; font-weight: 700; text-transform: none; letter-spacing: 0; }
.spw .spw-eyebrow { font-family: var(--spw-font-body); }

/* ======================================================================
   No hover colour changes anywhere + theme button reset
   (themes paint every <button> pink/red on hover, focus and tap)
   ====================================================================== */

.spw .spw-burger,
.spw .spw-burger:hover,
.spw .spw-burger:focus,
.spw .spw-burger:active { color: var(--spw-ink); background: var(--spw-soft); border: 0; box-shadow: none; outline: 0; }
.spw .spw-burger:focus-visible { outline: 2px solid var(--spw-primary); outline-offset: 2px; }
.spw .spw-burger span,
.spw .spw-burger:hover span,
.spw .spw-burger:focus span { background: var(--spw-ink); }

.spw .spw-navbtn,
.spw .spw-navbtn:hover,
.spw .spw-navbtn:focus,
.spw .spw-navbtn:active { color: var(--spw-primary); background: rgba(255, 255, 255, .95); border-color: #fff; box-shadow: 0 14px 28px -14px rgba(29, 107, 255, .7); }

.spw .spw-filter,
.spw .spw-filter:hover,
.spw .spw-filter:focus,
.spw .spw-filter:active { color: var(--spw-muted); background: rgba(255, 255, 255, .8); border-color: rgba(29, 107, 255, .14); box-shadow: none; }
.spw .spw-filter.is-active,
.spw .spw-filter.is-active:hover,
.spw .spw-filter.is-active:focus { color: #fff; background: var(--spw-primary); border-color: var(--spw-primary); }

.spw .spw-dots button,
.spw .spw-dots button:hover,
.spw .spw-dots button:focus,
.spw .spw-dots button:active { background: rgba(29, 107, 255, .22); box-shadow: none; }
.spw .spw-dots button.is-active,
.spw .spw-dots button.is-active:hover { background: var(--spw-primary); }

.spw .spw-btn--primary:hover, .spw .spw-btn--primary:focus { color: #fff; background: linear-gradient(135deg, var(--spw-primary), var(--spw-primary-2)); }
.spw .spw-btn--ghost:hover, .spw .spw-btn--ghost:focus { color: var(--spw-primary); background: #fff; border-color: rgba(29, 107, 255, .25); }
.spw .spw-btn--light:hover, .spw .spw-btn--light:focus { color: var(--spw-primary); background: #fff; }
.spw .spw-btn--outline:hover, .spw .spw-btn--outline:focus { color: #fff; background: transparent; border-color: rgba(255, 255, 255, .75); }
.spw a:hover { text-decoration: none; }
.spw .spw-more:hover { text-decoration: none; }

/* ======================================================================
   Responsive fixes (kept last so the earlier "design match" rules can't
   undo the tablet / mobile layout)
   ====================================================================== */

.spw { overflow-x: clip; }

@media (max-width: 1024px) {
	/* about: text on top, picture underneath */
	.spw-about__grid { grid-template-columns: minmax(0, 1fr); gap: 28px; }
	.spw-about__copy { order: 1; }
	.spw-about__media,
	.spw-about--rev .spw-about__media { order: 2; }
	.spw-about--bare .spw-about__frame { margin-bottom: 0; }
	.spw-about--bare .spw-about__stats { margin-top: 8px; }
	.spw-about__media { max-width: 640px; margin-inline: auto; width: 100%; }
	.spw-about__stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.spw-about__listrow { flex-direction: row; align-items: center; }
	.spw-about__list li { max-width: none; }
	.spw-hero__copy { max-width: none; }
	.spw-title { text-wrap: balance; }
	.spw-desc { max-width: none; }
}

@media (max-width: 767px) {
	.spw-about__listrow { flex-direction: column; align-items: flex-start; }
	.spw-about__note { align-self: flex-start; }
	.spw-hero__actions .spw-btn,
	.spw-cta__actions .spw-btn { flex: 1 1 100%; }
	.spw-footer__bottom { flex-direction: column; align-items: flex-start; }
	.spw-footer__bottom ul { flex-wrap: wrap; gap: 8px 18px; }
	.spw-head { margin-bottom: 28px; }
	.spw-title { font-size: clamp(1.9rem, 8vw, 2.3rem); }

	/* cta: picture under the copy, checklist underneath it instead of on top of it */
	.spw-cta__box { padding: 32px 22px 26px; text-align: start; }
	.spw-cta__visual { flex-direction: column; align-items: stretch; min-height: 0; }
	.spw-cta__img { min-height: 0; max-height: 280px; }
	.spw-cta__ticks { position: static; translate: none; rotate: 0deg; display: flex; flex-wrap: wrap; gap: 6px 18px; margin-top: 4px; font-size: 1.25rem; }
	.spw-cta__ticks li:nth-child(n) { margin-inline-start: 0; }
}

@media (max-width: 480px) {
	.spw-about__stats { grid-template-columns: minmax(0, 1fr); }
	.spw-hero__stats { gap: 12px 18px; }
	.spw-testimonials .spw-review { padding-inline: 18px; }
}


/* ======================================================================
   Logo + larger headings and counters (Cormorant Garamond runs small, so
   everything is a step bigger than the old sans-serif sizes)
   ====================================================================== */

.spw-logo img { display: block; width: 210px; max-width: 100%; height: auto; }
.spw-footer .spw-logo img { width: 220px; }
@media (max-width: 1024px) { .spw-logo img { width: 180px; } }
@media (max-width: 767px) { .spw-logo img { width: 150px; } }

.spw .spw-hero__title { font-size: clamp(2.8rem, 6vw, 5rem); font-weight: 700; line-height: 1.02; letter-spacing: -.01em; }
.spw .spw-title { font-size: clamp(2.3rem, 4.6vw, 3.5rem); line-height: 1.05; }
.spw-process .spw-title { font-size: clamp(2.1rem, 4vw, 3rem); font-weight: 700; }
.spw-cta .spw-title { font-size: clamp(2.2rem, 4vw, 3.1rem); font-weight: 700; line-height: 1.05; }

.spw .spw-service__title { font-size: 1.6rem; line-height: 1.15; }
.spw .spw-step__title { font-size: 1.45rem; line-height: 1.15; }
.spw .spw-project__title { font-size: 1.5rem; line-height: 1.15; }
.spw .spw-footer__coltitle { font-size: 1.6rem; }
.spw .spw-review__project { font-size: 1.2rem; line-height: 1.2; }
.spw .spw-review__name { font-size: 1.3rem; font-weight: 700; }

/* counters */
.spw .spw-about__stat strong { font-size: 2.3rem; font-weight: 700; line-height: 1; }
.spw .spw-about__stat .spw-stat__label,
.spw .spw-hero .spw-stat__label { font-size: .92rem; }
.spw .spw-hero .spw-stat strong { font-size: 1.5rem; font-weight: 700; line-height: 1.1; }
.spw .spw-about__years strong { font-size: 2.8rem; font-weight: 700; }
.spw .spw-about__mini strong { font-size: 1.7rem; font-weight: 700; }

@media (max-width: 767px) {
	.spw .spw-hero__title { font-size: clamp(2.5rem, 11vw, 3.3rem); }
	.spw .spw-title,
	.spw-process .spw-title,
	.spw-cta .spw-title { font-size: clamp(2.1rem, 9.5vw, 2.7rem); }
	.spw .spw-about__stat strong { font-size: 2rem; }
}


/* ======================================================================
   Sticky header: frosted, see-through gradient while scrolling
   ====================================================================== */

.spw-header {
	--spw-stuck-1: rgba(255, 255, 255, .72);
	--spw-stuck-2: rgba(150, 200, 255, .52);
	--spw-stuck-blur: 18px;
}
.spw-header__inner { transition: background .35s ease, box-shadow .35s ease, backdrop-filter .35s ease; }
.spw-header.is-stuck .spw-header__inner {
	background: linear-gradient(100deg, var(--spw-stuck-1) 0%, var(--spw-stuck-2) 100%);
	-webkit-backdrop-filter: blur(var(--spw-stuck-blur)) saturate(1.5);
	backdrop-filter: blur(var(--spw-stuck-blur)) saturate(1.5);
	border-bottom: 1px solid rgba(255, 255, 255, .55);
	box-shadow: 0 16px 40px -24px rgba(29, 107, 255, .55), inset 0 -1px 0 rgba(29, 107, 255, .12);
	padding-inline: 30px;
}
.spw-header.is-stuck .spw-header__bar {
	background: transparent;
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
	border-bottom: 0;
	box-shadow: none;
	padding-block: 10px;
}
@media (max-width: 767px) { .spw-header.is-stuck .spw-header__inner { padding-inline: 15px; } }


/* ======================================================================
   Smooth scrolling
   ====================================================================== */

html:has(.spw-header[data-smooth]) { scroll-behavior: smooth; }
/* once the script drives the scrolling, the browser must not add its own easing on top */
html.spw-smooth-js { scroll-behavior: auto !important; }
@media (prefers-reduced-motion: reduce) { html:has(.spw-header[data-smooth]) { scroll-behavior: auto; } }

/* ---------- Menu anchors: land below the sticky header even without JS ---------- */
.spw[id] { scroll-margin-top: 90px; }

/* ---------- Contact ---------- */
.spw-contact__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.08fr); gap: 60px; align-items: start; }
.spw-contact__info { min-width: 0; }
.spw-contact .spw-head { margin-bottom: 26px; gap: 14px; }
.spw-contact .spw-eyebrow { align-self: flex-start; width: fit-content; padding: 6px 16px; border: 1px solid var(--spw-line); border-radius: 999px; background: var(--spw-soft); font-size: .72rem; letter-spacing: .13em; }
.spw-contact .spw-title { font-weight: 700; font-size: clamp(2.1rem, 3.8vw, 3rem); text-wrap: balance; }
.spw-contact .spw-title .spw-hl { display: block; }
.spw-contact .spw-head .spw-desc { max-width: 520px; }

.spw-contact__list { display: grid; gap: 18px; }
.spw-contact__item { display: flex; align-items: center; gap: 18px; padding: 20px 22px; border: 1px solid var(--spw-line); border-radius: 18px; background: rgba(248, 250, 255, .92); transition: translate .3s ease, box-shadow .3s ease; }
.spw-contact__item:hover { translate: 0 -3px; box-shadow: 0 18px 36px -26px var(--spw-primary); }
.spw-contact__ico { display: inline-grid; place-items: center; flex: none; width: 46px; height: 46px; border-radius: 12px; background: rgba(29, 107, 255, .1); color: var(--spw-primary); font-size: 1.1rem; }
.spw-contact__ico svg { width: 1em; height: 1em; fill: currentColor; }
.spw-contact__txt { min-width: 0; }
.spw-contact__label { margin: 0; font-size: .95rem; font-weight: 600; color: var(--spw-ink); line-height: 1.3; }
.spw-contact__val { margin: 2px 0 0; font-size: .98rem; line-height: 1.45; color: var(--spw-muted); overflow-wrap: anywhere; }
.spw-contact__val.is-accent { color: var(--spw-primary); }
.spw a.spw-contact__val:hover { text-decoration: underline; text-underline-offset: 3px; }

.spw-contact__form { min-width: 0; padding: 40px; background: #fff; border: 1px solid var(--spw-line); border-radius: 28px; box-shadow: 0 30px 60px -34px rgba(29, 107, 255, .45); }
.spw-contact__form-title { margin: 0 0 24px; font-size: 1.75rem; font-weight: 700; color: var(--spw-ink); }

.spw-form { display: grid; gap: 20px; }
.spw-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.spw-form__group { display: grid; gap: 8px; min-width: 0; }
.spw-form label { font-size: .88rem; font-weight: 600; color: var(--spw-ink); line-height: 1.3; }
.spw-form label span { color: var(--spw-primary); }
.spw-form .spw-form__field { width: 100%; margin: 0; padding: 13px 16px; font: inherit; font-size: .95rem; line-height: 1.4; color: var(--spw-ink); background-color: #f6f8fc; border: 1px solid #e3e9f5; border-radius: 14px; outline: 0; box-shadow: none; transition: border-color .2s ease, box-shadow .2s ease, background-color .2s ease; }
.spw-form .spw-form__field::placeholder { color: #8a97b2; opacity: 1; }
.spw-form .spw-form__field:focus { background-color: #fff; border-color: var(--spw-primary); box-shadow: 0 0 0 4px rgba(29, 107, 255, .14); }
.spw-form .spw-form__field.is-invalid { border-color: #e5484d; box-shadow: 0 0 0 4px rgba(229, 72, 77, .12); }
.spw-form textarea.spw-form__field { min-height: 120px; resize: vertical; }
.spw-form select.spw-form__field { appearance: none; -webkit-appearance: none; padding-inline-end: 44px; cursor: pointer; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%235a6a8a' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 16px center; }

.spw-form__hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.spw-form .spw-form__submit { width: 100%; padding: 15px 26px; border-radius: 999px; font-size: 1rem; font-weight: 700; }
.spw-form .spw-form__submit[disabled] { opacity: .7; cursor: progress; translate: none; }

.spw-form__status { margin: 0; min-height: 0; font-size: .92rem; line-height: 1.5; }
.spw-form__status:empty { display: none; }
.spw-form__status.is-ok { padding: 12px 16px; border-radius: 12px; color: #11633a; background: #e8f8ef; border: 1px solid #b9e8cd; }
.spw-form__status.is-err { padding: 12px 16px; border-radius: 12px; color: #9b1c25; background: #fdecee; border: 1px solid #f6c3c8; }

@media (max-width: 1024px) {
	.spw-contact__grid { grid-template-columns: 1fr; gap: 40px; }
	.spw-contact .spw-head .spw-desc { max-width: 680px; }
}
@media (max-width: 767px) {
	.spw-contact__form { padding: 28px 22px; border-radius: 22px; }
	.spw-contact__item { padding: 16px 18px; gap: 14px; }
}
@media (max-width: 520px) {
	.spw-form__row { grid-template-columns: 1fr; }
}
