/* ==========================================================================
   NeatPrep – Elementor component layer (child theme, update-safe)
   Colours and typography live in Elementor Site Settings (Global Colors /
   Global Fonts). This file only adds what Elementor can't express natively:
   layered gradients, card / badge treatments, RTL-aware decorative offsets,
   accordion & form polish and the sticky-header scroll state.
   Breakpoints follow Elementor: tablet ≤1024px, mobile ≤767px.
   ========================================================================== */

:root {
	--np-primary: #2B2B2B;
	--np-hover: #111111;
	--np-sec: #6E6E6E;
	--np-light: #ECECEA;
	--np-bg: #F3F2EF;
	--np-text: #1F1F1F;
	--np-muted: #666666;
	--np-border: #DDDDDA;
	--np-dark: #1E1E1E;
	--np-sh-1: 0 1px 2px rgba(0, 0, 0, .05), 0 3px 10px rgba(0, 0, 0, .05);
	--np-sh-2: 0 1px 2px rgba(0, 0, 0, .04), 0 14px 34px -12px rgba(0, 0, 0, .18);
	--np-sh-3: 0 2px 6px rgba(0, 0, 0, .05), 0 30px 60px -22px rgba(0, 0, 0, .32);
	--np-g-hero: radial-gradient(900px 560px at 10% 0%, rgba(90, 90, 90, .17), rgba(90, 90, 90, 0) 70%), linear-gradient(180deg, #F1F1EE 0%, #F3F2EF 55%, #FFFFFF 100%);
	--np-g-dark: radial-gradient(760px 420px at 88% 0%, rgba(90, 90, 90, .5), rgba(90, 90, 90, 0) 70%), linear-gradient(135deg, #2B2B2B 0%, #1E1E1E 100%);
	--np-g-soft: linear-gradient(135deg, #ECECEA 0%, #F4F4F2 55%, #FFFFFF 100%);
	--np-g-badge: linear-gradient(135deg, #ECECEA 0%, #DCDCD9 100%);
}

/* ---------- base ---------- */
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; overflow-x: clip; }
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible { outline: 2px solid var(--np-sec); outline-offset: 3px; }
.np-on-dark :focus-visible { outline-color: #fff; }
.elementor-heading-title { text-wrap: balance; }
.elementor-widget-text-editor { text-wrap: pretty; }
.elementor-widget-text-editor p:last-child { margin-bottom: 0; }
.np-svg { fill: none !important; stroke: currentColor; }
.np-mw-sm { max-width: 560px; }
.np-mw-md { max-width: 680px; }
.np-mw-lg { max-width: 820px; }
.np-grow { flex-grow: 1; }

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

/* ---------- section backgrounds ---------- */
.e-con.np-bg-hero { background: var(--np-g-hero); }
.e-con.np-bg-light { background: var(--np-bg); }
.e-con.np-bg-soft { background: linear-gradient(180deg, #FFFFFF 0%, #EFEFEC 100%); }
.e-con.np-bg-dark { background: var(--np-g-dark); }

/* ---------- eyebrow pill ---------- */
.np-eyebrow .elementor-heading-title {
	display: inline-flex; align-items: center; gap: 9px;
	padding: 6px 16px 6px 14px; border-radius: 999px;
	background: #fff; border: 1px solid var(--np-border); box-shadow: var(--np-sh-1);
}
.np-eyebrow .elementor-heading-title::before {
	content: ""; flex: none; width: 7px; height: 7px; border-radius: 50%;
	background: linear-gradient(135deg, #6E6E6E, #2B2B2B);
}
.np-on-dark .np-eyebrow .elementor-heading-title { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .16); box-shadow: none; }
.np-on-dark .np-eyebrow .elementor-heading-title::before { background: #BDBDBA; }

/* ---------- buttons ---------- */
.elementor-button { transition: background-color .15s, border-color .15s, color .15s, box-shadow .15s, transform .15s; }
.elementor-widget-button.np-btn--primary .elementor-button,
.elementor-widget-form.np-form .elementor-button {
	background-image: linear-gradient(180deg, #3A3A3A 0%, #2B2B2B 100%);
	box-shadow: 0 10px 22px -12px rgba(0, 0, 0, .8);
}
.elementor-widget-button.np-btn--primary .elementor-button:hover,
.elementor-widget-form.np-form .elementor-button:hover {
	background-image: none; background-color: var(--np-hover); transform: translateY(-1px);
}
.elementor-widget-button.np-btn--secondary .elementor-button {
	background: rgba(255, 255, 255, .72); color: var(--np-text); border: 1px solid rgba(0, 0, 0, .5); box-shadow: none;
}
.elementor-widget-button.np-btn--secondary .elementor-button:hover { background: #fff; color: var(--np-primary); border-color: var(--np-primary); }
.elementor-widget-button.np-btn--white .elementor-button { background: #fff; color: var(--np-primary); box-shadow: 0 10px 24px -12px rgba(0, 0, 0, .45); }
.elementor-widget-button.np-btn--white .elementor-button:hover { background: var(--np-light); color: var(--np-primary); }
.elementor-widget-button.np-btn--link .elementor-button {
	background: none; box-shadow: none; padding: 0 0 3px; min-height: 0; border-radius: 0;
	color: var(--np-primary); border-bottom: 1px solid currentColor;
}
.elementor-widget-button.np-btn--link .elementor-button:hover { color: var(--np-sec); }
.elementor-widget-button.np-btn--sm .elementor-button { padding: 18px 26px; font-size: 16px; }
.elementor-button .elementor-button-icon svg { width: 18px; height: 18px; }

/* ---------- cards ---------- */
.e-con.np-card { background: #fff; border: 1px solid var(--np-border); border-radius: 16px; box-shadow: var(--np-sh-2); }
.e-con.np-card--lg { border-radius: 24px; box-shadow: var(--np-sh-3); }
.e-con.np-card--sm { border-radius: 14px; box-shadow: var(--np-sh-1); }
.e-con.np-lift { transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease; }
.e-con.np-lift:hover { transform: translateY(-4px); box-shadow: var(--np-sh-3); border-color: #CFCFCC; }
.e-con.np-card--dark { background: var(--np-g-dark); border-color: transparent; }
a.e-con { color: inherit; text-decoration: none; }
.e-con.np-divide-top { border-top: 1px solid #EDF1F4; }

/* icon badges (Elementor Icon widget) */
.np-badge .elementor-icon-wrapper { display: flex; }
.np-badge .elementor-icon {
	display: grid; place-items: center; width: 56px; height: 56px; border-radius: 14px;
	background: var(--np-g-badge); box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .05);
}
.np-badge .elementor-icon svg { width: 28px; height: 28px; }
.np-badge--sm .elementor-icon { width: 42px; height: 42px; border-radius: 11px; }
.np-badge--sm .elementor-icon svg { width: 21px; height: 21px; }
.np-badge--dark .elementor-icon { background: rgba(255, 255, 255, .1); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .16); }
.np-circ { margin-inline-start: auto; }
.np-circ .elementor-icon-wrapper { display: flex; }
.np-circ .elementor-icon { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: var(--np-light); transition: background-color .2s, color .2s; }
.np-circ .elementor-icon svg { width: 18px; height: 18px; }
.np-lift:hover .np-circ .elementor-icon { background: var(--np-primary); color: #fff; }
.np-lift:hover .np-circ .elementor-icon svg { stroke: #fff; }
.np-circ--sm .elementor-icon { width: 32px; height: 32px; }
.np-circ--sm .elementor-icon svg { width: 16px; height: 16px; }

/* chips / numbers */
.np-chip .elementor-heading-title { display: inline-block; padding: 4px 11px; border-radius: 999px; background: var(--np-bg); border: 1px solid var(--np-border); letter-spacing: .06em; }
.np-num .elementor-heading-title {
	display: grid; place-items: center; width: 46px; height: 46px; border-radius: 12px;
	background: linear-gradient(180deg, #3A3A3A, #2B2B2B); box-shadow: 0 10px 18px -10px rgba(0, 0, 0, .7);
}
.np-num--light .elementor-heading-title { background: #fff; box-shadow: none; }

/* tick lists (Icon List widget) */
.np-checks .elementor-icon-list-item { padding-block: 14px; border-bottom: 1px solid #EDF1F4; align-items: center; }
.np-checks .elementor-icon-list-item:last-child { border-bottom: 0; padding-bottom: 0; }
.np-checks .elementor-icon-list-icon {
	display: grid; place-items: center; flex: none; width: 28px; height: 28px; border-radius: 50%;
	background: var(--np-light); color: var(--np-primary);
}
.np-checks .elementor-icon-list-icon svg { width: 15px !important; height: 15px !important; stroke-width: 2.2; }
.np-checks--muted .elementor-icon-list-icon { background: #F1F1EF; color: #8C8C89; }
.np-checks--icons .elementor-icon-list-icon { width: 38px; height: 38px; border-radius: 10px; background: var(--np-g-badge); }
.np-checks--icons .elementor-icon-list-icon svg { width: 19px !important; height: 19px !important; stroke-width: 1.6; }
.np-chips .elementor-icon-list-items { gap: 10px; }
.np-chips .elementor-icon-list-item { margin: 0 !important; padding: 9px 16px !important; border-radius: 999px; background: var(--np-light); }
.np-chips .elementor-icon-list-item::after { display: none !important; }
.np-chips .elementor-icon-list-icon svg { width: 17px !important; height: 17px !important; }

/* ---------- media (photos) ---------- */
.e-con.np-media { position: relative; isolation: isolate; }
.e-con.np-media::after {
	content: ""; position: absolute; z-index: -1; top: -28px; left: -28px; right: 56px; bottom: 56px;
	border-radius: 28px; background: linear-gradient(135deg, #D6D6D3 0%, #ECECEA 100%);
}
.e-con.np-media--right::after { left: 56px; right: -28px; }
.np-media .elementor-widget-image img {
	display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; object-position: 50% 35%;
	border-radius: 24px; box-shadow: var(--np-sh-3);
}
.np-media--square .elementor-widget-image img { aspect-ratio: 1 / 1; border-radius: 20px; }
.e-con.np-media--plain::after { display: none; }
.e-con.np-float {
	position: absolute; z-index: 2; bottom: 40px; right: -40px; --width: auto; width: auto; max-width: 320px;
	background: #fff; border: 1px solid var(--np-border); border-radius: 16px; box-shadow: var(--np-sh-3);
}
.e-con.np-float--left { right: auto; left: -40px; }
.e-con.np-float--quote { bottom: -36px; max-width: 340px; }
.np-float--quote .np-quote-mark .elementor-heading-title { line-height: .9; height: 26px; }
.np-avatar img { width: 52px; height: 52px; border-radius: 50%; object-fit: cover; box-shadow: 0 0 0 3px #fff, 0 4px 12px rgba(0, 0, 0, .15); }
.np-avatar--lg img { width: 76px; height: 76px; }

/* ---------- stat cards ---------- */
.e-con.np-stat-card { background: #fff; border: 1px solid var(--np-border); border-radius: 14px; box-shadow: var(--np-sh-1); }
.e-con.np-glass { background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .13); border-radius: 16px; }
.e-con.np-glass--sm { border-radius: 14px; background: rgba(255, 255, 255, .07); }

/* ---------- large blocks ---------- */
.e-con.np-statement, .e-con.np-cta-card, .e-con.np-cred-band { position: relative; overflow: hidden; isolation: isolate; border-radius: 24px; box-shadow: var(--np-sh-2); }
.e-con.np-statement, .e-con.np-cred-band { background: var(--np-g-dark); }
.e-con.np-statement--light, .e-con.np-cta-card { background: var(--np-g-soft); border: 1px solid var(--np-border); }
.e-con.np-statement::after, .e-con.np-cta-card::after {
	content: ""; position: absolute; z-index: -1; width: 480px; height: 480px; left: -150px; bottom: -240px; border-radius: 50%;
	background: radial-gradient(circle, rgba(169, 195, 212, .24), rgba(169, 195, 212, 0) 70%); pointer-events: none;
}
.e-con.np-statement--light::after, .e-con.np-cta-card::after { background: radial-gradient(circle, rgba(90, 90, 90, .16), rgba(90, 90, 90, 0) 70%); top: -240px; bottom: auto; }

/* ---------- step flow (dashed connector) ---------- */
.e-con.np-flow { position: relative; }
/* ::after – Elementor reserves .e-con::before for background overlays */
.e-con.np-flow::after {
	content: ""; position: absolute; z-index: 0; top: 59px; inset-inline: 12%; width: auto; height: 2px;
	background: repeating-linear-gradient(90deg, #BFD1DC 0 8px, transparent 8px 15px); pointer-events: none;
}
.e-con.np-flow > .e-con { position: relative; z-index: 1; }

/* ---------- FAQ (Nested Accordion) ---------- */
.np-acc .e-n-accordion { display: flex; flex-direction: column; gap: 12px; }
.np-acc .e-n-accordion-item {
	background: #fff; border: 1px solid var(--np-border); border-radius: 14px; box-shadow: var(--np-sh-1); overflow: hidden;
	transition: box-shadow .2s, border-color .2s;
}
.np-acc .e-n-accordion-item[open] { border-color: #C9D8E2; box-shadow: var(--np-sh-2); }
.np-acc .e-n-accordion-item-title {
	display: flex; justify-content: space-between; align-items: center; gap: 20px;
	padding: 22px 26px; border: 0 !important; background: none !important; cursor: pointer;
}
.np-acc .e-n-accordion-item-title-header { flex: 1; }
.np-acc .e-n-accordion-item-title-text { font-size: 19px; line-height: 1.45; font-weight: 500; color: var(--np-primary); }
.np-acc .e-n-accordion-item-title-icon { flex: none; display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: var(--np-light); color: var(--np-primary); }
.np-acc .e-n-accordion-item[open] .e-n-accordion-item-title-icon { background: var(--np-primary); color: #fff; }
.np-acc .e-n-accordion-item-title-icon svg { width: 16px; height: 16px; }
.np-acc .e-n-accordion-item > .e-con { border: 0 !important; }

/* ---------- forms (Elementor Pro Form) ---------- */
.e-con.np-form-card { background: #fff; border: 1px solid var(--np-border); border-radius: 20px; box-shadow: var(--np-sh-3); }
.np-form .elementor-field-group .elementor-field-textual { min-height: 52px; padding: 12px 16px; font-size: 17px; line-height: 1.5; }
.np-form .elementor-field-group textarea.elementor-field-textual { min-height: 124px; }
.np-form .elementor-field-textual:focus { border-color: var(--np-primary) !important; box-shadow: 0 0 0 4px rgba(90, 90, 90, .22); outline: none; }
.np-form .elementor-field-label { font-size: 15px; font-weight: 500; line-height: 1.4; }
.np-form .elementor-mark-required .elementor-field-label::after { color: var(--np-sec); }
.np-form input[type="tel"], .np-form input[type="email"] { direction: ltr; text-align: right; }
.np-form .elementor-button { min-height: 54px; }
.np-form-note { margin: 0; font-size: 14px; line-height: 1.5; color: var(--np-muted); }
.np-form-note a { text-decoration: underline; }
.np-form .elementor-message { padding: 16px 18px; border-radius: 12px; font-size: 16px; }
.np-form .elementor-message-success { border: 1px solid #B9CCD8; background: var(--np-g-soft); color: var(--np-primary); font-weight: 500; }
.np-form .elementor-message-danger { color: #A33A33; }

/* ---------- breadcrumbs ---------- */
.np-crumbs .elementor-icon-list-item a { text-decoration: underline; text-underline-offset: 3px; }
.np-crumbs .elementor-icon-list-item:not(:last-child)::after { content: "/"; border: 0 !important; position: static !important; width: auto !important; height: auto !important; margin-inline: 10px; color: #B3BEC6; }

/* ---------- header ---------- */
.e-con.np-header { border-bottom: 1px solid transparent; transition: box-shadow .2s, border-color .2s, min-height .2s; }
.e-con.np-header.elementor-sticky--effects { border-bottom-color: var(--np-border); box-shadow: 0 12px 30px -20px rgba(0, 0, 0, .35); --min-height: 76px; }
.np-nav .elementor-nav-menu--main .elementor-item { border-radius: 8px; }
.np-nav .elementor-nav-menu--main .elementor-item:hover,
.np-nav .elementor-nav-menu--main .elementor-item.elementor-item-active { background: var(--np-bg); }
.np-nav .elementor-nav-menu--main .sub-menu {
	min-width: 300px !important; padding: 10px; border: 1px solid var(--np-border); border-radius: 16px; box-shadow: var(--np-sh-3); background: #fff;
}
.np-nav .elementor-nav-menu--main .sub-menu a { border-radius: 10px; padding: 12px 14px !important; }
.np-nav .elementor-nav-menu--main .sub-menu a:hover { background: var(--np-bg); }
.np-nav .elementor-nav-menu--main .np-menu-cta { display: none; }
.np-nav .elementor-menu-toggle { width: 44px; height: 44px; border-radius: 10px; background: var(--np-bg); border: 1px solid var(--np-border); }
.np-nav .elementor-nav-menu--dropdown.elementor-nav-menu__container { border-top: 1px solid var(--np-border); box-shadow: 0 24px 40px -24px rgba(0, 0, 0, .35); }
.np-nav .elementor-nav-menu--dropdown .elementor-item { border-bottom: 1px solid #EDF1F4; }
.np-nav .elementor-nav-menu--dropdown .sub-menu .elementor-sub-item { padding-inline-start: 36px !important; font-size: 17px; }
.np-nav .elementor-nav-menu--dropdown .np-menu-cta > a {
	justify-content: center; margin: 14px 20px 18px; border-radius: 6px !important; border: 0;
	background: var(--np-primary) !important; color: #fff !important; min-height: 54px;
}

/* ---------- footer ---------- */
.np-footer .elementor-icon-list-item a:hover .elementor-icon-list-text { color: #fff; }
.e-con.np-footer-bar { border-top: 1px solid rgba(255, 255, 255, .12); }

/* =========================== tablet ≤1024 =========================== */
@media (max-width: 1024px) {
	.e-con.np-media { max-width: 600px; }
	.np-media .elementor-widget-image img { aspect-ratio: 4 / 3; }
	.np-media--square .elementor-widget-image img { aspect-ratio: 1 / 1; }
	.e-con.np-float { right: -16px; }
	.e-con.np-float--left { right: auto; left: -16px; }
	.e-con.np-float--quote { bottom: -28px; }
	.e-con.np-flow::after { display: none; }
}

/* =========================== mobile ≤767 =========================== */
@media (max-width: 767px) {
	.e-con.np-media::after { top: -14px; left: -14px; right: 32px; bottom: 32px; border-radius: 20px; }
	.e-con.np-media--right::after { left: 32px; right: -14px; }
	.e-con.np-media { max-width: none; }
	.np-media .elementor-widget-image img { aspect-ratio: 1 / 1.05; border-radius: 20px; }
	.e-con.np-float, .e-con.np-float--left, .e-con.np-float--quote {
		position: relative; right: auto; left: auto; bottom: auto; max-width: none; --width: auto; margin: -48px 14px 0;
	}
	.e-con.np-statement, .e-con.np-cta-card, .e-con.np-cred-band { border-radius: 20px; }
	.np-acc .e-n-accordion-item-title { padding: 18px; }
	.np-acc .e-n-accordion-item-title-text { font-size: 17px; }
	.e-con.np-form-card { border-radius: 18px; }
	.np-nav .elementor-nav-menu--dropdown .elementor-item { font-size: 20px; }
}
