/**
 * Divello Visual Composer — frontend.
 *
 * Everything is authored against the theme's custom properties with a local
 * fallback, so the builder looks correct under Nova Theme and merely plain
 * under any other theme rather than broken.
 */

.nb-el { box-sizing: border-box; }
.nb-el *, .nb-el *::before, .nb-el *::after { box-sizing: inherit; }

/* --------------------------------------------------------------------- Row */

.nb-row {
	position: relative;
	width: 100%;
}

.nb-row__inner {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	gap: var(--nb-gap, 30px);
	width: 100%;
	max-width: var(--nova-container, 1200px);
	margin-inline: auto;
	padding-inline: var(--nova-gutter, 20px);
	position: relative;
	z-index: 1;
}

.nb-row--stretch_row_content > .nb-row__inner { max-width: none; }

/* A stray <br> between columns — anything that ran wpautop over the layout —
   would otherwise be placed as a grid item and push the next column down. */
.nb-row__inner > br,
.nb-col__inner > br:only-child { display: none; }

.nb-row--valign-middle > .nb-row__inner { align-items: center; }
.nb-row--valign-bottom > .nb-row__inner { align-items: end; }

.nb-row--full-height { min-height: 100vh; display: flex; align-items: center; }
.nb-row--full-height > .nb-row__inner { width: 100%; }

.nb-row--has-bg {
	background-image: var(--nb-row-bg);
	background-position: center;
	background-repeat: no-repeat;
}
.nb-row--bg-cover   { background-size: cover; }
.nb-row--bg-contain { background-size: contain; }
.nb-row--bg-repeat  { background-repeat: repeat; background-size: auto; }
.nb-row--bg-fixed   { background-size: cover; background-attachment: fixed; }

.nb-row__overlay {
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
}

/* ------------------------------------------------------------------ Column
 *
 * Fractions map onto a 12-track grid, so gaps never have to be subtracted out
 * of a percentage width and the columns land on exact boundaries.
 */

.nb-col { grid-column: span 12; min-width: 0; }

.nb-col--1-1 { grid-column: span 12; }
.nb-col--1-2 { grid-column: span 6; }
.nb-col--1-3 { grid-column: span 4; }
.nb-col--2-3 { grid-column: span 8; }
.nb-col--1-4 { grid-column: span 3; }
.nb-col--3-4 { grid-column: span 9; }
.nb-col--1-6 { grid-column: span 2; }
.nb-col--5-6 { grid-column: span 10; }
.nb-col--1-12 { grid-column: span 1; }
.nb-col--5-12 { grid-column: span 5; }
.nb-col--7-12 { grid-column: span 7; }
.nb-col--11-12 { grid-column: span 11; }

.nb-col--align-left   { text-align: left; }
.nb-col--align-center { text-align: center; }
.nb-col--align-right  { text-align: right; }

.nb-col__inner > .nb-el + .nb-el { margin-top: 1.5rem; }

/* Columns already stretch to the tallest in the row; carrying that height
   through the inner wrapper lets a card be the full height of its column, so
   a row of them lines up whatever the copy length. */
.nb-col__inner { height: 100%; }
.nb-col__inner > .nb-fancy-box:only-child { height: 100%; }

/* A global section dropped into a column brings its own rows with it. Those
   rows are already inside a constrained container, so they must not add a
   second max-width and gutter on top of the column's. */
.nb-col .nb-row > .nb-row__inner {
	max-width: none;
	padding-inline: 0;
}

@media (max-width: 1000px) {
	.nb-col--1-3, .nb-col--1-4, .nb-col--5-12 { grid-column: span 6; }
	.nb-col--1-6, .nb-col--1-12 { grid-column: span 4; }
	.nb-col--2-3, .nb-col--3-4, .nb-col--5-6, .nb-col--7-12, .nb-col--11-12 { grid-column: span 12; }
}

@media (max-width: 690px) {
	.nb-row__inner { gap: 24px; }
	.nb-col { grid-column: span 12 !important; }
}

/* ---------------------------------------------------------------- Spacer */

.nb-spacer { height: var(--nb-space, 40px); }

@media (max-width: 690px) {
	.nb-spacer { height: var(--nb-space-m, var(--nb-space, 40px)); }
}

/* -------------------------------------------------------------- Separator */

.nb-separator { display: flex; }
.nb-separator--align-center { justify-content: center; }
.nb-separator--align-right  { justify-content: flex-end; }

