/* =====================================================================
   Noviron Widgets — shared component language.
   Every section widget renders BEM markup using these primitives so the
   whole site reads as one system. Colours pull from the theme tokens
   (var(--nv-*)) with safe fallbacks so widgets look right even in the
   Elementor editor preview.
   ===================================================================== */

/* Grid/flex items must be allowed to shrink below their content's intrinsic
   size, or an image's natural width blows the track (and the page) wide on
   mobile. This is the single most important responsive rule here. */
.nvw-grid > *, .nvw-split > *, .nvw-steps > *, .nvw-stats > *,
.nvw-gallery__grid > *, .nv-hero__inner > *, .nv-quote__grid > *,
.nv-contact__grid > *, .nv-areas__grid > *, .nvw-head, .nvw-marquee {
	min-width: 0;
}
.nvw img, .nvw video, .nvw iframe { max-width: 100%; }

.nvw {
	--nvw-accent: var(--nv-amber, #F5A623);
	--nvw-accent-deep: var(--nv-amber-deep, #D98A00);
	--nvw-ink: var(--nv-ink, #16191C);
	--nvw-ink-2: var(--nv-ink-2, #333B42);
	--nvw-muted: var(--nv-muted, #6B747E);
	--nvw-line: var(--nv-line, #DEE3E8);
	--nvw-surface: var(--nv-surface, #F5F7F8);
	--nvw-white: #fff;
	--nvw-radius: var(--nv-radius, 16px);
	position: relative;
	font-family: var(--nv-font-body, "Inter", system-ui, sans-serif);
}
.nvw * { box-sizing: border-box; }
.nvw__inner { width: 100%; max-width: 1240px; margin-inline: auto; padding-inline: clamp(18px, 4vw, 40px); }
.nvw--pad { padding-block: clamp(56px, 8vw, 104px); }
.nvw--pad-sm { padding-block: clamp(40px, 5vw, 64px); }

/* section head ------------------------------------------------------- */
.nvw-head { max-width: 720px; margin-bottom: clamp(28px, 4vw, 52px); }
.nvw-head--center { margin-inline: auto; text-align: center; }
.nvw-eyebrow {
	display: inline-flex; align-items: center; gap: .55em;
	font-weight: 700; font-size: .74rem; letter-spacing: .16em; text-transform: uppercase;
	color: var(--nvw-accent-deep); margin: 0 0 .9rem;
}
.nvw-eyebrow::before { content: ""; width: 26px; height: 2px; background: var(--nvw-accent); }
.nvw-head--center .nvw-eyebrow { justify-content: center; }
.nvw-title { font-family: var(--nv-font-display, "Sora", sans-serif); font-weight: 700; line-height: 1.12; letter-spacing: -.02em; color: var(--nvw-ink); font-size: clamp(1.4rem, 2.4vw, 2.05rem); margin: 0 0 .6rem; }
.nvw-title em { font-style: normal; color: var(--nvw-accent-deep); }
.nvw-lead { color: var(--nvw-ink-2); font-size: 1.08rem; margin: 0; }

/* grid --------------------------------------------------------------- */
.nvw-grid { display: grid; gap: clamp(16px, 2.2vw, 26px); }
.nvw-grid--2 { grid-template-columns: repeat(2, 1fr); }
.nvw-grid--3 { grid-template-columns: repeat(3, 1fr); }
.nvw-grid--4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 960px) { .nvw-grid--3, .nvw-grid--4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .nvw-grid--2, .nvw-grid--3, .nvw-grid--4 { grid-template-columns: 1fr; } }

/* card --------------------------------------------------------------- */
.nvw-card { background: var(--nvw-white); border: 1px solid var(--nvw-line); border-radius: var(--nvw-radius); overflow: hidden; display: flex; flex-direction: column; transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease; }
.nvw-card:hover { transform: translateY(-4px); box-shadow: 0 22px 44px -22px rgba(20,24,27,.34); border-color: transparent; }
.nvw-card__media { position: relative; aspect-ratio: 4/3; overflow: hidden; background: var(--nvw-surface); }
.nvw-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.nvw-card:hover .nvw-card__media img { transform: scale(1.06); }
.nvw-card__tag { position: absolute; top: 12px; left: 12px; background: var(--nvw-accent); color: #1a1205; font-weight: 700; font-size: .74rem; padding: .35em .7em; border-radius: 999px; }
.nvw-card__body { padding: 1.25rem 1.35rem 1.5rem; display: flex; flex-direction: column; gap: .5rem; flex: 1; }
.nvw-card__icon { width: 52px; height: 52px; border-radius: 13px; display: grid; place-items: center; background: var(--nv-amber-soft, #FFF3DE); color: var(--nvw-accent-deep); margin-bottom: .3rem; }
.nvw-card__title { font-family: var(--nv-font-display, "Sora", sans-serif); font-weight: 700; font-size: 1.22rem; color: var(--nvw-ink); margin: 0; }
.nvw-card__text { color: var(--nvw-ink-2); margin: 0; font-size: .98rem; }
.nvw-card__link { margin-top: auto; padding-top: .5rem; display: inline-flex; align-items: center; gap: .4em; font-weight: 700; color: var(--nvw-accent-deep); }
.nvw-card__link:hover { gap: .7em; color: var(--nvw-ink); }

/* chips -------------------------------------------------------------- */
.nvw-chips { display: flex; flex-wrap: wrap; gap: .6rem; }
.nvw-chip { display: inline-flex; align-items: center; gap: .45em; padding: .5em .95em; border-radius: 999px; background: rgba(255,255,255,.08); border: 1px solid var(--nvw-line); font-weight: 600; font-size: .9rem; }
.nvw-chip svg { color: var(--nvw-accent); }

/* stats -------------------------------------------------------------- */
.nvw-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: clamp(18px, 3vw, 40px); }
.nvw-stat__num { font-family: var(--nv-font-display, "Sora", sans-serif); font-weight: 800; font-size: clamp(2.2rem, 5vw, 3.4rem); line-height: 1; color: var(--nvw-accent); letter-spacing: -.03em; }
.nvw-stat__label { color: var(--nvw-muted); font-weight: 600; margin-top: .35rem; font-size: .95rem; }

/* steps (process) ---------------------------------------------------- */
.nvw-steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(16px, 2vw, 28px); counter-reset: nvstep; }
@media (max-width: 900px) { .nvw-steps { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .nvw-steps { grid-template-columns: 1fr; } }
.nvw-step { position: relative; padding: 1.6rem 1.4rem; border-radius: var(--nvw-radius); background: var(--nvw-white); border: 1px solid var(--nvw-line); }
.nvw-step__num { width: 48px; height: 48px; border-radius: 12px; background: var(--nvw-ink); color: #fff; font-family: var(--nv-font-display, "Sora", sans-serif); font-weight: 700; display: grid; place-items: center; font-size: 1.2rem; margin-bottom: 1rem; }
.nvw-step__title { font-family: var(--nv-font-display, "Sora", sans-serif); font-weight: 700; font-size: 1.12rem; margin: 0 0 .4rem; color: var(--nvw-ink); }
.nvw-step__text { color: var(--nvw-ink-2); margin: 0; font-size: .96rem; }

/* icon tile (why-choose / features) --------------------------------- */
.nvw-itile { padding: 1.5rem; border-radius: var(--nvw-radius); border: 1px solid var(--nvw-line); background: var(--nvw-white); }
.nvw-itile__icon { width: 54px; height: 54px; border-radius: 13px; display: grid; place-items: center; background: var(--nv-amber-soft, #FFF3DE); color: var(--nvw-accent-deep); margin-bottom: 1rem; }
.nvw-itile__title { font-family: var(--nv-font-display, "Sora", sans-serif); font-weight: 700; font-size: 1.15rem; margin: 0 0 .4rem; color: var(--nvw-ink); }
.nvw-itile__text { color: var(--nvw-ink-2); margin: 0; font-size: .96rem; }

/* stars -------------------------------------------------------------- */
.nvw-stars { display: inline-flex; gap: 2px; color: var(--nvw-accent); }

/* split (image + content) ------------------------------------------- */
.nvw-split { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(24px, 5vw, 64px); align-items: center; }
.nvw-split--reverse .nvw-split__media { order: 2; }
.nvw-split__media img { width: 100%; border-radius: var(--nvw-radius); object-fit: cover; }
@media (max-width: 860px) { .nvw-split { grid-template-columns: 1fr; } .nvw-split--reverse .nvw-split__media { order: 0; } }

/* marquee ------------------------------------------------------------ */
.nvw-marquee { overflow: hidden; }
.nvw-marquee__track { display: flex; gap: 3rem; width: max-content; animation: nvw-scroll 32s linear infinite; }
.nvw-marquee:hover .nvw-marquee__track { animation-play-state: paused; }
.nvw-marquee__item { display: inline-flex; align-items: center; gap: .6em; font-weight: 600; white-space: nowrap; }
@keyframes nvw-scroll { to { transform: translateX(-50%); } }

/* accordion (faq) ---------------------------------------------------- */
.nvw-acc { max-width: 820px; margin-inline: auto; }
.nvw-acc__item { border: 1px solid var(--nvw-line); border-radius: var(--nvw-radius); background: var(--nvw-white); margin-bottom: 12px; overflow: hidden; }
.nvw-acc__q { width: 100%; text-align: left; background: none; border: 0; cursor: pointer; padding: 1.15rem 1.35rem; font-family: var(--nv-font-display, "Sora", sans-serif); font-weight: 600; font-size: 1.08rem; color: var(--nvw-ink); display: flex; justify-content: space-between; align-items: center; gap: 1rem; }
.nvw-acc__q::after { content: "+"; font-size: 1.5rem; color: var(--nvw-accent-deep); transition: transform .25s ease; line-height: 1; }
.nvw-acc__item.is-open .nvw-acc__q::after { transform: rotate(45deg); }
.nvw-acc__a { max-height: 0; overflow: hidden; transition: max-height .3s ease; }
.nvw-acc__a-inner { padding: 0 1.35rem 1.25rem; color: var(--nvw-ink-2); }

/* gallery ------------------------------------------------------------ */
.nvw-gallery__filters { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.6rem; }
.nvw-gallery__filter { padding: .5em 1.05em; border-radius: 999px; border: 1.5px solid var(--nvw-line); background: transparent; font-weight: 600; cursor: pointer; color: var(--nvw-ink-2); transition: all .18s ease; }
.nvw-gallery__filter.is-active, .nvw-gallery__filter:hover { background: var(--nvw-ink); color: #fff; border-color: var(--nvw-ink); }
.nvw-gallery__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
@media (max-width: 900px) { .nvw-gallery__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .nvw-gallery__grid { grid-template-columns: 1fr; } }
.nvw-gallery__item { position: relative; border-radius: var(--nvw-radius); overflow: hidden; aspect-ratio: 1/1; cursor: pointer; background: var(--nvw-surface); }
.nvw-gallery__item img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.nvw-gallery__item:hover img { transform: scale(1.07); }
.nvw-gallery__item.is-hidden { display: none; }
.nvw-gallery__cap { position: absolute; inset: auto 0 0 0; padding: 1.4rem .9rem .8rem; color: #fff; font-weight: 600; font-size: .9rem; background: linear-gradient(transparent, rgba(0,0,0,.72)); opacity: 0; transition: opacity .25s ease; }
.nvw-gallery__item:hover .nvw-gallery__cap { opacity: 1; }

/* lightbox ----------------------------------------------------------- */
.nvw-lightbox { position: fixed; inset: 0; z-index: 9999; background: rgba(10,12,14,.92); display: none; align-items: center; justify-content: center; padding: 4vw; }
.nvw-lightbox.is-open { display: flex; }
.nvw-lightbox img { max-width: 92vw; max-height: 88vh; border-radius: 10px; }
.nvw-lightbox__close, .nvw-lightbox__nav { position: absolute; background: rgba(255,255,255,.12); border: 0; color: #fff; width: 52px; height: 52px; border-radius: 50%; font-size: 1.5rem; cursor: pointer; }
.nvw-lightbox__close { top: 20px; right: 20px; }
.nvw-lightbox__nav--prev { left: 18px; top: 50%; transform: translateY(-50%); }
.nvw-lightbox__nav--next { right: 18px; top: 50%; transform: translateY(-50%); }

/* dark-band helpers -------------------------------------------------- */
.nvw--dark { background: var(--nv-charcoal, #14181B); color: var(--nv-on-dark, #EEF1F4); }
.nvw--dark .nvw-title, .nvw--dark .nvw-title em { color: #fff; }
.nvw--dark .nvw-title em { color: var(--nvw-accent); }
.nvw--dark .nvw-lead { color: var(--nv-on-dark-mut, #9AA6B0); }
.nvw--dark .nvw-card, .nvw--dark .nvw-step, .nvw--dark .nvw-itile { background: var(--nv-charcoal-2, #1C2227); border-color: var(--nv-charcoal-3, #262E34); color: var(--nv-on-dark, #EEF1F4); }
.nvw--dark .nvw-card__title, .nvw--dark .nvw-step__title, .nvw--dark .nvw-itile__title { color: #fff; }

/* reveal ------------------------------------------------------------- */
.nvw [data-nvw-reveal] { opacity: 0; transform: translateY(20px); transition: opacity .7s ease, transform .7s cubic-bezier(.2,.7,.2,1); }
.nvw [data-nvw-reveal].is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .nvw [data-nvw-reveal] { opacity: 1; transform: none; } .nvw-marquee__track { animation: none; } }