.nb-separator__line {
	display: block;
	width: var(--nb-sep-width, 100%);
	border-top: 1px solid var(--nb-sep-color, var(--nova-border, #e2e5ea));
}

.nb-separator--dashed .nb-separator__line { border-top-style: dashed; }
.nb-separator--dotted .nb-separator__line { border-top-style: dotted; }

.nb-separator--accent .nb-separator__line {
	border: 0;
	height: 4px;
	border-radius: 4px;
	width: var(--nb-sep-width, 60px);
	background: var(--nb-sep-color, var(--nova-accent, #2b6cff));
}

/* ---------------------------------------------------------------- Heading */

.nb-heading--align-center { text-align: center; }
.nb-heading--align-right  { text-align: right; }

.nb-heading__sub {
	display: block;
	font-size: var(--nb-heading-sub-size, 0.8125rem);
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--nova-accent, #2b6cff);
	margin-bottom: 0.6em;
}

.nb-heading__title {
	margin: 0;
	color: var(--nb-heading-color, inherit);
	font-size: var(--nb-heading-size, inherit);
}

.nb-heading__divider {
	display: block;
	width: 56px;
	height: 4px;
	border-radius: 4px;
	margin-top: 1rem;
	background: var(--nova-accent, #2b6cff);
}

.nb-heading--align-center .nb-heading__divider { margin-inline: auto; }
.nb-heading--align-right  .nb-heading__divider { margin-inline-start: auto; }

/* ------------------------------------------------------------------- Text */

.nb-text--align-center { text-align: center; }
.nb-text--align-right  { text-align: right; }
.nb-text        { font-size: var(--nb-text-size, var(--nb-text-preset, inherit)); }
.nb-text--small { --nb-text-preset: 0.9375rem; }
.nb-text--lead  { --nb-text-preset: 1.1875rem; line-height: 1.65; }
.nb-text > :first-child { margin-top: 0; }
.nb-text > :last-child  { margin-bottom: 0; }

/* ----------------------------------------------------------------- Button */

.nb-button--align-center { text-align: center; }
.nb-button--align-right  { text-align: right; }
.nb-button--align-block .nb-btn { display: flex; width: 100%; }

.nb-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5em;
	font-weight: 600;
	line-height: 1;
	text-decoration: none;
	border: 2px solid transparent;
	border-radius: var(--nova-radius, 4px);
	transition: background-color .18s ease, color .18s ease, border-color .18s ease, transform .18s ease;
	cursor: pointer;
	font-size: var(--nb-btn-size, var(--nb-btn-preset, inherit));
}

.nb-btn:hover { transform: translateY(-1px); }
.nb-btn:focus-visible { outline: 2px solid var(--nova-accent, #2b6cff); outline-offset: 3px; }

.nb-btn--sm { padding: 0.6em 1.2em;  --nb-btn-preset: 0.8125rem; }
.nb-btn--md { padding: 0.85em 1.7em; --nb-btn-preset: 0.9375rem; }
.nb-btn--lg { padding: 1.05em 2.3em; --nb-btn-preset: 1.0625rem; }

.nb-btn--solid {
	background: var(--nb-btn-color, var(--nova-accent, #2b6cff));
	border-color: var(--nb-btn-color, var(--nova-accent, #2b6cff));
	color: #fff;
}
.nb-btn--solid:hover { filter: brightness(0.92); color: #fff; }

.nb-btn--outline {
	border-color: var(--nb-btn-color, var(--nova-accent, #2b6cff));
	color: var(--nb-btn-color, var(--nova-accent, #2b6cff));
	background: transparent;
}
.nb-btn--outline:hover {
	background: var(--nb-btn-color, var(--nova-accent, #2b6cff));
	color: #fff;
}

.nb-btn--ghost {
	background: color-mix(in srgb, var(--nb-btn-color, var(--nova-accent, #2b6cff)) 12%, transparent);
	color: var(--nb-btn-color, var(--nova-accent, #2b6cff));
}

.nb-btn--underline {
	padding-inline: 0;
	border: 0;
	border-bottom: 2px solid currentColor;
	border-radius: 0;
	color: var(--nb-btn-color, var(--nova-accent, #2b6cff));
	background: none;
}

/* --------------------------------------------------------------- Icon box */

.nb-icon-box { display: flex; gap: 1.1rem; }
.nb-icon-box--top  { flex-direction: column; }
.nb-icon-box--left { flex-direction: row; align-items: flex-start; }

.nb-icon-box__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	color: var(--nb-icon-color, var(--nova-accent, #2b6cff));
}

.nb-icon-box__icon .dashicons {
	font-size: var(--nb-icon-size, 34px);
	width: var(--nb-icon-size, 34px);
	height: var(--nb-icon-size, 34px);
}

.nb-icon-box--icon-circle .nb-icon-box__icon,
.nb-icon-box--icon-square .nb-icon-box__icon {
	width: 68px;
	height: 68px;
	background: color-mix(in srgb, var(--nb-icon-color, var(--nova-accent, #2b6cff)) 12%, transparent);
}

.nb-icon-box--icon-circle .nb-icon-box__icon { border-radius: 50%; }
.nb-icon-box--icon-square .nb-icon-box__icon { border-radius: var(--nova-radius, 8px); }

.nb-icon-box__title { margin: 0 0 0.4em; font-size: var(--nb-icon-box-title-size, 1.1875rem); }
.nb-icon-box__text  { margin: 0; font-size: var(--nb-icon-box-text-size, inherit); }

.nb-icon-box__link {
	display: inline-block;
	margin-top: 0.7em;
	font-weight: 600;
	color: var(--nova-accent, #2b6cff);
}

/* -------------------------------------------------------------- Fancy box
 *
 * One card, five treatments. Everything that moves is a transform or an
 * opacity so a hover costs no layout, and every motion is switched off under
 * prefers-reduced-motion at the foot of this file.
 */

.nb-fancy-box {
	position: relative;
	display: flex;
	flex-direction: column;
	min-height: var(--nb-fb-min-height, auto);
	border-radius: var(--nb-fb-radius, var(--nova-radius, 8px));
	color: var(--nb-fb-color, inherit);
	background: var(--nb-fb-bg, transparent);
	overflow: hidden;
	transition: background-color .3s ease, transform .3s ease, box-shadow .3s ease;
}

.nb-fancy-box--shadow { box-shadow: var(--nova-shadow, 0 1px 3px rgba(0,0,0,.06)); }

.nb-fancy-box__link {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	color: inherit;
	text-decoration: none;
}

.nb-fancy-box__body {
	position: relative;
	z-index: 1;
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	align-items: var(--nb-fb-items, flex-start);
	gap: 0.7rem;
	padding: var(--nb-fb-padding, 2rem);
}

.nb-fancy-box--align-center { --nb-fb-items: center; text-align: center; }
.nb-fancy-box--align-right  { --nb-fb-items: flex-end; text-align: right; }

.nb-fancy-box__icon {
	display: inline-flex;
	color: var(--nb-fb-icon-color, var(--nova-accent, #2b6cff));
	transition: transform .3s ease;
}

.nb-fancy-box__icon .dashicons {
	font-size: var(--nb-fb-icon-size, 38px);
	width: var(--nb-fb-icon-size, 38px);
	height: var(--nb-fb-icon-size, 38px);
}

.nb-fancy-box__title {
	margin: 0;
	font-size: var(--nb-fb-title-size, 1.3125rem);
	line-height: 1.25;
}

.nb-fancy-box__text {
	display: block;
	margin: 0;
	font-size: var(--nb-fb-text-size, inherit);
	opacity: 0.8;
}

.nb-fancy-box__more {
	display: inline-flex;
	align-items: center;
	gap: 0.45em;
	margin-top: auto;
	padding-top: 0.4rem;
	font-weight: 600;
	font-size: var(--nb-fb-link-size, 0.9375rem);
	text-decoration: none;
	color: var(--nb-fb-link-color, var(--nova-accent, #2b6cff));
}

/* The arrow is drawn rather than typed, so it inherits colour and never
   depends on an icon font being present. */
.nb-fancy-box__arrow {
	width: 1em;
	height: 1em;
	flex: 0 0 auto;
	background: currentColor;
	clip-path: polygon(0 42%, 62% 42%, 44% 12%, 56% 0, 100% 50%, 56% 100%, 44% 88%, 62% 58%, 0 58%);
	transition: transform .3s ease;
}

.nb-fancy-box:hover .nb-fancy-box__arrow { transform: translateX(4px); }

.nb-fancy-box__button { margin-top: auto; align-self: var(--nb-fb-items, flex-start); }

/* Plain — the card itself lifts. */
.nb-fancy-box--plain:hover { transform: translateY(-6px); }
.nb-fancy-box--plain:hover .nb-fancy-box__icon { transform: translateY(-2px) scale(1.06); }

/* Underline — a rule draws itself under the title. */
.nb-fancy-box--underline .nb-fancy-box__title { position: relative; padding-bottom: 0.5rem; }

.nb-fancy-box--underline .nb-fancy-box__title::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 100%;
	height: 2px;
	background: var(--nova-accent, #2b6cff);
	transform: scaleX(var(--nb-fb-rule, 0.18));
	transform-origin: left center;
	transition: transform .45s cubic-bezier(.22,.61,.36,1);
}

.nb-fancy-box--underline.nb-fancy-box--align-center .nb-fancy-box__title::after { transform-origin: center; }
.nb-fancy-box--underline.nb-fancy-box--align-right  .nb-fancy-box__title::after { transform-origin: right center; }
.nb-fancy-box--underline:hover { --nb-fb-rule: 1; }

/* Image — the picture zooms behind a scrim that deepens. */
.nb-fancy-box--image {
	--nb-fb-color: #fff;
	--nb-fb-icon-color: #fff;
	--nb-fb-link-color: #fff;
	min-height: var(--nb-fb-min-height, 360px);
	background: var(--nb-fb-bg, #141922);
}

.nb-fancy-box--image .nb-fancy-box__body { justify-content: flex-end; }

.nb-fancy-box__media {
	position: absolute;
	inset: 0;
	z-index: 0;
	display: block;
	overflow: hidden;
}

.nb-fancy-box__image {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .6s cubic-bezier(.22,.61,.36,1);
}

.nb-fancy-box__media::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, rgba(0,0,0,.72) 0%, rgba(0,0,0,.28) 55%, rgba(0,0,0,.1) 100%);
	transition: opacity .3s ease;
	opacity: 0.85;
}

.nb-fancy-box--image:hover .nb-fancy-box__image { transform: scale(1.07); }
.nb-fancy-box--image:hover .nb-fancy-box__media::after { opacity: 1; }

/* Colour — a solid block that shifts on hover. */
.nb-fancy-box--color {
	background: var(--nb-fb-bg, var(--nova-surface, #f7f8fa));
}

.nb-fancy-box--color:hover {
	background: var(--nb-fb-hover-bg, var(--nova-accent, #2b6cff));
	color: var(--nb-fb-hover-color, #fff);
	transform: translateY(-4px);
}

.nb-fancy-box--color:hover .nb-fancy-box__icon,
.nb-fancy-box--color:hover .nb-fancy-box__more { color: inherit; }

/* Bar — a card standing on an accent foot that thickens. */
.nb-fancy-box--bar {
	background: var(--nb-fb-bg, var(--nova-body-bg, #fff));
	border: 1px solid var(--nova-border, #e2e5ea);
	padding-bottom: 4px;
}

.nb-fancy-box--bar::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 4px;
	background: var(--nb-fb-hover-bg, var(--nova-accent, #2b6cff));
	transition: height .3s ease;
}

.nb-fancy-box--bar:hover {
	transform: translateY(-6px);
	box-shadow: 0 18px 40px rgba(0,0,0,.12);
}

.nb-fancy-box--bar:hover::after { height: 8px; }

/* Whole-card link: keep the focus ring on the card, not the inner anchor. */
.nb-fancy-box--linked .nb-fancy-box__link:focus-visible {
	outline: 2px solid var(--nova-accent, #2b6cff);
	outline-offset: 3px;
	border-radius: inherit;
}

/* ---------------------------------------------------------------- Counter */

.nb-counter--align-center { text-align: center; }
.nb-counter--align-right  { text-align: right; }

.nb-counter__value {
	font-size: var(--nb-counter-size, clamp(2.2rem, 5vw, 3.4rem));
	font-weight: 700;
	line-height: 1;
	color: var(--nb-counter-color, var(--nova-accent, #2b6cff));
}

.nb-counter__label {
	margin-top: 0.5em;
	font-size: var(--nb-counter-label-size, 0.9375rem);
	opacity: 0.75;
}

/* ------------------------------------------------------------ Testimonial */

.nb-testimonial { margin: 0; }

.nb-testimonial--card {
	padding: 2rem;
	border-radius: var(--nova-radius, 8px);
	background: var(--nova-surface, #f7f8fa);
	box-shadow: var(--nova-shadow, 0 1px 3px rgba(0,0,0,.06));
}

.nb-testimonial--large { text-align: center; font-size: 1.25rem; }

.nb-testimonial__photo {
	width: 64px;
	height: 64px;
	border-radius: 50%;
	object-fit: cover;
	margin-bottom: 1rem;
}

.nb-testimonial--large .nb-testimonial__photo { margin-inline: auto; }

.nb-testimonial__rating { color: #f5a623; margin-bottom: 0.6rem; }
.nb-testimonial__rating .dashicons { font-size: 18px; width: 18px; height: 18px; }

.nb-testimonial__quote { margin: 0 0 1rem; font-size: var(--nb-testimonial-quote-size, inherit); }

.nb-testimonial__meta { display: flex; flex-direction: column; gap: 2px; }
.nb-testimonial__name { font-style: normal; font-weight: 600; font-size: var(--nb-testimonial-name-size, inherit); }
.nb-testimonial__role { font-size: var(--nb-testimonial-role-size, 0.875rem); opacity: 0.7; }

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

.nb-cta {
	display: flex;
	align-items: center;
	gap: 2rem;
	padding: 2.5rem;
	border-radius: var(--nova-radius, 8px);
	background: var(--nb-cta-bg, var(--nova-surface, #f7f8fa));
}

.nb-cta--stacked { flex-direction: column; text-align: center; }
.nb-cta__body { flex: 1 1 auto; }
.nb-cta__title { margin: 0 0 0.4em; font-size: var(--nb-cta-title-size, inherit); }
.nb-cta__text { margin: 0; font-size: var(--nb-cta-text-size, inherit); }
.nb-cta__action { flex: 0 0 auto; }

@media (max-width: 690px) {
	.nb-cta { flex-direction: column; text-align: center; padding: 1.75rem; }
}

/* -------------------------------------------------------------- Accordion */

.nb-accordion__item {
	border: 1px solid var(--nova-border, #e2e5ea);
	border-radius: var(--nova-radius, 6px);
	margin-bottom: 0.6rem;
	background: var(--nova-body-bg, #fff);
}

.nb-accordion__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 1rem 1.25rem;
	font-weight: 600;
	font-size: var(--nb-accordion-title-size, inherit);
	cursor: pointer;
	list-style: none;
}

.nb-accordion__head::-webkit-details-marker { display: none; }

.nb-accordion__marker {
	flex: 0 0 auto;
	width: 10px;
	height: 10px;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg);
	transition: transform .2s ease;
}

.nb-accordion__item[open] .nb-accordion__marker { transform: rotate(-135deg); }

.nb-accordion__body { padding: 0 1.25rem 1.25rem; font-size: var(--nb-accordion-body-size, inherit); }
.nb-accordion__body > :first-child { margin-top: 0; }

/* ------------------------------------------------------------------- Tabs */

.nb-tabs--vertical { display: flex; gap: 2rem; }
.nb-tabs--vertical .nb-tabs__nav { flex-direction: column; flex: 0 0 220px; border-bottom: 0; border-right: 1px solid var(--nova-border, #e2e5ea); }

.nb-tabs__nav {
	display: flex;
	flex-wrap: wrap;
	gap: 0.25rem;
	border-bottom: 1px solid var(--nova-border, #e2e5ea);
}

.nb-tabs__tab {
	appearance: none;
	background: none;
	border: 0;
	border-bottom: 2px solid transparent;
	padding: 0.85rem 1.15rem;
	font: inherit;
	font-weight: 600;
	font-size: var(--nb-tabs-title-size, inherit);
	color: inherit;
	opacity: 0.65;
	cursor: pointer;
}

.nb-tabs__tab[aria-selected="true"] {
	opacity: 1;
	color: var(--nova-accent, #2b6cff);
	border-bottom-color: var(--nova-accent, #2b6cff);
}

.nb-tabs--vertical .nb-tabs__tab { text-align: left; border-bottom: 0; border-right: 2px solid transparent; }
.nb-tabs--vertical .nb-tabs__tab[aria-selected="true"] { border-right-color: var(--nova-accent, #2b6cff); }

.nb-tabs__panel { padding-top: 1.5rem; font-size: var(--nb-tabs-body-size, inherit); }
.nb-tabs__panel > :first-child { margin-top: 0; }

/* ------------------------------------------------------------------ Image */

.nb-image { margin: 0; }
.nb-image--align-center { text-align: center; }
.nb-image--align-right  { text-align: right; }
.nb-image__img { height: auto; display: inline-block; }
.nb-image--rounded .nb-image__img { border-radius: var(--nova-radius, 8px); }
.nb-image--circle  .nb-image__img { border-radius: 50%; }
.nb-image--shadow  .nb-image__img { box-shadow: 0 18px 40px rgba(0,0,0,.14); border-radius: var(--nova-radius, 8px); }
.nb-image--border  .nb-image__img { border: 1px solid var(--nova-border, #e2e5ea); padding: 6px; border-radius: var(--nova-radius, 8px); }

.nb-image__caption { margin-top: 0.7rem; font-size: var(--nb-image-caption-size, 0.875rem); opacity: 0.7; }

/* ---------------------------------------------------------------- Gallery */

.nb-gallery__list {
	display: grid;
	grid-template-columns: repeat(var(--nb-cols, 3), minmax(0, 1fr));
	gap: var(--nb-gap, 16px);
	list-style: none;
	margin: 0;
	padding: 0;
}

.nb-gallery__item { margin: 0; overflow: hidden; border-radius: var(--nova-radius, 6px); }
.nb-gallery__img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .35s ease; }
.nb-gallery__item:hover .nb-gallery__img { transform: scale(1.05); }

.nb-gallery--masonry .nb-gallery__list {
	display: block;
	column-count: var(--nb-cols, 3);
	column-gap: var(--nb-gap, 16px);
}
.nb-gallery--masonry .nb-gallery__item { break-inside: avoid; margin-bottom: var(--nb-gap, 16px); }

@media (max-width: 1000px) { .nb-gallery__list { grid-template-columns: repeat(2, minmax(0, 1fr)); } .nb-gallery--masonry .nb-gallery__list { column-count: 2; } }
@media (max-width: 690px)  { .nb-gallery__list { grid-template-columns: 1fr; } .nb-gallery--masonry .nb-gallery__list { column-count: 1; } }

/* ------------------------------------------------------------------ Video */

.nb-video { position: relative; overflow: hidden; border-radius: var(--nova-radius, 8px); background: #000; }
.nb-video--16-9 { aspect-ratio: 16 / 9; }
.nb-video--4-3  { aspect-ratio: 4 / 3; }
.nb-video--1-1  { aspect-ratio: 1 / 1; }
.nb-video--21-9 { aspect-ratio: 21 / 9; }

.nb-video iframe, .nb-video video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

.nb-video__play {
	position: absolute;
	inset: 0;
	width: 100%;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
}

.nb-video__poster { width: 100%; height: 100%; object-fit: cover; }

.nb-video__icon {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 76px;
	height: 76px;
	border-radius: 50%;
	background: rgba(255,255,255,.92);
	transition: transform .2s ease;
}

.nb-video__icon::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 54%;
	transform: translate(-50%, -50%);
	border-style: solid;
	border-width: 12px 0 12px 20px;
	border-color: transparent transparent transparent #111;
}

.nb-video__play:hover .nb-video__icon { transform: translate(-50%, -50%) scale(1.08); }

/* ------------------------------------------------------------ Posts grid */

.nb-posts {
	display: grid;
	grid-template-columns: repeat(var(--nb-cols, 3), minmax(0, 1fr));
	gap: 2rem;
}

.nb-posts__item { display: flex; flex-direction: column; }
.nb-posts__thumb { display: block; overflow: hidden; border-radius: var(--nova-radius, 8px); margin-bottom: 1rem; }
.nb-posts__thumb img { display: block; width: 100%; height: auto; transition: transform .4s ease; }
.nb-posts__item:hover .nb-posts__thumb img { transform: scale(1.05); }
.nb-posts__title { margin: 0 0 0.4rem; font-size: var(--nb-posts-title-size, 1.1875rem); }
.nb-posts__title a { text-decoration: none; color: inherit; }
.nb-posts__title a:hover { color: var(--nova-accent, #2b6cff); }
.nb-posts__meta { font-size: var(--nb-posts-meta-size, 0.8125rem); opacity: 0.65; margin-bottom: 0.6rem; }
.nb-posts__excerpt { margin: 0 0 0.8rem; font-size: var(--nb-posts-excerpt-size, inherit); }
.nb-posts__more { font-weight: 600; font-size: var(--nb-posts-more-size, inherit); color: var(--nova-accent, #2b6cff); }

@media (max-width: 1000px) { .nb-posts { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 690px)  { .nb-posts { grid-template-columns: 1fr; } }

/* -------------------------------------------------------------- Portfolio */

.nb-portfolio__filters { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 1.75rem; }

.nb-portfolio__filters button {
	appearance: none;
	border: 1px solid var(--nova-border, #e2e5ea);
	background: none;
	border-radius: 999px;
	padding: 0.5em 1.1em;
	font: inherit;
	font-size: var(--nb-portfolio-filter-size, 0.875rem);
	cursor: pointer;
	color: inherit;
}

.nb-portfolio__filters button.is-active {
	background: var(--nova-accent, #2b6cff);
	border-color: var(--nova-accent, #2b6cff);
	color: #fff;
}

.nb-portfolio__grid {
	display: grid;
	grid-template-columns: repeat(var(--nb-cols, 3), minmax(0, 1fr));
	gap: 1.5rem;
}

.nb-portfolio__item { position: relative; overflow: hidden; border-radius: var(--nova-radius, 8px); }
.nb-portfolio__item[hidden] { display: none; }
.nb-portfolio__item a { display: block; position: relative; }
.nb-portfolio__item img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .45s ease; }

.nb-portfolio__overlay {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 4px;
	text-align: center;
	color: #fff;
	background: rgba(12, 16, 24, .62);
	opacity: 0;
	transition: opacity .3s ease, transform .3s ease;
}

.nb-portfolio__item:hover .nb-portfolio__overlay { opacity: 1; }
.nb-portfolio--hover-zoom .nb-portfolio__item:hover img { transform: scale(1.08); }
.nb-portfolio--hover-slide .nb-portfolio__overlay { transform: translateY(20px); }
.nb-portfolio--hover-slide .nb-portfolio__item:hover .nb-portfolio__overlay { transform: translateY(0); }

.nb-portfolio__title { font-weight: 600; font-size: var(--nb-portfolio-title-size, 1.0625rem); }
.nb-portfolio__cat { font-size: var(--nb-portfolio-cat-size, 0.8125rem); opacity: 0.8; }

@media (max-width: 1000px) { .nb-portfolio__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 690px)  { .nb-portfolio__grid { grid-template-columns: 1fr; } }

/* ------------------------------------------------------------------- Form */

.nb-form { font-size: var(--nb-form-size, inherit); }

.nb-form--card {
	padding: 2rem;
	border-radius: var(--nova-radius, 8px);
	background: var(--nova-surface, #f7f8fa);
	box-shadow: var(--nova-shadow, 0 1px 3px rgba(0,0,0,.06));
}

/* ----------------------------------------------------------------- Social */

.nb-social { display: flex; gap: 0.6rem; list-style: none; margin: 0; padding: 0; }
.nb-social--align-center { justify-content: center; }
.nb-social--align-right  { justify-content: flex-end; }

.nb-social__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: calc(var(--nb-social-size, 20px) * 2);
	height: calc(var(--nb-social-size, 20px) * 2);
	color: inherit;
	text-decoration: none;
	transition: background-color .2s ease, color .2s ease;
}

.nb-social--circle .nb-social__link { border-radius: 50%; background: var(--nova-surface, #f0f2f5); }
.nb-social--square .nb-social__link { border-radius: var(--nova-radius, 6px); background: var(--nova-surface, #f0f2f5); }

.nb-social__link .dashicons {
	font-size: var(--nb-social-size, 20px);
	width: var(--nb-social-size, 20px);
	height: var(--nb-social-size, 20px);
}

.nb-social__link:hover { background: var(--nova-accent, #2b6cff); color: #fff; }

/* ------------------------------------------------------------- Animations */

.nb-anim { opacity: 0; transition: opacity .7s ease, transform .7s ease; will-change: opacity, transform; }
.nb-anim--fade-up { transform: translateY(28px); }
.nb-anim--zoom { transform: scale(0.94); }
.nb-anim.is-in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
	.nb-anim { opacity: 1 !important; transform: none !important; transition: none !important; }
	.nb-btn:hover, .nb-gallery__item:hover .nb-gallery__img, .nb-posts__item:hover .nb-posts__thumb img { transform: none; }
	.nb-fancy-box, .nb-fancy-box * { transition: none !important; }
	.nb-fancy-box:hover, .nb-fancy-box:hover .nb-fancy-box__image, .nb-fancy-box:hover .nb-fancy-box__icon, .nb-fancy-box:hover .nb-fancy-box__arrow { transform: none; }
	.nb-fancy-box--underline { --nb-fb-rule: 1; }
}

/* ------------------------------------------------------------- Lightbox */

.nb-lb {
	position: fixed;
	inset: 0;
	z-index: 99999;
	display: flex;
	align-items: center;
	justify-content: center;
	background: rgba(8, 10, 14, .93);
	padding: 4vmin;
}

.nb-lb img { max-width: 100%; max-height: 92vh; border-radius: 4px; }

.nb-lb__close {
	position: absolute;
	top: 18px;
	right: 22px;
	appearance: none;
	background: none;
	border: 0;
	color: #fff;
	font-size: 34px;
	line-height: 1;
	cursor: pointer;
}

/* ==========================================================================
   Shape dividers, and the elements added alongside the Fancy Box.
   ========================================================================== */

/* ---------------------------------------------------------- Shape dividers */

.nb-row__shape {
	position: absolute;
	left: 0;
	right: 0;
	z-index: 0;
	display: block;
	line-height: 0;
	pointer-events: none;
	color: var(--nb-shape-color, var(--nova-body-bg, #fff));
}

.nb-row__shape svg {
	display: block;
	width: 100%;
	height: var(--nb-shape-height, 90px);
	fill: currentColor;
}

.nb-row__shape--top { top: 0; }
.nb-row__shape--bottom { bottom: 0; }

/* The paths are drawn filling the foot of their box, so the top edge is the
   same path turned over. */
.nb-row__shape--top svg { transform: scaleY(-1); }
.nb-row__shape--flip svg { transform: scaleX(-1); }
.nb-row__shape--top.nb-row__shape--flip svg { transform: scale(-1, -1); }

/* Content has to clear a shape that eats into the row. */
.nb-row--has-shape > .nb-row__inner { position: relative; z-index: 1; }

@media (max-width: 690px) {
	.nb-row__shape svg { height: calc(var(--nb-shape-height, 90px) * 0.6); }
}

/* ------------------------------------------------- Heading treatments/marks */

.nb-heading--gradient .nb-heading__title {
	background-image: linear-gradient(
		94deg,
		var(--nb-heading-from, var(--nova-accent, #2b6cff)),
		var(--nb-heading-to, #a855f7)
	);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

.nb-heading--outline .nb-heading__title {
	color: transparent;
	/* The fill is transparent here, so currentColor would be too — the stroke
	   needs a colour of its own. */
	-webkit-text-stroke: 1.5px var(--nb-heading-color, #141922);
	/* Firefox honours the stroke; browsers that do not still show the shadow. */
	text-shadow: 0 0 0 transparent;
}

.nb-hl {
	position: relative;
	display: inline-block;
	white-space: nowrap;
}

.nb-hl__text { position: relative; z-index: 1; }

.nb-hl__draw {
	position: absolute;
	left: -2%;
	width: 104%;
	overflow: visible;
	fill: none;
	stroke: var(--nova-accent, #2b6cff);
	stroke-width: 3;
	stroke-linecap: round;
	stroke-dasharray: var(--nb-hl-length, 400);
	stroke-dashoffset: var(--nb-hl-length, 400);
}

.nb-hl--scribble .nb-hl__draw { bottom: -0.12em; height: 0.32em; }
.nb-hl--circle .nb-hl__draw { top: -0.18em; height: 1.5em; }

/* Drawn once the heading scrolls in; without the class the stroke stays
   hidden rather than half-drawn. */
.nb-hl.is-drawn .nb-hl__draw {
	stroke-dashoffset: 0;
	transition: stroke-dashoffset 1s cubic-bezier(.22,.61,.36,1);
}

.nb-hl--marker { background-image: linear-gradient(transparent 58%, color-mix(in srgb, var(--nova-accent, #2b6cff) 32%, transparent) 58%); }
.nb-hl--color .nb-hl__text { color: var(--nova-accent, #2b6cff); }

/* ---------------------------------------------------------------- Flip box */

.nb-flip {
	perspective: 1400px;
	height: var(--nb-flip-height, 320px);
	border-radius: var(--nb-flip-radius, var(--nova-radius, 8px));
}

.nb-flip:focus { outline: none; }
.nb-flip:focus-visible { outline: 2px solid var(--nova-accent, #2b6cff); outline-offset: 4px; }

.nb-flip__inner {
	position: relative;
	width: 100%;
	height: 100%;
	transition: transform .7s cubic-bezier(.22,.61,.36,1);
	transform-style: preserve-3d;
}

.nb-flip:hover .nb-flip__inner,
.nb-flip:focus-within .nb-flip__inner,
.nb-flip.is-flipped .nb-flip__inner { transform: var(--nb-flip-turn, rotateY(180deg)); }

.nb-flip--vertical { --nb-flip-turn: rotateX(180deg); }

.nb-flip__face {
	position: absolute;
	inset: 0;
	display: flex;
	overflow: hidden;
	border-radius: inherit;
	backface-visibility: hidden;
	-webkit-backface-visibility: hidden;
}

.nb-flip__face--front {
	background: var(--nb-flip-front-bg, var(--nova-surface, #f7f8fa));
	color: var(--nb-flip-front-color, inherit);
}

.nb-flip__face--back {
	background: var(--nb-flip-back-bg, var(--nova-accent, #2b6cff));
	color: var(--nb-flip-back-color, #fff);
	transform: var(--nb-flip-turn, rotateY(180deg));
}

.nb-flip__media { position: absolute; inset: 0; }

.nb-flip__media .nb-flip__image {
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: 0.4;
}

.nb-flip__body {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 0.6rem;
	width: 100%;
	padding: 1.8rem;
	text-align: center;
}

.nb-flip__icon .dashicons {
	font-size: var(--nb-flip-icon-size, 40px);
	width: var(--nb-flip-icon-size, 40px);
	height: var(--nb-flip-icon-size, 40px);
}

.nb-flip__title { margin: 0; font-size: var(--nb-flip-title-size, 1.3125rem); }
.nb-flip__text { margin: 0; font-size: var(--nb-flip-text-size, inherit); opacity: 0.85; }
.nb-flip__button { margin-top: 0.4rem; }
.nb-flip__face--back .nb-btn--solid { background: #fff; border-color: #fff; color: var(--nb-flip-back-bg, var(--nova-accent, #2b6cff)); }

/* ----------------------------------------------------------- Pricing table */

.nb-pricing {
	position: relative;
	display: flex;
	flex-direction: column;
	height: 100%;
	padding: 2rem;
	border: 1px solid var(--nova-border, #e2e5ea);
	border-radius: var(--nova-radius, 8px);
	background: var(--nb-pricing-bg, var(--nova-body-bg, #fff));
	transition: transform .3s ease, box-shadow .3s ease;
}

.nb-pricing:hover { transform: translateY(-4px); box-shadow: 0 18px 40px rgba(0,0,0,.1); }

.nb-pricing--featured {
	border-color: var(--nb-pricing-accent, var(--nova-accent, #2b6cff));
	box-shadow: 0 20px 46px rgba(0,0,0,.12);
}

.nb-pricing__badge {
	position: absolute;
	top: 0;
	right: 1.6rem;
	transform: translateY(-50%);
	padding: 0.35em 0.9em;
	border-radius: 999px;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: #fff;
	background: var(--nb-pricing-accent, var(--nova-accent, #2b6cff));
}

.nb-pricing__head { text-align: center; padding-bottom: 1.2rem; border-bottom: 1px solid var(--nova-border, #e2e5ea); }
.nb-pricing__plan { margin: 0 0 0.6rem; font-size: var(--nb-pricing-plan-size, 1.125rem); letter-spacing: 0.02em; }

.nb-pricing__price {
	margin: 0;
	font-size: var(--nb-pricing-price-size, 3rem);
	font-weight: 700;
	line-height: 1;
	color: var(--nb-pricing-accent, var(--nova-accent, #2b6cff));
}

.nb-pricing__currency { font-size: 0.5em; vertical-align: super; margin-right: 0.1em; }
.nb-pricing__period { display: block; margin-top: 0.6rem; font-size: 0.875rem; font-weight: 400; color: inherit; opacity: 0.65; }

.nb-pricing__features {
	flex: 1 1 auto;
	margin: 1.2rem 0;
	padding: 0;
	list-style: none;
	font-size: var(--nb-pricing-features-size, inherit);
}

.nb-pricing__feature {
	position: relative;
	padding: 0.45rem 0 0.45rem 1.7rem;
}

.nb-pricing__feature::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.95em;
	width: 0.85em;
	height: 0.45em;
	border-left: 2px solid var(--nb-pricing-accent, var(--nova-accent, #2b6cff));
	border-bottom: 2px solid var(--nb-pricing-accent, var(--nova-accent, #2b6cff));
	transform: rotate(-45deg) translateY(-50%);
}

.nb-pricing__feature--off { opacity: 0.45; text-decoration: line-through; }
.nb-pricing__feature--off::before { border-color: currentColor; }

.nb-pricing__button { align-self: stretch; text-align: center; }

/* ------------------------------------------------------------ Team member */

.nb-team--align-center { text-align: center; }
.nb-team--align-right { text-align: right; }

.nb-team__media {
	position: relative;
	overflow: hidden;
	border-radius: var(--nova-radius, 8px);
	margin-bottom: 1rem;
}

.nb-team__photo { display: block; width: 100%; height: auto; transition: transform .5s ease; }
.nb-team:hover .nb-team__photo { transform: scale(1.05); }

.nb-team--round .nb-team__media {
	width: 180px;
	max-width: 100%;
	margin-inline: auto;
	border-radius: 50%;
	aspect-ratio: 1;
}

.nb-team--round .nb-team__photo { height: 100%; object-fit: cover; }

.nb-team__social {
	display: flex;
	gap: 0.4rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.nb-team--overlay .nb-team__social {
	position: absolute;
	inset: auto 0 0 0;
	justify-content: center;
	padding: 1rem;
	background: linear-gradient(to top, rgba(0,0,0,.65), transparent);
	opacity: 0;
	transform: translateY(8px);
	transition: opacity .3s ease, transform .3s ease;
}

.nb-team--overlay:hover .nb-team__social,
.nb-team--overlay:focus-within .nb-team__social { opacity: 1; transform: none; }

.nb-team--overlay .nb-team__social a { color: #fff; }

.nb-team__social a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	color: inherit;
	text-decoration: none;
	transition: background-color .2s ease, color .2s ease;
}

.nb-team__social a:hover { background: var(--nova-accent, #2b6cff); color: #fff; }
.nb-team--align-center .nb-team__social { justify-content: center; }
.nb-team--align-right .nb-team__social { justify-content: flex-end; }

.nb-team__name { margin: 0 0 0.2rem; font-size: var(--nb-team-name-size, 1.1875rem); }
.nb-team__role { margin: 0 0 0.5rem; font-size: var(--nb-team-role-size, 0.9375rem); color: var(--nova-accent, #2b6cff); }
.nb-team__bio { margin: 0 0 0.6rem; font-size: var(--nb-team-bio-size, inherit); opacity: 0.8; }

/* ---------------------------------------------------------- Progress bars */

.nb-progress__item + .nb-progress__item { margin-top: 1.1rem; }

.nb-progress__head {
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: 0.4rem;
	font-size: var(--nb-progress-label-size, 0.9375rem);
	font-weight: 600;
}

.nb-progress__track {
	position: relative;
	overflow: hidden;
	border-radius: 999px;
	background: var(--nb-progress-track, color-mix(in srgb, currentColor 12%, transparent));
}

.nb-progress__fill {
	display: block;
	width: var(--nb-progress-value, 0%);
	height: 100%;
	border-radius: inherit;
	background: var(--nb-progress-fill, var(--nova-accent, #2b6cff));
}

/* Grow from nothing only where the script has taken over, so the true width
   is what shows if it never runs. */
.nb-progress.is-ready .nb-progress__fill { width: 0; transition: width 1.2s cubic-bezier(.22,.61,.36,1); }
.nb-progress.is-ready.is-in .nb-progress__fill { width: var(--nb-progress-value, 0%); }

.nb-progress--line .nb-progress__track { height: 4px; }
.nb-progress--bar .nb-progress__track { height: 10px; }
.nb-progress--block .nb-progress__track { height: 22px; border-radius: var(--nova-radius, 6px); }

/* ---------------------------------------------------------------- Logo row */

.nb-logos {
	display: grid;
	grid-template-columns: repeat(var(--nb-cols, 5), minmax(0, 1fr));
	gap: 1.5rem 2rem;
	align-items: center;
	margin: 0;
	padding: 0;
	list-style: none;
}

.nb-logos__item { display: flex; align-items: center; justify-content: center; }

.nb-logos__img {
	max-width: 100%;
	height: var(--nb-logo-height, 48px);
	width: auto;
	object-fit: contain;
	transition: filter .3s ease, opacity .3s ease, transform .3s ease;
}

.nb-logos--grayscale .nb-logos__img { filter: grayscale(1); opacity: 0.65; }
.nb-logos--grayscale .nb-logos__item:hover .nb-logos__img { filter: none; opacity: 1; }
.nb-logos--fade .nb-logos__img { opacity: 0.45; }
.nb-logos--fade .nb-logos__item:hover .nb-logos__img { opacity: 1; transform: scale(1.04); }

@media (max-width: 1000px) { .nb-logos { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 690px)  { .nb-logos { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ----------------------------------------------------------- Rotating words */

.nb-rotating--align-center { text-align: center; }
.nb-rotating--align-right { text-align: right; }

.nb-rotating__title { margin: 0; font-size: var(--nb-rotating-size, inherit); }

.nb-rotating__words {
	position: relative;
	display: inline-grid;
	vertical-align: bottom;
	overflow: hidden;
	color: var(--nb-rotating-color, var(--nova-accent, #2b6cff));
}

/* Every word sits in the same grid cell, so the line is as wide as the
   longest of them and nothing jumps as they change. */
.nb-rotating__word {
	grid-area: 1 / 1;
	opacity: 0;
	transition: opacity .4s ease, transform .4s ease;
}

.nb-rotating__word.is-live { opacity: 1; }

.nb-rotating--slide .nb-rotating__word { transform: translateY(0.9em); }
.nb-rotating--slide .nb-rotating__word.is-live { transform: none; }
.nb-rotating--slide .nb-rotating__word.is-out { transform: translateY(-0.9em); opacity: 0; }

.nb-rotating--type .nb-rotating__words { border-right: 2px solid currentColor; animation: nb-caret 1s steps(1) infinite; }
.nb-rotating--type .nb-rotating__word { white-space: nowrap; }

@keyframes nb-caret { 50% { border-color: transparent; } }

/* ------------------------------------------------------- Image comparison */

.nb-compare {
	position: relative;
	overflow: hidden;
	border-radius: var(--nb-compare-radius, var(--nova-radius, 8px));
	touch-action: pan-y;
	user-select: none;
}

.nb-compare__pane { display: block; }
.nb-compare__pane--before { position: relative; }

.nb-compare__pane--after {
	position: absolute;
	inset: 0;
	width: 100%;
	clip-path: inset(0 0 0 var(--nb-compare-pos, 50%));
}

.nb-compare__img { display: block; width: 100%; height: 100%; object-fit: cover; }

.nb-compare__handle {
	position: absolute;
	top: 0;
	bottom: 0;
	left: var(--nb-compare-pos, 50%);
	width: 2px;
	background: #fff;
	box-shadow: 0 0 0 1px rgba(0,0,0,.15);
	pointer-events: none;
}

.nb-compare__handle::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 42px;
	height: 42px;
	transform: translate(-50%, -50%);
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 2px 10px rgba(0,0,0,.25);
}

.nb-compare__label {
	position: absolute;
	top: 1rem;
	padding: 0.3em 0.8em;
	border-radius: 999px;
	font-size: var(--nb-compare-label-size, 0.8125rem);
	font-weight: 600;
	color: #fff;
	background: rgba(0,0,0,.55);
}

.nb-compare__label--before { left: 1rem; }
.nb-compare__label--after { right: 1rem; }

/* The range is the real control: full-bleed and invisible, over the images. */
.nb-compare__range {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	margin: 0;
	opacity: 0;
	cursor: ew-resize;
	appearance: none;
	background: none;
}

.nb-compare__range:focus-visible { outline: 2px solid var(--nova-accent, #2b6cff); outline-offset: 3px; opacity: 1; }

/* ------------------------------------------------------ Testimonial slider */

.nb-tslider { position: relative; }

.nb-tslider__track {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: calc((100% - (var(--nb-tslider-per, 1) - 1) * 1.5rem) / var(--nb-tslider-per, 1));
	gap: 1.5rem;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	padding-bottom: 0.5rem;
}

.nb-tslider__track::-webkit-scrollbar { display: none; }

.nb-tslider__slide {
	scroll-snap-align: start;
	margin: 0;
	padding: 2rem;
	border-radius: var(--nova-radius, 8px);
	background: var(--nova-surface, #f7f8fa);
}

.nb-tslider--large .nb-tslider__slide { background: none; padding: 1rem 2rem; text-align: center; }
.nb-tslider--large .nb-tslider__quote { font-size: var(--nb-tslider-quote-size, 1.5rem); }

.nb-tslider__photo { width: 64px; height: 64px; border-radius: 50%; object-fit: cover; margin-bottom: 1rem; }
.nb-tslider--large .nb-tslider__photo { margin-inline: auto; }

.nb-tslider__quote { margin: 0 0 1rem; font-size: var(--nb-tslider-quote-size, inherit); }
.nb-tslider__meta { display: flex; flex-direction: column; gap: 2px; }
.nb-tslider--large .nb-tslider__meta { align-items: center; }
.nb-tslider__name { font-style: normal; font-weight: 600; font-size: var(--nb-tslider-name-size, inherit); }
.nb-tslider__role { font-size: 0.875rem; opacity: 0.7; }

.nb-tslider__nav {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 1rem;
	margin-top: 1.2rem;
}

.nb-tslider__arrow {
	appearance: none;
	width: 40px;
	height: 40px;
	border: 1px solid var(--nova-border, #e2e5ea);
	border-radius: 50%;
	background: none;
	color: inherit;
	cursor: pointer;
	position: relative;
	transition: background-color .2s ease, color .2s ease;
}

.nb-tslider__arrow::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 9px;
	height: 9px;
	border-top: 2px solid currentColor;
	border-right: 2px solid currentColor;
}

.nb-tslider__arrow--next::before { transform: translate(-65%, -50%) rotate(45deg); }
.nb-tslider__arrow--prev::before { transform: translate(-35%, -50%) rotate(-135deg); }
.nb-tslider__arrow:hover { background: var(--nova-accent, #2b6cff); color: #fff; border-color: transparent; }

.nb-tslider__dots { display: flex; gap: 0.4rem; }

.nb-tslider__dot {
	appearance: none;
	width: 9px;
	height: 9px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: color-mix(in srgb, currentColor 25%, transparent);
	cursor: pointer;
	transition: background-color .2s ease, transform .2s ease;
}

.nb-tslider__dot.is-active { background: var(--nova-accent, #2b6cff); transform: scale(1.3); }

@media (max-width: 1000px) { .nb-tslider__track { grid-auto-columns: calc((100% - 1.5rem) / min(var(--nb-tslider-per, 1), 2)); } }
@media (max-width: 690px)  { .nb-tslider__track { grid-auto-columns: 100%; } }

@media (prefers-reduced-motion: reduce) {
	.nb-flip__inner,
	.nb-progress.is-ready .nb-progress__fill,
	.nb-rotating__word,
	.nb-logos__img,
	.nb-team__photo { transition: none !important; }
	.nb-hl.is-drawn .nb-hl__draw { transition: none; }
	.nb-rotating--type .nb-rotating__words { animation: none; }
	.nb-pricing:hover, .nb-team:hover .nb-team__photo { transform: none; }
}
