/*
Theme Name: Nessa by Snapdecode
Theme URI: https://snapdecode.com/
Author: Snapdecode Technologies
Author URI: https://snapdecode.com/
Author Contact: hello@snapdecode.com
Description: Custom WordPress theme for Nessa Illumination Technologies by Snapdecode Technologies. Frontend is hand-coded PHP/CSS/JS; WordPress provides the CMS. Support: hello@snapdecode.com.
Version: 1.0.0
Requires at least: 6.0
Tested up to: 6.6
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: nessa
Tags: custom-menu, featured-images, translation-ready
*/

/*
 * The compiled site stylesheet lives in assets/css/main.css and is enqueued from
 * inc/enqueue.php. This file exists for the WordPress theme header and for small
 * theme-level overrides only - do not paste the compiled CSS here.
 */

/* Native scrollbar styling. Scrolling itself remains browser-controlled. */
:root {
	scrollbar-color: #f57525 #f3f4f6;
	scrollbar-width: thin;
}

::-webkit-scrollbar {
	width: 12px;
	height: 12px;
}

::-webkit-scrollbar-track {
	background: #f3f4f6;
}

::-webkit-scrollbar-thumb {
	background-color: #f57525;
	border: 3px solid #f3f4f6;
	border-radius: 999px;
}

::-webkit-scrollbar-thumb:hover {
	background-color: #dc6418;
}

/* WordPress core markup classes that the original static build never needed. */
.screen-reader-text {
	border: 0;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	width: 1px;
	word-wrap: normal !important;
}

.screen-reader-text:focus {
	background-color: #fff;
	border-radius: 3px;
	box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
	clip: auto !important;
	clip-path: none;
	color: #111;
	display: block;
	font-size: 0.875rem;
	font-weight: 600;
	height: auto;
	left: 5px;
	line-height: normal;
	padding: 15px 23px 14px;
	text-decoration: none;
	top: 5px;
	width: auto;
	z-index: 100000;
}

.alignleft {
	float: left;
	margin-right: 1.5rem;
}

.alignright {
	float: right;
	margin-left: 1.5rem;
}

.aligncenter {
	clear: both;
	display: block;
	margin-left: auto;
	margin-right: auto;
}

.wp-caption {
	max-width: 100%;
}

.wp-caption-text {
	font-size: 0.875rem;
	color: #6b7280;
	margin-top: 0.5rem;
}

.sticky,
.bypostauthor {
	/* Required by the WordPress theme review process. */
}

/* ========================================================
   Hero Section Typography, Colors & Buttons (100% Parity)
   ======================================================== */
.hero-banner-container {
	position: relative !important;
	width: 100% !important;
	min-height: calc(100vh - 80px) !important;
	min-height: 720px !important;
	max-height: 1050px !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	overflow: hidden !important;
	background-color: #0f172a !important;
}

@media (min-width: 1024px) {
	.hero-banner-container {
		min-height: calc(100vh - 96px) !important;
		min-height: 760px !important;
	}
}

.hero-vignette {
	position: absolute !important;
	inset: 0 !important;
	pointer-events: none !important;
	z-index: 10 !important;
	background: radial-gradient(circle at 50% 38%, rgba(15, 23, 42, 0.42) 0%, rgba(15, 23, 42, 0.20) 45%, rgba(15, 23, 42, 0.0) 75%) !important;
}

.hero-mist-gradient {
	position: absolute !important;
	inset: 0 !important;
	pointer-events: none !important;
	z-index: 10 !important;
	background: linear-gradient(to top, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.12) 12%, rgba(255, 255, 255, 0) 30%) !important;
}

.bottom-accent-border {
	position: absolute !important;
	bottom: 0 !important;
	left: 0 !important;
	right: 0 !important;
	height: 6px !important;
	z-index: 30 !important;
	background: linear-gradient(90deg, #5fd97f 0%, #5fd97f 45%, #f58220 55%, #f58220 100%) !important;
}

.hero-content-inner {
	position: relative !important;
	z-index: 20 !important;
	width: 100% !important;
	max-width: 1152px !important;
	margin: 0 auto !important;
	padding: 4rem 1.5rem !important;
	text-align: center !important;
	display: flex !important;
	flex-direction: column !important;
	align-items: center !important;
	justify-content: center !important;
	transform: translateY(-1.5rem);
}

@media (max-width: 768px) {
	.hero-content-inner {
		transform: translateY(0);
		padding: 2.5rem 1rem !important;
	}
}

.hero-headline-title {
	margin: 0 0 1.5rem 0 !important;
	padding: 0 !important;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;
	font-weight: 800 !important;
	font-size: 2.5rem !important;
	line-height: 1.15 !important;
	letter-spacing: -0.025em !important;
	color: #ffffff !important;
	text-align: center !important;
	filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.45));
}

@media (min-width: 640px) {
	.hero-headline-title {
		font-size: 3.25rem !important;
	}
}

@media (min-width: 768px) {
	.hero-headline-title {
		font-size: 4rem !important;
	}
}

@media (min-width: 1024px) {
	.hero-headline-title {
		font-size: 70px !important;
		line-height: 1.14 !important;
	}
}

.hero-headline-line {
	display: block !important;
}

.hero-highlight-orange {
	color: #f58220 !important;
	font-weight: 800 !important;
	filter: drop-shadow(0 2px 14px rgba(245, 130, 32, 0.45)) !important;
	text-shadow: none !important;
}

.hero-highlight-green {
	color: #5fd97f !important;
	font-weight: 800 !important;
	filter: drop-shadow(0 2px 14px rgba(95, 217, 127, 0.45)) !important;
	text-shadow: none !important;
}

.hero-description-text {
	max-width: 690px !important;
	width: 100% !important;
	margin: 1.5rem auto 2.25rem auto !important;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;
	font-size: 19px !important;
	line-height: 1.6 !important;
	font-weight: 400 !important;
	color: rgba(255, 255, 255, 0.9) !important;
	text-align: center !important;
	text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5) !important;
	-webkit-font-smoothing: antialiased;
}

.hero-desc-br {
	display: inline !important;
}

@media (max-width: 640px) {
	.hero-description-text {
		font-size: 15px !important;
		line-height: 1.5 !important;
		margin-top: 1rem !important;
		margin-bottom: 1.75rem !important;
	}
	.hero-desc-br {
		display: none !important;
	}
}

.hero-cta-wrapper {
	display: flex !important;
	flex-direction: row !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 1.25rem !important;
	width: auto !important;
	margin: 0 auto !important;
}

@media (max-width: 640px) {
	.hero-cta-wrapper {
		flex-direction: column !important;
		width: 100% !important;
		gap: 0.75rem !important;
	}
}

.hero-btn-explore {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 0.5rem !important;
	width: auto !important;
	padding: 0.875rem 1.75rem !important;
	background-color: #f58220 !important;
	color: #ffffff !important;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;
	font-size: 15px !important;
	font-weight: 600 !important;
	border-radius: 8px !important;
	box-shadow: 0 6px 20px rgba(245, 130, 32, 0.38) !important;
	text-decoration: none !important;
	transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1) !important;
	cursor: pointer;
	white-space: nowrap !important;
	border: none !important;
}

.hero-btn-explore:hover {
	filter: brightness(1.06) !important;
	color: #ffffff !important;
	transform: translateY(-1px);
	box-shadow: 0 8px 24px rgba(245, 130, 32, 0.5) !important;
}

.hero-btn-explore:active {
	transform: scale(0.98);
}

.hero-btn-story,
.glass-btn {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 0.5rem !important;
	width: auto !important;
	padding: 0.875rem 1.75rem !important;
	background: rgba(255, 255, 255, 0.28) !important;
	-webkit-backdrop-filter: blur(10px) !important;
	backdrop-filter: blur(10px) !important;
	border: 1px solid rgba(255, 255, 255, 0.45) !important;
	border-radius: 8px !important;
	color: #ffffff !important;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;
	font-size: 15px !important;
	font-weight: 600 !important;
	box-shadow: 0 4px 14px rgba(0, 0, 0, 0.15) !important;
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.15) !important;
	text-decoration: none !important;
	transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1) !important;
	cursor: pointer;
	white-space: nowrap !important;
}

.hero-btn-story:hover,
.glass-btn:hover {
	background: rgba(255, 255, 255, 0.38) !important;
	border-color: rgba(255, 255, 255, 0.65) !important;
	color: #ffffff !important;
	transform: translateY(-1px);
	box-shadow: 0 6px 18px rgba(0, 0, 0, 0.2) !important;
}

.hero-btn-story:active,
.glass-btn:active {
	transform: scale(0.98);
}

@media (max-width: 640px) {
	.hero-btn-explore,
	.hero-btn-story,
	.glass-btn {
		width: 100% !important;
	}
}

.hero-btn-icon-circle {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 20px !important;
	height: 20px !important;
	border-radius: 9999px !important;
	border: 1px solid rgba(255, 255, 255, 0.7) !important;
	transition: transform 0.2s ease;
	flex-shrink: 0;
}

.hero-btn-explore:hover .hero-btn-icon-circle {
	transform: translateX(2px);
}

.hero-btn-icon-circle-glass {
	background: rgba(255, 255, 255, 0.1) !important;
}

.hero-btn-story:hover .hero-btn-icon-circle-glass {
	transform: scale(1.05);
}

.hero-btn-svg {
	width: 12px !important;
	height: 12px !important;
	color: #ffffff !important;
}

.hero-btn-svg-play {
	width: 10px !important;
	height: 10px !important;
	color: #ffffff !important;
	transform: translateX(1px);
}

/* Header Get Quote Button */

.nessa-header-actions [data-testid="header-getquote-btn"] {
	border-radius: 9999px !important;
	background: linear-gradient(90deg, #f97316 0%, #10b981 100%) !important;
	color: #ffffff !important;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;
	font-size: 14px !important;
	font-weight: 600 !important;
	padding: 10px 24px !important;
	box-shadow: 0 10px 15px -3px rgba(16, 185, 129, 0.25), 0 4px 6px -4px rgba(16, 185, 129, 0.25) !important;
	border: none !important;
	cursor: pointer !important;
	transition: all 0.2s ease !important;
	white-space: nowrap !important;
}

.nessa-header-actions [data-testid="header-getquote-btn"]:hover {
	background: linear-gradient(90deg, #f97316 0%, #10b981 100%) !important;
	opacity: 0.95 !important;
	transform: scale(1.02) !important;
	box-shadow: 0 14px 20px -4px rgba(16, 185, 129, 0.3), 0 6px 10px -6px rgba(16, 185, 129, 0.3) !important;
}

.nessa-header-actions [data-testid="header-getquote-btn"]:active {
	transform: scale(0.95) !important;
}

[data-testid="mobile-getquote-btn"] {
	border-radius: 9999px !important;
	background: linear-gradient(90deg, #f97316 0%, #10b981 100%) !important;
	color: #ffffff !important;
	font-weight: 600 !important;
	box-shadow: 0 10px 15px -3px rgba(16, 185, 129, 0.25), 0 4px 6px -4px rgba(16, 185, 129, 0.25) !important;
}

/* ==========================================================================
   The Nessa Impact Section
   ========================================================================== */
.nessa-impact-section {
	position: relative !important;
	width: 100% !important;
	padding-top: 4rem !important;
	padding-bottom: 4rem !important;
	overflow: hidden !important;
	background-color: #ffffff !important;
}

@media (min-width: 1024px) {
	.nessa-impact-section {
		padding-top: 6rem !important;
		padding-bottom: 6rem !important;
	}
}

.impact-ambient-blob-1 {
	position: absolute !important;
	left: -80px !important;
	top: 50% !important;
	transform: translateY(-50%) !important;
	width: 480px !important;
	height: 480px !important;
	border-radius: 9999px !important;
	filter: blur(100px) !important;
	pointer-events: none !important;
}

.impact-ambient-blob-2 {
	position: absolute !important;
	right: -80px !important;
	top: 66% !important;
	transform: translateY(-50%) !important;
	width: 520px !important;
	height: 520px !important;
	border-radius: 9999px !important;
	filter: blur(110px) !important;
	pointer-events: none !important;
}

.impact-ambient-blob-3 {
	position: absolute !important;
	left: 25% !important;
	top: 40px !important;
	width: 300px !important;
	height: 300px !important;
	border-radius: 9999px !important;
	filter: blur(80px) !important;
	pointer-events: none !important;
}

/* Badge smooth transition gradient pill */
.pill-badge {
	background: linear-gradient(90deg, #f58220 0%, #ea791d 30%, #5fd97f 80%, #16a34a 100%) !important;
	box-shadow: 0 4px 18px rgba(95, 217, 127, 0.22) !important;
	display: inline-flex !important;
	align-items: center !important;
	gap: 0.5rem !important;
	padding: 0.375rem 1.25rem !important;
	border-radius: 9999px !important;
	color: #ffffff !important;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, sans-serif !important;
	font-size: 12px !important;
	font-weight: 700 !important;
	letter-spacing: 0.1em !important;
	text-transform: uppercase !important;
	transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1) !important;
	cursor: default !important;
}

.pill-badge:hover {
	transform: scale(1.02) !important;
}

.pill-badge-dot {
	width: 6px !important;
	height: 6px !important;
	border-radius: 9999px !important;
	background-color: #ffffff !important;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) !important;
	display: inline-block !important;
	flex-shrink: 0 !important;
}

/* Impact Section Title */
.impact-section-title {
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, sans-serif !important;
	font-size: 2rem !important;
	font-weight: 800 !important;
	letter-spacing: -0.025em !important;
	line-height: 1.15 !important;
	color: #0f172a !important;
	text-align: center !important;
	margin: 0 !important;
}

.cert-excellence-gradient {
	background: linear-gradient(90deg, #f58220 0%, #5fd97f 100%) !important;
	-webkit-background-clip: text !important;
	-webkit-text-fill-color: transparent !important;
	background-clip: text !important;
	color: transparent !important;
	display: inline !important;
	filter: drop-shadow(0 2px 10px rgba(95, 217, 127, 0.25)) !important;
}

@media (min-width: 640px) {
	.impact-section-title {
		font-size: 2.5rem !important;
	}
}

@media (min-width: 768px) {
	.impact-section-title {
		font-size: 3rem !important;
	}
}

@media (min-width: 1024px) {
	.impact-section-title {
		font-size: 48px !important;
	}
}

.awards-headline-single-line {
	white-space: normal;
}

@media (min-width: 640px) {
	.awards-headline-single-line {
		white-space: nowrap !important;
	}
}

@media (min-width: 640px) and (max-width: 960px) {
	.awards-headline-single-line {
		font-size: clamp(1.85rem, 3.6vw, 2.75rem) !important;
	}
}

@media (max-width: 639px) {
	.awards-headline-single-line {
		font-size: clamp(1.35rem, 5.5vw, 1.85rem) !important;
	}
}

/* Impact Grid */
.impact-grid {
	display: grid !important;
	grid-template-columns: repeat(1, minmax(0, 1fr)) !important;
	gap: 1.5rem !important;
	max-width: 1140px !important;
	margin-left: auto !important;
	margin-right: auto !important;
}

@media (min-width: 640px) {
	.impact-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	}
}

@media (min-width: 1024px) {
	.impact-grid {
		grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
	}
}

/* Card soft ambient wash and specular edge */
.impact-card {
	background: linear-gradient(180deg, rgba(255, 255, 255, 0.96) 0%, rgba(255, 255, 255, 0.88) 70%, rgba(254, 250, 246, 0.94) 100%) !important;
	box-shadow:
		0 10px 30px -10px rgba(0, 0, 0, 0.04),
		0 20px 40px -15px rgba(95, 217, 127, 0.05),
		0 0 0 1px rgba(220, 245, 230, 0.6) inset !important;
	border-radius: 24px !important;
	padding: 1.75rem !important;
	display: flex !important;
	flex-direction: column !important;
	align-items: center !important;
	justify-content: center !important;
	text-align: center !important;
	min-height: 250px !important;
	position: relative !important;
	-webkit-backdrop-filter: blur(8px) !important;
	backdrop-filter: blur(8px) !important;
	transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1) !important;
	overflow: hidden !important;
}

@media (min-width: 1024px) {
	.impact-card {
		padding: 2rem !important;
	}
}

.impact-card:hover {
	transform: translateY(-3px) !important;
	box-shadow:
		0 16px 36px -10px rgba(0, 0, 0, 0.06),
		0 25px 45px -15px rgba(245, 130, 32, 0.08),
		0 0 0 1px rgba(200, 240, 215, 0.9) inset !important;
}

/* Subtle stat glow & gradient text */
.stat-number,
.stat-number span {
	background: linear-gradient(180deg, #f7902d 0%, #eb6f0e 100%) !important;
	-webkit-background-clip: text !important;
	-webkit-text-fill-color: transparent !important;
}

.stat-number {
	filter: drop-shadow(0 2px 8px rgba(245, 130, 32, 0.18)) !important;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, sans-serif !important;
	font-size: 3rem !important;
	font-weight: 800 !important;
	letter-spacing: -0.03em !important;
	line-height: 1 !important;
	margin-bottom: 0.75rem !important;
	display: block !important;
}

@media (min-width: 1024px) {
	.stat-number {
		font-size: 54px !important;
	}
}

.impact-card-title {
	color: #0f172a !important;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, sans-serif !important;
	font-weight: 700 !important;
	font-size: 18px !important;
	line-height: 1.35 !important;
	margin-top: 0 !important;
	margin-bottom: 0.5rem !important;
}

.impact-card-desc {
	color: #64748b !important;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, sans-serif !important;
	font-size: 14px !important;
	font-weight: 400 !important;
	line-height: 1.55 !important;
	max-width: 200px !important;
	margin-left: auto !important;
	margin-right: auto !important;
	margin-bottom: 0 !important;
}

/* ==========================================================================
   Nessa Overview / Renewable Lighting Transformation Section
   ========================================================================== */
.overview-ambient-bg,
.ambient-bg {
	background: radial-gradient(circle at 12% 25%, rgba(95, 217, 127, 0.08) 0%, transparent 45%),
				radial-gradient(circle at 88% 55%, rgba(245, 130, 32, 0.07) 0%, transparent 45%),
				#ffffff !important;
}

.brand-orange,
.overview-brand-orange {
	color: #f58220 !important;
	filter: drop-shadow(0px 2px 10px rgba(245, 130, 32, 0.35)) !important;
	font-weight: 800 !important;
}

.brand-green,
.overview-brand-green {
	color: #5fd97f !important;
	filter: drop-shadow(0px 2px 10px rgba(95, 217, 127, 0.35)) !important;
	font-weight: 800 !important;
}

.overview-headline-refined {
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, sans-serif !important;
	font-size: 1.5rem !important;
	font-weight: 800 !important;
	color: #0f172a !important;
	letter-spacing: -0.025em !important;
	line-height: 1.3 !important;
	text-align: center !important;
	margin: 0 auto !important;
}

@media (min-width: 640px) {
	.overview-headline-refined {
		font-size: 1.875rem !important;
		line-height: 1.28 !important;
	}
}

@media (min-width: 768px) {
	.overview-headline-refined {
		font-size: 2.25rem !important;
		line-height: 1.25 !important;
	}
}

@media (min-width: 1024px) {
	.overview-headline-refined {
		font-size: 40px !important;
		line-height: 1.25 !important;
	}
}

.overview-visual-card {
	position: relative !important;
	width: 100% !important;
	border-radius: 1rem !important;
	overflow: hidden !important;
	box-shadow: 0 20px 50px -15px rgba(15, 23, 42, 0.12) !important;
	background: #020617 !important;
	transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.3s cubic-bezier(0.16, 1, 0.3, 1) !important;
}

@media (min-width: 768px) {
	.overview-visual-card {
		border-radius: 1.5rem !important;
	}
}

.overview-visual-card:hover {
	transform: translateY(-2px) !important;
	box-shadow: 0 25px 60px -15px rgba(15, 23, 42, 0.18) !important;
}

.overview-visual-media {
	width: 100% !important;
	height: auto !important;
	object-fit: cover !important;
	display: block !important;
}

.overview-video-container {
	position: absolute !important;
	inset: 0 !important;
	width: 100% !important;
	height: 100% !important;
	overflow: hidden !important;
	pointer-events: none !important;
	background: #020617 !important;
}


.overview-video-fallback {
	position: absolute !important;
	inset: 0 !important;
	width: 100% !important;
	height: 100% !important;
	object-fit: cover !important;
	z-index: 20 !important;
	transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1) !important;
}

.overview-video-fallback.is-hidden {
	opacity: 0 !important;
	pointer-events: none !important;
}

.overview-click-shield {
	position: absolute !important;
	inset: 0 !important;
	width: 100% !important;
	height: 100% !important;
	z-index: 30 !important;
	pointer-events: auto !important;
	cursor: default !important;
	background: transparent !important;
}



/* ==========================================================================
   Awards Marquee & Card Styling (100% Parity with Certified for Excellence)
   ========================================================================== */

.awards-marquee-track {
	display: flex !important;
	align-items: center !important;
	gap: 1.5rem !important;
	width: max-content !important;
	will-change: transform;
	animation: nessa-marquee var(--nessa-marquee-duration, 50s) linear infinite !important;
}

.awards-marquee-track:hover {
	animation-play-state: paused !important;
}

.nessa-award-card {
	width: 280px !important;
	height: 280px !important;
	flex-shrink: 0 !important;
	background: #ffffff !important;
	border-radius: 20px !important;
	border: 1px solid rgba(226, 232, 240, 0.9) !important;
	box-shadow: 0 4px 20px -2px rgba(15, 23, 42, 0.05), 0 0 0 1px rgba(95, 217, 127, 0.15) !important;
	padding: 16px !important;
	user-select: none !important;
	-webkit-user-select: none;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	position: relative !important;
	overflow: hidden !important;
	transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.3s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.3s ease !important;
	outline: none !important;
}

@media (min-width: 1024px) {
	.nessa-award-card {
		width: 320px !important;
		height: 320px !important;
		padding: 20px !important;
	}
}

.nessa-award-card:hover,
.nessa-award-card:focus-visible {
	transform: translateY(-4px) scale(1.02) !important;
	box-shadow: 0 16px 32px -8px rgba(15, 23, 42, 0.12) !important;
}

.nessa-award-card .award-card-img {
	max-width: 100% !important;
	max-height: 100% !important;
	width: auto !important;
	height: auto !important;
	object-fit: contain !important;
	border-radius: 12px !important;
	transition: transform 0.4s ease !important;
	display: block !important;
}

.nessa-award-card:hover .award-card-img {
	transform: scale(1.04) !important;
}

.nessa-awards-carousel-viewport {
	width: 100%;
	overflow: hidden;
	padding: 12px 0 14px;
	touch-action: pan-y;
	-webkit-mask-image: linear-gradient(to right, transparent, #000 6%, #000 94%, transparent);
	mask-image: linear-gradient(to right, transparent, #000 6%, #000 94%, transparent);
}

.nessa-awards-carousel-track {
	gap: 0 !important;
	animation: none !important;
	transform: translate3d(0, 0, 0);
}

.nessa-awards-carousel-controls,
.nessa-cert-carousel-controls {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	margin-top: 12px;
}

.nessa-awards-carousel-button,
.nessa-cert-carousel-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 42px;
	height: 42px;
	padding: 0;
	border: 1px solid #d7dee6;
	border-radius: 9999px;
	background: #ffffff;
	color: #334155;
	box-shadow: 0 4px 14px rgba(15, 23, 42, 0.08);
	cursor: pointer;
	transition: transform 180ms ease, border-color 180ms ease, background-color 180ms ease, color 180ms ease, box-shadow 180ms ease;
}

.nessa-awards-carousel-button svg,
.nessa-cert-carousel-button svg {
	width: 19px;
	height: 19px;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.nessa-awards-carousel-button:hover,
.nessa-cert-carousel-button:hover {
	border-color: #9ca3af;
	color: #111827;
	box-shadow: 0 6px 18px rgba(15, 23, 42, 0.12);
	transform: translateY(-1px);
}

.nessa-awards-carousel-button.is-next,
.nessa-cert-carousel-button.is-next {
	border-color: #d7dee6;
	background: #ffffff;
	color: #334155;
}

.nessa-awards-carousel-button.is-next:hover,
.nessa-cert-carousel-button.is-next:hover {
	border-color: #9ca3af;
	background: #ffffff;
	color: #111827;
	box-shadow: 0 4px 14px rgba(15, 23, 42, 0.12);
}

.nessa-awards-carousel-button:focus-visible,
.nessa-cert-carousel-button:focus-visible {
	outline: 3px solid rgba(245, 130, 32, 0.3);
	outline-offset: 3px;
}

.nessa-awards-carousel-shell,
.nessa-cert-carousel-shell {
	position: relative;
	isolation: isolate;
	width: calc(100% - 3rem);
	margin-inline: auto;
	overflow: visible;
}

.nessa-cert-carousel-viewport {
	width: 100%;
}

.nessa-awards-carousel-shell > .nessa-awards-carousel-controls,
.nessa-cert-carousel-shell > .nessa-cert-carousel-controls {
	position: absolute;
	inset: 0;
	z-index: 20;
	display: block;
	margin: 0;
	pointer-events: none;
}

.nessa-awards-carousel-shell .nessa-awards-carousel-button,
.nessa-cert-carousel-shell .nessa-cert-carousel-button {
	position: absolute;
	top: 50%;
	left: -1.3125rem;
	pointer-events: auto;
	transform: translateY(-50%);
	box-shadow: 0 0 0 5px rgba(255, 255, 255, 0.9), 0 8px 22px rgba(15, 23, 42, 0.14);
}

.nessa-awards-carousel-shell .nessa-awards-carousel-button.is-next,
.nessa-cert-carousel-shell .nessa-cert-carousel-button.is-next {
	right: -1.3125rem;
	left: auto;
}

.nessa-awards-carousel-shell .nessa-awards-carousel-button:hover,
.nessa-cert-carousel-shell .nessa-cert-carousel-button:hover {
	transform: translateY(calc(-50% - 1px));
}

@media (min-width: 1024px) {
	.nessa-awards-carousel-shell,
	.nessa-cert-carousel-shell {
		width: calc(100% - 6rem);
	}
}

@media (max-width: 639px) {
	.nessa-awards-carousel-viewport {
		-webkit-mask-image: linear-gradient(to right, transparent, #000 3%, #000 97%, transparent);
		mask-image: linear-gradient(to right, transparent, #000 3%, #000 97%, transparent);
	}
}

@media (prefers-reduced-motion: reduce) {
	.nessa-awards-carousel-track {
		will-change: auto;
	}

	.nessa-awards-carousel-button,
	.nessa-cert-carousel-button {
		transition: none;
	}
}

/* ==========================================================================
   Certifications Marquee & Card Styling
   ========================================================================== */

.cert-marquee-track {
	display: flex !important;
	align-items: stretch !important;
	gap: 1.5rem !important;
	width: max-content !important;
	will-change: transform;
	animation: nessa-marquee var(--nessa-marquee-duration, 70s) linear infinite !important;
}

.cert-marquee-track:hover {
	animation-play-state: paused !important;
}

.nessa-cert-card {
	width: 290px !important;
	flex-shrink: 0 !important;
	background: #ffffff !important;
	border-radius: 20px !important;
	border: 1px solid rgba(226, 232, 240, 0.9) !important;
	box-shadow: 0 4px 20px -2px rgba(15, 23, 42, 0.05), 0 0 0 1px rgba(95, 217, 127, 0.15) !important;
	padding: 14px !important;
	cursor: pointer !important;
	user-select: none !important;
	-webkit-user-select: none;
	display: flex !important;
	flex-direction: column !important;
	transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.3s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.3s ease !important;
	text-decoration: none !important;
	outline: none !important;
}

.nessa-cert-card:hover,
.nessa-cert-card:focus-visible {
	transform: translateY(-5px) !important;
	box-shadow: 0 18px 38px -10px rgba(15, 23, 42, 0.12), 0 0 0 2px #f58220 !important;
	border-color: #f58220 !important;
}

.cert-card-media-wrapper {
	position: relative !important;
	width: 100% !important;
	height: 215px !important;
	border-radius: 14px !important;
	overflow: hidden !important;
	background: #f8fafc !important;
	border: 1px solid #e2e8f0 !important;
	display: flex !important;
	align-items: flex-start !important;
	justify-content: center !important;
}

.cert-card-img {
	width: 100% !important;
	height: 100% !important;
	object-fit: cover !important;
	object-position: top center !important;
	transition: transform 0.4s ease !important;
	display: block !important;
}

.nessa-cert-card:hover .cert-card-img {
	transform: scale(1.04) !important;
}

.cert-card-hover-overlay {
	position: absolute !important;
	inset: 0 !important;
	background: rgba(15, 23, 42, 0.45) !important;
	-webkit-backdrop-filter: blur(2px) !important;
	backdrop-filter: blur(2px) !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	opacity: 0 !important;
	transition: opacity 0.25s ease !important;
}

.nessa-cert-card:hover .cert-card-hover-overlay,
.nessa-cert-card:focus-visible .cert-card-hover-overlay {
	opacity: 1 !important;
}

.cert-card-zoom-badge {
	display: inline-flex !important;
	align-items: center !important;
	gap: 6px !important;
	padding: 7px 14px !important;
	border-radius: 9999px !important;
	background: rgba(255, 255, 255, 0.96) !important;
	color: #0f172a !important;
	font-size: 12px !important;
	font-weight: 700 !important;
	box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18) !important;
	transform: translateY(4px) !important;
	transition: transform 0.25s ease !important;
}

.nessa-cert-card:hover .cert-card-zoom-badge {
	transform: translateY(0) !important;
}

.cert-type-pill {
	position: absolute !important;
	top: 10px !important;
	left: 10px !important;
	font-size: 10px !important;
	font-weight: 800 !important;
	letter-spacing: 0.08em !important;
	text-transform: uppercase !important;
	padding: 4px 8px !important;
	border-radius: 6px !important;
	-webkit-backdrop-filter: blur(8px) !important;
	backdrop-filter: blur(8px) !important;
	z-index: 5 !important;
}

.cert-pill-bis {
	background: rgba(95, 217, 127, 0.92) !important;
	color: #064e3b !important;
	border: 1px solid rgba(16, 185, 129, 0.3) !important;
}

.cert-pill-iso {
	background: rgba(245, 130, 32, 0.92) !important;
	color: #7c2d12 !important;
	border: 1px solid rgba(234, 88, 12, 0.3) !important;
}

.cert-pill-rohs {
	background: rgba(16, 185, 129, 0.92) !important;
	color: #064e3b !important;
	border: 1px solid rgba(5, 150, 105, 0.3) !important;
}

.cert-card-body {
	padding: 12px 4px 2px !important;
	display: flex !important;
	flex-direction: column !important;
	flex-grow: 1 !important;
}

.cert-card-title {
	font-size: 15px !important;
	font-weight: 700 !important;
	color: #0f172a !important;
	margin: 0 !important;
	line-height: 1.3 !important;
	white-space: nowrap !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
	transition: color 0.2s ease !important;
}

.nessa-cert-card:hover .cert-card-title {
	color: #f58220 !important;
}

.cert-card-subtitle {
	font-size: 12px !important;
	color: #64748b !important;
	margin: 4px 0 0 0 !important;
	white-space: nowrap !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
	line-height: 1.3 !important;
}

.cert-card-meta {
	margin-top: 8px !important;
}

.cert-meta-code {
	font-size: 11px !important;
	font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace !important;
	color: #047857 !important;
	background: #ecfdf5 !important;
	padding: 3px 7px !important;
	border-radius: 4px !important;
	display: inline-block !important;
	max-width: 100% !important;
	white-space: nowrap !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
	border: 1px solid #d1fae5 !important;
}

/* ==========================================================================
   Certificate Lightbox Modal Styling
   ========================================================================== */

.nessa-cert-lightbox {
	position: fixed !important;
	inset: 0 !important;
	z-index: 100000 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	padding: 16px !important;
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.3s cubic-bezier(0.16, 1, 0.3, 1) !important;
}

.nessa-cert-lightbox.is-open {
	opacity: 1 !important;
	pointer-events: auto !important;
}

.nessa-cert-lightbox[hidden] {
	display: none !important;
}

.nessa-lightbox-backdrop {
	position: absolute !important;
	inset: 0 !important;
	background: rgba(15, 23, 42, 0.88) !important;
	-webkit-backdrop-filter: blur(14px) !important;
	backdrop-filter: blur(14px) !important;
}

.nessa-lightbox-container {
	position: relative !important;
	z-index: 10 !important;
	width: 100% !important;
	max-width: 860px !important;
	max-height: 94vh !important;
	background: #ffffff !important;
	border-radius: 24px !important;
	box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.1) !important;
	overflow: hidden !important;
	display: flex !important;
	flex-direction: column !important;
	transform: scale(0.95);
	transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1) !important;
}

.nessa-cert-lightbox.is-open .nessa-lightbox-container {
	transform: scale(1) !important;
}

.nessa-lightbox-bar {
	height: 4px !important;
	width: 100% !important;
	background: linear-gradient(90deg, #5fd97f 0%, #48c66a 45%, #f58220 100%) !important;
}

.nessa-lightbox-header {
	display: flex !important;
	align-items: center !important;
	justify-content: space-between !important;
	padding: 14px 20px !important;
	border-bottom: 1px solid #f1f5f9 !important;
	background: #ffffff !important;
	gap: 12px !important;
}

.nessa-lightbox-header-info {
	min-width: 0 !important;
	flex: 1 !important;
}

.nessa-lightbox-header-info .cert-type-pill {
	position: static !important;
	display: inline-block !important;
}

.nessa-lightbox-body {
	position: relative !important;
	flex: 1 !important;
	min-height: 280px !important;
	max-height: calc(94vh - 130px) !important;
	background: #f8fafc !important;
	overflow: auto !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	padding: 20px !important;
}

.nessa-lightbox-image-viewport {
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	max-width: 100% !important;
	max-height: 100% !important;
}

.nessa-lightbox-img {
	max-height: calc(94vh - 180px) !important;
	max-width: 100% !important;
	object-fit: contain !important;
	border-radius: 10px !important;
	box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15) !important;
	border: 1px solid #e2e8f0 !important;
	background: #ffffff !important;
	transition: opacity 0.2s ease !important;
}

.nessa-lightbox-nav-btn {
	position: absolute !important;
	top: 50% !important;
	transform: translateY(-50%) !important;
	z-index: 20 !important;
	width: 44px !important;
	height: 44px !important;
	border-radius: 50% !important;
	background: rgba(255, 255, 255, 0.95) !important;
	border: 1px solid #e2e8f0 !important;
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15) !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	cursor: pointer !important;
	color: #0f172a !important;
	transition: all 0.2s ease !important;
	padding: 0 !important;
}

.nessa-lightbox-nav-btn:hover {
	background: #f58220 !important;
	color: #ffffff !important;
	border-color: #f58220 !important;
	transform: translateY(-50%) scale(1.08) !important;
}

.nessa-lightbox-nav-btn.prev {
	left: 16px !important;
}

.nessa-lightbox-nav-btn.next {
	right: 16px !important;
}

.nessa-lightbox-action-btn,
.nessa-lightbox-close-btn {
	width: 38px !important;
	height: 38px !important;
	border-radius: 50% !important;
	background: #f1f5f9 !important;
	border: 0 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	cursor: pointer !important;
	color: #475569 !important;
	transition: all 0.2s ease !important;
	text-decoration: none !important;
	padding: 0 !important;
}

.nessa-lightbox-close-btn:hover {
	background: #fee2e2 !important;
	color: #ef4444 !important;
}

.nessa-lightbox-action-btn:hover {
	background: #ecfdf5 !important;
	color: #10b981 !important;
}

.nessa-lightbox-footer {
	display: flex !important;
	align-items: center !important;
	justify-content: space-between !important;
	padding: 10px 20px !important;
	background: #ffffff !important;
	border-top: 1px solid #f1f5f9 !important;
}

/* ==========================================================================
   Client Category Cards & Equalized Logo Grid Styling
   ========================================================================== */

.client-category-card {
	background: #ffffff !important;
	border-radius: 24px !important;
	border: 1px solid rgba(226, 232, 240, 0.9) !important;
	box-shadow: 0 10px 30px -5px rgba(15, 23, 42, 0.05) !important;
	overflow: hidden !important;
	display: flex !important;
	flex-direction: column !important;
	transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.35s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.35s ease !important;
}

.client-category-card:hover {
	transform: translateY(-4px) !important;
	box-shadow: 0 20px 40px -10px rgba(15, 23, 42, 0.09) !important;
	border-color: rgba(203, 213, 225, 0.9) !important;
}

.client-card-banner {
	position: relative !important;
	width: 100% !important;
	height: 210px !important;
	overflow: hidden !important;
	flex-shrink: 0 !important;
	background: #0f172a !important;
}

@media (min-width: 640px) {
	.client-card-banner {
		height: 224px !important;
	}
}

.client-card-banner img {
	position: absolute !important;
	inset: 0 !important;
	width: 100% !important;
	height: 100% !important;
	object-fit: cover !important;
	transition: transform 0.7s cubic-bezier(0.16, 1, 0.3, 1) !important;
}

.client-category-card:hover .client-card-banner img {
	transform: scale(1.05) !important;
}

.client-card-content {
	flex: 1 1 auto !important;
	display: flex !important;
	flex-direction: column !important;
	padding: 24px !important;
}

@media (min-width: 640px) {
	.client-card-content {
		padding: 28px !important;
	}
}

.client-category-header {
	display: flex !important;
	align-items: center !important;
	gap: 14px !important;
	margin-bottom: 12px !important;
}

.client-category-icon-badge {
	width: 44px !important;
	height: 44px !important;
	border-radius: 9999px !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	flex-shrink: 0 !important;
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12) !important;
}

.client-category-title {
	font-family: 'Plus Jakarta Sans', Inter, system-ui, sans-serif !important;
	font-size: 19px !important;
	font-weight: 800 !important;
	letter-spacing: 0.04em !important;
	text-transform: uppercase !important;
	margin: 0 !important;
	line-height: 1.2 !important;
}

@media (min-width: 640px) {
	.client-category-title {
		font-size: 20px !important;
	}
}

.client-category-desc {
	font-family: 'Plus Jakarta Sans', Inter, system-ui, sans-serif !important;
	font-size: 14px !important;
	color: #64748b !important;
	line-height: 1.6 !important;
	margin: 0 0 20px 0 !important;
	min-height: 44px !important;
}

@media (min-width: 640px) {
	.client-category-desc {
		font-size: 14.5px !important;
		margin-bottom: 24px !important;
	}
}

.client-logo-grid {
	display: grid !important;
	grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
	gap: 10px !important;
	margin-top: auto !important;
}

@media (min-width: 640px) {
	.client-logo-grid {
		gap: 12px !important;
	}
}

.client-logo-tile {
	height: 50px !important;
	background: #f8fafc !important;
	border: 1px solid #f1f5f9 !important;
	border-radius: 12px !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	padding: 6px 10px !important;
	transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1) !important;
	position: relative !important;
	overflow: hidden !important;
	width: 100% !important;
	cursor: pointer !important;
}

@media (min-width: 640px) {
	.client-logo-tile {
		height: 54px !important;
		padding: 8px 12px !important;
	}
}

.client-logo-tile:hover {
	background: #ffffff !important;
	border-color: #cbd5e1 !important;
	transform: translateY(-2px) !important;
	box-shadow: 0 6px 16px -2px rgba(15, 23, 42, 0.08) !important;
}

.client-logo-tile:focus-visible {
	outline: 2px solid #f58220 !important;
	outline-offset: 2px !important;
}

.client-logo-img {
	max-height: 24px !important;
	max-width: 80% !important;
	width: auto !important;
	height: auto !important;
	object-fit: contain !important;
	display: block !important;
	margin: auto !important;
	transition: transform 0.25s ease !important;
}

@media (min-width: 640px) {
	.client-logo-img {
		max-height: 27px !important;
		max-width: 82% !important;
	}
}

.client-logo-tile:hover .client-logo-img {
	transform: scale(1.05) !important;
}

.client-category-icon-badge {
	cursor: pointer !important;
	transition: transform 0.2s ease !important;
}

.client-category-icon-badge:hover {
	transform: scale(1.08) !important;
}

/* ==========================================================================
   Client / Partner Lightbox Modal Styling
   ========================================================================== */

.nessa-client-lightbox {
	position: fixed !important;
	inset: 0 !important;
	z-index: 100000 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	padding: 16px !important;
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.3s cubic-bezier(0.16, 1, 0.3, 1) !important;
}

.nessa-client-lightbox.is-open {
	opacity: 1 !important;
	pointer-events: auto !important;
}

.nessa-client-lightbox[hidden] {
	display: none !important;
}

.client-lightbox-container {
	max-width: 640px !important;
	transform: scale(0.95);
	transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1) !important;
}

.nessa-client-lightbox.is-open .client-lightbox-container {
	transform: scale(1) !important;
}

.client-lightbox-body {
	min-height: 260px !important;
	padding: 24px 20px !important;
}

.client-lightbox-viewport {
	width: 100% !important;
	max-width: 480px !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
}

.client-lightbox-logo-box {
	width: 100% !important;
	height: 210px !important;
	background: #ffffff !important;
	border-radius: 20px !important;
	border: 1px solid #e2e8f0 !important;
	box-shadow: 0 10px 30px -5px rgba(15, 23, 42, 0.08) !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	padding: 24px !important;
}

@media (min-width: 640px) {
	.client-lightbox-logo-box {
		height: 250px !important;
		padding: 36px !important;
	}
}

.client-lightbox-img {
	max-height: 120px !important;
	max-width: 82% !important;
	width: auto !important;
	height: auto !important;
	object-fit: contain !important;
	display: block !important;
	margin: auto !important;
	transition: opacity 0.2s ease !important;
}

@media (min-width: 640px) {
	.client-lightbox-img {
		max-height: 140px !important;
		max-width: 85% !important;
	}
}

.client-lightbox-category-pill {
	font-size: 11px !important;
	font-weight: 800 !important;
	letter-spacing: 0.06em !important;
	text-transform: uppercase !important;
	padding: 4px 10px !important;
	border-radius: 6px !important;
	display: inline-block !important;
}

.client-pill-corporates {
	background: #fff7ed !important;
	color: #ea580c !important;
	border: 1px solid #fed7aa !important;
}

.client-pill-psus {
	background: #ecfdf5 !important;
	color: #059669 !important;
	border: 1px solid #a7f3d0 !important;
}

.client-pill-foundations {
	background: #eff6ff !important;
	color: #1d4ed8 !important;
	border: 1px solid #bfdbfe !important;
}

/* ==========================================================================
   Smart Lighting Solutions Switcher & Cards Refinement
   ========================================================================== */

.nessa-switcher-tab {
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, sans-serif !important;
	font-weight: 800 !important;
	letter-spacing: -0.02em !important;
	color: #94a3b8 !important;
	background: none !important;
	border: none !important;
	cursor: pointer !important;
	transition: color 0.3s ease !important;
}

.nessa-switcher-tab.is-active,
.nessa-switcher-tab[aria-selected="true"] {
	color: #16a34a !important;
}

.nessa-switcher-tab:not(.is-active):hover {
	color: #475569 !important;
}

.nessa-tab-indicator-bar {
	position: absolute !important;
	left: 0 !important;
	right: 0 !important;
	bottom: -1px !important;
	height: 3px !important;
	background: #16a34a !important;
	border-radius: 9999px 9999px 0 0 !important;
	box-shadow: 0 2px 10px rgba(22, 163, 74, 0.4) !important;
}

.nessa-tab-indicator-rhombus {
	position: absolute !important;
	left: 50% !important;
	transform: translateX(-50%) rotate(45deg) !important;
	bottom: -5px !important;
	width: 10px !important;
	height: 10px !important;
	background: #16a34a !important;
	box-shadow: 0 2px 10px rgba(22, 163, 74, 0.4) !important;
}

.nessa-switcher-leaf-badge {
	position: relative !important;
	width: 5rem !important;
	height: 5rem !important;
	border-radius: 9999px !important;
	background: linear-gradient(135deg, #5fd97f 0%, #16a34a 50%, #15803d 100%) !important;
	box-shadow: 0 12px 30px -4px rgba(22, 163, 74, 0.45) !important;
	border: 4px solid #ffffff !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	overflow: hidden !important;
}

@media (min-width: 1024px) {
	.nessa-switcher-leaf-badge {
		width: 7rem !important;
		height: 7rem !important;
	}
}

.nessa-switcher-eyebrow {
	display: inline-flex !important;
	align-items: center !important;
	padding: 0.35rem 0.85rem !important;
	border-radius: 9999px !important;
	background: rgba(95, 217, 127, 0.15) !important;
	border: 1px solid rgba(95, 217, 127, 0.35) !important;
	color: #15803d !important;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, sans-serif !important;
	font-size: 0.75rem !important;
	font-weight: 800 !important;
	letter-spacing: 0.08em !important;
	text-transform: uppercase !important;
	margin-bottom: 0.75rem !important;
}

.nessa-switcher-heading {
	font-family: 'Plus Jakarta Sans', Inter, system-ui, sans-serif !important;
	font-size: clamp(2rem, 3.5vw, 2.5rem) !important;
	font-weight: 800 !important;
	color: #0f172a !important;
	letter-spacing: -0.025em !important;
	line-height: 1.15 !important;
	margin-bottom: 1.25rem !important;
}

@media (max-width: 1023px) {
	#switcher-content {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* Both tabs' copy share one grid cell so the column keeps the taller height and never jumps on switch. */
.nessa-switcher-copy {
	display: grid;
	margin-bottom: 1.75rem;
}

.nessa-switcher-copy > [data-nessa-tileset] {
	grid-area: 1 / 1;
}

.nessa-switcher-copy > [data-nessa-tileset][hidden] {
	display: block !important;
	visibility: hidden;
}

.nessa-switcher-lead {
	font-family: 'Plus Jakarta Sans', Inter, system-ui, sans-serif !important;
	font-size: 1.125rem !important;
	font-weight: 700 !important;
	color: #0f172a !important;
	line-height: 1.4 !important;
	margin: 0 0 0.625rem !important;
}

.nessa-switcher-desc {
	font-family: 'Plus Jakarta Sans', Inter, system-ui, sans-serif !important;
	font-size: 1rem !important;
	font-weight: 400 !important;
	color: #475569 !important;
	line-height: 1.65 !important;
	margin: 0 !important;
}

.nessa-switcher-desc + .nessa-switcher-desc {
	margin-top: 0.75rem !important;
}

.nessa-switcher-cta-btn {
	display: inline-flex !important;
	align-items: center !important;
	gap: 0.75rem !important;
	padding: 0.875rem 2rem !important;
	border-radius: 9999px !important;
	background: linear-gradient(135deg, #16a34a 0%, #15803d 100%) !important;
	color: #ffffff !important;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, sans-serif !important;
	font-weight: 700 !important;
	font-size: 0.9375rem !important;
	box-shadow: 0 10px 25px -5px rgba(22, 163, 74, 0.4) !important;
	text-decoration: none !important;
	transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

.nessa-switcher-cta-btn:hover {
	background: linear-gradient(135deg, #15803d 0%, #166534 100%) !important;
	transform: translateY(-2px) !important;
	box-shadow: 0 15px 30px -5px rgba(22, 163, 74, 0.5) !important;
	color: #ffffff !important;
}

.nessa-switcher-nav-prev {
	width: 2.75rem !important;
	height: 2.75rem !important;
	border-radius: 9999px !important;
	background: #ffffff !important;
	border: 1.5px solid #cbd5e1 !important;
	color: #475569 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	cursor: pointer !important;
	transition: all 0.2s ease !important;
}

.nessa-switcher-nav-prev:hover {
	border-color: #16a34a !important;
	color: #16a34a !important;
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08) !important;
}

.nessa-switcher-nav-next {
	width: 2.75rem !important;
	height: 2.75rem !important;
	border-radius: 9999px !important;
	background: #ffffff !important;
	border: 1.5px solid #cbd5e1 !important;
	color: #475569 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	cursor: pointer !important;
	transition: all 0.2s ease !important;
}

.nessa-switcher-nav-next:hover {
	background: #ffffff !important;
	border-color: #9ca3af !important;
	color: #111827 !important;
	transform: translateY(-1px) !important;
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08) !important;
}

.nessa-switcher-rail-shell {
	position: relative !important;
	overflow: visible !important;
	isolation: isolate;
}

.nessa-switcher-rail-shell > .nessa-switcher-nav-prev,
.nessa-switcher-rail-shell > .nessa-switcher-nav-next {
	position: absolute !important;
	top: 50% !important;
	z-index: 20 !important;
	transform: translateY(-50%) !important;
	box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.92), 0 8px 22px rgba(15, 23, 42, 0.16) !important;
}

.nessa-switcher-rail-shell > .nessa-switcher-nav-prev {
	left: -1.375rem !important;
}

.nessa-switcher-rail-shell > .nessa-switcher-nav-next {
	right: -1.375rem !important;
}

.nessa-switcher-rail-shell > .nessa-switcher-nav-prev:hover {
	transform: translateY(-50%) !important;
	box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.96), 0 10px 24px rgba(15, 23, 42, 0.18) !important;
}

.nessa-switcher-rail-shell > .nessa-switcher-nav-next:hover {
	transform: translateY(calc(-50% - 1px)) !important;
	box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.96), 0 10px 24px rgba(15, 23, 42, 0.18) !important;
}

.nessa-switcher-rail-shell > .nessa-switcher-nav-prev:focus-visible,
.nessa-switcher-rail-shell > .nessa-switcher-nav-next:focus-visible {
	outline: 3px solid rgba(245, 130, 32, 0.35) !important;
	outline-offset: 4px !important;
}

.nessa-solution-card {
	position: relative !important;
	height: 19rem !important;
	border-radius: 20px !important;
	overflow: hidden !important;
	isolation: isolate !important;
	transform: translateZ(0) !important;
	background-color: #0f172a !important;
	border: 1px solid rgba(226, 232, 240, 0.15) !important;
	box-shadow: 0 10px 30px -5px rgba(15, 23, 42, 0.15) !important;
	transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.35s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.3s ease !important;
}

@media (min-width: 1024px) {
	.nessa-solution-card {
		height: 21rem !important;
	}
}

.nessa-solution-card:hover {
	transform: translateY(-5px) !important;
	box-shadow: 0 20px 40px -10px rgba(15, 23, 42, 0.3), 0 0 0 2px #5fd97f !important;
	border-color: #5fd97f !important;
}

.nessa-solution-card .card-badge {
	position: absolute !important;
	top: 1rem !important;
	left: 1rem !important;
	z-index: 2 !important;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, sans-serif !important;
	font-size: 11px !important;
	font-weight: 700 !important;
	text-transform: uppercase !important;
	letter-spacing: 0.08em !important;
	padding: 0.35rem 0.85rem !important;
	border-radius: 9999px !important;
	background: rgba(15, 23, 42, 0.65) !important;
	border: 1px solid rgba(255, 255, 255, 0.25) !important;
	color: #ffffff !important;
	backdrop-filter: blur(8px) !important;
	-webkit-backdrop-filter: blur(8px) !important;
}

.nessa-solution-card .card-content {
	position: absolute !important;
	inset-x: 0 !important;
	bottom: 0 !important;
	padding: 1.5rem !important;
	z-index: 2 !important;
}

.nessa-solution-card .card-title {
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, sans-serif !important;
	font-size: 1.35rem !important;
	font-weight: 800 !important;
	color: #ffffff !important;
	line-height: 1.2 !important;
	letter-spacing: -0.02em !important;
	margin: 0 0 0.35rem 0 !important;
}

.nessa-solution-card .card-meta {
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, sans-serif !important;
	font-size: 0.8125rem !important;
	font-weight: 500 !important;
	color: rgba(255, 255, 255, 0.85) !important;
	line-height: 1.35 !important;
	margin: 0 !important;
}

.nessa-solution-card .card-accent-line {
	position: absolute !important;
	inset-x: 0 !important;
	bottom: 0 !important;
	height: 4px !important;
	background: linear-gradient(90deg, #f58220 0%, #5fd97f 100%) !important;
	transform: scaleX(0) !important;
	transform-origin: left !important;
	transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1) !important;
	z-index: 3 !important;
}

.nessa-solution-card:hover .card-accent-line {
	transform: scaleX(1) !important;
}

/* ==========================================================================
   From Our Blog / Insights & Resources Section Refinements
   ========================================================================== */
.nessa-blog-heading {
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, sans-serif !important;
	font-size: 2rem !important;
	font-weight: 800 !important;
	letter-spacing: -0.025em !important;
	line-height: 1.15 !important;
	color: #0f172a !important;
	text-align: left !important;
	margin: 0 !important;
}

@media (min-width: 640px) {
	.nessa-blog-heading {
		font-size: 2.5rem !important;
	}
}

@media (min-width: 1024px) {
	.nessa-blog-heading {
		font-size: 3rem !important;
	}
}

.nessa-blog-cta-btn {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 0.625rem !important;
	padding: 0.75rem 1.75rem !important;
	border-radius: 9999px !important;
	background: #ffffff !important;
	border: 2px solid #0f172a !important;
	color: #0f172a !important;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, sans-serif !important;
	font-weight: 700 !important;
	font-size: 0.9375rem !important;
	text-decoration: none !important;
	box-shadow: 0 4px 14px rgba(15, 23, 42, 0.06) !important;
	transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1) !important;
}

.nessa-blog-cta-btn:hover {
	background: linear-gradient(135deg, #16a34a 0%, #15803d 100%) !important;
	border-color: #16a34a !important;
	color: #ffffff !important;
	box-shadow: 0 10px 25px -5px rgba(22, 163, 74, 0.4) !important;
	transform: translateY(-2px) !important;
}

.nessa-blog-featured-card {
	border-radius: 24px !important;
	box-shadow: 0 20px 45px -12px rgba(15, 23, 42, 0.18) !important;
	transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1) !important;
}

.nessa-blog-featured-card:hover {
	transform: translateY(-4px) !important;
	box-shadow: 0 25px 55px -10px rgba(15, 23, 42, 0.28), 0 0 0 2px #5fd97f !important;
}

.nessa-blog-featured-title {
	font-family: 'Plus Jakarta Sans', Inter, system-ui, sans-serif !important;
	font-size: 1.5rem !important;
	font-weight: 800 !important;
	color: #ffffff !important;
	line-height: 1.25 !important;
	letter-spacing: -0.02em !important;
	margin: 0 !important;
}

@media (min-width: 1024px) {
	.nessa-blog-featured-title {
		font-size: 2.125rem !important;
	}
}

.nessa-blog-badge {
	display: inline-flex !important;
	align-items: center !important;
	padding: 0.35rem 0.85rem !important;
	border-radius: 9999px !important;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, sans-serif !important;
	font-size: 0.75rem !important;
	font-weight: 700 !important;
	letter-spacing: 0.05em !important;
	text-transform: uppercase !important;
}

.nessa-blog-badge.is-orange {
	background: linear-gradient(135deg, #f58220 0%, #ea580c 100%) !important;
	color: #ffffff !important;
	box-shadow: 0 4px 12px rgba(245, 130, 32, 0.35) !important;
}

.nessa-blog-badge.is-green {
	background: rgba(255, 255, 255, 0.95) !important;
	backdrop-filter: blur(8px) !important;
	-webkit-backdrop-filter: blur(8px) !important;
	border: 1px solid rgba(22, 163, 74, 0.25) !important;
	color: #15803d !important;
	box-shadow: 0 4px 12px rgba(15, 23, 42, 0.06) !important;
}

.nessa-blog-card {
	border-radius: 20px !important;
	border: 1px solid rgba(226, 232, 240, 0.9) !important;
	box-shadow: 0 4px 20px -4px rgba(15, 23, 42, 0.05) !important;
	transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.35s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.3s ease !important;
}

.nessa-blog-card:hover {
	transform: translateY(-4px) !important;
	box-shadow: 0 20px 40px -10px rgba(15, 23, 42, 0.12), 0 0 0 1px #5fd97f !important;
	border-color: #5fd97f !important;
}

.nessa-blog-card-title {
	font-family: 'Plus Jakarta Sans', Inter, system-ui, sans-serif !important;
	font-size: 1rem !important;
	font-weight: 700 !important;
	color: #0f172a !important;
	line-height: 1.4 !important;
	letter-spacing: -0.015em !important;
	display: -webkit-box !important;
	-webkit-line-clamp: 3 !important;
	-webkit-box-orient: vertical !important;
	overflow: hidden !important;
	margin: 0 !important;
	transition: color 0.2s ease !important;
}

/* Certificate cards: polished document presentation aligned with the site's
   rounded cards, soft depth, and restrained brand accents. */
.nessa-cert-card {
	width: 320px !important;
	border: 1px solid rgba(226, 232, 240, 0.95) !important;
	border-radius: 20px !important;
	background: linear-gradient(180deg, #ffffff 0%, #ffffff 82%, #fbfdfc 100%) !important;
	box-shadow: 0 10px 28px -14px rgba(15, 23, 42, 0.22), 0 2px 8px rgba(15, 23, 42, 0.04) !important;
	padding: 14px !important;
	overflow: hidden !important;
}

.nessa-cert-card::before {
	content: "";
	position: absolute;
	top: 0;
	left: 24px;
	right: 24px;
	height: 3px;
	border-radius: 0 0 9999px 9999px;
	background: linear-gradient(90deg, #f58220 0%, #5fd97f 100%);
	opacity: 0.8;
}

.nessa-cert-card:hover,
.nessa-cert-card:focus,
.nessa-cert-card:focus-visible {
	transform: translateY(-4px) !important;
	border-color: #bbf7d0 !important;
	box-shadow: 0 20px 42px -16px rgba(15, 23, 42, 0.24), 0 8px 20px rgba(22, 163, 74, 0.08) !important;
	outline: none !important;
}

.cert-card-media-wrapper {
	height: 320px !important;
	border-radius: 14px !important;
	background: linear-gradient(145deg, #f8fafc 0%, #ffffff 100%) !important;
	border: 1px solid #e2e8f0 !important;
	align-items: center !important;
	padding: 12px !important;
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9), 0 1px 2px rgba(15, 23, 42, 0.04) !important;
}

.cert-card-img,
.nessa-cert-card:hover .cert-card-img {
	width: 100% !important;
	height: 100% !important;
	object-fit: contain !important;
	object-position: center !important;
	transform: none !important;
}

.cert-type-pill,
.cert-pill-bis,
.cert-pill-iso,
.cert-pill-rohs {
	border-radius: 7px !important;
	box-shadow: 0 2px 5px rgba(15, 23, 42, 0.08) !important;
	-webkit-backdrop-filter: none !important;
	backdrop-filter: none !important;
}

.cert-pill-bis {
	background: #ecfdf5 !important;
	color: #047857 !important;
	border: 1px solid #a7f3d0 !important;
}

.cert-pill-iso {
	background: #fff7ed !important;
	color: #c2410c !important;
	border: 1px solid #fed7aa !important;
}

.cert-pill-rohs {
	background: #eff6ff !important;
	color: #1d4ed8 !important;
	border: 1px solid #bfdbfe !important;
}

.cert-card-body {
	padding: 18px 4px 4px !important;
}

.cert-card-title {
	font-family: 'Plus Jakarta Sans', Inter, system-ui, sans-serif !important;
	font-size: 17px !important;
	font-weight: 750 !important;
	line-height: 1.35 !important;
	letter-spacing: -0.015em !important;
	color: #111827 !important;
	margin: 0 0 5px !important;
}

.cert-card-subtitle {
	font-family: 'Plus Jakarta Sans', Inter, system-ui, sans-serif !important;
	font-size: 13px !important;
	line-height: 1.5 !important;
	color: #64748b !important;
	margin: 0 0 12px !important;
}

.nessa-cert-card:hover .cert-card-title {
	color: #111827 !important;
}

.cert-meta-code {
	display: inline-flex !important;
	align-items: center !important;
	min-height: 28px !important;
	padding: 5px 9px !important;
	border-radius: 7px !important;
	background: #f0fdf4 !important;
	border: 1px solid #dcfce7 !important;
	color: #475569 !important;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, sans-serif !important;
	font-size: 11px !important;
	font-weight: 600 !important;
	line-height: 1.4 !important;
}

/* Product switcher: keep the product photography clear. The dark treatment is
   limited to the caption area instead of washing over the full card. */
.nessa-solution-card.is-product .card-overlay {
	background: linear-gradient(
		to bottom,
		rgba(15, 23, 42, 0) 0%,
		rgba(15, 23, 42, 0) 62%,
		rgba(15, 23, 42, 0.18) 72%,
		rgba(15, 23, 42, 0.88) 100%
	) !important;
}

.nessa-solution-card.is-product .card-title,
.nessa-solution-card.is-product .card-meta {
	text-shadow: 0 1px 3px rgba(15, 23, 42, 0.7) !important;
}

/* Application switcher: use the same clear image treatment as product cards. */
.nessa-solution-card.is-app .card-overlay {
	background: linear-gradient(
		to bottom,
		rgba(15, 23, 42, 0) 0%,
		rgba(15, 23, 42, 0) 62%,
		rgba(15, 23, 42, 0.18) 72%,
		rgba(15, 23, 42, 0.88) 100%
	) !important;
}

.nessa-solution-card.is-app .card-title,
.nessa-solution-card.is-app .card-meta {
	text-shadow: 0 1px 3px rgba(15, 23, 42, 0.7) !important;
}

/* Fit three complete solution cards in the desktop rail. Below desktop widths,
   retain the existing fixed-width, horizontally scrollable card treatment. */
@media (min-width: 1280px) {
	[data-testid="switcher-rail"] > [data-nessa-tileset] {
		width: calc((100% - 3rem) / 3) !important;
		min-width: 0 !important;
	}
}

/* Client logos share a fixed image viewport so small source files are scaled
   consistently instead of rendering at their intrinsic dimensions. */
.nessa-client-logo-carousel {
	width: 100% !important;
	overflow: hidden !important;
	margin-top: auto !important;
	touch-action: pan-y !important;
	display: grid !important;
	gap: 12px !important;
}

.nessa-client-logo-row {
	width: 100% !important;
	overflow: hidden !important;
}

.nessa-client-logo-track {
	display: flex !important;
	width: max-content !important;
	gap: 12px !important;
	transform: translate3d(0, 0, 0);
	will-change: transform;
}

.nessa-client-logo-set {
	display: flex !important;
	gap: 12px !important;
	flex: none !important;
}

.nessa-client-logo-button {
	width: var(--nessa-logo-column-width) !important;
	flex: 0 0 var(--nessa-logo-column-width) !important;
	aspect-ratio: 1 / 1 !important;
	padding: 4px !important;
	border: 1px solid #f1f5f9 !important;
	border-radius: 12px !important;
	background: #ffffff !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	transition: border-color 200ms ease, box-shadow 200ms ease, transform 200ms ease !important;
}

.nessa-client-logo-button:hover {
	border-color: #cbd5e1 !important;
	box-shadow: 0 4px 12px rgba(15, 23, 42, 0.08) !important;
	transform: translateY(-2px) !important;
}

[data-testid="clients-awards-section"] button[data-testid*="-logo-"] {
	position: relative !important;
	overflow: hidden !important;
	cursor: zoom-in !important;
}

[data-testid="clients-awards-section"] button[data-testid*="-logo-"] img {
	width: 100% !important;
	height: 100% !important;
	max-width: none !important;
	max-height: none !important;
	display: block !important;
	object-fit: contain !important;
	object-position: center !important;
	transform: none !important;
}

[data-testid="clients-awards-section"] button[data-testid*="-logo-"]:hover img {
	transform: scale(1.06) !important;
}

.nessa-logo-lightbox {
	position: fixed !important;
	inset: 0 !important;
	z-index: 100000 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	padding: 24px !important;
	background: rgba(15, 23, 42, 0.72) !important;
	opacity: 0 !important;
	pointer-events: none !important;
	transition: opacity 180ms ease !important;
}

.nessa-logo-lightbox[hidden] {
	display: none !important;
}

.nessa-logo-lightbox.is-open {
	opacity: 1 !important;
	pointer-events: auto !important;
}

.nessa-logo-lightbox__panel {
	position: relative !important;
	width: min(520px, 100%) !important;
	padding: 56px 32px 28px !important;
	border: 1px solid #e5e7eb !important;
	border-radius: 16px !important;
	background: #ffffff !important;
	box-shadow: 0 24px 64px rgba(15, 23, 42, 0.24) !important;
	text-align: center !important;
	transform: translateY(8px) scale(0.98) !important;
	transition: transform 180ms ease !important;
}

.nessa-logo-lightbox.is-open .nessa-logo-lightbox__panel {
	transform: translateY(0) scale(1) !important;
}

.nessa-logo-lightbox__close {
	position: absolute !important;
	top: 16px !important;
	right: 16px !important;
	width: 40px !important;
	height: 40px !important;
	border: 1px solid #e5e7eb !important;
	border-radius: 9999px !important;
	background: #ffffff !important;
	color: #334155 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	cursor: pointer !important;
}

.nessa-logo-lightbox__close:hover {
	background: #f8fafc !important;
	border-color: #cbd5e1 !important;
}

.nessa-logo-lightbox__image-wrap {
	height: 240px !important;
	padding: 32px !important;
	border: 1px solid #e5e7eb !important;
	border-radius: 12px !important;
	background: #f8fafc !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
}

.nessa-logo-lightbox__image {
	width: 100% !important;
	height: 100% !important;
	object-fit: contain !important;
}

.nessa-logo-lightbox__title {
	margin: 20px 0 0 !important;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, sans-serif !important;
	font-size: 18px !important;
	font-weight: 700 !important;
	line-height: 1.35 !important;
	color: #111827 !important;
}

/* Continuously scrolling impact statistics. */
.nessa-impact-carousel-shell {
	position: relative;
	isolation: isolate;
	width: 100%;
	overflow: visible;
}

.nessa-impact-carousel {
	width: 100%;
	overflow: hidden;
	padding: 10px 0 14px;
	touch-action: pan-y;
	-webkit-mask-image: linear-gradient(to right, transparent, #000 6%, #000 94%, transparent);
	mask-image: linear-gradient(to right, transparent, #000 6%, #000 94%, transparent);
}

.nessa-impact-carousel-track {
	display: flex;
	align-items: stretch;
	gap: 20px;
	width: max-content;
	will-change: transform;
}

.nessa-impact-carousel-set {
	display: flex;
	align-items: stretch;
	gap: 20px;
	flex: none;
}

.nessa-impact-carousel-set > [data-testid^="stat-card-"],
.nessa-impact-carousel-set.is-clone > * {
	width: var(--impact-card-width, 220px) !important;
	min-width: var(--impact-card-width, 220px) !important;
	flex: 0 0 var(--impact-card-width, 220px) !important;
}

.nessa-impact-carousel-shell > .nessa-impact-carousel-controls,
.nessa-impact-carousel-controls {
	position: absolute;
	inset: 0;
	z-index: 20;
	display: block;
	margin: 0;
	pointer-events: none;
}

.nessa-impact-carousel-button {
	position: absolute;
	top: 50%;
	left: -1.3125rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 42px;
	height: 42px;
	padding: 0;
	border: 1px solid #d7dee6;
	border-radius: 9999px;
	background: #ffffff;
	color: #334155;
	box-shadow: 0 0 0 5px rgba(255, 255, 255, 0.9), 0 8px 22px rgba(15, 23, 42, 0.14);
	cursor: pointer;
	pointer-events: auto;
	transform: translateY(-50%);
	transition: border-color 180ms ease, background-color 180ms ease, color 180ms ease, box-shadow 180ms ease, transform 180ms ease;
}

.nessa-impact-carousel-button svg {
	width: 19px;
	height: 19px;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.nessa-impact-carousel-button:hover {
	border-color: #9ca3af;
	background: #ffffff;
	color: #111827;
	box-shadow: 0 0 0 5px rgba(255, 255, 255, 0.95), 0 10px 24px rgba(15, 23, 42, 0.18);
	transform: translateY(calc(-50% - 1px));
}

.nessa-impact-carousel-button.is-next {
	right: -1.3125rem;
	left: auto;
	border-color: #d7dee6;
	background: #ffffff;
	color: #334155;
}

.nessa-impact-carousel-button.is-next:hover {
	border-color: #9ca3af;
	background: #ffffff;
	color: #111827;
	box-shadow: 0 0 0 5px rgba(255, 255, 255, 0.95), 0 10px 24px rgba(15, 23, 42, 0.18);
	transform: translateY(calc(-50% - 1px));
}

.nessa-impact-carousel-button:focus-visible {
	outline: 3px solid rgba(245, 130, 32, 0.3);
	outline-offset: 3px;
}

@media (max-width: 639px) {
	.nessa-impact-carousel {
		-webkit-mask-image: linear-gradient(to right, transparent, #000 3%, #000 97%, transparent);
		mask-image: linear-gradient(to right, transparent, #000 3%, #000 97%, transparent);
	}
}

@media (prefers-reduced-motion: reduce) {
	.nessa-impact-carousel-track {
		will-change: auto;
	}

	.nessa-impact-carousel-button {
		transition: none;
	}
}

/* Blog feed view switcher. */
.nessa-blog-header {
	display: grid !important;
	grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
	align-items: end !important;
	gap: 24px !important;
}

.nessa-blog-switcher {
	display: inline-grid;
	grid-template-columns: repeat(2, minmax(92px, 1fr));
	justify-self: center;
	padding: 4px;
	border: 1px solid #d7dee6;
	border-radius: 9999px;
	background: rgba(255, 255, 255, 0.9);
	box-shadow: 0 4px 14px rgba(15, 23, 42, 0.08);
}

.nessa-blog-switcher-button {
	min-height: 38px;
	padding: 8px 18px;
	border: 0;
	border-radius: 9999px;
	background: transparent;
	color: #64748b;
	font-size: 14px;
	font-weight: 700;
	line-height: 1;
	cursor: pointer;
	transition: background-color 180ms ease, color 180ms ease, box-shadow 180ms ease;
}

.nessa-blog-switcher-button:hover:not(.is-active) {
	background: #f1f5f9;
	color: #111827;
}

.nessa-blog-switcher-button.is-active {
	background: #111827;
	color: #ffffff;
	box-shadow: 0 2px 7px rgba(15, 23, 42, 0.18);
}

.nessa-blog-switcher-button:focus-visible {
	outline: 3px solid rgba(245, 130, 32, 0.32);
	outline-offset: 2px;
}

.nessa-blog-view-all {
	justify-self: end;
}

.nessa-blog-view-all[aria-disabled="true"] {
	pointer-events: none;
	cursor: default;
}

.nessa-blog-demo-card {
	cursor: default;
}

.nessa-blog-grid > [hidden] {
	display: none !important;
}

.nessa-blog-grid {
	transition: opacity 140ms ease-in, transform 140ms ease-in;
}

.nessa-blog-grid.is-switching {
	opacity: 0;
	transform: translateY(4px);
}

.nessa-blog-demo-card {
	opacity: 0;
	transform: translateY(8px);
	animation: nessa-blog-card-in 260ms cubic-bezier(0.22, 1, 0.36, 1) forwards;
	animation-delay: var(--nessa-blog-delay, 0ms);
}

@keyframes nessa-blog-card-in {
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@media (prefers-reduced-motion: reduce) {
	.nessa-blog-grid {
		transition: none;
	}

	.nessa-blog-demo-card {
		opacity: 1;
		transform: none;
		animation: none;
	}
}

@media (max-width: 1023px) {
	.nessa-blog-header {
		display: flex !important;
		flex-direction: column !important;
		align-items: flex-start !important;
	}

	.nessa-blog-switcher {
		align-self: center;
	}

	.nessa-blog-view-all {
		align-self: flex-start;
	}
}

@media (max-width: 479px) {
	.nessa-blog-switcher {
		width: 100%;
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* ==========================================================================
   Contact page
   ========================================================================== */
.nessa-contact {
	--nc-ink: #111827;
	--nc-body: #4b5563;
	--nc-muted: #6b7280;
	--nc-line: #e8ebef;
	--nc-field: #f8faf9;
	--nc-orange: #f58220;
	--nc-orange-dark: #dc6418;
	--nc-green: #16a34a;
	--nc-green-dark: #15803d;
	--nc-green-deep: #0a9124;
	--nc-mint: #e9fbee;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, sans-serif;
	color: var(--nc-ink);
	background: #ffffff;
}

.nessa-contact svg:not(.nm-ico) {
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.nessa-contact svg.nc-icon-whatsapp {
	fill: currentColor;
	stroke: none;
}

/* Branded two-tone icons (.nm-ico, shared with the mega menu): charcoal outline, sizes per slot. */
.nessa-contact .nm-ico {
	color: #1f2937;
}

.nessa-contact .nc-direct__icon .nm-ico {
	width: 1.4rem;
	height: 1.4rem;
}

.nessa-contact .nc-drop__icon .nm-ico {
	width: 1.6rem;
	height: 1.6rem;
}

.nessa-contact .nc-file__icon .nm-ico,
.nessa-contact .nc-address__icon .nm-ico {
	width: 1.3rem;
	height: 1.3rem;
}

.nessa-contact .nc-flow__icon .nm-ico {
	width: 1.75rem;
	height: 1.75rem;
}

.nessa-contact .nc-certs .nm-ico {
	width: 1.15rem;
	height: 1.15rem;
}

.nessa-contact .nc-hours__note .nm-ico,
.nessa-contact .nc-faq__help-link .nm-ico {
	width: 1.15rem;
	height: 1.15rem;
}

.nessa-contact [hidden] {
	display: none !important;
}

.nc-wrap {
	width: 100%;
	max-width: 1280px;
	margin: 0 auto;
	padding: 0 1.25rem;
}

.nc-gradient-text {
	background: linear-gradient(90deg, var(--nc-orange) 0%, var(--nc-green-deep) 100%);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

/* Contact hero */
.nc-hero {
	position: relative;
	padding: 6.5rem 0 2.5rem;
	background:
		radial-gradient(circle at 8% 20%, rgba(95, 217, 127, 0.12) 0%, transparent 42%),
		radial-gradient(circle at 92% 70%, rgba(245, 130, 32, 0.08) 0%, transparent 40%),
		#ffffff;
	overflow: hidden;
}

.nc-hero__grid {
	display: grid;
	gap: 3rem;
	align-items: center;
}

/* Gradient label pill, matching the section pills on the home page */
.nc-pill {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0 0 1.5rem;
	padding: 0.4rem 1rem;
	border-radius: 999px;
	background: linear-gradient(90deg, #f97316 0%, #10b981 100%);
	box-shadow: 0 10px 15px -3px rgba(16, 185, 129, 0.25), 0 4px 6px -4px rgba(16, 185, 129, 0.25);
	font-size: 0.6875rem;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: #ffffff;
}

.nc-pill__dot {
	width: 0.375rem;
	height: 0.375rem;
	border-radius: 50%;
	background: #ffffff;
}

.nc-hero__title {
	margin: 0 0 1.25rem;
	font-size: clamp(2.25rem, 4.6vw, 3.75rem);
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: -0.025em;
	color: var(--nc-ink);
}

.nc-hero__title .nc-gradient-text {
	display: inline-block;
	padding-bottom: 0.08em;
	background-image: linear-gradient(90deg, #f97316 0%, #059669 100%);
}

.nc-hero__lede {
	max-width: 32rem;
	margin: 0 0 2rem;
	font-size: 1.0625rem;
	line-height: 1.75;
	color: var(--nc-body);
}

.nc-direct {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
	gap: 1.25rem;
	margin: 0;
	padding: 1.75rem 0 0;
	border-top: 1px solid var(--nc-line);
	list-style: none;
}

.nc-direct__item {
	display: flex;
	align-items: flex-start;
	gap: 0.85rem;
	color: inherit;
	text-decoration: none;
}

.nc-direct__icon {
	display: grid;
	place-items: center;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: 0.75rem;
	flex-shrink: 0;
	transition: transform 200ms ease;
}

.nc-direct__icon svg {
	width: 1.125rem;
	height: 1.125rem;
}

.nc-direct__icon--green {
	background: var(--nc-mint);
	color: var(--nc-green-dark);
}

.nc-direct__icon--orange {
	background: #fff3e8;
	color: var(--nc-orange-dark);
}

.nc-direct__label {
	display: block;
	font-size: 0.75rem;
	font-weight: 500;
	color: var(--nc-muted);
}

.nc-direct__value {
	display: block;
	font-size: 0.9375rem;
	font-weight: 700;
	color: var(--nc-ink);
	transition: color 200ms ease;
}

.nc-direct__item:hover .nc-direct__value,
.nc-direct__item:focus-visible .nc-direct__value {
	color: var(--nc-green-dark);
}

.nc-direct__item:hover .nc-direct__icon {
	transform: translateY(-2px);
}

.nc-hero__media {
	position: relative;
	margin: 0;
	aspect-ratio: 4 / 3;
	border-radius: 28px;
	overflow: hidden;
	background: #1f2937;
	box-shadow: 0 30px 60px -24px rgba(17, 24, 39, 0.45);
}

.nc-hero__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 96% 70%;
	display: block;
}

.nc-hero__status {
	position: absolute;
	left: 1rem;
	right: 1rem;
	bottom: 1rem;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem 1rem;
	padding: 0.8rem 1rem;
	border-radius: 1rem;
	background: rgba(17, 24, 39, 0.55);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	color: #ffffff;
	font-size: 0.8125rem;
}

.nc-status {
	display: inline-flex;
	align-items: center;
	gap: 0.55rem;
	font-weight: 600;
}

.nc-status__dot {
	width: 0.5rem;
	height: 0.5rem;
	border-radius: 999px;
	background: #d1d5db;
}

.nc-status.is-open .nc-status__dot {
	background: #4ade80;
	box-shadow: 0 0 0 4px rgba(74, 222, 128, 0.25);
}

.nc-status.is-closed .nc-status__dot {
	background: #fdba74;
}

.nc-hero__place {
	color: rgba(255, 255, 255, 0.75);
}

/* Contact form + aside */
.nc-main {
	padding: 1rem 0 4rem;
	background: linear-gradient(180deg, #ffffff 0%, rgba(233, 251, 238, 0.45) 45%, #ffffff 100%);
}

.nc-main__grid {
	display: grid;
	gap: 1.5rem;
	align-items: start;
}

.nc-card {
	background: #ffffff;
	border: 1px solid var(--nc-line);
	border-radius: 28px;
	box-shadow: 0 20px 50px -12px rgba(17, 24, 39, 0.08);
	padding: 1.75rem 1.25rem;
}

.nc-kicker {
	margin: 0 0 0.5rem;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--nc-green-dark);
}

.nc-title {
	margin: 0 0 0.5rem;
	font-size: clamp(1.5rem, 2.6vw, 2rem);
	font-weight: 800;
	line-height: 1.2;
	letter-spacing: -0.02em;
	color: var(--nc-ink);
}

.nc-title--sm {
	font-size: 1.375rem;
	margin-bottom: 1.25rem;
}

.nc-sub {
	max-width: 36rem;
	margin: 0 0 1.75rem;
	font-size: 0.9375rem;
	line-height: 1.65;
	color: var(--nc-body);
}

.nc-form {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 1.1rem 1.25rem;
}

.nc-field {
	min-width: 0;
}

.nc-field > label,
.nc-label {
	display: flex;
	align-items: baseline;
	gap: 0.25rem;
	margin-bottom: 0.45rem;
	font-size: 0.84375rem;
	font-weight: 600;
	color: var(--nc-ink);
}

.nc-req {
	color: var(--nc-orange);
}

.nc-optional {
	margin-left: 0.35rem;
	font-size: 0.75rem;
	font-weight: 500;
	color: var(--nc-muted);
}

.nc-field input[type="text"],
.nc-field input[type="email"],
.nc-field input[type="tel"],
.nc-field select,
.nc-field textarea {
	width: 100%;
	min-height: 3.125rem;
	padding: 0 1rem;
	border: 1.5px solid var(--nc-line);
	border-radius: 14px;
	background: var(--nc-field);
	font: inherit;
	font-size: 0.9375rem;
	color: var(--nc-ink);
	outline: none;
	transition: border-color 160ms ease, background-color 160ms ease, box-shadow 160ms ease;
}

.nc-field textarea {
	min-height: 8.5rem;
	padding: 0.85rem 1rem;
	line-height: 1.6;
	resize: vertical;
}

.nc-field textarea::placeholder {
	color: #9ca3af;
}

.nc-field input:hover,
.nc-field select:hover,
.nc-field textarea:hover {
	border-color: #d4d9df;
}

.nc-field input:focus,
.nc-field select:focus,
.nc-field textarea:focus {
	border-color: #cfd5dc;
	background: #ffffff;
	box-shadow: 0 0 0 4px rgba(15, 23, 42, 0.04), 0 1px 2px rgba(15, 23, 42, 0.04);
}

/* Phone: country code picker + number in one control */
.nc-phone {
	position: relative;
	display: flex;
	align-items: stretch;
	min-height: 3.125rem;
	border: 1.5px solid var(--nc-line);
	border-radius: 14px;
	background: var(--nc-field);
	transition: border-color 160ms ease, background-color 160ms ease, box-shadow 160ms ease;
}

.nc-phone:hover {
	border-color: #d4d9df;
}

.nc-phone:focus-within {
	border-color: #cfd5dc;
	background: #ffffff;
	box-shadow: 0 0 0 4px rgba(15, 23, 42, 0.04), 0 1px 2px rgba(15, 23, 42, 0.04);
}

.nc-field select.nc-phone__select {
	flex: none;
	width: auto;
	max-width: 9.5rem;
	min-height: 0;
	padding: 0 0.75rem;
	border: 0;
	border-right: 1.5px solid var(--nc-line);
	border-radius: 13px 0 0 13px;
	background: transparent;
	box-shadow: none;
}

.nc-field .nc-phone.is-enhanced select.nc-phone__select {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	opacity: 0;
	pointer-events: none;
}

.nc-field input.nc-phone__number,
.nc-field input.nc-phone__number:hover,
.nc-field input.nc-phone__number:focus {
	flex: 1 1 auto;
	min-width: 0;
	min-height: 0;
	padding: 0 1rem 0 0.85rem;
	border: 0;
	border-radius: 0 13px 13px 0;
	background: transparent;
	box-shadow: none;
	letter-spacing: 0.01em;
}

.nc-phone__number::placeholder {
	color: #9ca3af;
}

.nc-phone__trigger {
	flex: none;
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0 0.7rem 0 0.9rem;
	border: 0;
	border-right: 1.5px solid var(--nc-line);
	border-radius: 13px 0 0 13px;
	background: transparent;
	font: inherit;
	font-size: 0.9375rem;
	font-weight: 600;
	color: var(--nc-ink);
	cursor: pointer;
	transition: background-color 160ms ease;
}

.nc-phone__trigger:hover,
.nc-phone.is-open .nc-phone__trigger {
	background: rgba(15, 23, 42, 0.035);
}

.nc-phone__trigger:focus-visible {
	outline: none;
	background: var(--nc-mint);
}

.nc-phone__code {
	font-variant-numeric: tabular-nums;
}

.nc-flag {
	flex: none;
	width: 1.25rem;
	height: 0.9375rem;
	border-radius: 3px;
	object-fit: cover;
	background: #e5e7eb;
	box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.08);
}

.nessa-contact svg.nc-phone__chevron {
	width: 1rem;
	height: 1rem;
	color: var(--nc-muted);
	transition: transform 200ms ease;
}

.nc-phone.is-open .nc-phone__chevron {
	transform: rotate(180deg);
}

.nc-phone__panel {
	position: absolute;
	z-index: 30;
	top: calc(100% + 0.5rem);
	left: -1.5px;
	width: max(calc(100% + 3px), 19rem);
	max-width: calc(100vw - 2rem);
	padding: 0.5rem;
	border: 1px solid var(--nc-line);
	border-radius: 16px;
	background: #ffffff;
	box-shadow: 0 24px 48px -16px rgba(17, 24, 39, 0.22), 0 4px 12px -4px rgba(17, 24, 39, 0.08);
}

.nc-field input.nc-phone__search {
	width: 100%;
	min-height: 2.5rem;
	margin: 0 0 0.35rem;
	padding: 0 0.85rem;
	border: 1.5px solid var(--nc-line);
	border-radius: 10px;
	background: var(--nc-field);
	font: inherit;
	font-size: 0.875rem;
	color: var(--nc-ink);
	outline: none;
}

.nc-field input.nc-phone__search:focus {
	border-color: #cfd5dc;
	background: #ffffff;
	box-shadow: none;
}

.nc-phone__list {
	max-height: 16rem;
	margin: 0;
	padding: 0;
	overflow-y: auto;
	overscroll-behavior: contain;
	list-style: none;
}

.nc-phone__option {
	display: flex;
	align-items: center;
	gap: 0.65rem;
	padding: 0.55rem 0.65rem;
	border-radius: 10px;
	font-size: 0.875rem;
	color: var(--nc-ink);
	cursor: pointer;
}

.nc-phone__option:hover,
.nc-phone__option.is-active {
	background: #f1f5f3;
}

.nc-phone__option[aria-selected="true"] {
	background: var(--nc-mint);
	font-weight: 600;
	color: var(--nc-green-dark);
}

.nc-phone__name {
	flex: 1 1 auto;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.nc-phone__dial {
	flex: none;
	font-size: 0.8125rem;
	font-variant-numeric: tabular-nums;
	color: var(--nc-muted);
}

.nc-phone__option[aria-selected="true"] .nc-phone__dial {
	color: var(--nc-green-dark);
}

.nc-phone__empty {
	margin: 0;
	padding: 0.75rem;
	font-size: 0.875rem;
	text-align: center;
	color: var(--nc-muted);
}

.nc-select {
	position: relative;
}

.nc-select select {
	-webkit-appearance: none;
	appearance: none;
	padding-right: 2.75rem;
	cursor: pointer;
}

.nc-select select:invalid {
	color: #9ca3af;
}

.nc-select option {
	color: var(--nc-ink);
}

.nc-select__chevron {
	position: absolute;
	right: 1rem;
	top: 50%;
	width: 1.125rem;
	height: 1.125rem;
	transform: translateY(-50%);
	color: var(--nc-muted);
	pointer-events: none;
	transition: transform 180ms ease;
}

.nc-select.is-enhanced select {
	position: absolute;
	inset: 0;
	opacity: 0;
	pointer-events: none;
}

.nc-select__trigger {
	display: block;
	width: 100%;
	min-height: 3.125rem;
	padding: 0 2.75rem 0 1rem;
	overflow: hidden;
	border: 1.5px solid var(--nc-line);
	border-radius: 14px;
	background: var(--nc-field);
	font: inherit;
	font-size: 0.9375rem;
	color: var(--nc-ink);
	text-align: left;
	text-overflow: ellipsis;
	white-space: nowrap;
	cursor: pointer;
	outline: none;
	transition: border-color 160ms ease, background-color 160ms ease, box-shadow 160ms ease;
}

.nc-select__trigger.is-placeholder {
	color: #9ca3af;
}

.nc-select__trigger:hover {
	border-color: #d4d9df;
}

.nc-select__trigger:focus-visible,
.nc-select.is-open .nc-select__trigger {
	border-color: #cfd5dc;
	background: #ffffff;
	box-shadow: 0 0 0 4px rgba(15, 23, 42, 0.04), 0 1px 2px rgba(15, 23, 42, 0.04);
}

.nc-select.is-invalid .nc-select__trigger {
	border-color: var(--nc-orange);
	box-shadow: 0 0 0 4px rgba(245, 130, 32, 0.12);
}

.nc-select.is-open .nc-select__chevron {
	transform: translateY(-50%) rotate(180deg);
}

.nc-select__list {
	position: absolute;
	top: calc(100% + 0.5rem);
	left: 0;
	right: 0;
	z-index: 30;
	max-height: 24rem;
	margin: 0;
	padding: 0.375rem;
	overflow-y: auto;
	list-style: none;
	border: 1px solid var(--nc-line);
	border-radius: 16px;
	background: #ffffff;
	box-shadow: 0 18px 40px -12px rgba(15, 23, 42, 0.18), 0 4px 10px -4px rgba(15, 23, 42, 0.06);
	animation: nc-select-in 140ms ease-out;
}

@keyframes nc-select-in {
	from {
		opacity: 0;
		transform: translateY(-4px);
	}
}

.nc-select__option {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	padding: 0.7rem 0.85rem;
	border-radius: 10px;
	font-size: 0.9375rem;
	color: var(--nc-ink);
	cursor: pointer;
}

.nc-select__option.is-active {
	background: #f4f6f8;
}

.nc-select__name {
	flex: 1;
	font-weight: 500;
}

.nc-select__check {
	flex: none;
	width: 1rem;
	height: 1rem;
	color: var(--nc-green-dark);
	visibility: hidden;
}

.nc-select__option[aria-selected="true"] .nc-select__name {
	font-weight: 600;
}

.nc-select__option[aria-selected="true"] .nc-select__check {
	visibility: visible;
}

.nc-drop {
	position: relative;
	display: flex;
	align-items: center;
	gap: 2rem;
	margin: 0;
	padding: 1.1rem 1.25rem;
	border: 1.5px dashed rgba(22, 163, 74, 0.4);
	border-radius: 16px;
	background: rgba(233, 251, 238, 0.45);
	cursor: pointer;
	transition: border-color 160ms ease, background-color 160ms ease;
}

.nc-drop:hover,
.nc-drop.is-dragging {
	border-style: solid;
	border-color: var(--nc-green);
	background: var(--nc-mint);
}

.nc-drop:focus-within {
	border-color: #cfd5dc;
	box-shadow: 0 0 0 4px rgba(15, 23, 42, 0.04), 0 1px 2px rgba(15, 23, 42, 0.04);
}

.nc-drop__input {
	position: absolute;
	width: 1px;
	height: 1px;
	opacity: 0;
	overflow: hidden;
}

.nc-drop__icon {
	display: grid;
	place-items: center;
	width: 2.75rem;
	height: 2.75rem;
	border-radius: 12px;
	background: #ffffff;
	color: var(--nc-green-dark);
	box-shadow: 0 4px 12px rgba(17, 24, 39, 0.06);
	flex-shrink: 0;
}

.nc-drop__icon svg {
	width: 1.25rem;
	height: 1.25rem;
}

.nc-drop__text {
	font-size: 0.9rem;
	color: var(--nc-body);
	align-self: center;
	margin-left: 1rem;
}

.nc-drop__text strong {
	font-weight: 700;
	color: var(--nc-ink);
}

.nc-drop__link {
	font-weight: 600;
	color: var(--nc-green-dark);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.nc-drop__text small {
	display: block;
	margin-top: 0.2rem;
	font-size: 0.78rem;
	color: var(--nc-muted);
}

.nc-file {
	display: flex;
	align-items: center;
	gap: 0.85rem;
	padding: 0.85rem 1rem;
	border: 1.5px solid rgba(22, 163, 74, 0.35);
	border-radius: 14px;
	background: #ffffff;
}

.nc-file__icon {
	display: grid;
	place-items: center;
	width: 2.25rem;
	height: 2.25rem;
	border-radius: 10px;
	background: var(--nc-mint);
	color: var(--nc-green-dark);
	flex-shrink: 0;
}

.nc-file__icon svg {
	width: 1.05rem;
	height: 1.05rem;
}

.nc-file__meta {
	min-width: 0;
	flex: 1;
}

.nc-file__name {
	display: block;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
	font-size: 0.9rem;
	font-weight: 600;
	color: var(--nc-ink);
}

.nc-file__size {
	font-size: 0.78rem;
	color: var(--nc-muted);
}

.nc-file__remove {
	display: grid;
	place-items: center;
	width: 2rem;
	height: 2rem;
	border: 0;
	border-radius: 999px;
	background: #f3f4f6;
	color: var(--nc-body);
	cursor: pointer;
	transition: background-color 160ms ease, color 160ms ease;
}

.nc-file__remove:hover {
	background: #fff3e8;
	color: var(--nc-orange-dark);
}

.nc-file__remove svg {
	width: 0.95rem;
	height: 0.95rem;
}

.nc-error {
	margin: 0.5rem 0 0;
	font-size: 0.8125rem;
	font-weight: 500;
	color: var(--nc-orange-dark);
}

.nc-form__footer {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1rem 1.5rem;
	margin-top: 0.4rem;
}

.nc-submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.6rem;
	padding: 0.95rem 1.9rem;
	border: 0;
	border-radius: 999px;
	background: linear-gradient(135deg, var(--nc-green) 0%, var(--nc-green-dark) 100%);
	box-shadow: 0 10px 25px -5px rgba(22, 163, 74, 0.4);
	font: inherit;
	font-size: 0.9375rem;
	font-weight: 700;
	color: #ffffff;
	cursor: pointer;
	transition: transform 200ms ease, box-shadow 200ms ease, opacity 200ms ease;
}

.nc-submit svg {
	width: 1.05rem;
	height: 1.05rem;
	transition: transform 200ms ease;
}

.nc-submit:hover {
	transform: translateY(-1px);
	box-shadow: 0 14px 30px -6px rgba(22, 163, 74, 0.5);
}

.nc-submit:hover svg {
	transform: translateX(3px);
}

.nc-submit:focus-visible {
	outline: 3px solid rgba(22, 163, 74, 0.35);
	outline-offset: 3px;
}

.nc-submit.is-sending,
.nc-submit:disabled {
	opacity: 0.7;
	cursor: progress;
	transform: none;
}

.nc-privacy {
	flex: 1 1 14rem;
	margin: 0;
	font-size: 0.8125rem;
	line-height: 1.55;
	color: var(--nc-muted);
}

.nc-form-alert {
	display: flex;
	align-items: flex-start;
	gap: 0.65rem;
	margin: 0;
	padding: 0.85rem 1rem;
	border: 1px solid #fed7aa;
	border-radius: 14px;
	background: #fff7ed;
	font-size: 0.875rem;
	font-weight: 500;
	line-height: 1.5;
	color: #9a3412;
}

.nc-form-alert svg {
	flex: none;
	width: 1.125rem;
	height: 1.125rem;
	margin-top: 0.1rem;
	color: var(--nc-orange-dark);
}

/* Thank-you state shown after a successful enquiry */
.nc-thanks {
	animation: nc-thanks-in 420ms cubic-bezier(0.2, 0.7, 0.2, 1) both;
}

.nc-thanks__title:focus {
	outline: none;
}

.nc-thanks__title [data-nc-thanks-name] {
	color: var(--nc-orange-dark);
}

.nc-thanks .nc-sub strong {
	font-weight: 700;
	color: var(--nc-ink);
	word-break: break-word;
}

.nc-thanks__heading {
	margin: 0 0 1rem;
	padding-top: 1.75rem;
	border-top: 1px solid var(--nc-line);
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--nc-muted);
}

.nc-steps {
	display: grid;
	gap: 1.15rem;
	margin: 0 0 2rem;
	padding: 0;
	list-style: none;
}

.nc-steps li {
	display: flex;
	align-items: flex-start;
	gap: 0.9rem;
}

.nc-steps__num {
	flex: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.875rem;
	height: 1.875rem;
	border-radius: 50%;
	background: #fff3e8;
	box-shadow: inset 0 0 0 1px rgba(245, 130, 32, 0.22);
	font-size: 0.8125rem;
	font-weight: 700;
	color: var(--nc-orange-dark);
}

.nc-steps li > span:last-child {
	padding-top: 0.2rem;
	font-size: 0.875rem;
	line-height: 1.55;
	color: var(--nc-body);
}

.nc-steps strong {
	display: block;
	margin-bottom: 0.15rem;
	font-size: 0.9375rem;
	font-weight: 700;
	color: var(--nc-ink);
}

.nc-thanks__footer {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 1rem 1.5rem;
	padding: 1.25rem 1.25rem;
	border-radius: 18px;
	background: var(--nc-field);
}

.nc-thanks__urgent {
	margin: 0;
	font-size: 0.875rem;
	color: var(--nc-body);
}

.nc-thanks__urgent a {
	font-weight: 700;
	color: var(--nc-orange-dark);
	text-decoration: none;
	white-space: nowrap;
}

.nc-thanks__urgent a:hover {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.nc-thanks__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem 1.25rem;
}

.nc-thanks__actions .nc-btn {
	padding: 0 1.25rem;
}

.nc-thanks__again {
	padding: 0;
	border: 0;
	background: none;
	font: inherit;
	font-size: 0.875rem;
	font-weight: 700;
	color: var(--nc-green-dark);
	text-decoration: underline;
	text-underline-offset: 3px;
	cursor: pointer;
}

.nc-thanks__again:hover {
	color: var(--nc-green-deep);
}

.nc-thanks__again:focus-visible {
	outline: 3px solid rgba(22, 163, 74, 0.35);
	outline-offset: 3px;
	border-radius: 4px;
}

@keyframes nc-thanks-in {
	from {
		opacity: 0;
		transform: translateY(12px);
	}
	to {
		opacity: 1;
		transform: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	.nc-thanks {
		animation: none;
	}
}

.nc-aside {
	display: grid;
	gap: 1.5rem;
}

.nc-team__head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem 0.75rem;
	margin-bottom: 0.5rem;
}

.nc-team__head .nc-kicker {
	margin: 0;
}

.nc-status--chip {
	gap: 0.45rem;
	padding: 0.3rem 0.75rem;
	border-radius: 999px;
	background: #f3f4f6;
	font-size: 0.75rem;
	white-space: nowrap;
	color: var(--nc-body);
}

.nc-status--chip.is-open {
	background: var(--nc-mint);
	color: var(--nc-green-dark);
}

.nc-status--chip.is-open .nc-status__dot {
	background: var(--nc-green);
	box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.18);
}

.nc-status--chip.is-closed {
	background: #fff3e8;
	color: var(--nc-orange-dark);
}

.nc-status--chip.is-closed .nc-status__dot {
	background: var(--nc-orange);
	box-shadow: 0 0 0 3px rgba(245, 130, 32, 0.18);
}

.nc-hours {
	display: grid;
	gap: 0.5rem;
	margin: 0;
}

.nc-hours div {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	padding: 0.85rem 1rem;
	border: 1px solid var(--nc-line);
	border-radius: 14px;
	background: var(--nc-field);
	font-size: 0.9rem;
	transition: border-color 200ms ease, background-color 200ms ease;
}

.nc-hours dt {
	display: inline-flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.25rem 0.5rem;
	font-weight: 500;
	color: var(--nc-body);
}

.nc-hours dd {
	margin: 0;
	font-weight: 700;
	white-space: nowrap;
	color: var(--nc-ink);
}

.nc-hours .nc-hours__closed {
	font-weight: 600;
	color: var(--nc-muted);
}

.nc-hours__today {
	display: none;
	padding: 0.1rem 0.5rem;
	border-radius: 999px;
	background: #ffffff;
	box-shadow: inset 0 0 0 1px rgba(22, 163, 74, 0.25);
	font-size: 0.625rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nc-green-dark);
}

.nc-hours div.is-today {
	border-color: rgba(22, 163, 74, 0.3);
	background: var(--nc-mint);
}

.nc-hours div.is-today dt {
	font-weight: 600;
	color: var(--nc-ink);
}

.nc-hours div.is-today .nc-hours__today {
	display: inline-block;
}

.nc-hours div[data-nc-day="sun"].is-today {
	border-color: rgba(245, 130, 32, 0.3);
	background: #fff7ed;
}

.nc-hours div[data-nc-day="sun"].is-today .nc-hours__today {
	box-shadow: inset 0 0 0 1px rgba(245, 130, 32, 0.3);
	color: var(--nc-orange-dark);
}

.nc-hours__note {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin: 1rem 0 0;
	font-size: 0.8125rem;
	line-height: 1.5;
	color: var(--nc-muted);
}

.nc-hours__note svg {
	flex: none;
	width: 0.95rem;
	height: 0.95rem;
}

.nc-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	min-height: 2.875rem;
	padding: 0 1rem;
	border-radius: 999px;
	font-size: 0.9rem;
	font-weight: 700;
	text-decoration: none;
	transition: transform 200ms ease, box-shadow 200ms ease, border-color 200ms ease, color 200ms ease;
}

.nc-btn svg {
	width: 1rem;
	height: 1rem;
}

.nc-btn--solid {
	background: linear-gradient(135deg, var(--nc-orange) 0%, #ea580c 100%);
	box-shadow: 0 10px 22px -8px rgba(234, 88, 12, 0.55);
	color: #ffffff;
}

.nc-btn--solid:hover {
	transform: translateY(-1px);
	color: #ffffff;
}

.nc-btn--ghost {
	border: 1.5px solid var(--nc-line);
	background: #ffffff;
	color: var(--nc-ink);
}

.nc-btn--ghost:hover {
	border-color: var(--nc-green);
	color: var(--nc-green-dark);
}

.nc-visit {
	padding: 0.75rem 0.75rem 1.5rem;
}

.nc-map {
	height: 13rem;
	margin-bottom: 1.25rem;
	border-radius: 20px;
	overflow: hidden;
	background: #eef2ef;
}

.nc-map iframe {
	display: block;
	width: 100%;
	height: 100%;
	border: 0;
}

.nc-addresses {
	display: grid;
	gap: 0.5rem;
	margin: 0 0 1.1rem;
}

.nc-address {
	display: flex;
	align-items: flex-start;
	gap: 0.85rem;
	width: 100%;
	padding: 0.85rem 0.9rem;
	border: 1.5px solid transparent;
	border-radius: 14px;
	background: transparent;
	font: inherit;
	text-align: left;
	cursor: pointer;
	transition: background-color 160ms ease, border-color 160ms ease;
}

.nc-address:hover {
	background: #f6f8f7;
}

.nc-address:focus-visible {
	outline: 2px solid var(--nc-green);
	outline-offset: 2px;
}

.nc-address.is-current {
	border-color: rgba(22, 163, 74, 0.22);
	background: var(--nc-mint);
	cursor: default;
}

.nc-address__body {
	display: block;
	min-width: 0;
}

.nc-address__icon {
	display: grid;
	flex: none;
	place-items: center;
	width: 2.25rem;
	height: 2.25rem;
	border-radius: 10px;
	background: #f1f5f3;
	color: var(--nc-muted);
	transition: background-color 160ms ease, color 160ms ease;
}

.nc-address.is-current .nc-address__icon {
	background: #ffffff;
	color: var(--nc-green-dark);
	box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
}

.nc-address__icon svg {
	width: 1.05rem;
	height: 1.05rem;
}

.nc-address__label {
	display: block;
	margin: 0 0 0.2rem;
	font-size: 0.95rem;
	font-weight: 700;
	line-height: 1.4;
	color: var(--nc-ink);
}

.nc-address__text {
	display: block;
	margin: 0;
	font-size: 0.875rem;
	line-height: 1.6;
	color: var(--nc-body);
}

.nc-link {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	margin: 0.25rem 0.75rem 0;
	font-size: 0.9rem;
	font-weight: 700;
	color: var(--nc-green-dark);
	text-decoration: none;
}

.nc-link svg {
	width: 1rem;
	height: 1rem;
	transition: transform 200ms ease;
}

.nc-link:hover {
	color: var(--nc-orange-dark);
}

.nc-link:hover svg {
	transform: translate(2px, -2px);
}

/* Shared section heading for the lower contact sections */
.nc-form-card {
	scroll-margin-top: 7rem;
}

.nc-section-head {
	max-width: 46rem;
	margin: 0 auto 2.5rem;
	text-align: center;
}

.nc-section-head .nc-pill,
.nc-faq__intro .nc-pill {
	margin-bottom: 1rem;
}

.nc-h2 {
	margin: 0 0 0.75rem;
	font-size: clamp(1.875rem, 3.6vw, 2.75rem);
	font-weight: 700;
	line-height: 1.15;
	letter-spacing: -0.025em;
	color: var(--nc-ink);
}

.nc-h2 .nc-gradient-text {
	display: inline-block;
	padding-bottom: 0.06em;
	background-image: linear-gradient(90deg, #f97316 0%, #059669 100%);
}

.nc-section-sub {
	max-width: 40rem;
	margin: 0 auto;
	font-size: 1rem;
	line-height: 1.7;
	color: var(--nc-body);
}

/* Proof: stats, credentials, client logos */
.nc-proof {
	padding: 4rem 0 3.5rem;
}

.nc-stats {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.nc-stats li {
	padding: 1.5rem 1.1rem;
	border: 1px solid var(--nc-line);
	border-radius: 22px;
	background: #ffffff;
	box-shadow: 0 20px 50px -12px rgba(17, 24, 39, 0.06);
	text-align: center;
	transition: transform 250ms ease, box-shadow 250ms ease;
}

.nc-stats li:hover {
	transform: translateY(-3px);
	box-shadow: 0 24px 50px -16px rgba(17, 24, 39, 0.14);
}

.nc-stats strong {
	display: block;
	margin-bottom: 0.5rem;
	font-size: clamp(1.875rem, 3.2vw, 2.5rem);
	font-weight: 800;
	line-height: 1;
	letter-spacing: -0.03em;
	background: linear-gradient(135deg, #f97316 0%, #f97316 30%, #059669 100%);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

.nc-stats span {
	display: block;
	font-size: 0.875rem;
	line-height: 1.45;
	color: var(--nc-body);
}

.nc-certs {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 0.6rem;
	margin: 2rem 0 0;
	padding: 0;
	list-style: none;
}

.nc-certs li {
	display: inline-flex;
	align-items: center;
	gap: 0.45rem;
	padding: 0.5rem 0.95rem;
	border: 1px solid var(--nc-line);
	border-radius: 999px;
	background: #ffffff;
	font-size: 0.8125rem;
	font-weight: 600;
	color: var(--nc-ink);
}

.nc-certs svg {
	width: 1rem;
	height: 1rem;
	color: var(--nc-green);
}

.nc-clients {
	margin-top: 3rem;
}

.nc-clients__label {
	margin: 0 0 1.25rem;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	text-align: center;
	color: var(--nc-muted);
}

.nc-marquee {
	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);
}

.nc-marquee__track {
	display: flex;
	width: max-content;
	animation: nc-marquee 160s linear infinite;
}

.nc-marquee:hover .nc-marquee__track {
	animation-play-state: paused;
}

/* Trailing padding equals the gap so the second copy lines up exactly at -50%. */
.nc-marquee__list {
	display: flex;
	gap: 1rem;
	margin: 0;
	padding: 0.5rem 1rem 0.5rem 0;
	list-style: none;
}

.nc-marquee__list li {
	flex: none;
	display: grid;
	place-items: center;
	width: 9.5rem;
	height: 4.75rem;
	padding: 0.35rem 0.75rem;
	border: 1px solid var(--nc-line);
	border-radius: 16px;
	background: #ffffff;
}

.nc-marquee__list img {
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
	filter: grayscale(1);
	opacity: 0.7;
	transition: filter 250ms ease, opacity 250ms ease;
}

.nc-marquee__list li:hover img {
	filter: none;
	opacity: 1;
}

/* Contact page: client logos in their original colours, framed by script to equal
   visual size (see fitLogos in contact.php). */
.nessa-contact .nc-marquee__list img {
	width: 100%;
	height: 100%;
	filter: none;
	opacity: 1;
}

.nessa-contact .np-logo {
	position: relative;
	display: block;
	overflow: hidden;
}

.nessa-contact .np-logo img.is-fitted {
	position: absolute;
	max-width: none;
	max-height: none;
	object-fit: fill;
}

/* Logos are framed by script to equal visual size (see fitLogos in products.php);
   until then they are contained so none overflows its tile. */
.nessa-products .nc-marquee__list img {
	width: 100%;
	height: 100%;
}

.nessa-products .np-logo {
	position: relative;
	display: block;
	overflow: hidden;
}

.nessa-products .np-logo img.is-fitted {
	position: absolute;
	max-width: none;
	max-height: none;
	object-fit: fill;
}

/* Products page: client logos in their original colours. */
.nessa-products .nc-marquee__list img,
.nessa-products .nc-marquee__list li:hover img {
	filter: none;
	opacity: 1;
}

@keyframes nc-marquee {
	to {
		transform: translateX(-50%);
	}
}

/* Process */
.nc-process {
	padding: 4rem 0;
	background: linear-gradient(180deg, rgba(233, 251, 238, 0) 0%, rgba(233, 251, 238, 0.55) 50%, rgba(233, 251, 238, 0) 100%);
}

.nc-flow {
	display: grid;
	gap: 1rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.nc-flow li {
	position: relative;
	padding: 1.75rem 1.5rem;
	border: 1px solid var(--nc-line);
	border-radius: 22px;
	background: #ffffff;
	box-shadow: 0 20px 50px -12px rgba(17, 24, 39, 0.06);
	transition: transform 250ms ease, box-shadow 250ms ease, border-color 250ms ease;
}

.nc-flow li:hover {
	transform: translateY(-4px);
	border-color: rgba(22, 163, 74, 0.3);
	box-shadow: 0 24px 50px -16px rgba(17, 24, 39, 0.15);
}

.nc-flow__num {
	position: absolute;
	top: 1.25rem;
	right: 1.5rem;
	font-size: 2.5rem;
	font-weight: 800;
	line-height: 1;
	letter-spacing: -0.04em;
	color: #eef1f4;
}

.nc-flow__icon {
	display: grid;
	place-items: center;
	width: 3rem;
	height: 3rem;
	margin-bottom: 1.25rem;
	border-radius: 14px;
	background: var(--nc-mint);
	color: var(--nc-green-dark);
}

.nc-flow li:nth-child(even) .nc-flow__icon {
	background: #fff3e8;
	color: var(--nc-orange-dark);
}

.nc-flow__icon svg {
	width: 1.35rem;
	height: 1.35rem;
}

.nc-flow h3 {
	margin: 0 0 0.5rem;
	font-size: 1.0625rem;
	font-weight: 700;
	color: var(--nc-ink);
}

.nc-flow p {
	margin: 0;
	font-size: 0.9rem;
	line-height: 1.6;
	color: var(--nc-body);
}

/* FAQ */
.nc-faq {
	padding: 4rem 0;
}

.nc-faq__grid {
	display: grid;
	gap: 2rem;
}

.nc-faq__intro .nc-section-sub {
	margin: 0;
}

.nc-faq__help {
	display: grid;
	gap: 0.6rem;
	margin-top: 1.75rem;
	padding: 1.5rem;
	border: 1px solid var(--nc-line);
	border-radius: 22px;
	background: var(--nc-field);
}

.nc-faq__help-title {
	margin: 0;
	font-size: 1rem;
	font-weight: 700;
	color: var(--nc-ink);
}

.nc-faq__help-text {
	margin: 0 0 0.35rem;
	font-size: 0.875rem;
	line-height: 1.55;
	color: var(--nc-body);
}

.nc-faq__help-link {
	display: inline-flex;
	align-items: center;
	gap: 0.6rem;
	width: fit-content;
	font-size: 0.9375rem;
	font-weight: 700;
	color: var(--nc-ink);
	text-decoration: none;
	transition: color 200ms ease;
}

.nc-faq__help-link svg {
	width: 1rem;
	height: 1rem;
	color: var(--nc-green-dark);
}

.nc-faq__help-link:hover {
	color: var(--nc-green-dark);
}

.nc-faq__list {
	display: grid;
	gap: 0.75rem;
	align-content: start;
}

.nc-faq__item {
	border: 1px solid var(--nc-line);
	border-radius: 18px;
	background: #ffffff;
	transition: border-color 200ms ease, box-shadow 200ms ease;
}

.nc-faq__item[open] {
	border-color: rgba(22, 163, 74, 0.3);
	box-shadow: 0 16px 40px -18px rgba(17, 24, 39, 0.16);
}

.nc-faq__item summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 1.15rem 1.35rem;
	border-radius: 18px;
	font-size: 1rem;
	font-weight: 700;
	line-height: 1.4;
	color: var(--nc-ink);
	list-style: none;
	cursor: pointer;
}

.nc-faq__item summary::-webkit-details-marker {
	display: none;
}

.nc-faq__item summary:focus-visible {
	outline: 3px solid rgba(22, 163, 74, 0.35);
	outline-offset: 2px;
}

.nc-faq__icon {
	flex: none;
	display: grid;
	place-items: center;
	width: 2rem;
	height: 2rem;
	border-radius: 50%;
	background: var(--nc-field);
	color: var(--nc-ink);
	transition: transform 250ms ease, background-color 250ms ease, color 250ms ease;
}

.nc-faq__icon svg {
	width: 1rem;
	height: 1rem;
}

.nc-faq__item summary:hover .nc-faq__icon {
	background: var(--nc-mint);
	color: var(--nc-green-dark);
}

.nc-faq__item[open] .nc-faq__icon {
	transform: rotate(45deg);
	background: var(--nc-green);
	color: #ffffff;
}

.nc-faq__answer {
	padding: 0 1.35rem 1.25rem;
}

.nc-faq__answer p {
	margin: 0;
	font-size: 0.9375rem;
	line-height: 1.7;
	color: var(--nc-body);
}

.nc-faq__answer a {
	font-weight: 600;
	color: var(--nc-green-dark);
}

/* Closing call to action */
.nc-cta {
	padding: 1rem 0 5rem;
}

.nc-cta__panel {
	display: grid;
	gap: 1.75rem;
	padding: 2.5rem 1.75rem;
	border-radius: 32px;
	background:
		radial-gradient(circle at 0% 0%, rgba(249, 115, 22, 0.32) 0%, transparent 45%),
		radial-gradient(circle at 100% 100%, rgba(16, 185, 129, 0.32) 0%, transparent 45%),
		#0f172a;
	box-shadow: 0 30px 60px -24px rgba(15, 23, 42, 0.5);
}

.nc-cta__title {
	margin: 0 0 0.6rem;
	font-size: clamp(1.75rem, 3.2vw, 2.5rem);
	font-weight: 700;
	line-height: 1.15;
	letter-spacing: -0.025em;
	color: #ffffff;
}

.nc-cta__text {
	max-width: 34rem;
	margin: 0;
	font-size: 1rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.75);
}

.nc-cta__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
}

.nc-cta .nc-btn {
	min-height: 3.25rem;
	padding: 0 1.5rem;
	font-size: 0.9375rem;
}

.nc-btn--light {
	border: 1.5px solid rgba(255, 255, 255, 0.25);
	background: rgba(255, 255, 255, 0.06);
	color: #ffffff;
}

.nc-btn--light:hover {
	border-color: rgba(255, 255, 255, 0.5);
	background: rgba(255, 255, 255, 0.12);
	color: #ffffff;
}

@media (prefers-reduced-motion: reduce) {
	.nc-marquee {
		overflow-x: auto;
	}

	.nc-marquee__track {
		animation: none;
	}

	.nc-marquee__list[aria-hidden="true"] {
		display: none;
	}
}

@media (min-width: 640px) {
	.nc-wrap {
		padding: 0 1.5rem;
	}

	.nc-card {
		padding: 2rem;
	}

	.nc-form {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.nc-field--full {
		grid-column: 1 / -1;
	}
}

@media (min-width: 768px) {
	.nc-flow {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.nc-wrap {
		padding: 0 3rem;
	}

	.nc-hero {
		padding: 9rem 0 3.5rem;
	}

	.nc-hero__grid {
		grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
		gap: 4rem;
	}

	.nc-hero__media {
		aspect-ratio: 5 / 4.4;
	}

	.nc-main__grid {
		grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
		gap: 2rem;
	}

	.nc-card {
		padding: 2.5rem;
	}

	.nc-aside {
		position: sticky;
		top: 7rem;
	}

	.nc-visit {
		padding: 0.75rem 0.75rem 1.75rem;
	}

	.nc-proof {
		padding: 5.5rem 0 4.5rem;
	}

	.nc-stats {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: 1.25rem;
	}

	.nc-process,
	.nc-faq {
		padding: 5rem 0;
	}

	.nc-flow {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: 1.25rem;
	}

	.nc-faq__grid {
		grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.4fr);
		gap: 4rem;
		align-items: start;
	}

	.nc-faq__intro {
		position: sticky;
		top: 7rem;
	}

	.nc-cta {
		padding: 1.5rem 0 6rem;
	}

	.nc-cta__panel {
		grid-template-columns: minmax(0, 1fr) auto;
		align-items: center;
		gap: 3rem;
		padding: 3.5rem 4rem;
	}
}

@media (max-width: 479px) {
	.nc-submit {
		width: 100%;
	}
}

@media (prefers-reduced-motion: reduce) {
	.nessa-contact *,
	.nessa-contact *::before,
	.nessa-contact *::after {
		transition: none !important;
	}
}

/* ==========================================================================
   Products page
   Uses the contact page's tokens and shared components (nc-wrap, nc-pill,
   nc-h2, nc-btn, nc-stats, nc-faq, nc-cta); np- classes are page specific.
   ========================================================================== */
.nessa-products {
	--nc-ink: #111827;
	--nc-body: #4b5563;
	--nc-muted: #6b7280;
	--nc-line: #e8ebef;
	--nc-field: #f8faf9;
	--nc-orange: #f58220;
	--nc-orange-dark: #dc6418;
	--nc-green: #16a34a;
	--nc-green-dark: #15803d;
	--nc-green-deep: #0a9124;
	--nc-mint: #e9fbee;
	--nc-peach: #fff3e8;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, sans-serif;
	color: var(--nc-ink);
	background: #ffffff;
}

/* main.css hides horizontal overflow on body and .App, which turns them into
   scroll containers and disables the sticky filter rail; clip does not. */
body:has(.nessa-products),
body:has(.nessa-products) .App {
	overflow-x: clip;
}

.nessa-products svg:not(.nm-ico) {
	flex-shrink: 0;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* Branded two-tone icons (.nm-ico, shared with the mega menu): sizes per slot. */
.nessa-products .np-icon-chip .nm-ico {
	width: 1.45rem;
	height: 1.45rem;
}

.nessa-products .np-card__badge .nm-ico {
	width: 1.05rem;
	height: 1.05rem;
}

.nessa-products .np-features__icon .nm-ico {
	width: 1.75rem;
	height: 1.75rem;
}

.nessa-products .pd-assure__icon .nm-ico {
	width: 1.2rem;
	height: 1.2rem;
}

.nessa-products .pd-kicker .np-icon-chip .nm-ico {
	width: 1.3rem;
	height: 1.3rem;
}

.nessa-products .pd-specs__note .nm-ico {
	width: 1.6rem;
	height: 1.6rem;
}

/* On the dark glass badges the outline turns white; the orange accents stay. */
.nessa-products .np-hero__badge .nm-ico,
.nessa-products .pd-slide__tag .nm-ico {
	width: 1.05rem;
	height: 1.05rem;
	color: #ffffff;
}

/* Icon tiles behind branded icons stay light so both tones read. */
.nessa-products .np-icon-chip:has(.nm-ico),
.nessa-products .pd-assure__icon:has(.nm-ico) {
	border: 1px solid var(--nc-line);
	background: #ffffff;
}

.nessa-products .np-range-card__head .np-icon-chip:has(.nm-ico) {
	border: 4px solid #ffffff;
	background: var(--nc-peach);
	box-shadow: 0 0 0 1px var(--nc-line);
}

.nessa-products .np-features__icon:has(.nm-ico) {
	background: var(--nc-peach);
}

.nessa-products .np-features li:nth-child(even) .np-features__icon:has(.nm-ico) {
	background: var(--nc-mint);
}

.nessa-products [hidden] {
	display: none !important;
}

.nessa-products button {
	font: inherit;
	cursor: pointer;
}

.nessa-products a:focus-visible,
.nessa-products button:focus-visible,
.nessa-products summary:focus-visible {
	outline: 3px solid rgba(22, 163, 74, 0.35);
	outline-offset: 2px;
}

.np-icon-chip {
	display: grid;
	place-items: center;
	width: 2.5rem;
	height: 2.5rem;
	flex-shrink: 0;
	border-radius: 12px;
	background: var(--nc-mint);
	color: var(--nc-green-dark);
}

.np-icon-chip svg {
	width: 1.2rem;
	height: 1.2rem;
}

.np-count {
	display: inline-grid;
	place-items: center;
	min-width: 1.75rem;
	height: 1.5rem;
	margin-left: auto;
	padding: 0 0.45rem;
	border-radius: 999px;
	background: #eef1f4;
	font-size: 0.75rem;
	font-weight: 700;
	line-height: 1;
	color: var(--nc-body);
}

/* Hero */
.np-hero {
	position: relative;
	padding: 6.5rem 0 3rem;
	background:
		radial-gradient(circle at 8% 20%, rgba(95, 217, 127, 0.12) 0%, transparent 42%),
		radial-gradient(circle at 92% 70%, rgba(245, 130, 32, 0.08) 0%, transparent 40%),
		#ffffff;
	overflow: hidden;
}

.np-hero__grid {
	display: grid;
	gap: 3rem;
	align-items: center;
}

.np-hero__title {
	margin: 0 0 1.25rem;
	font-size: clamp(2.25rem, 4.6vw, 3.75rem);
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: -0.025em;
	color: var(--nc-ink);
}

.np-hero__title .nc-gradient-text {
	padding-bottom: 0.08em;
	background-image: linear-gradient(90deg, #f97316 0%, #059669 100%);
}

.np-hero__lede {
	max-width: 34rem;
	margin: 0 0 1.75rem;
	font-size: 1.0625rem;
	line-height: 1.75;
	color: var(--nc-body);
}

.np-hero__search {
	position: relative;
	display: flex;
	align-items: center;
	gap: 0.5rem;
	max-width: 34rem;
	padding: 0.375rem 0.375rem 0.375rem 2.75rem;
	border: 1px solid var(--nc-line);
	border-radius: 999px;
	background: #ffffff;
	box-shadow: 0 20px 50px -18px rgba(17, 24, 39, 0.18);
	transition: border-color 200ms ease, box-shadow 200ms ease;
}

.np-hero__search:focus-within {
	border-color: #cfd5dc;
	box-shadow: 0 20px 50px -18px rgba(17, 24, 39, 0.18), 0 0 0 4px rgba(15, 23, 42, 0.04);
}

.np-hero__search-icon {
	position: absolute;
	left: 1.1rem;
	width: 1.1rem;
	height: 1.1rem;
	color: var(--nc-muted);
}

.np-hero__search input {
	flex: 1;
	min-width: 0;
	height: 2.875rem;
	border: 0;
	background: transparent;
	font-size: 0.9375rem;
	color: var(--nc-ink);
	outline: none;
}

.np-hero__search input::placeholder {
	color: #9ca3af;
}

.np-hero__search .nc-btn {
	flex-shrink: 0;
	padding: 0 1.25rem;
}

.np-hero__facts {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1rem;
	max-width: 34rem;
	margin: 2rem 0 0;
	padding: 1.5rem 0 0;
	border-top: 1px solid var(--nc-line);
	list-style: none;
}

.np-hero__facts strong {
	display: block;
	font-size: clamp(1.375rem, 2.4vw, 1.75rem);
	font-weight: 800;
	line-height: 1.1;
	letter-spacing: -0.03em;
	background: linear-gradient(135deg, #f97316 0%, #059669 100%);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

.np-hero__facts span {
	display: block;
	margin-top: 0.3rem;
	font-size: 0.8125rem;
	font-weight: 500;
	color: var(--nc-muted);
}

.np-hero__media {
	position: relative;
	margin: 0;
}

.np-hero__media > img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	object-position: 50% 45%;
	border-radius: 28px;
	background: #1f2937;
	box-shadow: 0 30px 60px -24px rgba(17, 24, 39, 0.45);
}

.np-hero__float {
	position: absolute;
	left: 1rem;
	bottom: 1rem;
	display: flex;
	align-items: center;
	gap: 0.75rem;
	max-width: calc(100% - 2rem);
	padding: 0.6rem 1rem 0.6rem 0.6rem;
	border-radius: 18px;
	background: rgba(255, 255, 255, 0.94);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	box-shadow: 0 20px 40px -16px rgba(17, 24, 39, 0.35);
}

.np-hero__thumb {
	display: grid;
	place-items: center;
	width: 3.25rem;
	height: 3.25rem;
	flex-shrink: 0;
	border-radius: 12px;
	background: var(--nc-field);
	overflow: hidden;
}

.np-hero__thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.np-hero__float-label {
	display: block;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--nc-green-dark);
}

.np-hero__float-name {
	display: block;
	font-size: 0.9375rem;
	font-weight: 700;
	line-height: 1.3;
	color: var(--nc-ink);
}

.np-hero__badge {
	position: absolute;
	top: 1rem;
	right: 1rem;
	display: inline-flex;
	align-items: center;
	gap: 0.45rem;
	padding: 0.45rem 0.85rem;
	border-radius: 999px;
	background: rgba(17, 24, 39, 0.55);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	color: #ffffff;
}

.np-hero__badge svg {
	width: 0.95rem;
	height: 0.95rem;
	color: #4ade80;
}

/* Slim banner hero (Products page). Separate from .np-hero, which the
   Resources and Solutions pages still use. The fixed site header overlays the
   page, so the banner starts below it. */
.np-banner {
	--np-header: 81px;
	padding-top: var(--np-header);
	background: #ffffff;
}

.np-banner__hero {
	position: relative;
	display: flex;
	flex-direction: column;
	background:
		radial-gradient(circle at 6% 30%, rgba(95, 217, 127, 0.12) 0%, transparent 40%),
		#ffffff;
	overflow: hidden;
}

.np-banner__inner {
	position: relative;
	z-index: 1;
	padding-top: 1.5rem;
	padding-bottom: 1.5rem;
}

.np-banner__crumbs ol {
	margin: 0 0 1rem;
}

.np-banner__title {
	max-width: 36rem;
	margin: 0 0 0.75rem;
	font-size: clamp(1.875rem, 3.3vw, 3rem);
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: -0.025em;
	color: var(--nc-ink);
}

.np-banner__title .nc-gradient-text {
	padding-bottom: 0.06em;
	background-image: linear-gradient(90deg, #f97316 0%, #059669 100%);
}

.np-banner__lede {
	max-width: 32rem;
	margin: 0;
	font-size: 1rem;
	line-height: 1.65;
	color: var(--nc-body);
}

/* Phones: the photo sits under the copy as a short strip that fades in from white. */
.np-banner__media {
	order: 2;
	height: 9.5rem;
	margin-top: -1rem;
	-webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 45%);
	mask-image: linear-gradient(180deg, transparent 0%, #000 45%);
}

.np-banner__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 50% 50%;
}

/* Trust strip: one card split by hairlines (1px gaps over the line colour). */
.np-trust {
	position: relative;
	z-index: 2;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1px;
	margin: -1.25rem 0 0;
	padding: 0;
	border: 1px solid var(--nc-line);
	border-radius: 20px;
	background: var(--nc-line);
	box-shadow: 0 20px 48px -26px rgba(17, 24, 39, 0.3);
	list-style: none;
	overflow: hidden;
}

.np-trust li {
	display: flex;
	align-items: center;
	gap: 0.7rem;
	min-width: 0;
	padding: 0.85rem 0.85rem;
	background: #ffffff;
}

.np-trust__icon {
	display: grid;
	place-items: center;
	width: 2.5rem;
	height: 2.5rem;
	flex-shrink: 0;
	border-radius: 12px;
	background: var(--nc-peach);
}

.np-trust li:nth-child(even) .np-trust__icon {
	background: var(--nc-mint);
}

.np-trust__icon .nm-ico {
	width: 1.4rem;
	height: 1.4rem;
}

.np-trust__text {
	min-width: 0;
}

.np-trust__text strong {
	display: block;
	font-size: 0.8125rem;
	font-weight: 700;
	line-height: 1.3;
	color: var(--nc-ink);
}

.np-trust__text span {
	display: block;
	margin-top: 0.15rem;
	font-size: 0.75rem;
	line-height: 1.35;
	color: var(--nc-muted);
}

@media (min-width: 768px) {
	/* Wider screens: the photo fills the right of the banner and fades into the copy. */
	.np-banner__media {
		position: absolute;
		top: 0;
		right: 0;
		bottom: 0;
		width: 60%;
		height: auto;
		margin: 0;
		-webkit-mask-image: linear-gradient(90deg, transparent 0%, rgba(0, 0, 0, 0.55) 24%, #000 48%);
		mask-image: linear-gradient(90deg, transparent 0%, rgba(0, 0, 0, 0.55) 24%, #000 48%);
	}

	.np-banner__inner {
		padding-top: 2rem;
		padding-bottom: 3.5rem;
	}

	.np-banner__title,
	.np-banner__lede {
		max-width: 42%;
	}

	.np-trust li {
		gap: 0.9rem;
		padding: 1rem 1.25rem;
	}

	.np-trust__icon {
		width: 2.75rem;
		height: 2.75rem;
		border-radius: 14px;
	}

	.np-trust__icon .nm-ico {
		width: 1.55rem;
		height: 1.55rem;
	}

	.np-trust__text strong {
		font-size: 0.9375rem;
	}

	.np-trust__text span {
		font-size: 0.8125rem;
	}
}

@media (min-width: 1024px) {
	/* <main> already starts below the 52px top bar, so only the rest of the fixed header (97px) needs clearing. */
	.np-banner {
		--np-header: 97px;
	}

	.np-banner__inner {
		padding-top: 2.25rem;
		padding-bottom: 3.75rem;
	}

	.np-banner__lede {
		font-size: 1.0625rem;
	}

	.np-trust {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		margin-top: -1.75rem;
	}

}

/* Phones: titles only in the trust strip, so it stays two short rows. */
@media (max-width: 539px) {
	.np-trust li {
		padding: 0.75rem;
	}

	.np-trust__text span {
		display: none;
	}
}

@media (min-width: 1280px) {
	.np-trust li {
		padding: 1.1rem 1.4rem;
	}
}

/* Ranges */
.np-ranges {
	padding: 3.5rem 0 4rem;
}

.np-ranges__grid {
	display: grid;
	gap: 1.25rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.np-range-card {
	display: flex;
	flex-direction: column;
	height: 100%;
	border: 1px solid var(--nc-line);
	border-radius: 24px;
	background: #ffffff;
	box-shadow: 0 20px 50px -12px rgba(17, 24, 39, 0.06);
	overflow: hidden;
	color: inherit;
	text-decoration: none;
	transition: transform 250ms ease, box-shadow 250ms ease, border-color 250ms ease;
}

.np-range-card:hover {
	transform: translateY(-4px);
	border-color: rgba(22, 163, 74, 0.3);
	box-shadow: 0 28px 56px -20px rgba(17, 24, 39, 0.2);
}

.np-range-card__media {
	position: relative;
	display: block;
	aspect-ratio: 16 / 9;
	background:
		radial-gradient(circle at 50% 120%, rgba(22, 163, 74, 0.22) 0%, transparent 60%),
		var(--nc-mint);
	overflow: hidden;
}

.np-ranges__grid li:nth-child(even) .np-range-card__media {
	background:
		radial-gradient(circle at 50% 120%, rgba(245, 130, 32, 0.22) 0%, transparent 60%),
		var(--nc-peach);
}

/* Product photos are square studio shots, so they sit on the tint as a framed tile. */
.np-range-card__media img {
	position: absolute;
	top: 12%;
	left: 50%;
	height: 82%;
	width: auto;
	aspect-ratio: 1;
	object-fit: cover;
	border-radius: 18px;
	box-shadow: 0 18px 36px -16px rgba(17, 24, 39, 0.35);
	transform: translateX(-50%);
	transition: transform 400ms ease;
}

.np-range-card:hover .np-range-card__media img {
	transform: translateX(-50%) translateY(-4px) scale(1.04);
}

.np-range-card__body {
	display: flex;
	flex-direction: column;
	flex: 1;
	padding: 1.25rem 1.5rem 1.5rem;
}

.np-range-card__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin: -2.5rem 0 1rem;
}

/* The tile overlaps the positioned photo area above it, so it needs its own stacking layer. */
.np-range-card__head .np-icon-chip {
	position: relative;
	z-index: 1;
	width: 3rem;
	height: 3rem;
	border: 4px solid #ffffff;
	border-radius: 16px;
	box-sizing: content-box;
}

.np-ranges__grid li:nth-child(even) .np-icon-chip {
	background: var(--nc-peach);
	color: var(--nc-orange-dark);
}

.np-range-card__meta {
	margin-top: 2rem;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--nc-muted);
}

.np-range-card__title {
	display: block;
	margin-bottom: 0.4rem;
	font-size: 1.25rem;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var(--nc-ink);
}

.np-range-card__text {
	display: block;
	margin-bottom: 1rem;
	font-size: 0.9375rem;
	line-height: 1.6;
	color: var(--nc-body);
}

.np-range-card__types {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
	margin-bottom: 1.25rem;
}

.np-range-card__types span {
	padding: 0.3rem 0.65rem;
	border: 1px solid var(--nc-line);
	border-radius: 999px;
	background: var(--nc-field);
	font-size: 0.75rem;
	font-weight: 600;
	color: var(--nc-body);
}

.np-range-card__cta {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	margin-top: auto;
	font-size: 0.9375rem;
	font-weight: 700;
	color: var(--nc-green-dark);
}

.np-range-card__cta svg {
	width: 1rem;
	height: 1rem;
	transition: transform 200ms ease;
}

.np-range-card:hover .np-range-card__cta svg {
	transform: translateX(4px);
}

/* Products page range cards: product on a soft tinted panel, icon chip, short
   copy, a check-list of the range's types and a tinted CTA. Scoped to
   .np-ranges because the Solutions page reuses np-range-card at its own size.
   Odd cards use the green tone, even cards the orange tone. */
.nessa-products .np-ranges {
	padding: 3rem 0 3.5rem;
}

.np-ranges .nc-section-head {
	margin-bottom: 2rem;
}

.np-ranges .np-ranges__grid > li {
	--rc-tint: var(--nc-mint);
	--rc-glow: rgba(22, 163, 74, 0.2);
	--rc-accent: var(--nc-green);
	--rc-accent-dark: var(--nc-green-dark);
	--rc-tick: rgba(22, 163, 74, 0.14);
}

.np-ranges .np-ranges__grid > li:nth-child(even) {
	--rc-tint: var(--nc-peach);
	--rc-glow: rgba(245, 130, 32, 0.22);
	--rc-accent: var(--nc-orange);
	--rc-accent-dark: var(--nc-orange-dark);
	--rc-tick: rgba(245, 130, 32, 0.16);
}

/* Phones: one swipeable row keeps the section short. */
.np-ranges .np-ranges__grid {
	display: grid;
	grid-template-columns: none;
	grid-auto-flow: column;
	grid-auto-columns: 78%;
	gap: 0.85rem;
	margin: 0 -1.25rem;
	padding: 0.25rem 1.25rem 1.25rem;
	overflow-x: auto;
	scroll-padding-inline: 1.25rem;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
}

.np-ranges .np-ranges__grid::-webkit-scrollbar {
	display: none;
}

.np-ranges .np-ranges__grid > li {
	scroll-snap-align: start;
}

.np-ranges .np-range-card {
	border-radius: 22px;
	box-shadow: 0 1px 2px rgba(17, 24, 39, 0.04), 0 18px 40px -30px rgba(17, 24, 39, 0.3);
}

.np-ranges .np-range-card:hover {
	transform: translateY(-4px);
	border-color: #dfe3e8;
	box-shadow: 0 1px 2px rgba(17, 24, 39, 0.04), 0 30px 56px -30px rgba(17, 24, 39, 0.38);
}

/* Image panel */
.np-ranges .np-ranges__grid li .np-range-card__media {
	aspect-ratio: 16 / 11;
	margin: 0.55rem 0.55rem 0;
	border-radius: 16px;
	background:
		radial-gradient(120% 90% at 50% 105%, var(--rc-glow) 0%, transparent 62%),
		linear-gradient(180deg, #ffffff 0%, var(--rc-tint) 100%);
}

/* Fallback studio photos: their white background melts into the tint. */
.np-ranges .np-ranges__grid li .np-range-card__media img {
	top: 7%;
	height: 88%;
	border-radius: 0;
	box-shadow: none;
	mix-blend-mode: multiply;
}

/* Transparent cut-outs sit on the panel floor with a soft shadow. */
.np-ranges .np-ranges__grid li .np-range-card__media.is-cutout img {
	top: auto;
	bottom: 5%;
	height: 90%;
	aspect-ratio: auto;
	object-fit: contain;
	mix-blend-mode: normal;
	filter: drop-shadow(0 14px 16px rgba(17, 24, 39, 0.22));
}

.np-ranges .np-range-card:hover .np-range-card__media img {
	transform: translateX(-50%) translateY(-4px) scale(1.03);
}

.np-ranges .np-range-card__body {
	padding: 0 1.05rem 1.05rem;
}

/* Icon chip overlapping the panel's bottom edge */
.np-ranges .np-range-card__head {
	margin: -1.3rem 0 0.75rem 0.15rem;
}

.nessa-products .np-ranges .np-ranges__grid .np-icon-chip {
	width: 2.5rem;
	height: 2.5rem;
	border: 3px solid #ffffff;
	border-radius: 14px;
	background: #ffffff;
	box-shadow: 0 0 0 1px var(--nc-line), 0 8px 18px -10px rgba(17, 24, 39, 0.45);
}

.np-ranges .np-icon-chip .nm-ico {
	width: 1.4rem;
	height: 1.4rem;
}

.np-ranges .np-range-card__title {
	margin-bottom: 0.35rem;
	font-size: 1.0625rem;
	line-height: 1.25;
	letter-spacing: -0.015em;
}

.np-ranges .np-range-card__text {
	display: -webkit-box;
	margin-bottom: 0.8rem;
	overflow: hidden;
	font-size: 0.8125rem;
	line-height: 1.5;
	color: var(--nc-muted);
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
}

/* Check-list of the range's types */
.np-range-card__list {
	display: grid;
	gap: 0.4rem;
	margin-bottom: 1rem;
}

.np-range-card__item {
	display: flex;
	align-items: flex-start;
	gap: 0.5rem;
	min-width: 0;
	font-size: 0.8125rem;
	font-weight: 600;
	line-height: 1.3;
	color: var(--nc-ink);
}

/* Long type names wrap to a second line at most. */
.np-range-card__item > span:last-child {
	display: -webkit-box;
	min-width: 0;
	overflow: hidden;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
}

.np-ranges .np-range-card__tick,
.np-range-card__plus {
	box-sizing: border-box;
	display: grid;
	place-items: center;
	flex-shrink: 0;
	margin-top: 0.05rem;
	width: 1.1rem;
	height: 1.1rem;
	border-radius: 50%;
	background: var(--rc-tick);
	color: var(--rc-accent-dark);
}

.np-ranges .np-range-card__tick {
	padding: 0.22rem;
	stroke-width: 3.5;
}

.np-range-card__plus {
	font-size: 0.75rem;
	font-weight: 800;
	line-height: 1;
}

.np-range-card__item.is-more {
	font-weight: 500;
	color: var(--nc-muted);
}

/* CTA: soft tinted pill that fills with the card's tone on hover. */
.np-ranges .np-range-card__cta {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
	min-height: 2.5rem;
	padding: 0 0.35rem 0 1rem;
	border-radius: 999px;
	background: var(--rc-tint);
	font-size: 0.8125rem;
	font-weight: 700;
	color: var(--rc-accent-dark);
	white-space: nowrap;
	transition: background-color 200ms ease, color 200ms ease;
}

.np-ranges .np-range-card__cta svg {
	box-sizing: border-box;
	width: 1.95rem;
	height: 1.95rem;
	padding: 0.5rem;
	border-radius: 50%;
	background: #ffffff;
	color: var(--rc-accent-dark);
	transition: transform 200ms ease;
}

.np-ranges .np-range-card:hover .np-range-card__cta {
	background: var(--rc-accent);
	color: #ffffff;
}

.np-ranges .np-range-card:hover .np-range-card__cta svg {
	transform: translateX(2px);
}

@media (min-width: 640px) {
	.np-ranges .np-ranges__grid {
		margin: 0 -1.5rem;
		padding-left: 1.5rem;
		padding-right: 1.5rem;
		scroll-padding-inline: 1.5rem;
	}
}

@media (min-width: 768px) {
	.np-ranges .np-ranges__grid {
		grid-auto-flow: row;
		grid-auto-columns: auto;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 1rem;
		margin: 0;
		padding: 0;
		overflow: visible;
	}
}

@media (min-width: 1024px) {
	.nessa-products .np-ranges {
		padding: 4rem 0 4.5rem;
	}

	.np-ranges .nc-section-head {
		margin-bottom: 2.5rem;
	}
}

@media (min-width: 1280px) {
	.np-ranges .np-ranges__grid {
		grid-template-columns: repeat(6, minmax(0, 1fr));
	}

	/* Wider wrapper so six cards in one row are not slim. */
	.np-ranges .nc-wrap {
		max-width: 1440px;
		padding: 0 2rem;
	}

	/* In one row every title stays on one line. */
	.np-ranges .np-range-card__title {
		overflow: hidden;
		white-space: nowrap;
		text-overflow: ellipsis;
	}
}

/* New launches: an editorial spotlight (photo on a mint panel + datasheet
   specs) and a numbered index of the other launches on alternating mint /
   peach panels. Studio photos blend into the tint like the range cards.
   Data: nessa_launch_products(). */
.np-launch {
	padding: 3rem 0 1rem;
}

.np-launch .nc-section-head {
	margin-bottom: 2rem;
}

/* Spotlight */
.np-launch__spot {
	display: grid;
	border: 1px solid var(--nc-line);
	border-radius: 24px;
	background: #ffffff;
	box-shadow: 0 20px 50px -12px rgba(17, 24, 39, 0.06);
	overflow: hidden;
}

.np-launch__spot-media {
	position: relative;
	display: grid;
	place-items: center;
	aspect-ratio: 4 / 3;
	background:
		radial-gradient(120% 90% at 50% 105%, rgba(22, 163, 74, 0.2) 0%, transparent 62%),
		linear-gradient(180deg, #ffffff 0%, var(--nc-mint) 100%);
	overflow: hidden;
}

.np-launch__spot-media img {
	width: 72%;
	max-width: 26rem;
	height: auto;
	aspect-ratio: 1;
	object-fit: contain;
	mix-blend-mode: multiply;
	transition: transform 500ms ease;
}

.np-launch__spot:hover .np-launch__spot-media img {
	transform: scale(1.03);
}

.np-launch__count {
	position: absolute;
	left: 1.25rem;
	bottom: 1rem;
	font-size: 2.25rem;
	font-weight: 800;
	line-height: 1;
	letter-spacing: -0.03em;
	font-variant-numeric: tabular-nums;
	color: var(--nc-green-dark);
}

.np-launch__count span {
	margin-left: 0.35rem;
	font-size: 0.875rem;
	font-weight: 600;
	letter-spacing: 0;
	color: var(--nc-muted);
}

.np-launch__spot-body {
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: 1.75rem 1.25rem 2rem;
}

.np-launch__eyebrow {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	margin: 0 0 0.9rem;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--nc-orange-dark);
}

.np-launch__eyebrow::before {
	content: '';
	width: 1.5rem;
	height: 2px;
	background: var(--nc-orange);
}

.np-launch__title {
	margin: 0 0 0.75rem;
	max-width: 20ch;
	font-size: clamp(1.55rem, 1.1rem + 1.8vw, 2.4rem);
	font-weight: 800;
	line-height: 1.12;
	letter-spacing: -0.025em;
	color: var(--nc-ink);
}

.np-launch__tagline {
	margin: 0 0 1.5rem;
	max-width: 34rem;
	font-size: 1rem;
	line-height: 1.6;
	color: var(--nc-body);
}

/* Datasheet-style spec rows. */
.np-launch__specs {
	max-width: 30rem;
	margin: 0 0 2rem;
	border-top: 1px solid var(--nc-line);
}

.np-launch__specs > div {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.7rem 0;
	border-bottom: 1px solid var(--nc-line);
}

.np-launch__specs dt {
	font-size: 0.875rem;
	color: var(--nc-muted);
}

.np-launch__specs dd {
	margin: 0;
	font-size: 0.9375rem;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	text-align: right;
	color: var(--nc-ink);
}

.np-launch__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem 1.5rem;
}

.np-launch__quote {
	font-size: 0.9rem;
	font-weight: 700;
	color: var(--nc-ink);
	text-decoration: underline;
	text-decoration-color: var(--nc-orange);
	text-decoration-thickness: 2px;
	text-underline-offset: 5px;
	transition: color 200ms ease;
}

.np-launch__quote:hover {
	color: var(--nc-orange-dark);
}

/* Index of the other launches: one panel, rows on phones, columns from tablets. */
.np-launch__list {
	display: grid;
	margin: 1.25rem 0 0;
	padding: 0;
	border: 1px solid var(--nc-line);
	border-radius: 24px;
	background: #ffffff;
	box-shadow: 0 20px 50px -12px rgba(17, 24, 39, 0.06);
	list-style: none;
	overflow: hidden;
}

.np-launch__list > li {
	--li-tint: var(--nc-mint);
	--li-glow: rgba(22, 163, 74, 0.2);
	--li-accent: var(--nc-green-dark);
}

.np-launch__list > li:nth-child(even) {
	--li-tint: var(--nc-peach);
	--li-glow: rgba(245, 130, 32, 0.22);
	--li-accent: var(--nc-orange-dark);
}

.np-launch__list > li + li {
	border-top: 1px solid var(--nc-line);
}

.np-launch-item {
	display: grid;
	grid-template-columns: 6.5rem minmax(0, 1fr);
	align-items: center;
	gap: 1rem;
	height: 100%;
	padding: 1rem;
	color: inherit;
	text-decoration: none;
}

.np-launch-item__media {
	position: relative;
	display: grid;
	place-items: center;
	aspect-ratio: 1;
	border-radius: 14px;
	background:
		radial-gradient(120% 90% at 50% 105%, var(--li-glow) 0%, transparent 62%),
		linear-gradient(180deg, #ffffff 0%, var(--li-tint) 100%);
	overflow: hidden;
}

.np-launch-item__media img {
	width: 88%;
	height: auto;
	aspect-ratio: 1;
	object-fit: contain;
	mix-blend-mode: multiply;
	transition: transform 400ms ease;
}

.np-launch-item:hover .np-launch-item__media img {
	transform: scale(1.05);
}

.np-launch-item__body {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.np-launch-item__meta {
	margin-bottom: 0.3rem;
	overflow: hidden;
	font-size: 0.7rem;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	white-space: nowrap;
	text-overflow: ellipsis;
	color: var(--nc-muted);
}

.np-launch-item__num {
	margin-right: 0.5rem;
	font-weight: 800;
	font-variant-numeric: tabular-nums;
	color: var(--li-accent);
}

.np-launch-item__title {
	font-size: 1rem;
	font-weight: 800;
	line-height: 1.3;
	color: var(--nc-ink);
	transition: color 200ms ease;
}

.np-launch-item:hover .np-launch-item__title {
	color: var(--li-accent);
}

.np-launch-item__text {
	display: none;
	margin-top: 0.4rem;
	font-size: 0.875rem;
	line-height: 1.55;
	color: var(--nc-body);
}

.np-launch-item__specs {
	margin-top: 0.35rem;
	font-size: 0.8125rem;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	color: var(--nc-body);
}

.np-launch-item__cta {
	display: none;
	align-items: center;
	gap: 0.35rem;
	margin-top: auto;
	padding-top: 1.1rem;
	font-size: 0.875rem;
	font-weight: 700;
	color: var(--li-accent);
}

.np-launch-item__cta svg {
	width: 1rem;
	height: 1rem;
	transition: transform 200ms ease;
}

.np-launch-item:hover .np-launch-item__cta svg {
	transform: translateX(3px);
}

.np-launch__spot-media:focus-visible,
.np-launch-item:focus-visible {
	outline: 2px solid var(--nc-green);
	outline-offset: -2px;
}

@media (min-width: 640px) {
	.np-launch__spot-body {
		padding: 2rem;
	}

	.np-launch__count {
		left: 2rem;
		bottom: 1.5rem;
	}
}

@media (min-width: 768px) {
	.np-launch__list {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.np-launch__list > li + li {
		border-top: 0;
		border-left: 1px solid var(--nc-line);
	}

	.np-launch-item {
		display: flex;
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		padding: 0;
	}

	.np-launch-item__media {
		aspect-ratio: 4 / 3;
		border-radius: 0;
	}

	.np-launch-item__media img {
		width: 64%;
	}

	.np-launch-item__body {
		flex: 1;
		padding: 1.25rem 1.5rem 1.5rem;
	}

	.np-launch-item__title {
		font-size: 1.0625rem;
	}

	.np-launch-item__text,
	.np-launch-item__cta {
		display: flex;
	}

	.np-launch-item__text {
		display: block;
	}

	.np-launch-item__specs {
		margin-top: 0.75rem;
		padding-top: 0.75rem;
		border-top: 1px dashed var(--nc-line);
	}
}

@media (min-width: 1024px) {
	.np-launch {
		padding-top: 4rem;
	}

	.np-launch .nc-section-head {
		margin-bottom: 2.5rem;
	}

	.np-launch__spot {
		grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
		min-height: 30rem;
	}

	.np-launch__spot-media {
		aspect-ratio: auto;
	}

	.np-launch__spot-body {
		padding: 3rem 3.5rem;
	}

	.np-launch__count {
		left: 2.5rem;
		bottom: 2rem;
		font-size: 3rem;
	}
}

@media (prefers-reduced-motion: reduce) {
	.np-launch__spot-media img,
	.np-launch-item__media img,
	.np-launch-item__cta svg {
		transition: none;
	}
}

/* Catalogue */
.np-catalog {
	padding: 4rem 0;
	background: linear-gradient(180deg, #ffffff 0%, rgba(233, 251, 238, 0.45) 30%, rgba(233, 251, 238, 0.45) 70%, #ffffff 100%);
	scroll-margin-top: 6rem;
}

.np-catalog__layout {
	display: grid;
	gap: 2rem;
	align-items: start;
}

.np-filters {
	display: none;
}

.np-filters__card,
.np-filters__help {
	border: 1px solid var(--nc-line);
	border-radius: 24px;
	background: #ffffff;
	box-shadow: 0 20px 50px -12px rgba(17, 24, 39, 0.08);
}

.np-filters__card {
	padding: 1rem;
}

.np-filters__title {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0.25rem 0.5rem 0.75rem;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--nc-green-dark);
}

.np-filters__title svg {
	width: 1rem;
	height: 1rem;
}

.np-cat {
	display: flex;
	align-items: center;
	gap: 0.65rem;
	width: 100%;
	min-height: 2.875rem;
	padding: 0.4rem 0.6rem;
	border: 0;
	border-radius: 14px;
	background: transparent;
	font-size: 0.9375rem;
	font-weight: 600;
	text-align: left;
	color: var(--nc-ink);
	transition: background-color 200ms ease, color 200ms ease;
}

.np-cat:hover {
	background: var(--nc-field);
}

.np-cat.is-active {
	background: var(--nc-mint);
	color: var(--nc-green-dark);
}

.np-cat.is-active .np-count {
	background: #ffffff;
	color: var(--nc-green-dark);
}

/* Mega-menu icons (.nm-ico) are two-tone, so their tile stays light in every state. */
.np-cat__icon {
	display: grid;
	place-items: center;
	width: 2.25rem;
	height: 2.25rem;
	flex-shrink: 0;
	border: 1px solid var(--nc-line);
	border-radius: 12px;
	background: #ffffff;
	transition: background-color 200ms ease, border-color 200ms ease;
}

.np-cat__icon .nm-ico {
	width: 1.3rem;
	height: 1.3rem;
}

.np-cat.is-active .np-cat__icon {
	border-color: rgba(22, 163, 74, 0.35);
	background: #ffffff;
}

.np-cat__name {
	flex: 1;
	min-width: 0;
	line-height: 1.3;
}

.np-cat .np-count {
	margin-left: 0;
}

.np-cat__chev {
	width: 1rem;
	height: 1rem;
	color: var(--nc-muted);
	transition: transform 250ms ease;
}

.np-cat-group.is-open .np-cat__chev {
	transform: rotate(180deg);
}

.np-types {
	margin: 0.25rem 0 0.5rem 1.55rem;
	padding: 0 0 0 0.5rem;
	border-left: 2px solid var(--nc-line);
	list-style: none;
}

.np-type {
	position: relative;
	display: flex;
	align-items: center;
	gap: 0.5rem;
	width: 100%;
	min-height: 2.5rem;
	padding: 0.4rem 0.6rem;
	border: 0;
	border-radius: 10px;
	background: transparent;
	font-size: 0.875rem;
	font-weight: 500;
	line-height: 1.35;
	text-align: left;
	color: var(--nc-body);
	transition: background-color 200ms ease, color 200ms ease;
}

.np-type__icon {
	display: grid;
	place-items: center;
	width: 1.75rem;
	height: 1.75rem;
	flex-shrink: 0;
}

.np-type__icon .nm-ico {
	width: 1.45rem;
	height: 1.45rem;
}

.np-type__name {
	flex: 1;
	min-width: 0;
}

.np-type:hover {
	background: var(--nc-field);
	color: var(--nc-ink);
}

.np-type.is-active {
	background: var(--nc-field);
	font-weight: 700;
	color: var(--nc-green-dark);
}

.np-type.is-active::before {
	content: '';
	position: absolute;
	left: calc(-0.5rem - 2px);
	top: 0.5rem;
	bottom: 0.5rem;
	width: 2px;
	border-radius: 2px;
	background: var(--nc-green);
}

.np-tag {
	flex-shrink: 0;
	padding: 0.2rem 0.5rem;
	border-radius: 999px;
	background: var(--nc-peach);
	font-size: 0.6875rem;
	font-weight: 700;
	line-height: 1.3;
	white-space: nowrap;
	color: var(--nc-orange-dark);
}

.np-filters__help {
	display: grid;
	gap: 0.6rem;
	margin-top: 1rem;
	padding: 1.35rem;
	background:
		radial-gradient(circle at 100% 0%, rgba(245, 130, 32, 0.1) 0%, transparent 55%),
		#ffffff;
}

.np-filters__help-title {
	margin: 0;
	font-size: 1rem;
	font-weight: 700;
	color: var(--nc-ink);
}

.np-filters__help-text {
	margin: 0 0 0.25rem;
	font-size: 0.875rem;
	line-height: 1.55;
	color: var(--nc-body);
}

.np-filters__help-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	min-height: 2.5rem;
	font-size: 0.9375rem;
	font-weight: 700;
	color: var(--nc-ink);
	text-decoration: none;
}

.np-filters__help-link svg {
	width: 1rem;
	height: 1rem;
	color: var(--nc-green-dark);
}

.np-filters__help-link:hover {
	color: var(--nc-green-dark);
}

/* Range and type chips below desktop */
.np-chips {
	display: grid;
	gap: 0.6rem;
	margin-bottom: 1.25rem;
}

.np-chips__row {
	display: flex;
	gap: 0.5rem;
	margin: 0 -1.25rem;
	padding: 0.15rem 1.25rem 0.35rem;
	overflow-x: auto;
	scroll-snap-type: x proximity;
	scrollbar-width: none;
}

.np-chips__row::-webkit-scrollbar {
	display: none;
}

.np-chip {
	display: inline-flex;
	align-items: center;
	gap: 0.45rem;
	flex: none;
	min-height: 2.75rem;
	padding: 0 1rem;
	border: 1px solid var(--nc-line);
	border-radius: 999px;
	background: #ffffff;
	font-size: 0.875rem;
	font-weight: 600;
	white-space: nowrap;
	color: var(--nc-ink);
	scroll-snap-align: start;
	transition: background-color 200ms ease, border-color 200ms ease, color 200ms ease;
}

.np-chip .nm-ico {
	width: 1.2rem;
	height: 1.2rem;
	margin-right: 0.1rem;
}

.np-chip .np-count {
	margin-left: 0.15rem;
}

.np-chip.is-active {
	border-color: rgba(22, 163, 74, 0.5);
	background: var(--nc-mint);
	color: var(--nc-green-dark);
}

.np-chip.is-active .np-count {
	background: #ffffff;
	color: var(--nc-green-dark);
}

.np-chip--sm {
	min-height: 2.5rem;
	padding: 0 0.85rem;
	background: var(--nc-field);
	font-size: 0.8125rem;
	font-weight: 500;
	color: var(--nc-body);
}

.np-chip--sm.is-active {
	border-color: rgba(22, 163, 74, 0.45);
	background: var(--nc-mint);
	font-weight: 700;
	color: var(--nc-green-dark);
}

/* Toolbar */
.np-toolbar {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 1rem 1.5rem;
	margin-bottom: 1.5rem;
	padding-bottom: 1.25rem;
	border-bottom: 1px solid var(--nc-line);
}

.np-toolbar__heading {
	min-width: 0;
}

.np-toolbar__crumb {
	margin: 0 0 0.25rem;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--nc-green-dark);
}

.np-toolbar__title {
	margin: 0;
	font-size: clamp(1.375rem, 2.4vw, 1.75rem);
	font-weight: 800;
	line-height: 1.2;
	letter-spacing: -0.02em;
	color: var(--nc-ink);
}

.np-toolbar__count {
	margin: 0.3rem 0 0;
	font-size: 0.875rem;
	color: var(--nc-muted);
}

.np-search {
	position: relative;
	width: 100%;
}

.np-search__icon {
	position: absolute;
	top: 50%;
	left: 1rem;
	width: 1rem;
	height: 1rem;
	color: var(--nc-muted);
	transform: translateY(-50%);
	pointer-events: none;
}

.np-search input {
	width: 100%;
	height: 2.875rem;
	padding: 0 2.75rem 0 2.6rem;
	border: 1px solid var(--nc-line);
	border-radius: 999px;
	background: #ffffff;
	font-size: 0.9375rem;
	color: var(--nc-ink);
	outline: none;
	-webkit-appearance: none;
	appearance: none;
	transition: border-color 200ms ease, box-shadow 200ms ease;
}

.np-search input::-webkit-search-cancel-button {
	display: none;
}

.np-search input:focus {
	border-color: #cfd5dc;
	box-shadow: 0 0 0 4px rgba(15, 23, 42, 0.04), 0 1px 2px rgba(15, 23, 42, 0.04);
}

.np-search__clear {
	position: absolute;
	top: 50%;
	right: 0.35rem;
	display: grid;
	place-items: center;
	width: 2.25rem;
	height: 2.25rem;
	border: 0;
	border-radius: 50%;
	background: var(--nc-field);
	color: var(--nc-body);
	transform: translateY(-50%);
}

.np-search__clear:hover {
	background: var(--nc-mint);
	color: var(--nc-green-dark);
}

.np-search__clear svg {
	width: 0.95rem;
	height: 0.95rem;
}

/* Filter sections: wattage, application, IP rating and warranty */
.np-filters__title .nm-ico {
	width: 1.15rem;
	height: 1.15rem;
}

.np-refine__clear,
.np-active__clear {
	padding: 0.25rem 0.4rem;
	border: 0;
	border-radius: 8px;
	background: none;
	font-size: 0.8125rem;
	font-weight: 700;
	color: var(--nc-orange-dark);
}

.np-refine__clear:hover,
.np-active__clear:hover {
	color: var(--nc-ink);
}

.np-facet {
	border-top: 1px solid var(--nc-line);
	padding: 0.35rem 0;
}

.np-facet:last-child {
	padding-bottom: 0;
}

.np-facet__toggle {
	display: flex;
	align-items: center;
	gap: 0.65rem;
	width: 100%;
	min-height: 2.875rem;
	padding: 0.4rem 0.6rem;
	border: 0;
	border-radius: 14px;
	background: transparent;
	font-size: 0.9375rem;
	font-weight: 600;
	text-align: left;
	color: var(--nc-ink);
	transition: background-color 200ms ease;
}

.np-facet__toggle:hover {
	background: var(--nc-field);
}

.np-facet__label {
	flex: 1;
	min-width: 0;
}

.np-facet.is-open > .np-facet__toggle .np-cat__chev {
	transform: rotate(180deg);
}

.np-facet__badge {
	display: inline-grid;
	place-items: center;
	min-width: 1.4rem;
	height: 1.4rem;
	padding: 0 0.35rem;
	border-radius: 999px;
	background: var(--nc-green);
	font-size: 0.6875rem;
	font-weight: 700;
	color: #ffffff;
}

.np-facet__options {
	display: grid;
	gap: 0.1rem;
	margin: 0.15rem 0 0.4rem;
	padding: 0 0 0 0.35rem;
	list-style: none;
}

.np-check {
	position: relative;
	display: flex;
	align-items: center;
	gap: 0.6rem;
	min-height: 2.5rem;
	padding: 0.35rem 0.6rem;
	border-radius: 10px;
	font-size: 0.875rem;
	line-height: 1.35;
	color: var(--nc-body);
	cursor: pointer;
	transition: background-color 200ms ease, opacity 200ms ease;
}

.np-check:hover {
	background: var(--nc-field);
	color: var(--nc-ink);
}

.np-check input {
	position: absolute;
	width: 1px;
	height: 1px;
	opacity: 0;
	pointer-events: none;
}

.np-check__box {
	display: grid;
	place-items: center;
	width: 1.15rem;
	height: 1.15rem;
	flex-shrink: 0;
	border: 1.5px solid #cbd5e1;
	border-radius: 6px;
	background: #ffffff;
	color: #ffffff;
	transition: background-color 150ms ease, border-color 150ms ease;
}

.np-check__box svg {
	width: 0.75rem;
	height: 0.75rem;
	stroke-width: 3.5;
	opacity: 0;
}

.np-check input:checked + .np-check__box {
	border-color: var(--nc-green);
	background: var(--nc-green);
}

.np-check input:checked + .np-check__box svg {
	opacity: 1;
}

.np-check input:checked ~ .np-check__label {
	font-weight: 700;
	color: var(--nc-ink);
}

.np-check input:focus-visible + .np-check__box {
	outline: 3px solid rgba(22, 163, 74, 0.35);
	outline-offset: 2px;
}

.np-check__icon {
	display: grid;
	place-items: center;
	flex-shrink: 0;
}

.np-check__icon .nm-ico {
	width: 1.3rem;
	height: 1.3rem;
}

.np-check__label {
	flex: 1;
	min-width: 0;
}

.np-check.is-empty {
	opacity: 0.45;
	cursor: default;
}

.np-check.is-empty:hover {
	background: transparent;
}

/* Toolbar tools: search, sort and (below 1024px) the Filters button */
.np-toolbar__tools {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.6rem;
	width: 100%;
}

.np-toolbar__tools .np-search {
	flex: 1 1 100%;
	width: auto;
}

.np-sort {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 0.55rem;
	flex: 1 1 0;
	min-width: 0;
}

.np-sort__label {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	font-size: 0.8125rem;
	font-weight: 600;
	white-space: nowrap;
	color: var(--nc-muted);
}

.np-sort__label .nm-ico {
	width: 1.15rem;
	height: 1.15rem;
}

.np-sort__field {
	position: relative;
	flex: 1;
	min-width: 0;
}

.np-sort select {
	width: 100%;
	height: 2.875rem;
	padding: 0 2.4rem 0 1rem;
	border: 1px solid var(--nc-line);
	border-radius: 999px;
	background: #ffffff;
	font: inherit;
	font-size: 0.875rem;
	font-weight: 600;
	color: var(--nc-ink);
	cursor: pointer;
	outline: none;
	-webkit-appearance: none;
	appearance: none;
	transition: border-color 200ms ease, box-shadow 200ms ease;
}

.np-sort select:focus {
	border-color: #cfd5dc;
	box-shadow: 0 0 0 4px rgba(15, 23, 42, 0.04), 0 1px 2px rgba(15, 23, 42, 0.04);
}

.np-sort__chev {
	position: absolute;
	top: 50%;
	right: 0.95rem;
	width: 1rem;
	height: 1rem;
	color: var(--nc-muted);
	transform: translateY(-50%);
	pointer-events: none;
}

/* Enhanced sort: a branded listbox replaces the native popup when scripts run. */
.np-sort__field.is-enhanced select {
	position: absolute;
	width: 1px;
	height: 1px;
	opacity: 0;
	pointer-events: none;
}

.np-sort__trigger {
	display: flex;
	align-items: center;
	width: 100%;
	min-width: 11.5rem;
	height: 2.875rem;
	padding: 0 2.6rem 0 1.1rem;
	border: 1px solid var(--nc-line);
	border-radius: 999px;
	background: #ffffff;
	font-size: 0.875rem;
	font-weight: 600;
	text-align: left;
	white-space: nowrap;
	color: var(--nc-ink);
	transition: border-color 200ms ease, box-shadow 200ms ease;
}

.np-sort__trigger:hover {
	border-color: #cfd5dc;
}

.nessa-products .np-sort__trigger:focus-visible,
.np-sort__field.is-open .np-sort__trigger {
	outline: none;
	border-color: #cfd5dc;
	box-shadow: 0 0 0 4px rgba(15, 23, 42, 0.04), 0 1px 2px rgba(15, 23, 42, 0.04);
}

.np-sort__field.is-open .np-sort__chev {
	transform: translateY(-50%) rotate(180deg);
}

.np-sort__chev {
	transition: transform 200ms ease;
}

.np-sort__list {
	position: absolute;
	top: calc(100% + 0.5rem);
	left: 0;
	z-index: 40;
	min-width: max(100%, 14.5rem);
	margin: 0;
	padding: 0.4rem;
	border: 1px solid var(--nc-line);
	border-radius: 18px;
	background: #ffffff;
	box-shadow: 0 24px 48px -20px rgba(17, 24, 39, 0.3), 0 2px 6px rgba(17, 24, 39, 0.04);
	list-style: none;
	animation: np-pop 160ms ease-out both;
}

@keyframes np-pop {
	from {
		opacity: 0;
		transform: translateY(-4px);
	}
}

.np-sort__option {
	display: flex;
	align-items: center;
	gap: 0.65rem;
	min-height: 2.75rem;
	padding: 0.5rem 0.75rem;
	border-radius: 12px;
	font-size: 0.875rem;
	font-weight: 500;
	white-space: nowrap;
	color: var(--nc-ink);
	cursor: pointer;
	transition: background-color 150ms ease, color 150ms ease;
}

.np-sort__option .nm-ico {
	width: 1.2rem;
	height: 1.2rem;
}

.np-sort__option-label {
	flex: 1;
}

.np-sort__option.is-active {
	background: var(--nc-field);
}

.np-sort__option[aria-selected="true"] {
	background: var(--nc-mint);
	font-weight: 700;
	color: var(--nc-green-dark);
}

.np-sort__check {
	width: 1rem;
	height: 1rem;
	color: var(--nc-green);
	stroke-width: 3;
	opacity: 0;
}

.np-sort__option[aria-selected="true"] .np-sort__check {
	opacity: 1;
}

@media (min-width: 540px) {
	.np-sort__list {
		left: auto;
		right: 0;
	}

	.np-sort__trigger {
		width: auto;
	}
}

@media (prefers-reduced-motion: reduce) {
	.np-sort__list {
		animation: none;
	}
}

.np-filter-toggle {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	flex: 1 1 0;
	height: 2.875rem;
	padding: 0 1.1rem;
	border: 1px solid var(--nc-line);
	border-radius: 999px;
	background: #ffffff;
	font-size: 0.875rem;
	font-weight: 700;
	color: var(--nc-ink);
	transition: border-color 200ms ease;
}

.np-filter-toggle:hover {
	border-color: var(--nc-green);
}

.np-filter-toggle .nm-ico {
	width: 1.2rem;
	height: 1.2rem;
}

.np-filter-toggle__count {
	display: inline-grid;
	place-items: center;
	min-width: 1.35rem;
	height: 1.35rem;
	padding: 0 0.3rem;
	border-radius: 999px;
	background: var(--nc-green);
	font-size: 0.6875rem;
	color: #ffffff;
}

/* Active filter chips above the grid */
.np-active {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
	margin: -0.5rem 0 1.25rem;
}

.np-active__chip {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	min-height: 2.25rem;
	padding: 0 0.6rem 0 0.9rem;
	border: 1px solid rgba(22, 163, 74, 0.35);
	border-radius: 999px;
	background: var(--nc-mint);
	font-size: 0.8125rem;
	font-weight: 600;
	color: var(--nc-green-dark);
	transition: background-color 200ms ease;
}

.np-active__chip:hover {
	background: #ffffff;
}

.np-active__chip svg {
	width: 0.9rem;
	height: 0.9rem;
}

/* Drawer chrome is only used below 1024px. */
.np-drawer__head,
.np-drawer__foot {
	display: none;
}

.np-drawer-backdrop {
	display: none;
}

html.np-drawer-lock {
	overflow: hidden;
}

@media (max-width: 539px) {
	/* The select keeps its accessible name from the visually hidden label text. */
	.np-sort__label {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
		white-space: nowrap;
	}
}

@media (min-width: 540px) {
	.np-toolbar__tools {
		width: auto;
		flex-wrap: nowrap;
	}

	.np-toolbar__tools .np-search {
		flex: 0 1 18rem;
	}

	.np-sort,
	.np-filter-toggle {
		flex: 0 0 auto;
	}

	.np-sort__field {
		flex: 0 0 auto;
	}

	.np-sort select {
		width: auto;
	}
}

@media (max-width: 1023px) {
	/* The sidebar becomes a slide-in drawer opened by the Filters button. */
	.np-filters {
		position: fixed;
		top: 0;
		bottom: 0;
		left: 0;
		z-index: 1000;
		display: flex;
		flex-direction: column;
		width: min(23rem, 88vw);
		background: #ffffff;
		box-shadow: 0 30px 80px -20px rgba(15, 23, 42, 0.45);
		overflow-y: auto;
		overscroll-behavior: contain;
		visibility: hidden;
		transform: translateX(-105%);
		transition: transform 300ms ease, visibility 0s linear 300ms;
	}

	.np-filters.is-open {
		visibility: visible;
		transform: none;
		transition: transform 300ms ease;
	}

	.np-drawer__head {
		position: sticky;
		top: 0;
		z-index: 1;
		display: flex;
		align-items: center;
		justify-content: space-between;
		padding: 0.9rem 1rem 0.9rem 1.25rem;
		border-bottom: 1px solid var(--nc-line);
		background: #ffffff;
	}

	.np-drawer__title {
		display: inline-flex;
		align-items: center;
		gap: 0.55rem;
		margin: 0;
		font-size: 1.0625rem;
		font-weight: 700;
		color: var(--nc-ink);
	}

	.np-drawer__title .nm-ico {
		width: 1.35rem;
		height: 1.35rem;
	}

	.np-drawer__close {
		display: grid;
		place-items: center;
		width: 2.75rem;
		height: 2.75rem;
		border: 1px solid var(--nc-line);
		border-radius: 50%;
		background: #ffffff;
		color: var(--nc-ink);
	}

	.np-drawer__close svg {
		width: 1.1rem;
		height: 1.1rem;
	}

	.np-filters .np-filters__card,
	.np-filters .np-filters__help {
		margin: 0.85rem 1rem 0;
		box-shadow: none;
	}

	.np-drawer__foot {
		position: sticky;
		bottom: 0;
		display: flex;
		gap: 0.6rem;
		margin-top: auto;
		padding: 0.85rem 1rem;
		border-top: 1px solid var(--nc-line);
		background: #ffffff;
	}

	.np-filters .np-filters__help {
		margin-bottom: 1rem;
	}

	.np-drawer__foot .nc-btn {
		flex: 1;
		min-height: 3rem;
	}

	.np-drawer__foot .nc-btn:disabled {
		opacity: 0.5;
		cursor: default;
	}

	.np-drawer-backdrop {
		position: fixed;
		inset: 0;
		z-index: 999;
		display: block;
		background: rgba(15, 23, 42, 0.45);
		-webkit-backdrop-filter: blur(2px);
		backdrop-filter: blur(2px);
	}

	.np-drawer-backdrop[hidden] {
		display: none;
	}
}

@media (min-width: 1024px) {
	.np-filter-toggle {
		display: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	.np-filters {
		transition: none !important;
	}
}

/* Catalogue toolbar: heading on the left, search and sort on the right, centred
   on one line. Both controls share one height and text size. */
.np-toolbar {
	align-items: center;
}

.np-toolbar__title {
	line-height: 1.15;
}

.np-toolbar__count {
	margin-top: 0.25rem;
	font-size: 0.8125rem;
}

.np-toolbar__tools .np-search input {
	height: 2.75rem;
	font-size: 0.875rem;
}

.np-filter-toggle {
	height: 2.75rem;
}

/* The trigger shows the icon and "Sort by" inside the pill, so the outer label is
   kept for screen readers only. */
.np-sort.is-enhanced .np-sort__label {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

.np-sort__trigger {
	gap: 0.45rem;
	height: 2.75rem;
	padding: 0 2.4rem 0 0.95rem;
	font-size: 0.875rem;
}

.np-sort__trigger .nm-ico {
	flex-shrink: 0;
	width: 1.1rem;
	height: 1.1rem;
}

.np-sort__prefix {
	font-weight: 500;
	white-space: nowrap;
	color: var(--nc-muted);
}

.np-sort__value {
	min-width: 0;
	overflow: hidden;
	font-weight: 600;
	white-space: nowrap;
	text-overflow: ellipsis;
	color: var(--nc-ink);
}

@media (max-width: 539px) {
	.np-sort__prefix {
		display: none;
	}

	/* Search on its own row, then sort and filters as two equal halves. */
	.np-toolbar__tools {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.np-toolbar__tools .np-search {
		grid-column: 1 / -1;
	}

	.np-sort__trigger {
		min-width: 0;
	}
}

@media (min-width: 540px) {
	.np-toolbar__tools .np-search {
		flex: 0 1 16rem;
	}

	/* Fixed width so the pill does not jump when the choice changes. */
	.np-sort__trigger {
		width: 16.5rem;
		min-width: 0;
	}
}

/* Unified Filters panel: one card, sections split by hairlines, one row rhythm.
   Every row shares the same left inset and icon column so labels line up. */
.np-panel {
	padding: 0;
	overflow: hidden;
}

.np-panel__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
	min-height: 3.25rem;
	padding: 0.5rem 0.75rem 0.5rem 1.1rem;
	border-bottom: 1px solid var(--nc-line);
}

.np-panel__title {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0;
	font-size: 0.9375rem;
	font-weight: 700;
	color: var(--nc-ink);
}

.np-panel__title .nm-ico {
	width: 1.15rem;
	height: 1.15rem;
}

.np-panel .np-refine__clear {
	padding: 0.3rem 0.5rem;
}

.np-panel .np-facet {
	padding: 0.25rem 0.5rem 0.5rem;
	border-top: 1px solid var(--nc-line);
}

.np-panel .np-panel__head + .np-facet {
	border-top: 0;
}

.np-panel .np-facet:last-child {
	padding-bottom: 0.6rem;
}

/* Section headers: small uppercase labels, quiet until hovered. */
.np-panel .np-facet__toggle {
	min-height: 2.5rem;
	padding: 0.25rem 0.6rem;
	gap: 0.5rem;
	border-radius: 10px;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--nc-muted);
}

.np-panel .np-facet__toggle:hover {
	background: transparent;
	color: var(--nc-ink);
}

.np-panel .np-facet__badge {
	min-width: 1.25rem;
	height: 1.25rem;
	letter-spacing: 0;
}

.np-panel .np-cat__chev {
	width: 0.9rem;
	height: 0.9rem;
}

.np-panel .np-facet__options {
	display: grid;
	gap: 0.125rem;
	margin: 0;
	padding: 0;
}

/* Category rows */
.np-panel .np-cat {
	min-height: 2.375rem;
	padding: 0.25rem 0.6rem;
	gap: 0.6rem;
	border-radius: 10px;
	font-size: 0.875rem;
	font-weight: 500;
}

.np-panel .np-cat.is-active {
	font-weight: 700;
}

.np-panel .np-cat__icon,
.np-panel .np-cat.is-active .np-cat__icon {
	width: 1.5rem;
	height: 1.5rem;
	border: 0;
	border-radius: 0;
	background: transparent;
}

.np-panel .np-cat__icon .nm-ico {
	width: 1.3rem;
	height: 1.3rem;
}

.np-panel .np-count {
	min-width: 1.5rem;
	height: 1.375rem;
	padding: 0 0.4rem;
	font-size: 0.6875rem;
}

/* Types under the open range: indented to the range label, with a guide line. */
.np-panel .np-types {
	margin: 0.125rem 0 0.375rem 1.35rem;
	padding: 0 0 0 0.6rem;
}

.np-panel .np-type {
	min-height: 2.125rem;
	padding: 0.2rem 0.6rem;
	gap: 0.5rem;
	border-radius: 8px;
	font-size: 0.8125rem;
}

.np-panel .np-type.is-active::before {
	left: calc(-0.6rem - 2px);
}

.np-panel .np-type__icon {
	width: 1.25rem;
	height: 1.25rem;
}

.np-panel .np-type__icon .nm-ico {
	width: 1.15rem;
	height: 1.15rem;
}

.np-panel .np-tag {
	padding: 0.1rem 0.45rem;
}

/* Checkbox rows */
.np-panel .np-check {
	min-height: 2.25rem;
	padding: 0.25rem 0.6rem;
	gap: 0.6rem;
	border-radius: 10px;
	font-size: 0.8125rem;
}

.np-panel .np-check__box {
	width: 1.05rem;
	height: 1.05rem;
	border-radius: 5px;
}

.np-panel .np-check__icon .nm-ico {
	width: 1.15rem;
	height: 1.15rem;
}

/* The drawer has its own "Filters" header and Clear all button. */
@media (max-width: 1023px) {
	.np-panel__head {
		display: none;
	}
}

/* Desktop sidebar: only the Filters panel scrolls (header kept in view); the
   help card stays pinned underneath, always visible. */
@media (min-width: 1024px) {
	.np-catalog__layout .np-filters {
		display: flex;
		flex-direction: column;
		gap: 0.85rem;
		padding-bottom: 0;
		overflow: hidden;
	}

	.np-catalog__layout .np-filters .np-panel {
		flex: 0 1 auto;
		min-height: 0;
		overflow-y: auto;
		overscroll-behavior: contain;
		scrollbar-width: thin;
		scrollbar-color: #d1d5db transparent;
	}

	.np-catalog__layout .np-panel__head {
		position: sticky;
		top: 0;
		z-index: 1;
		background: #ffffff;
	}

	.np-catalog__layout .np-filters .np-filters__help {
		flex: none;
		margin-top: 0;
	}
}

/* Compact help card */
.np-filters__help {
	gap: 0.45rem;
	padding: 1rem 1.1rem 1.05rem;
	border-radius: 20px;
}

.np-filters__help-title {
	font-size: 0.9375rem;
}

.np-filters__help-text {
	margin-bottom: 0.3rem;
	font-size: 0.8125rem;
	line-height: 1.5;
}

.np-filters__help .nc-btn {
	min-height: 2.5rem;
	font-size: 0.8125rem;
}

.np-filters__help-link {
	min-height: 2.25rem;
	font-size: 0.875rem;
}

/* Product grid */
.np-grid {
	display: grid;
	gap: 1.25rem;
}

.np-grid.is-animating > :not([hidden]) {
	animation: np-in 450ms cubic-bezier(0.22, 1, 0.36, 1) both;
	animation-delay: calc(var(--np-i, 0) * 35ms);
}

@keyframes np-in {
	from {
		opacity: 0;
		transform: translateY(14px);
	}
}

/* Product card: photo, type, two-line title, one-line specs, footer link. */
.np-card {
	position: relative;
	display: flex;
	flex-direction: column;
	border: 1px solid var(--nc-line);
	border-radius: 18px;
	background: #ffffff;
	box-shadow: 0 1px 2px rgba(17, 24, 39, 0.04);
	overflow: hidden;
	transition: transform 250ms ease, box-shadow 250ms ease, border-color 250ms ease;
}

.np-card:hover {
	transform: translateY(-3px);
	border-color: #dfe3e8;
	box-shadow: 0 22px 44px -24px rgba(17, 24, 39, 0.28);
}

.np-card__media {
	position: relative;
	aspect-ratio: 1;
	background: #f4f6f5;
	overflow: hidden;
}

.np-card__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 400ms ease;
}

.np-card:hover .np-card__media img {
	transform: scale(1.04);
}

/* Range badge, still used on the Solutions page cards. */
.np-card__badge {
	position: absolute;
	top: 0.85rem;
	left: 0.85rem;
	z-index: 1;
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	max-width: calc(100% - 1.7rem);
	padding: 0.3rem 0.65rem;
	border: 1px solid var(--nc-line);
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.92);
	font-size: 0.75rem;
	font-weight: 700;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	color: var(--nc-green-dark);
}

.np-card__badge svg {
	width: 0.85rem;
	height: 0.85rem;
}

.np-card__body {
	display: flex;
	flex-direction: column;
	flex: 1;
	padding: 1rem 1.1rem 1.05rem;
}

.np-card__kicker {
	margin: 0 0 0.35rem;
	overflow: hidden;
	font-size: 0.6875rem;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	white-space: nowrap;
	text-overflow: ellipsis;
	color: var(--nc-orange-dark);
}

/* Two lines reserved and clamped, so cards in a row share one height. */
.np-card__title {
	display: -webkit-box;
	min-height: 2.7em;
	margin: 0 0 0.45rem;
	overflow: hidden;
	font-size: 0.9375rem;
	font-weight: 700;
	line-height: 1.35;
	letter-spacing: -0.005em;
	color: var(--nc-ink);
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
}

.np-card__specs {
	margin: 0 0 0.95rem;
	overflow: hidden;
	font-size: 0.8125rem;
	font-weight: 500;
	line-height: 1.4;
	white-space: nowrap;
	text-overflow: ellipsis;
	color: var(--nc-muted);
}

.np-card__specs span + span::before {
	content: '\00B7';
	margin: 0 0.4rem;
	color: #c4cad1;
}

.np-card__cta {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
	margin-top: auto;
	padding-top: 0.8rem;
	border-top: 1px solid var(--nc-line);
	font-size: 0.8125rem;
	font-weight: 700;
	color: var(--nc-ink);
	transition: color 200ms ease;
}

.np-card__cta svg {
	box-sizing: border-box;
	width: 1.75rem;
	height: 1.75rem;
	padding: 0.4rem;
	border-radius: 50%;
	background: var(--nc-field);
	color: var(--nc-ink);
	transition: background-color 200ms ease, color 200ms ease, transform 200ms ease;
}

/* The title link stretches over the whole card, so any click opens the product. */
.np-card__link {
	color: inherit;
	text-decoration: none;
}

.np-card__link::after {
	content: '';
	position: absolute;
	inset: 0;
	z-index: 2;
	border-radius: inherit;
}

.np-card__link:focus-visible {
	outline: none;
}

.np-card:has(.np-card__link:focus-visible) {
	outline: 3px solid rgba(22, 163, 74, 0.45);
	outline-offset: 3px;
}

.np-card:hover .np-card__cta {
	color: var(--nc-green-dark);
}

.np-card:hover .np-card__cta svg {
	background: var(--nc-green);
	color: #ffffff;
	transform: translateX(2px);
}

/* Types that are made to order */
.np-range {
	display: flex;
	flex-direction: column;
	padding: 1.5rem;
	border: 1.5px dashed rgba(22, 163, 74, 0.35);
	border-radius: 22px;
	background:
		radial-gradient(circle at 100% 0%, rgba(245, 130, 32, 0.08) 0%, transparent 50%),
		linear-gradient(180deg, #ffffff 0%, rgba(233, 251, 238, 0.6) 100%);
	transition: border-color 250ms ease, transform 250ms ease;
}

.np-range:hover {
	transform: translateY(-3px);
	border-color: rgba(22, 163, 74, 0.6);
}

.np-range .np-icon-chip {
	margin-bottom: 1.25rem;
	background: #ffffff;
	box-shadow: 0 8px 20px -10px rgba(17, 24, 39, 0.25);
}

.np-range__tag {
	margin: 0 0 0.35rem;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--nc-orange-dark);
}

.np-range__title {
	margin: 0 0 0.5rem;
	font-size: 1.0625rem;
	font-weight: 700;
	line-height: 1.35;
	color: var(--nc-ink);
}

.np-range__text {
	margin: 0 0 1.25rem;
	font-size: 0.9rem;
	line-height: 1.6;
	color: var(--nc-body);
}

.np-range__btn {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	align-self: flex-start;
	min-height: 2.75rem;
	margin-top: auto;
	padding: 0;
	border: 0;
	background: none;
	font-size: 0.9rem;
	font-weight: 700;
	color: var(--nc-green-dark);
}

.np-range__btn svg {
	width: 1rem;
	height: 1rem;
	transition: transform 200ms ease;
}

.np-range__btn:hover svg {
	transform: translateX(4px);
}

/* Selected type with no listed products */
.np-request {
	display: grid;
	gap: 1.5rem;
	padding: 1.75rem 1.5rem;
	border: 1px solid var(--nc-line);
	border-radius: 28px;
	background:
		radial-gradient(circle at 0% 0%, rgba(95, 217, 127, 0.12) 0%, transparent 45%),
		radial-gradient(circle at 100% 100%, rgba(245, 130, 32, 0.1) 0%, transparent 45%),
		#ffffff;
	box-shadow: 0 20px 50px -12px rgba(17, 24, 39, 0.08);
	animation: np-in 450ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.np-request__tag {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0 0 1rem;
	padding: 0.35rem 0.8rem;
	border-radius: 999px;
	background: var(--nc-peach);
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--nc-orange-dark);
}

.np-request__dot {
	width: 0.4rem;
	height: 0.4rem;
	border-radius: 50%;
	background: var(--nc-orange);
}

.np-request__title {
	margin: 0 0 0.6rem;
	font-size: clamp(1.375rem, 2.6vw, 1.875rem);
	font-weight: 800;
	line-height: 1.2;
	letter-spacing: -0.02em;
	color: var(--nc-ink);
}

.np-request__text {
	max-width: 36rem;
	margin: 0 0 1.25rem;
	font-size: 1rem;
	line-height: 1.7;
	color: var(--nc-body);
}

.np-request__lead {
	margin: 0 0 0.75rem;
	font-size: 0.9375rem;
	font-weight: 700;
	color: var(--nc-ink);
}

.np-request__list {
	display: grid;
	gap: 0.6rem;
	margin: 0 0 1.75rem;
	padding: 0;
	list-style: none;
}

.np-request__list li {
	display: flex;
	align-items: center;
	gap: 0.65rem;
	font-size: 0.9375rem;
	color: var(--nc-body);
}

.np-request__list svg {
	width: 1.5rem;
	height: 1.5rem;
	padding: 0.3rem;
	border-radius: 50%;
	background: var(--nc-mint);
	color: var(--nc-green-dark);
	stroke-width: 3;
}

.np-request__actions,
.np-empty__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
}

.np-request__actions .nc-btn,
.np-empty__actions .nc-btn {
	padding: 0 1.35rem;
}

.np-request__media {
	display: none;
}

.np-empty {
	padding: 3rem 1.5rem;
	border: 1.5px dashed var(--nc-line);
	border-radius: 28px;
	background: #ffffff;
	text-align: center;
}

.np-empty__icon {
	display: inline-grid;
	place-items: center;
	width: 3.5rem;
	height: 3.5rem;
	margin-bottom: 1rem;
	border-radius: 50%;
	background: var(--nc-mint);
	color: var(--nc-green-dark);
}

.np-empty__icon svg {
	width: 1.4rem;
	height: 1.4rem;
}

.np-empty__title {
	margin: 0 0 0.5rem;
	font-size: 1.25rem;
	font-weight: 700;
	color: var(--nc-ink);
	overflow-wrap: anywhere;
}

.np-empty__text {
	max-width: 30rem;
	margin: 0 auto 1.5rem;
	font-size: 0.9375rem;
	line-height: 1.6;
	color: var(--nc-body);
}

.np-empty__actions {
	justify-content: center;
}

.np-empty__actions button.nc-btn {
	border-style: solid;
}

/* Why Nessa */
.np-why {
	padding: 4rem 0 3.5rem;
	background: linear-gradient(180deg, #ffffff 0%, rgba(233, 251, 238, 0.5) 50%, #ffffff 100%);
}

.np-features {
	display: grid;
	gap: 1rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.np-features li {
	padding: 1.75rem 1.5rem;
	border: 1px solid var(--nc-line);
	border-radius: 22px;
	background: #ffffff;
	box-shadow: 0 20px 50px -12px rgba(17, 24, 39, 0.06);
	transition: transform 250ms ease, box-shadow 250ms ease, border-color 250ms ease;
}

.np-features li:hover {
	transform: translateY(-4px);
	border-color: rgba(22, 163, 74, 0.3);
	box-shadow: 0 24px 50px -16px rgba(17, 24, 39, 0.15);
}

.np-features__icon {
	display: grid;
	place-items: center;
	width: 3rem;
	height: 3rem;
	margin-bottom: 1.25rem;
	border-radius: 14px;
	background: var(--nc-mint);
	color: var(--nc-green-dark);
}

.np-features li:nth-child(even) .np-features__icon {
	background: var(--nc-peach);
	color: var(--nc-orange-dark);
}

.np-features__icon svg {
	width: 1.35rem;
	height: 1.35rem;
}

.np-features h3 {
	margin: 0 0 0.5rem;
	font-size: 1.0625rem;
	font-weight: 700;
	color: var(--nc-ink);
}

.np-features p {
	margin: 0;
	font-size: 0.9375rem;
	line-height: 1.6;
	color: var(--nc-body);
}

.np-stats {
	margin-top: 2.5rem;
}

/* Project support */
.np-help {
	padding: 2rem 0 3rem;
}

.np-help__panel {
	display: grid;
	border: 1px solid var(--nc-line);
	border-radius: 32px;
	background: #ffffff;
	box-shadow: 0 30px 60px -28px rgba(17, 24, 39, 0.25);
	overflow: hidden;
}

.np-help__media {
	position: relative;
	min-height: 15rem;
	margin: 0;
	background: #1f2937;
}

.np-help__media img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 50% 60%;
}

.np-help__copy {
	padding: 2rem 1.5rem;
}

.np-help__copy .nc-pill {
	margin-bottom: 1rem;
}

.np-help__text {
	margin: 0 0 1.5rem;
	font-size: 1rem;
	line-height: 1.7;
	color: var(--nc-body);
}

.np-help__links {
	display: grid;
	gap: 0.75rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.np-help__links a {
	display: flex;
	align-items: center;
	gap: 1rem;
	padding: 1rem;
	border: 1px solid var(--nc-line);
	border-radius: 18px;
	background: var(--nc-field);
	color: inherit;
	text-decoration: none;
	transition: border-color 200ms ease, background-color 200ms ease, transform 200ms ease;
}

.np-help__links a:hover {
	border-color: rgba(22, 163, 74, 0.35);
	background: #ffffff;
	transform: translateX(3px);
}

.np-help__links li:nth-child(even) .np-icon-chip {
	background: var(--nc-peach);
	color: var(--nc-orange-dark);
}

.np-help__links strong {
	display: block;
	font-size: 0.9375rem;
	font-weight: 700;
	color: var(--nc-ink);
}

.np-help__links strong + span {
	display: block;
	margin-top: 0.15rem;
	font-size: 0.875rem;
	line-height: 1.5;
	color: var(--nc-body);
}

.np-help__arrow {
	width: 1.1rem;
	height: 1.1rem;
	margin-left: auto;
	color: var(--nc-muted);
	transition: color 200ms ease;
}

.np-help__links a:hover .np-help__arrow {
	color: var(--nc-green-dark);
}

@media (min-width: 540px) {
	.np-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.np-search {
		width: 18rem;
	}
}

@media (min-width: 640px) {
	.np-ranges__grid,
	.np-features {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.np-chips__row {
		margin: 0 -1.5rem;
		padding-left: 1.5rem;
		padding-right: 1.5rem;
	}

	.np-hero__float {
		left: -1rem;
		bottom: 1.5rem;
	}

	.np-request {
		padding: 2.25rem;
	}

	.np-help__copy {
		padding: 2.5rem;
	}
}

@media (min-width: 768px) {
	.np-request {
		grid-template-columns: minmax(0, 1.4fr) minmax(0, 0.8fr);
		align-items: center;
		gap: 2rem;
	}

	.np-request__media {
		display: grid;
		place-items: center;
		aspect-ratio: 1;
		border-radius: 22px;
		background:
			repeating-radial-gradient(circle at 50% 50%, transparent 0 2.75rem, rgba(22, 163, 74, 0.08) 2.75rem calc(2.75rem + 1px)),
			radial-gradient(circle at 50% 50%, #ffffff 0%, var(--nc-mint) 85%);
	}

	/* Holds the type's branded icon, copied in from its "on request" tile. */
	.np-request__icon {
		display: grid;
		place-items: center;
		width: 6.5rem;
		height: 6.5rem;
		border: 1px solid var(--nc-line);
		border-radius: 28px;
		background: #ffffff;
		box-shadow: 0 20px 40px -18px rgba(17, 24, 39, 0.3);
	}

	.np-request__icon .nm-ico {
		width: 3.5rem;
		height: 3.5rem;
	}
}

@media (min-width: 1024px) {
	.np-hero {
		padding: 9rem 0 4rem;
	}

	.np-hero__grid {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
		gap: 4rem;
	}

	.np-hero__media > img {
		aspect-ratio: 5 / 4.2;
	}

	.np-ranges {
		padding: 5rem 0;
	}

	.np-ranges__grid,
	.np-features {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 1.5rem;
	}

	.np-catalog {
		padding: 5rem 0;
	}

	.np-catalog__layout {
		grid-template-columns: 19.5rem minmax(0, 1fr);
		gap: 2.25rem;
	}

	.np-filters {
		position: sticky;
		top: 7rem;
		display: block;
		max-height: calc(100vh - 8rem);
		overflow-y: auto;
		scrollbar-width: thin;
		scrollbar-color: #d1d5db transparent;
		padding-bottom: 0.5rem;
	}

	.np-chips {
		display: none;
	}

	.np-why {
		padding: 5.5rem 0 4.5rem;
	}

	.np-help {
		padding: 2.5rem 0 3.5rem;
	}

	.np-help__panel {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
	}

	.np-help__copy {
		padding: 3.5rem;
	}
}

@media (min-width: 1280px) {
	.np-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

/* Phones: compact side-by-side product cards keep the list scannable. */
@media (max-width: 539px) {
	.np-grid {
		gap: 0.75rem;
	}

	.np-card {
		display: grid;
		grid-template-columns: 6.75rem minmax(0, 1fr);
		align-items: stretch;
		border-radius: 16px;
	}

	.np-card__media {
		align-self: start;
		margin: 0.65rem;
		border-radius: 12px;
	}

	.np-card__badge {
		display: none;
	}

	.np-card__body {
		padding: 0.8rem 0.85rem 0.8rem 0.1rem;
	}

	.np-card__title {
		min-height: 0;
		margin-bottom: 0.3rem;
	}

	.np-card__specs {
		margin-bottom: 0.7rem;
		font-size: 0.75rem;
	}

	.np-card__cta {
		padding-top: 0.6rem;
	}

	.np-card__cta svg {
		width: 1.6rem;
		height: 1.6rem;
	}
}

@media (max-width: 479px) {
	.np-hero__search {
		flex-wrap: wrap;
		padding: 0.375rem;
		border-radius: 24px;
	}

	.np-hero__search-icon {
		top: 1.35rem;
	}

	.np-hero__search input {
		padding-left: 2.4rem;
	}

	.np-hero__search .nc-btn {
		width: 100%;
	}

	.np-hero__badge {
		display: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	.nessa-products *,
	.nessa-products *::before,
	.nessa-products *::after {
		transition: none !important;
		animation: none !important;
	}
}

/* ==========================================================================
   Resources page
   Shares the Products page tokens and components via .nessa-products
   (np-hero, np-chip, np-search, np-empty, np-icon-chip) and the contact page's
   nc- components; nr- classes are page specific.
   ========================================================================== */

/* Hero */
.nr-hero__topics {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.4rem;
	max-width: 36rem;
	margin-top: 1rem;
}

.nr-hero__topics-label {
	margin-right: 0.15rem;
	font-size: 0.8125rem;
	font-weight: 600;
	color: var(--nc-muted);
}

.nr-hero__topics a {
	display: inline-flex;
	align-items: center;
	min-height: 2.25rem;
	padding: 0 0.7rem;
	border: 1px solid var(--nc-line);
	border-radius: 999px;
	background: #ffffff;
	font-size: 0.8125rem;
	white-space: nowrap;
	font-weight: 600;
	color: var(--nc-ink);
	text-decoration: none;
	transition: background-color 200ms ease, border-color 200ms ease, color 200ms ease;
}

.nr-hero__topics a:hover {
	border-color: rgba(22, 163, 74, 0.45);
	background: var(--nc-mint);
	color: var(--nc-green-dark);
}

/* Featured article: photo with the copy on a dark fade */
.nr-feature {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	min-height: 24rem;
	border-radius: 28px;
	background: #1f2937;
	box-shadow: 0 30px 60px -24px rgba(17, 24, 39, 0.45);
	overflow: hidden;
	isolation: isolate;
}

.nr-feature > img {
	position: absolute;
	inset: 0;
	z-index: -2;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 700ms ease;
}

.nr-feature::before {
	content: '';
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(180deg, rgba(15, 23, 42, 0) 20%, rgba(15, 23, 42, 0.55) 52%, rgba(15, 23, 42, 0.92) 100%);
}

.nr-feature:hover > img {
	transform: scale(1.05);
}

.nr-feature .np-hero__badge svg {
	color: #fdba74;
}

.nr-feature__body {
	padding: 1.5rem;
}

.nr-feature__topic {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	margin: 0 0 0.85rem;
	padding: 0.3rem 0.75rem;
	border-radius: 999px;
	background: linear-gradient(90deg, #f97316 0%, #10b981 100%);
	font-size: 0.75rem;
	font-weight: 700;
	color: #ffffff;
}

.nr-feature__topic svg {
	width: 0.85rem;
	height: 0.85rem;
}

.nr-feature__title {
	margin: 0 0 0.85rem;
	font-size: clamp(1.375rem, 2.6vw, 1.875rem);
	font-weight: 700;
	line-height: 1.25;
	letter-spacing: -0.02em;
	color: #ffffff;
}

.nr-feature__link {
	color: inherit;
	text-decoration: none;
}

.nr-feature__link::after {
	content: '';
	position: absolute;
	inset: 0;
	z-index: 2;
	border-radius: inherit;
}

.nr-feature__link:focus-visible {
	outline: none;
}

.nr-feature:has(.nr-feature__link:focus-visible) {
	outline: 3px solid rgba(22, 163, 74, 0.45);
	outline-offset: 3px;
}

.nr-feature__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0 0 1.25rem;
	font-size: 0.875rem;
	color: rgba(255, 255, 255, 0.75);
}

.nr-feature__cta {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	min-height: 2.75rem;
	padding: 0 1.25rem;
	border-radius: 999px;
	background: linear-gradient(135deg, var(--nc-orange) 0%, #ea580c 100%);
	box-shadow: 0 10px 22px -8px rgba(234, 88, 12, 0.55);
	font-size: 0.875rem;
	font-weight: 700;
	color: #ffffff;
}

.nr-feature__cta svg {
	width: 1rem;
	height: 1rem;
	transition: transform 200ms ease;
}

.nr-feature:hover .nr-feature__cta svg {
	transform: translateX(3px);
}

/* Resource types */
.nr-hub {
	padding: 0.5rem 0 1rem;
}

.nr-hub__grid {
	display: grid;
	gap: 0.85rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.nr-hub__grid a {
	display: flex;
	align-items: center;
	gap: 0.85rem;
	height: 100%;
	padding: 1.1rem 1rem 1.1rem 1.1rem;
	border: 1px solid var(--nc-line);
	border-radius: 20px;
	background: #ffffff;
	box-shadow: 0 20px 50px -12px rgba(17, 24, 39, 0.06);
	color: inherit;
	text-decoration: none;
	transition: transform 250ms ease, box-shadow 250ms ease, border-color 250ms ease;
}

.nr-hub__grid a:hover {
	transform: translateY(-3px);
	border-color: rgba(22, 163, 74, 0.3);
	box-shadow: 0 24px 50px -16px rgba(17, 24, 39, 0.15);
}

.nr-hub__grid li:nth-child(even) .np-icon-chip {
	background: var(--nc-peach);
	color: var(--nc-orange-dark);
}

.nr-hub__copy {
	flex: 1;
	min-width: 0;
}

.nr-hub__arrow {
	width: 1.1rem;
	height: 1.1rem;
	color: var(--nc-muted);
	transition: color 200ms ease, transform 200ms ease;
}

.nr-hub__grid a:hover .nr-hub__arrow {
	color: var(--nc-green-dark);
	transform: translateX(3px);
}

.nr-hub__copy strong {
	display: block;
	font-size: 0.9375rem;
	font-weight: 700;
	color: var(--nc-ink);
}

.nr-hub__copy span {
	display: block;
	margin-top: 0.15rem;
	font-size: 0.8125rem;
	line-height: 1.45;
	color: var(--nc-body);
}

/* Article library */
.nr-library {
	padding: 3.5rem 0 4rem;
	scroll-margin-top: 6rem;
}

.nr-toolbar {
	display: grid;
	gap: 0.85rem;
	margin-bottom: 1.5rem;
}

.nr-toolbar__bar {
	display: flex;
	flex-direction: column-reverse;
	gap: 0.85rem;
	padding-bottom: 1rem;
	border-bottom: 1px solid var(--nc-line);
}

.nr-topics {
	display: flex;
	gap: 0.5rem;
	margin: 0 -1.25rem;
	padding: 0.15rem 1.25rem 0.35rem;
	overflow-x: auto;
	scroll-snap-type: x proximity;
	scrollbar-width: none;
}

.nr-topics::-webkit-scrollbar {
	display: none;
}

.nr-topics .np-chip svg {
	width: 1rem;
	height: 1rem;
	color: var(--nc-green-dark);
}

.nr-count {
	margin: 0;
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--nc-muted);
}

.nr-grid {
	display: grid;
	gap: 1.25rem;
}

.nr-grid.is-animating > :not([hidden]) {
	animation: np-in 450ms cubic-bezier(0.22, 1, 0.36, 1) both;
	animation-delay: calc(var(--np-i, 0) * 35ms);
}

.nr-card,
.nr-press {
	position: relative;
	display: flex;
	flex-direction: column;
	border: 1px solid var(--nc-line);
	border-radius: 22px;
	background: #ffffff;
	box-shadow: 0 20px 50px -12px rgba(17, 24, 39, 0.06);
	overflow: hidden;
	transition: transform 250ms ease, box-shadow 250ms ease, border-color 250ms ease;
}

.nr-card:hover,
.nr-press:hover {
	transform: translateY(-4px);
	border-color: rgba(22, 163, 74, 0.3);
	box-shadow: 0 28px 56px -20px rgba(17, 24, 39, 0.2);
}

.nr-card__media,
.nr-press__media {
	position: relative;
	aspect-ratio: 16 / 9;
	background: #f1f4f2;
	overflow: hidden;
}

.nr-card__media img,
.nr-press__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 400ms ease;
}

.nr-card:hover .nr-card__media img,
.nr-press:hover .nr-press__media img {
	transform: scale(1.06);
}

.nr-card__body,
.nr-press__body {
	display: flex;
	flex-direction: column;
	flex: 1;
	padding: 1.15rem 1.25rem 1.25rem;
}

.nr-card__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.4rem;
	margin: 0 0 0.5rem;
	font-size: 0.8125rem;
	color: var(--nc-muted);
}

.nr-card__meta svg {
	width: 0.9rem;
	height: 0.9rem;
	color: var(--nc-orange-dark);
}

.nr-card__title,
.nr-press__title {
	margin: 0 0 0.6rem;
	font-size: 1.0625rem;
	font-weight: 700;
	line-height: 1.4;
	color: var(--nc-ink);
	transition: color 200ms ease;
}

.nr-card:hover .nr-card__title,
.nr-press:hover .nr-press__title {
	color: var(--nc-green-dark);
}

.nr-card__excerpt {
	display: -webkit-box;
	margin: 0 0 1.25rem;
	font-size: 0.9rem;
	line-height: 1.6;
	color: var(--nc-body);
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

/* The title link stretches over the whole card, so any click opens the article. */
.nr-card__link {
	color: inherit;
	text-decoration: none;
}

.nr-card__link::after {
	content: '';
	position: absolute;
	inset: 0;
	z-index: 2;
	border-radius: inherit;
}

.nr-card__link:focus-visible {
	outline: none;
}

.nr-card:has(.nr-card__link:focus-visible),
.nr-press:has(.nr-card__link:focus-visible) {
	outline: 3px solid rgba(22, 163, 74, 0.45);
	outline-offset: 3px;
}

.nr-card__cta,
.nr-press__cta {
	display: inline-flex;
	align-items: center;
	gap: 0.45rem;
	margin-top: auto;
	font-size: 0.875rem;
	font-weight: 700;
	color: var(--nc-orange-dark);
}

.nr-card__cta svg,
.nr-press__cta svg {
	width: 1rem;
	height: 1rem;
	transition: transform 200ms ease;
}

.nr-card:hover .nr-card__cta svg {
	transform: translateX(3px);
}

.nr-press:hover .nr-press__cta svg {
	transform: translate(2px, -2px);
}

.nr-more {
	display: flex;
	justify-content: center;
	margin-top: 2rem;
}

.nr-more .nc-btn {
	padding: 0 1.5rem;
}

/* Technical documents */
.nr-docs {
	padding: 1rem 0 3rem;
	scroll-margin-top: 6rem;
}

.nr-docs__panel {
	display: grid;
	gap: 2rem;
	padding: 2rem 1.25rem;
	border: 1px solid var(--nc-line);
	border-radius: 32px;
	background:
		radial-gradient(circle at 0% 0%, rgba(95, 217, 127, 0.14) 0%, transparent 45%),
		radial-gradient(circle at 100% 100%, rgba(245, 130, 32, 0.1) 0%, transparent 45%),
		var(--nc-field);
}

.nr-docs__copy .nc-pill {
	margin-bottom: 1rem;
}

.nr-docs__text {
	max-width: 30rem;
	margin: 0 0 1.25rem;
	font-size: 1rem;
	line-height: 1.7;
	color: var(--nc-body);
}

.nr-docs__points {
	display: grid;
	gap: 0.6rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.nr-docs__points li {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	font-size: 0.9375rem;
	font-weight: 600;
	color: var(--nc-ink);
}

.nr-docs__points svg {
	width: 1.1rem;
	height: 1.1rem;
	padding: 0.2rem;
	border-radius: 50%;
	background: var(--nc-green);
	color: #ffffff;
	stroke-width: 3;
}

.nr-docs__list {
	display: grid;
	gap: 0.75rem;
	align-content: start;
	margin: 0;
	padding: 0;
	list-style: none;
}

.nr-docs__list a {
	display: flex;
	align-items: center;
	gap: 0.9rem;
	padding: 1rem;
	border: 1px solid var(--nc-line);
	border-radius: 18px;
	background: #ffffff;
	color: inherit;
	text-decoration: none;
	transition: border-color 200ms ease, box-shadow 200ms ease, transform 200ms ease;
}

.nr-docs__list a:hover {
	border-color: rgba(22, 163, 74, 0.35);
	box-shadow: 0 20px 40px -20px rgba(17, 24, 39, 0.2);
	transform: translateX(3px);
}

.nr-docs__list li:nth-child(even) .np-icon-chip {
	background: var(--nc-peach);
	color: var(--nc-orange-dark);
}

.nr-docs__item {
	flex: 1;
	min-width: 0;
}

.nr-docs__item strong {
	display: block;
	font-size: 0.9375rem;
	font-weight: 700;
	color: var(--nc-ink);
}

.nr-docs__item span {
	display: block;
	margin-top: 0.15rem;
	font-size: 0.8125rem;
	line-height: 1.5;
	color: var(--nc-body);
}

.nr-docs__format {
	display: none;
	flex: none;
	padding: 0.25rem 0.55rem;
	border-radius: 8px;
	background: #eef1f4;
	font-size: 0.6875rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	color: var(--nc-body);
}

.nr-docs__action {
	display: grid;
	place-items: center;
	flex: none;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: 50%;
	background: var(--nc-mint);
	color: var(--nc-green-dark);
	transition: background-color 200ms ease, color 200ms ease;
}

.nr-docs__action svg {
	width: 1.05rem;
	height: 1.05rem;
}

.nr-docs__action span {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

.nr-docs__list a:hover .nr-docs__action {
	background: linear-gradient(135deg, var(--nc-orange) 0%, #ea580c 100%);
	color: #ffffff;
}

/* Press coverage */
.nr-news {
	padding: 3rem 0 1rem;
	scroll-margin-top: 6rem;
	background: linear-gradient(180deg, #ffffff 0%, rgba(233, 251, 238, 0.5) 50%, #ffffff 100%);
}

.nr-news__grid {
	display: grid;
	gap: 1.25rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.nr-press__outlet {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.4rem;
	margin: 0 0 0.5rem;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--nc-green-dark);
}

.nr-press__outlet svg {
	width: 0.95rem;
	height: 0.95rem;
}

.nr-press__outlet time {
	margin-left: auto;
	font-weight: 600;
	letter-spacing: 0;
	text-transform: none;
	color: var(--nc-muted);
}

.nr-press__title {
	margin-bottom: 1.25rem;
}

.nessa-resources .nc-faq {
	scroll-margin-top: 6rem;
}

@media (min-width: 540px) {
	.nr-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.nr-docs__format {
		display: inline-block;
	}

	.nr-toolbar__bar {
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
	}

	.nr-search {
		width: 18rem;
		flex: none;
	}
}

@media (min-width: 640px) {
	.nr-hub__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.nr-topics {
		margin: 0 -1.5rem;
		padding-left: 1.5rem;
		padding-right: 1.5rem;
	}

	.nr-feature__body {
		padding: 2rem;
	}

	.nr-docs__panel {
		padding: 2.5rem;
	}
}

@media (min-width: 768px) {
	.nr-news__grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.nr-hero .np-hero__grid {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	}

	.nr-feature {
		min-height: 32rem;
	}

	.nr-hub {
		padding: 1rem 0 0.5rem;
	}

	.nr-hub__grid {
		gap: 1.25rem;
	}

	.nr-library {
		padding: 4rem 0 3.5rem;
	}

	.nr-toolbar {
		gap: 1.25rem;
		margin-bottom: 1.75rem;
	}

	/* Topics wrap and centre under the heading on desktop instead of scrolling. */
	.nr-topics {
		flex-wrap: wrap;
		justify-content: center;
		gap: 0.45rem;
		margin: 0;
		padding: 0;
		overflow: visible;
	}

	.nr-topics .np-chip {
		min-height: 2.625rem;
		padding: 0 0.6rem 0 0.9rem;
		gap: 0.4rem;
	}

	.nr-topics .np-count {
		min-width: 1.5rem;
		height: 1.375rem;
		font-size: 0.6875rem;
	}

	.nr-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 1.5rem;
	}

	.nr-docs {
		padding: 1rem 0 2rem;
	}

	.nr-docs__panel {
		grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
		align-items: center;
		gap: 3.5rem;
		padding: 3.5rem;
	}

	.nr-news {
		padding: 4rem 0 1rem;
	}

	.nr-news__grid {
		gap: 1.5rem;
	}
}

/* Laptop widths: three popular topics keep the hero row on one line. */
@media (min-width: 1024px) and (max-width: 1279px) {
	.nr-hero__topics a:nth-of-type(n+4) {
		display: none;
	}
}

@media (min-width: 1280px) {
	.nr-hub__grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}

	.nr-hub__copy strong {
		white-space: nowrap;
	}
}

@media (max-width: 479px) {
	.nr-hero__topics-label {
		width: 100%;
	}
}

/* ==========================================================================
   Solutions page
   Shares the Products page tokens and components via .nessa-products
   (np-hero, np-chip, np-features, np-range-card, np-help, np-icon-chip), the
   Resources hub and article cards (nr-hub, nr-card) and the contact page's
   nc- components; ns- classes are page specific.
   ========================================================================== */
.nessa-solutions {
	--ns-space: 3.5rem;
	--ns-gap: 1.25rem;
	--ns-tint: linear-gradient(180deg, #ffffff 0%, rgba(233, 251, 238, 0.5) 18%, rgba(233, 251, 238, 0.5) 82%, #ffffff 100%);
}

/* One vertical rhythm for every section, alternating white and mint. */
.ns-apps,
.ns-built,
.ns-power,
.nessa-solutions .nc-process,
.ns-proof,
.ns-help,
.ns-guides,
.nessa-solutions .nc-faq {
	padding: var(--ns-space) 0;
	scroll-margin-top: 6rem;
}

.ns-apps,
.ns-power,
.ns-proof,
.ns-guides {
	background: var(--ns-tint);
}

.nessa-solutions .ns-built,
.nessa-solutions .nc-process,
.ns-help,
.nessa-solutions .nc-faq {
	background: #ffffff;
}

.nessa-solutions .nc-cta {
	padding: 0 0 var(--ns-space);
}

/* Branded two-tone icons: sizes per slot. */
.nessa-solutions .np-chip .nm-ico {
	width: 1.15rem;
	height: 1.15rem;
}

.nessa-solutions .nc-flow__icon .nm-ico {
	width: 1.75rem;
	height: 1.75rem;
}

.nessa-solutions .ns-mosaic__tag .nm-ico {
	width: 1rem;
	height: 1rem;
	color: #ffffff;
}

/* Process steps use the same alternating peach and mint tiles as the feature cards. */
.nessa-solutions .nc-flow__icon {
	background: var(--nc-peach);
}

.nessa-solutions .nc-flow li:nth-child(even) .nc-flow__icon {
	background: var(--nc-mint);
}

/* Hero */
.ns-hero {
	padding-bottom: 2.5rem;
}

.ns-hero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
}

.ns-mosaic {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0.75rem;
}

.ns-mosaic figure {
	position: relative;
	margin: 0;
	border-radius: 22px;
	background: #1f2937;
	box-shadow: 0 30px 60px -24px rgba(17, 24, 39, 0.45);
	overflow: hidden;
	isolation: isolate;
}

.ns-mosaic img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 700ms ease;
}

.ns-mosaic figure:hover img {
	transform: scale(1.04);
}

.ns-mosaic__main {
	grid-column: 1 / -1;
	aspect-ratio: 16 / 9;
}

.ns-mosaic__tile {
	aspect-ratio: 16 / 10;
}

/* The float card sits inside the photo, so it keeps clear of the clipped edges. */
.ns-mosaic .ns-mosaic__float {
	left: 1rem;
	bottom: 1rem;
}

.ns-mosaic__float .np-icon-chip {
	width: 2.75rem;
	height: 2.75rem;
	border-radius: 12px;
}

.ns-mosaic__tag {
	position: absolute;
	left: 0.75rem;
	bottom: 0.75rem;
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	padding: 0.4rem 0.75rem;
	border-radius: 999px;
	background: rgba(17, 24, 39, 0.55);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: #ffffff;
}

/* Sector shortcuts */
.ns-sectors {
	padding: 0 0 1rem;
}

.ns-sectors .nr-hub__grid li:last-child a {
	border-style: dashed;
	background: var(--nc-field);
	box-shadow: none;
}

/* Applications */
.ns-filters {
	display: flex;
	gap: 0.5rem;
	margin: 0 -1.25rem 1.75rem;
	padding: 0.15rem 1.25rem 0.35rem;
	overflow-x: auto;
	scroll-snap-type: x proximity;
	scroll-padding: 0 1.25rem;
	scrollbar-width: none;
}

.ns-filters::-webkit-scrollbar {
	display: none;
}

.ns-grid {
	display: grid;
	gap: var(--ns-gap);
}

.ns-grid.is-animating > :not([hidden]) {
	animation: np-in 450ms cubic-bezier(0.22, 1, 0.36, 1) both;
	animation-delay: calc(var(--np-i, 0) * 35ms);
}

.ns-card {
	display: flex;
	flex-direction: column;
	border: 1px solid var(--nc-line);
	border-radius: 24px;
	background: #ffffff;
	box-shadow: 0 20px 50px -12px rgba(17, 24, 39, 0.06);
	overflow: hidden;
	scroll-margin-top: 7rem;
	transition: transform 250ms ease, box-shadow 250ms ease, border-color 250ms ease;
}

.ns-card:hover {
	transform: translateY(-4px);
	border-color: rgba(22, 163, 74, 0.3);
	box-shadow: 0 28px 56px -20px rgba(17, 24, 39, 0.2);
}

/* The card a /solutions/#slug link points at. */
.ns-card.is-target {
	border-color: rgba(22, 163, 74, 0.55);
	box-shadow: 0 0 0 4px rgba(22, 163, 74, 0.14), 0 28px 56px -20px rgba(17, 24, 39, 0.2);
}

.ns-card__media {
	position: relative;
	aspect-ratio: 16 / 9;
	background: #1f2937;
	overflow: hidden;
}

.ns-card__media::after {
	content: '';
	position: absolute;
	inset: auto 0 0;
	height: 4px;
	background: linear-gradient(90deg, #f97316 0%, #10b981 100%);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 400ms ease;
}

.ns-card:hover .ns-card__media::after,
.ns-card.is-target .ns-card__media::after {
	transform: scaleX(1);
}

.ns-card__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 600ms ease;
}

.ns-card:hover .ns-card__media img {
	transform: scale(1.06);
}

.ns-card__body {
	display: flex;
	flex-direction: column;
	flex: 1;
	padding: 0 1.5rem 1.5rem;
}

/* The application icon overlaps the photo, like the range cards on the Products page. */
.ns-card__head {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 0.75rem;
	margin: -1.75rem 0 1rem;
}

.ns-card__head .np-icon-chip {
	width: 3rem;
	height: 3rem;
	border: 4px solid #ffffff;
	border-radius: 16px;
	box-sizing: content-box;
	box-shadow: 0 0 0 1px var(--nc-line), 0 12px 24px -12px rgba(17, 24, 39, 0.35);
}

.nessa-solutions .ns-card__head .np-icon-chip:has(.nm-ico) {
	border: 4px solid #ffffff;
	background: var(--nc-peach);
}

.ns-card__head .nm-ico {
	width: 1.6rem;
	height: 1.6rem;
}

.ns-card__sector {
	padding-bottom: 0.2rem;
	font-size: 0.6875rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-align: right;
	text-transform: uppercase;
	color: var(--nc-muted);
}

.ns-card__title {
	margin: 0 0 0.5rem;
	font-size: 1.25rem;
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: -0.01em;
	color: var(--nc-ink);
}

.ns-card__text {
	margin: 0 0 1.1rem;
	font-size: 0.9375rem;
	line-height: 1.6;
	color: var(--nc-body);
}

.ns-card__needs {
	display: grid;
	align-content: start;
	gap: 0.5rem;
	margin: 0 0 1.25rem;
	padding: 0;
	list-style: none;
}

.ns-card__needs li {
	display: flex;
	align-items: flex-start;
	gap: 0.6rem;
	font-size: 0.875rem;
	font-weight: 600;
	line-height: 1.45;
	color: var(--nc-ink);
}

.ns-card__needs svg {
	width: 1.125rem;
	height: 1.125rem;
	margin-top: 0.03rem;
	padding: 0.2rem;
	border-radius: 50%;
	background: var(--nc-mint);
	color: var(--nc-green-dark);
	stroke-width: 3;
}

.ns-card__picks {
	padding-top: 1.1rem;
	border-top: 1px solid var(--nc-line);
}

.ns-card__label {
	margin: 0 0 0.7rem;
	font-size: 0.6875rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--nc-muted);
}

/* Three equal product tiles, so no card ever wraps a lone chip onto a second line. */
.ns-card__products {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.ns-card__products a {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.45rem;
	height: 100%;
	padding: 0.7rem 0.4rem 0.65rem;
	border: 1px solid var(--nc-line);
	border-radius: 14px;
	background: var(--nc-field);
	font-size: 0.75rem;
	font-weight: 600;
	line-height: 1.3;
	text-align: center;
	color: var(--nc-ink);
	text-decoration: none;
	transition: background-color 200ms ease, border-color 200ms ease, color 200ms ease, transform 200ms ease;
}

.ns-card__products a:hover {
	border-color: rgba(22, 163, 74, 0.45);
	background: var(--nc-mint);
	color: var(--nc-green-dark);
	transform: translateY(-2px);
}

.ns-card__product-icon {
	display: grid;
	place-items: center;
	width: 2.25rem;
	height: 2.25rem;
	border: 1px solid var(--nc-line);
	border-radius: 10px;
	background: #ffffff;
}

.ns-card__product-icon .nm-ico {
	width: 1.3rem;
	height: 1.3rem;
}

.ns-card__cta {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	width: 100%;
	min-height: 2.875rem;
	margin-top: 1.25rem;
	border-radius: 999px;
	background: var(--nc-peach);
	font-size: 0.875rem;
	font-weight: 700;
	color: var(--nc-orange-dark);
	text-decoration: none;
	transition: background 200ms ease, color 200ms ease, box-shadow 200ms ease;
}

.ns-card__cta:hover,
.ns-card__cta:focus-visible {
	background: linear-gradient(135deg, var(--nc-orange) 0%, #ea580c 100%);
	box-shadow: 0 12px 24px -10px rgba(234, 88, 12, 0.6);
	color: #ffffff;
}

.ns-card__cta svg {
	width: 1rem;
	height: 1rem;
	transition: transform 200ms ease;
}

.ns-card__cta:hover svg {
	transform: translateX(3px);
}

/* Cards in a row share their row lines, so titles, lists, products and buttons line up. */
@supports (grid-template-rows: subgrid) {
	.ns-grid {
		row-gap: 0;
	}

	.ns-card {
		display: grid;
		grid-row: span 7;
		grid-template-rows: subgrid;
		row-gap: 0;
		margin-bottom: var(--ns-gap);
	}

	.ns-card__body {
		display: grid;
		grid-row: span 6;
		grid-template-rows: subgrid;
		row-gap: 0;
	}

	.ns-card__cta {
		align-self: end;
	}
}

/* Power options (np-range-card from the Products page) */
.ns-power__grid {
	gap: var(--ns-gap);
}

/* Guides */
.ns-guides__more {
	display: flex;
	justify-content: center;
	margin-top: 2rem;
}

@media (min-width: 640px) {
	.ns-filters {
		margin: 0 -1.5rem 2rem;
		padding-left: 1.5rem;
		padding-right: 1.5rem;
		scroll-padding: 0 1.5rem;
	}

	.ns-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ns-mosaic {
		gap: 1rem;
	}

	.ns-mosaic__float {
		max-width: calc(100% - 2rem);
	}
}

/* Tablets show two guides side by side rather than leaving the third one alone. */
@media (min-width: 540px) and (max-width: 1023px) {
	.ns-guides__grid > :nth-child(3) {
		display: none;
	}
}

@media (min-width: 1024px) {
	.nessa-solutions {
		--ns-space: 5rem;
		--ns-gap: 1.5rem;
	}

	.ns-hero {
		padding-bottom: 3rem;
	}

	.ns-hero .np-hero__grid {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
	}

	/* Sector chips wrap and centre under the heading on desktop instead of scrolling. */
	.ns-filters {
		flex-wrap: wrap;
		justify-content: center;
		margin: 0 0 2.25rem;
		padding: 0;
		overflow: visible;
	}

	.ns-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	/* Four range cards: two by two until there is room for all four in one row. */
	.ns-power__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1280px) {
	.ns-sectors .nr-hub__grid,
	.ns-power__grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}

	/* The Resources hub keeps titles on one line; sector names are longer, so they wrap clear of the arrow. */
	.ns-sectors .nr-hub__copy strong {
		white-space: normal;
	}
}

@media (max-width: 479px) {
	.ns-hero__actions .nc-btn {
		flex: 1 1 100%;
	}

	/* Small photos: the float card and certification badge would cover them. */
	.ns-mosaic .np-hero__badge,
	.ns-mosaic .ns-mosaic__float {
		display: none;
	}

	.ns-mosaic__tile {
		aspect-ratio: 4 / 3;
	}

	.ns-card__body {
		padding: 0 1.25rem 1.25rem;
	}
}

@media (max-width: 539px) {
	/* The Products page hides card badges on phones; solution cards keep theirs. */
	.ns-card .np-card__badge {
		display: inline-flex;
	}
}


/* ==========================================================================
   Product detail page (/product/{slug}/)
   Shares the Products page tokens via .nessa-products; pd- classes are page specific.
   ========================================================================== */
.pd-hero {
	padding: 6.5rem 0 3.5rem;
	background:
		radial-gradient(circle at 8% 20%, rgba(95, 217, 127, 0.12) 0%, transparent 42%),
		radial-gradient(circle at 92% 70%, rgba(245, 130, 32, 0.08) 0%, transparent 40%),
		#ffffff;
}

.pd-crumbs ol {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.35rem 0;
	margin: 0 0 1.75rem;
	padding: 0;
	list-style: none;
	font-size: 0.8125rem;
	color: var(--nc-muted);
}

.pd-crumbs li + li::before {
	content: '/';
	margin: 0 0.6rem;
	color: #cbd5e1;
}

.pd-crumbs a {
	color: var(--nc-muted);
	text-decoration: none;
	transition: color 200ms ease;
}

.pd-crumbs a:hover {
	color: var(--nc-green-dark);
}

.pd-crumbs [aria-current] {
	font-weight: 600;
	color: var(--nc-ink);
}

.pd-hero__grid {
	display: grid;
	gap: 2.5rem;
	align-items: start;
}

/* Gallery: stage + thumbnail rail (left of the stage from 640px, below it on phones) */
.pd-gallery {
	display: grid;
	gap: 0.85rem;
}

.pd-stage {
	position: relative;
	aspect-ratio: 1;
	border: 1px solid var(--nc-line);
	border-radius: 28px;
	background: #f1f4f2;
	box-shadow: 0 30px 60px -28px rgba(17, 24, 39, 0.3);
	overflow: hidden;
}

.pd-stage__track {
	display: flex;
	height: 100%;
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	cursor: zoom-in;
}

.pd-stage__track::-webkit-scrollbar {
	display: none;
}

.pd-stage__track:focus-visible {
	outline: 3px solid rgba(22, 163, 74, 0.45);
	outline-offset: -3px;
	border-radius: 28px;
}

.pd-slide {
	position: relative;
	flex: 0 0 100%;
	height: 100%;
	margin: 0;
	overflow: hidden;
	scroll-snap-align: start;
	scroll-snap-stop: always;
}

.pd-slide img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 300ms ease;
}

.pd-stage.is-zoomed .pd-slide.is-zoomed img {
	transform: scale(1.9);
}

.pd-slide__tag {
	position: absolute;
	top: 1rem;
	right: 1rem;
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	padding: 0.3rem 0.7rem;
	border-radius: 999px;
	background: rgba(17, 24, 39, 0.55);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	font-size: 0.75rem;
	font-weight: 700;
	color: #ffffff;
}

.pd-slide__tag svg {
	width: 0.85rem;
	height: 0.85rem;
	color: #4ade80;
}

.pd-stage__nav {
	position: absolute;
	top: 50%;
	z-index: 2;
	display: grid;
	place-items: center;
	width: 2.75rem;
	height: 2.75rem;
	border: 1px solid var(--nc-line);
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.94);
	box-shadow: 0 10px 24px -12px rgba(17, 24, 39, 0.4);
	color: var(--nc-ink);
	transform: translateY(-50%);
	transition: opacity 200ms ease, color 200ms ease, transform 200ms ease;
}

.pd-stage__nav--prev {
	left: 1rem;
}

.pd-stage__nav--next {
	right: 1rem;
}

.pd-stage__nav:hover {
	color: var(--nc-green-dark);
	transform: translateY(-50%) scale(1.06);
}

.pd-stage__nav svg {
	width: 1.2rem;
	height: 1.2rem;
}

/* With a mouse the arrows appear on hover; on touch screens they stay visible. */
@media (hover: hover) and (pointer: fine) {
	.pd-stage .pd-stage__nav {
		opacity: 0;
	}

	.pd-stage:hover .pd-stage__nav,
	.pd-stage .pd-stage__nav:focus-visible {
		opacity: 1;
	}
}

.pd-stage__count {
	position: absolute;
	left: 1rem;
	bottom: 1rem;
	z-index: 2;
	padding: 0.4rem 0.8rem;
	border-radius: 999px;
	background: rgba(17, 24, 39, 0.55);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	font-size: 0.8125rem;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	color: #ffffff;
}

.pd-stage__zoom {
	position: absolute;
	right: 1rem;
	bottom: 1rem;
	z-index: 2;
	display: grid;
	place-items: center;
	width: 2.75rem;
	height: 2.75rem;
	border: 1px solid var(--nc-line);
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.94);
	box-shadow: 0 10px 24px -12px rgba(17, 24, 39, 0.4);
	color: var(--nc-ink);
	transition: color 200ms ease, transform 200ms ease;
}

.pd-stage__zoom:hover {
	color: var(--nc-green-dark);
	transform: scale(1.06);
}

.pd-stage__zoom svg {
	width: 1.15rem;
	height: 1.15rem;
}

.pd-gallery__thumbs {
	display: flex;
	gap: 0.65rem;
	padding: 0.25rem;
	overflow-x: auto;
	scrollbar-width: none;
}

.pd-gallery__thumbs::-webkit-scrollbar {
	display: none;
}

.pd-thumb {
	flex: none;
	width: 4.5rem;
	height: 4.5rem;
	padding: 0;
	border: 2px solid var(--nc-line);
	border-radius: 16px;
	background: #f1f4f2;
	overflow: hidden;
	opacity: 0.6;
	transition: border-color 200ms ease, opacity 200ms ease, box-shadow 200ms ease;
}

.pd-thumb img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.pd-thumb:hover {
	opacity: 1;
}

.pd-thumb.is-active {
	border-color: var(--nc-green);
	box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.18);
	opacity: 1;
}

/* Summary column */
.pd-kicker {
	display: inline-flex;
	align-items: center;
	gap: 0.6rem;
	margin-bottom: 0.85rem;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--nc-green-dark);
	text-decoration: none;
	transition: color 200ms ease;
}

.pd-kicker .np-icon-chip {
	width: 2rem;
	height: 2rem;
	border-radius: 10px;
}

.pd-kicker .np-icon-chip svg {
	width: 1rem;
	height: 1rem;
}

.pd-kicker:hover {
	color: var(--nc-ink);
}

.pd-title {
	margin: 0;
	font-size: clamp(2rem, 3.2vw, 2.625rem);
	font-weight: 700;
	line-height: 1.12;
	letter-spacing: -0.03em;
	color: var(--nc-ink);
}

/* SKU and share sit together under the title. */
.pd-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.6rem;
	margin-top: 1rem;
}

.pd-sku {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	height: 2.25rem;
	margin: 0;
	padding: 0 0.9rem;
	border: 1px solid var(--nc-line);
	border-radius: 999px;
	background: var(--nc-field);
	font-size: 0.8125rem;
	color: var(--nc-muted);
}

.pd-sku strong {
	letter-spacing: 0.04em;
	color: var(--nc-ink);
}

/* Share: a branded pill that opens a share popover (a bottom sheet on phones). */
.pd-share-wrap {
	position: relative;
}

.pd-share {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	height: 2.25rem;
	padding: 0 1rem 0 0.3rem;
	border: 1px solid rgba(245, 130, 32, 0.38);
	border-radius: 999px;
	background: #fff4ea;
	font-size: 0.8125rem;
	font-weight: 700;
	color: var(--nc-orange-dark);
	cursor: pointer;
	transition: background-color 200ms ease, border-color 200ms ease, color 200ms ease, box-shadow 200ms ease, transform 200ms ease;
}

.pd-share__icon {
	display: grid;
	place-items: center;
	width: 1.65rem;
	height: 1.65rem;
	border-radius: 50%;
	background: linear-gradient(135deg, var(--nc-orange) 0%, #ea580c 100%);
	color: #ffffff;
	box-shadow: 0 4px 10px -4px rgba(234, 88, 12, 0.6);
	transition: background-color 200ms ease, color 200ms ease;
}

.pd-share__icon svg {
	width: 0.85rem;
	height: 0.85rem;
}

.pd-share:hover,
.pd-share.is-open {
	border-color: transparent;
	background: linear-gradient(135deg, var(--nc-orange) 0%, #ea580c 100%);
	color: #ffffff;
	box-shadow: 0 10px 22px -10px rgba(234, 88, 12, 0.6);
	transform: translateY(-1px);
}

.pd-share:hover .pd-share__icon,
.pd-share.is-open .pd-share__icon {
	background: #ffffff;
	color: var(--nc-orange-dark);
	box-shadow: none;
}

.pd-share:focus-visible {
	outline: 2px solid var(--nc-ink);
	outline-offset: 2px;
}

.pd-share__toast {
	position: absolute;
	top: calc(100% + 0.5rem);
	left: 50%;
	z-index: 2;
	padding: 0.4rem 0.75rem;
	border-radius: 999px;
	background: var(--nc-ink);
	font-size: 0.75rem;
	font-weight: 600;
	white-space: nowrap;
	color: #ffffff;
	opacity: 0;
	transform: translate(-50%, -4px);
	pointer-events: none;
	transition: opacity 200ms ease, transform 200ms ease;
}

.pd-share.is-toast .pd-share__toast {
	opacity: 1;
	transform: translate(-50%, 0);
}

/* The copy button confirms in place while the popover is open. */
.pd-share.is-open .pd-share__toast {
	opacity: 0;
}

/* Popover */
.pd-sharepop {
	position: absolute;
	top: calc(100% + 0.7rem);
	left: 0;
	z-index: 30;
	width: 20.5rem;
	max-width: calc(100vw - 2rem);
	padding: 1.1rem;
	border: 1px solid var(--nc-line);
	border-radius: 20px;
	background: #ffffff;
	box-shadow: 0 2px 6px rgba(17, 24, 39, 0.05), 0 28px 60px -22px rgba(17, 24, 39, 0.32);
	text-align: left;
	animation: pd-sharepop-in 160ms ease-out;
}

.pd-sharepop[hidden] {
	display: none;
}

/* Brand strip along the top edge. */
.pd-sharepop::before {
	content: "";
	position: absolute;
	top: -1px;
	left: 1.25rem;
	right: 1.25rem;
	height: 3px;
	border-radius: 0 0 3px 3px;
	background: linear-gradient(90deg, var(--nc-orange) 0%, var(--nc-green) 100%);
}

@keyframes pd-sharepop-in {
	from { opacity: 0; transform: translateY(-6px); }
	to { opacity: 1; transform: translateY(0); }
}

.pd-sharepop__head {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 0.75rem;
	margin-bottom: 0.9rem;
}

.pd-sharepop__heading {
	min-width: 0;
}

.pd-sharepop__title {
	margin: 0;
	font-size: 0.95rem;
	font-weight: 800;
	letter-spacing: -0.015em;
	color: var(--nc-ink);
}

.pd-sharepop__name {
	margin: 0.15rem 0 0;
	overflow: hidden;
	font-size: 0.78rem;
	white-space: nowrap;
	text-overflow: ellipsis;
	color: var(--nc-muted);
}

.pd-sharepop__close {
	display: grid;
	flex-shrink: 0;
	place-items: center;
	width: 2rem;
	height: 2rem;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: #f3f4f6;
	color: var(--nc-ink);
	cursor: pointer;
	transition: background-color 200ms ease;
}

.pd-sharepop__close:hover {
	background: #e5e7eb;
}

.pd-sharepop__close svg {
	width: 0.95rem;
	height: 0.95rem;
}

/* Copy link row */
.pd-sharepop__copy {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin-bottom: 1rem;
	padding: 0.3rem 0.3rem 0.3rem 0.8rem;
	border: 1px solid var(--nc-line);
	border-radius: 999px;
	background: var(--nc-field);
}

.pd-sharepop__link {
	flex-shrink: 0;
	width: 0.95rem;
	height: 0.95rem;
	color: var(--nc-muted);
}

.pd-sharepop .pd-sharepop__url {
	flex: 1;
	min-width: 0;
	height: auto;
	padding: 0;
	border: 0;
	background: transparent;
	box-shadow: none;
	font: inherit;
	font-size: 0.78rem;
	text-overflow: ellipsis;
	color: var(--nc-muted);
	outline: none;
}

.pd-sharepop__copybtn {
	display: inline-flex;
	flex-shrink: 0;
	align-items: center;
	gap: 0.35rem;
	height: 2rem;
	padding: 0 0.85rem;
	border: 0;
	border-radius: 999px;
	background: var(--nc-ink);
	font: inherit;
	font-size: 0.78rem;
	font-weight: 700;
	color: #ffffff;
	cursor: pointer;
	transition: background-color 200ms ease;
}

.pd-sharepop__copybtn svg {
	width: 0.85rem;
	height: 0.85rem;
}

.pd-sharepop__copybtn > svg:nth-of-type(2),
.pd-sharepop__copybtn.is-copied > svg:first-of-type {
	display: none;
}

.pd-sharepop__copybtn.is-copied > svg:nth-of-type(2) {
	display: block;
}

.pd-sharepop__copybtn:hover {
	background: #000000;
}

.pd-sharepop__copybtn.is-copied {
	background: var(--nc-green);
}

.pd-sharepop__copybtn:focus-visible,
.pd-sharepop__close:focus-visible,
.pd-sharepop__opt:focus-visible,
.pd-sharepop__more:focus-visible {
	outline: 2px solid var(--nc-ink);
	outline-offset: 2px;
}

/* Share options */
.pd-sharepop__grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 0.35rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.pd-sharepop__opt {
	--opt-tint: #f3f4f6;
	--opt-ink: var(--nc-ink);
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.4rem;
	padding: 0.5rem 0.25rem;
	border-radius: 14px;
	font-size: 0.72rem;
	font-weight: 600;
	color: var(--nc-ink);
	text-decoration: none;
	transition: background-color 200ms ease, transform 200ms ease;
}

.pd-sharepop__opt--wa {
	--opt-tint: #e8f8ee;
	--opt-ink: var(--nc-green);
}

.pd-sharepop__opt--mail {
	--opt-tint: #fff4ea;
	--opt-ink: var(--nc-orange);
}

.pd-sharepop__ico {
	display: grid;
	place-items: center;
	width: 2.75rem;
	height: 2.75rem;
	border-radius: 50%;
	background: var(--opt-tint);
	color: var(--opt-ink);
	transition: background-color 200ms ease, color 200ms ease;
}

.pd-sharepop__ico svg {
	width: 1.2rem;
	height: 1.2rem;
}

.pd-sharepop__opt--x .pd-sharepop__ico svg {
	width: 1rem;
	height: 1rem;
}

/* Official logos as used in the top bar and footer: WhatsApp and X are solid glyphs. */
.nessa-products .pd-sharepop__opt--wa .pd-sharepop__ico svg,
.nessa-products .pd-sharepop__opt--x .pd-sharepop__ico svg {
	fill: currentColor;
	stroke: none;
}

.pd-sharepop__opt:hover {
	background: #fafaf9;
	color: var(--nc-ink);
	transform: translateY(-2px);
}

.pd-sharepop__opt:hover .pd-sharepop__ico {
	background: var(--opt-ink);
	color: #ffffff;
}

.pd-sharepop__more {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.45rem;
	width: 100%;
	margin-top: 0.75rem;
	padding: 0.65rem;
	border: 1px dashed var(--nc-line);
	border-radius: 999px;
	background: transparent;
	font: inherit;
	font-size: 0.78rem;
	font-weight: 700;
	color: var(--nc-ink);
	cursor: pointer;
}

.pd-sharepop__more[hidden] {
	display: none;
}

.pd-sharepop__more svg {
	width: 0.85rem;
	height: 0.85rem;
}

/* Phones: a bottom sheet over a dim shade. */
.pd-sharepop-shade {
	position: fixed;
	inset: 0;
	z-index: 9998;
	background: rgba(17, 24, 39, 0.45);
	animation: pd-shade-in 160ms ease-out;
}

.pd-sharepop-shade[hidden] {
	display: none;
}

@keyframes pd-shade-in {
	from { opacity: 0; }
}

.pd-sharepop.is-sheet {
	position: fixed;
	top: auto;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 9999;
	width: auto;
	max-width: none;
	padding: 1.4rem 1.25rem calc(1.25rem + env(safe-area-inset-bottom));
	border-radius: 22px 22px 0 0;
	border-bottom: 0;
	animation: pd-sheet-in 220ms ease-out;
}

.pd-sharepop.is-sheet::after {
	content: "";
	position: absolute;
	top: 0.55rem;
	left: 50%;
	width: 2.5rem;
	height: 4px;
	border: 0;
	border-radius: 999px;
	background: #e5e7eb;
	transform: translateX(-50%);
}

.pd-sharepop.is-sheet::before {
	display: none;
}

@keyframes pd-sheet-in {
	from { transform: translateY(100%); }
	to { transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
	.pd-sharepop,
	.pd-sharepop.is-sheet,
	.pd-sharepop-shade {
		animation: none;
	}
}

.pd-summary {
	max-width: 38rem;
	margin: 1.25rem 0 1.5rem;
	font-size: 1rem;
	line-height: 1.7;
	color: var(--nc-body);
}

/* Key figures: one card split by hairlines (1px gaps over the line colour). */
.pd-highlights {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1px;
	margin: 0 0 1.75rem;
	border: 1px solid var(--nc-line);
	border-radius: 20px;
	background: var(--nc-line);
	box-shadow: 0 16px 36px -22px rgba(17, 24, 39, 0.25);
	overflow: hidden;
}

.pd-highlights div {
	display: flex;
	flex-direction: column;
	gap: 0.3rem;
	min-width: 0;
	padding: 0.95rem 1rem;
	background: #ffffff;
}

.pd-highlights dt {
	overflow: hidden;
	font-size: 0.8125rem;
	font-weight: 500;
	white-space: nowrap;
	text-overflow: ellipsis;
	color: var(--nc-muted);
}

.pd-highlights dd {
	margin: 0;
	font-size: 1.125rem;
	font-weight: 800;
	line-height: 1.2;
	letter-spacing: -0.02em;
	white-space: nowrap;
	background: linear-gradient(135deg, #f97316 0%, #059669 100%);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

.pd-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
}

.pd-actions .nc-btn {
	min-height: 3.25rem;
	padding: 0 1.6rem;
	font-size: 0.9375rem;
}

.pd-assure {
	display: grid;
	gap: 0.75rem;
	margin: 1.75rem 0 0;
	padding: 1.5rem 0 0;
	border-top: 1px solid var(--nc-line);
	list-style: none;
}

.pd-assure li {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	font-size: 0.8125rem;
	font-weight: 600;
	line-height: 1.35;
	color: var(--nc-ink);
}

.pd-assure__icon {
	display: grid;
	place-items: center;
	width: 2rem;
	height: 2rem;
	flex-shrink: 0;
	border-radius: 50%;
	background: var(--nc-mint);
	color: var(--nc-green-dark);
}

.pd-assure li:nth-child(2) .pd-assure__icon {
	background: var(--nc-peach);
	color: var(--nc-orange-dark);
}

.pd-assure__icon svg {
	width: 0.95rem;
	height: 0.95rem;
}


/* Details tabs */
.pd-details {
	padding: 4rem 0;
	background: linear-gradient(180deg, #ffffff 0%, rgba(233, 251, 238, 0.5) 40%, rgba(233, 251, 238, 0.5) 70%, #ffffff 100%);
}

.pd-details .nc-section-head {
	margin-bottom: 1.75rem;
}

.pd-tabs {
	display: flex;
	gap: 0.3rem;
	width: fit-content;
	max-width: 100%;
	margin: 0 auto 2rem;
	padding: 0.35rem;
	border: 1px solid var(--nc-line);
	border-radius: 999px;
	background: #ffffff;
	box-shadow: 0 16px 36px -20px rgba(17, 24, 39, 0.2);
	overflow-x: auto;
	scrollbar-width: none;
}

.pd-tab {
	flex: none;
	min-height: 2.75rem;
	padding: 0 1.25rem;
	border: 0;
	border-radius: 999px;
	background: transparent;
	font-size: 0.9375rem;
	font-weight: 600;
	white-space: nowrap;
	color: var(--nc-body);
	transition: background-color 200ms ease, color 200ms ease;
}

.pd-tab:hover {
	color: var(--nc-ink);
}

.pd-tab.is-active {
	background: var(--nc-green);
	color: #ffffff;
	box-shadow: 0 10px 22px -10px rgba(22, 163, 74, 0.6);
}

.pd-panel {
	animation: np-in 450ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.pd-panel:focus-visible {
	outline: 3px solid rgba(22, 163, 74, 0.35);
	outline-offset: 6px;
	border-radius: 12px;
}

.pd-features {
	display: grid;
	gap: 1rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.pd-features li {
	position: relative;
	padding: 1.75rem 1.5rem;
	border: 1px solid var(--nc-line);
	border-radius: 22px;
	background: #ffffff;
	box-shadow: 0 20px 50px -12px rgba(17, 24, 39, 0.06);
	transition: transform 250ms ease, box-shadow 250ms ease, border-color 250ms ease;
}

.pd-features li:hover {
	transform: translateY(-4px);
	border-color: rgba(22, 163, 74, 0.3);
	box-shadow: 0 24px 50px -16px rgba(17, 24, 39, 0.15);
}

.pd-features__num {
	position: absolute;
	top: 1.25rem;
	right: 1.5rem;
	font-size: 2.5rem;
	font-weight: 800;
	line-height: 1;
	letter-spacing: -0.04em;
	color: #eef1f4;
}

.pd-features__icon {
	display: grid;
	place-items: center;
	width: 3rem;
	height: 3rem;
	margin-bottom: 1.25rem;
	border-radius: 14px;
	background: var(--nc-mint);
	color: var(--nc-green-dark);
}

.pd-features li:nth-child(even) .pd-features__icon {
	background: var(--nc-peach);
	color: var(--nc-orange-dark);
}

.pd-features__icon svg {
	width: 1.35rem;
	height: 1.35rem;
	stroke-width: 2.5;
}

.pd-features h3 {
	margin: 0 0 0.5rem;
	font-size: 1.0625rem;
	font-weight: 700;
	color: var(--nc-ink);
}

.pd-features p {
	margin: 0;
	font-size: 0.9375rem;
	line-height: 1.6;
	color: var(--nc-body);
}

.pd-specs {
	display: grid;
	gap: 1.25rem;
	align-items: start;
}

.pd-specs__group {
	border: 1px solid var(--nc-line);
	border-radius: 22px;
	background: #ffffff;
	box-shadow: 0 20px 50px -12px rgba(17, 24, 39, 0.06);
	overflow: hidden;
}

.pd-specs__title {
	margin: 0;
	padding: 1rem 1.25rem;
	border-bottom: 1px solid var(--nc-line);
	background: var(--nc-field);
	font-size: 0.8125rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--nc-green-dark);
}

.pd-specs dl {
	margin: 0;
}

.pd-specs dl div {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.85rem 1.25rem;
}

.pd-specs dl div + div {
	border-top: 1px solid var(--nc-line);
}

.pd-specs dt {
	font-size: 0.9rem;
	color: var(--nc-body);
}

.pd-specs dd {
	margin: 0;
	font-size: 0.9375rem;
	font-weight: 700;
	text-align: right;
	color: var(--nc-ink);
}

.pd-specs__note {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	width: fit-content;
	max-width: 100%;
	margin: 1.5rem auto 0;
	padding: 1rem 1.25rem;
	border-radius: 18px;
	background: var(--nc-peach);
	font-size: 0.9375rem;
	line-height: 1.55;
	color: var(--nc-body);
}

.pd-specs__note svg {
	width: 1.25rem;
	height: 1.25rem;
	color: var(--nc-orange-dark);
}

.pd-specs__note a {
	font-weight: 700;
	color: var(--nc-green-dark);
}

.pd-apps {
	display: grid;
	gap: 1.25rem;
}

.pd-apps__media {
	position: relative;
	min-height: 15rem;
	margin: 0;
	border-radius: 24px;
	background: #1f2937;
	overflow: hidden;
}

.pd-apps__media img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.pd-apps__media figcaption {
	position: absolute;
	left: 1rem;
	bottom: 1rem;
	right: 1rem;
	width: fit-content;
	padding: 0.6rem 1rem;
	border-radius: 14px;
	background: rgba(17, 24, 39, 0.55);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	font-size: 0.875rem;
	font-weight: 600;
	color: #ffffff;
}

.pd-apps__list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0.75rem;
	align-content: start;
	margin: 0;
	padding: 0;
	list-style: none;
}

.pd-apps__list li {
	display: flex;
	align-items: center;
	gap: 0.85rem;
	padding: 1rem;
	border: 1px solid var(--nc-line);
	border-radius: 18px;
	background: #ffffff;
	box-shadow: 0 16px 36px -20px rgba(17, 24, 39, 0.18);
	font-size: 0.9375rem;
	font-weight: 700;
	line-height: 1.3;
	color: var(--nc-ink);
}

.pd-apps__list li:nth-child(4n + 2) .np-icon-chip,
.pd-apps__list li:nth-child(4n + 3) .np-icon-chip {
	background: var(--nc-peach);
	color: var(--nc-orange-dark);
}

/* Related products */
.pd-related {
	padding: 4rem 0 2rem;
}

.pd-related__head {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 1.25rem;
	margin-bottom: 1.75rem;
}

.pd-related__head .nc-pill {
	margin-bottom: 1rem;
}

.pd-related__head .nc-h2 {
	margin: 0;
}

.pd-related__nav {
	display: flex;
	align-items: center;
	gap: 0.5rem;
}

.pd-related__all {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	min-height: 2.75rem;
	margin-right: 0.5rem;
	font-size: 0.9375rem;
	font-weight: 700;
	color: var(--nc-green-dark);
	text-decoration: none;
}

.pd-related__all svg {
	width: 1rem;
	height: 1rem;
	transition: transform 200ms ease;
}

.pd-related__all:hover svg {
	transform: translateX(3px);
}

.pd-rail-btn {
	display: grid;
	place-items: center;
	width: 2.75rem;
	height: 2.75rem;
	border: 1px solid var(--nc-line);
	border-radius: 50%;
	background: #ffffff;
	color: var(--nc-ink);
	transition: border-color 200ms ease, color 200ms ease, opacity 200ms ease;
}

.pd-rail-btn:hover:not(:disabled) {
	border-color: var(--nc-green);
	color: var(--nc-green-dark);
}

.pd-rail-btn:disabled {
	opacity: 0.4;
	cursor: default;
}

.pd-rail-btn svg {
	width: 1.15rem;
	height: 1.15rem;
}

.pd-rail {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: 78%;
	gap: 1.25rem;
	margin: 0 -0.5rem;
	padding: 0.5rem 0.5rem 1.75rem;
	overflow-x: auto;
	scroll-padding-inline: 0.5rem;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
}

.pd-rail::-webkit-scrollbar {
	display: none;
}

.pd-rail > * {
	scroll-snap-align: start;
}

.pd-rail .np-card__title {
	font-size: 1rem;
}

/* Full-screen image viewer */
.pd-lightbox {
	width: 100vw;
	max-width: none;
	height: 100vh;
	height: 100dvh;
	max-height: none;
	margin: 0;
	padding: 1rem;
	border: 0;
	background: rgba(15, 23, 42, 0.94);
	color: #ffffff;
}

.pd-lightbox[open] {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr) auto;
	gap: 1rem;
}

.pd-lightbox::backdrop {
	background: rgba(15, 23, 42, 0.6);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
}

.pd-lightbox__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
}

.pd-lightbox__title {
	margin: 0;
	font-size: 1rem;
	font-weight: 700;
}

.pd-lightbox__title span {
	margin-left: 0.5rem;
	font-weight: 500;
	font-variant-numeric: tabular-nums;
	color: rgba(255, 255, 255, 0.6);
}

.pd-lightbox__close {
	display: grid;
	place-items: center;
	width: 2.75rem;
	height: 2.75rem;
	border: 1px solid rgba(255, 255, 255, 0.2);
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.08);
	color: #ffffff;
	transition: background-color 200ms ease;
}

.pd-lightbox__close:hover {
	background: rgba(255, 255, 255, 0.18);
}

.pd-lightbox__close svg {
	width: 1.15rem;
	height: 1.15rem;
}

.pd-lightbox__stage {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 0.85rem;
	min-height: 0;
	margin: 0;
}

.pd-lightbox__stage img {
	display: block;
	max-width: 100%;
	min-height: 0;
	max-height: calc(100% - 2.5rem);
	width: auto;
	height: auto;
	object-fit: contain;
	border-radius: 20px;
	background: #ffffff;
}

.pd-lightbox__caption {
	font-size: 0.875rem;
	text-align: center;
	color: rgba(255, 255, 255, 0.75);
}

.pd-lightbox__stage .pd-stage__nav--prev {
	left: 0;
}

.pd-lightbox__stage .pd-stage__nav--next {
	right: 0;
}

.pd-lightbox__thumbs {
	display: flex;
	justify-content: center;
	gap: 0.6rem;
	overflow-x: auto;
	scrollbar-width: none;
}

.pd-lightbox__thumbs .pd-thumb {
	width: 3.75rem;
	height: 3.75rem;
	border-color: rgba(255, 255, 255, 0.2);
}

.pd-lightbox__thumbs .pd-thumb.is-active {
	border-color: #4ade80;
	box-shadow: none;
}

/* Datasheet popup: contact details before the file is released */
.pd-dsmodal {
	width: calc(100% - 2rem);
	max-width: 30rem;
	max-height: calc(100dvh - 2rem);
	margin: auto;
	padding: 0;
	border: 0;
	border-radius: 24px;
	background: transparent;
	color: var(--nc-ink);
	overflow: visible;
}

.pd-dsmodal::backdrop {
	background: rgba(15, 23, 42, 0.55);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
}

.pd-dsmodal[open] .pd-dsmodal__card {
	animation: nc-thanks-in 380ms cubic-bezier(0.2, 0.7, 0.2, 1) both;
}

.pd-dsmodal__card {
	position: relative;
	max-height: calc(100dvh - 2rem);
	overflow-y: auto;
	overscroll-behavior: contain;
	padding: 1.75rem;
	border-radius: 24px;
	background:
		radial-gradient(120% 60% at 100% 0%, rgba(249, 115, 22, 0.08) 0%, rgba(249, 115, 22, 0) 60%),
		radial-gradient(120% 60% at 0% 0%, rgba(16, 185, 129, 0.1) 0%, rgba(16, 185, 129, 0) 60%),
		#ffffff;
	box-shadow: 0 32px 64px -24px rgba(15, 23, 42, 0.35), 0 8px 20px -8px rgba(15, 23, 42, 0.12);
}

.pd-dsmodal__close {
	position: absolute;
	top: 1rem;
	right: 1rem;
	display: grid;
	place-items: center;
	width: 2.25rem;
	height: 2.25rem;
	border: 1px solid var(--nc-line);
	border-radius: 50%;
	background: #ffffff;
	color: var(--nc-muted);
	cursor: pointer;
	transition: color 160ms ease, border-color 160ms ease, transform 200ms ease;
}

.pd-dsmodal__close:hover {
	border-color: #d4d9df;
	color: var(--nc-ink);
	transform: rotate(90deg);
}

.pd-dsmodal__close svg {
	width: 1rem;
	height: 1rem;
}

.pd-dsmodal .nc-pill {
	margin-bottom: 0.9rem;
	padding: 0.3rem 0.8rem;
	font-size: 0.625rem;
}

.pd-dsmodal__title {
	margin: 0 2.5rem 0.4rem 0;
	font-size: 1.5rem;
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.02em;
	color: var(--nc-ink);
}

.pd-dsmodal__desc {
	margin: 0;
	font-size: 0.9rem;
	line-height: 1.55;
	color: var(--nc-muted);
}

.pd-dsmodal__product {
	display: flex;
	align-items: center;
	gap: 0.85rem;
	margin: 1.25rem 0 1.4rem;
	padding: 0.65rem 0.75rem 0.65rem 0.65rem;
	border: 1px solid var(--nc-line);
	border-radius: 16px;
	background: var(--nc-field);
}

.pd-dsmodal__product img {
	flex: none;
	width: 3.25rem;
	height: 3.25rem;
	border-radius: 12px;
	background: #ffffff;
	object-fit: contain;
}

.pd-dsmodal__product > span:not(.np-icon-chip) {
	display: grid;
	flex: 1 1 auto;
	min-width: 0;
	gap: 0.15rem;
}

.pd-dsmodal__product strong {
	font-size: 0.95rem;
	font-weight: 700;
}

.pd-dsmodal__product strong + span {
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	color: var(--nc-muted);
}

.pd-dsmodal__form {
	display: grid;
	gap: 0.95rem;
}

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

.pd-dsmodal .nc-field input {
	min-height: 3rem;
}

/* Neutral focus: no orange border, ring or outline on the active field. */
.pd-dsmodal .nc-field input:focus,
.pd-dsmodal .nc-field input:focus-visible {
	border-color: #cfd5dc;
	background: #ffffff;
	outline: none;
	box-shadow: 0 0 0 4px rgba(15, 23, 42, 0.04), 0 1px 2px rgba(15, 23, 42, 0.04);
}

.pd-dsmodal .nc-field input::placeholder {
	color: #9ca3af;
}

.pd-dsmodal .nc-field input.is-invalid {
	border-color: #fca5a5;
	background: #fffafa;
}

.pd-dsmodal__err {
	margin: 0.35rem 0 0;
	font-size: 0.78rem;
	font-weight: 500;
	color: #dc2626;
}

.pd-dsmodal__err:empty {
	display: none;
}

.pd-dsmodal__submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.55rem;
	width: 100%;
	min-height: 3.25rem;
	margin-top: 0.35rem;
	padding: 0 1.5rem;
	border: 0;
	border-radius: 999px;
	background: linear-gradient(90deg, #f97316 0%, #10b981 100%);
	box-shadow: 0 12px 24px -10px rgba(16, 185, 129, 0.55), 0 6px 14px -8px rgba(249, 115, 22, 0.45);
	font: inherit;
	font-size: 0.95rem;
	font-weight: 700;
	color: #ffffff;
	cursor: pointer;
	transition: transform 200ms ease, box-shadow 200ms ease, opacity 200ms ease, background 300ms ease;
}

.pd-dsmodal__submit:hover {
	background: linear-gradient(90deg, #059669 0%, #ea580c 100%);
	box-shadow: 0 16px 30px -10px rgba(16, 185, 129, 0.6), 0 8px 16px -8px rgba(234, 88, 12, 0.5);
	transform: translateY(-1px);
}

.nessa-products .pd-dsmodal__submit:focus-visible {
	outline: 3px solid rgba(16, 185, 129, 0.35);
	outline-offset: 3px;
}

.pd-dsmodal__submit svg {
	width: 1.05rem;
	height: 1.05rem;
	transition: transform 200ms ease;
}

.pd-dsmodal__submit:hover svg {
	transform: translateY(1px);
}

.pd-dsmodal__submit.is-sending,
.pd-dsmodal__submit:disabled {
	opacity: 0.7;
	cursor: progress;
	transform: none;
}

.pd-dsmodal__privacy {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.4rem;
	margin: 0;
	font-size: 0.75rem;
	color: var(--nc-muted);
	text-align: center;
}

.pd-dsmodal__privacy svg {
	width: 0.9rem;
	height: 0.9rem;
	color: var(--nc-green);
}

.pd-dsmodal__done {
	display: grid;
	justify-items: center;
	gap: 0.6rem;
	padding: 1.25rem 0 0.25rem;
	text-align: center;
	animation: nc-thanks-in 420ms cubic-bezier(0.2, 0.7, 0.2, 1) both;
}

.pd-dsmodal__done[hidden] {
	display: none;
}

.pd-dsmodal__done .pd-dsmodal__title {
	margin: 0.4rem 0 0;
}

.pd-dsmodal__tick {
	display: grid;
	place-items: center;
	width: 4rem;
	height: 4rem;
	border-radius: 50%;
	background: linear-gradient(135deg, #f97316 0%, #10b981 100%);
	box-shadow: 0 14px 28px -10px rgba(16, 185, 129, 0.55);
	color: #ffffff;
}

.pd-dsmodal__tick svg {
	width: 1.75rem;
	height: 1.75rem;
	stroke-width: 2.6;
}

.pd-dsmodal__again {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	font-size: 0.875rem;
	font-weight: 700;
	color: var(--nc-green-dark);
	text-decoration: none;
}

.pd-dsmodal__again[hidden] {
	display: none;
}

.pd-dsmodal__again:hover {
	text-decoration: underline;
}

.pd-dsmodal__again svg {
	width: 1rem;
	height: 1rem;
}

.pd-dsmodal__done .nc-btn {
	margin-top: 0.5rem;
	cursor: pointer;
}

@media (max-width: 639px) {
	/* Phones: a bottom sheet. */
	.pd-dsmodal {
		width: 100%;
		max-width: none;
		margin: auto 0 0;
		border-radius: 24px 24px 0 0;
	}

	.pd-dsmodal__card {
		padding: 1.5rem 1.25rem calc(1.25rem + env(safe-area-inset-bottom));
		border-radius: 24px 24px 0 0;
	}

	.pd-dsmodal__title {
		font-size: 1.3rem;
	}
}

@media (max-width: 539px) {
	/* The related rail keeps full cards rather than the phone list layout. */
	.pd-rail .np-card {
		display: flex;
	}

	.pd-rail .np-card__media {
		margin: 0;
		border-radius: 0;
	}

	.pd-rail .np-card__badge {
		display: inline-flex;
	}

	.pd-rail .np-card__body {
		padding: 1rem;
	}

	.pd-actions .nc-btn {
		flex: 1 1 100%;
	}

	.pd-tabs {
		width: 100%;
		border-radius: 20px;
	}

	.pd-tab {
		flex: 1 1 0;
		padding: 0.35rem 0.5rem;
		border-radius: 16px;
		font-size: 0.8125rem;
		line-height: 1.25;
		white-space: normal;
	}

	.pd-related__all {
		width: 100%;
		margin: 0;
	}

	.pd-related__nav {
		flex-wrap: wrap;
	}
}

@media (min-width: 540px) {
	.pd-rail {
		grid-auto-columns: calc((100% - 1.25rem) / 2);
	}

	.pd-highlights {
		grid-template-columns: none;
		grid-auto-flow: column;
		grid-auto-columns: minmax(max-content, 1fr);
	}

	.pd-assure {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 1rem;
	}
}

@media (min-width: 640px) {
	.pd-gallery.has-thumbs {
		grid-template-columns: 5.75rem minmax(0, 1fr);
	}

	.pd-gallery.has-thumbs .pd-stage {
		grid-column: 2;
		grid-row: 1;
	}

	/* The rail matches the stage height and scrolls when there are more thumbnails than fit. */
	.pd-gallery__thumbs {
		grid-column: 1;
		grid-row: 1;
		flex-direction: column;
		height: 0;
		min-height: 100%;
		overflow-x: hidden;
		overflow-y: auto;
	}

	.pd-thumb {
		width: 5.25rem;
		height: 5.25rem;
	}
}

@media (min-width: 768px) {
	.pd-features {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.pd-specs {
		grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr));
	}

	.pd-apps__list {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.pd-hero {
		padding: 8.5rem 0 4.5rem;
	}

	/* The gallery takes slightly more width so its height balances the summary column. */
	.pd-hero__grid {
		grid-template-columns: minmax(0, 1.12fr) minmax(0, 1fr);
		align-items: center;
		gap: 3.5rem;
	}

	.pd-details {
		padding: 5rem 0;
	}

	.pd-features {
		grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
		gap: 1.25rem;
	}

	.pd-apps {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		align-items: stretch;
	}

	.pd-apps__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.pd-apps--list {
		grid-template-columns: minmax(0, 1fr);
	}

	.pd-apps--list .pd-apps__list {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.pd-related {
		padding: 5rem 0 2.5rem;
	}

	.pd-rail {
		grid-auto-columns: calc((100% - 3 * 1.25rem) / 4);
	}
}

/* ==========================================================================
   Corporate legal pages
   Shares the contact page's tokens, type scale and components.
   ========================================================================== */
.nessa-legal {
	--nl-ink: #111827;
	--nl-body: #4b5563;
	--nl-muted: #6b7280;
	--nl-line: #e8ebef;
	--nl-field: #f8faf9;
	--nl-orange: #f58220;
	--nl-orange-dark: #dc6418;
	--nl-green: #16a34a;
	--nl-green-dark: #15803d;
	--nl-mint: #e9fbee;
	--nl-sticky: 7.75rem;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, -apple-system, sans-serif;
	color: var(--nl-ink);
	background: #ffffff;
}

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

/* main.css hides horizontal overflow on body and .App, which makes them scroll
   containers and disables the sticky contents rail; clip has no such effect. */
body:has(.nessa-legal),
body:has(.nessa-legal) .App {
	overflow-x: clip;
}

.nessa-legal svg {
	display: block;
	flex-shrink: 0;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.nessa-legal [hidden] {
	display: none !important;
}

.nessa-legal a:focus-visible,
.nessa-legal button:focus-visible {
	outline: 2px solid var(--nl-orange);
	outline-offset: 3px;
	border-radius: 6px;
}

.nl-wrap {
	width: 100%;
	max-width: 1280px;
	margin: 0 auto;
	padding: 0 1.25rem;
}

.nl-gradient-text {
	display: inline-block;
	padding-bottom: 0.08em;
	background: linear-gradient(90deg, #f97316 0%, #059669 100%);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

/* Hero */
.nl-hero {
	padding: 6.5rem 0 0;
	background:
		radial-gradient(circle at 8% 20%, rgba(95, 217, 127, 0.12) 0%, transparent 42%),
		radial-gradient(circle at 92% 70%, rgba(245, 130, 32, 0.08) 0%, transparent 40%),
		#ffffff;
	border-bottom: 1px solid var(--nl-line);
}

.nl-breadcrumb {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.375rem;
	margin: 0 0 1.75rem;
	font-size: 0.8125rem;
	font-weight: 500;
	color: var(--nl-muted);
}

.nl-breadcrumb a {
	color: var(--nl-muted);
	text-decoration: none;
	transition: color 200ms ease;
}

.nl-breadcrumb a:hover {
	color: var(--nl-green-dark);
}

.nl-breadcrumb svg {
	width: 0.875rem;
	height: 0.875rem;
	color: #9ca3af;
}

.nl-breadcrumb [aria-current] {
	font-weight: 600;
	color: var(--nl-ink);
}

.nl-pill {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0 0 1.5rem;
	padding: 0.4rem 1rem;
	border-radius: 999px;
	background: linear-gradient(90deg, #f97316 0%, #10b981 100%);
	box-shadow: 0 10px 15px -3px rgba(16, 185, 129, 0.25), 0 4px 6px -4px rgba(16, 185, 129, 0.25);
	font-size: 0.6875rem;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: #ffffff;
}

.nl-pill__dot {
	width: 0.375rem;
	height: 0.375rem;
	border-radius: 50%;
	background: #ffffff;
}

.nl-hero__title {
	margin: 0 0 1.25rem;
	font-size: clamp(2.25rem, 4.6vw, 3.75rem);
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: -0.025em;
	color: var(--nl-ink);
}

.nl-hero__lede {
	max-width: 42rem;
	margin: 0;
	font-size: 1.0625rem;
	line-height: 1.75;
	color: var(--nl-body);
}

.nl-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem 1.75rem;
	margin: 1.75rem 0 0;
	padding: 0;
	list-style: none;
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--nl-muted);
}

.nl-meta li,
.nl-meta button {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
}

.nl-meta svg {
	width: 1rem;
	height: 1rem;
	color: var(--nl-green-dark);
}

.nl-meta time {
	font-weight: 600;
	color: var(--nl-ink);
}

.nl-meta button {
	padding: 0;
	border: 0;
	background: none;
	font: inherit;
	font-weight: 600;
	color: var(--nl-ink);
	cursor: pointer;
	transition: color 200ms ease;
}

.nl-meta button:hover {
	color: var(--nl-green-dark);
}

/* Document tabs along the hero's bottom edge */
.nl-tabs {
	display: flex;
	gap: 0.25rem;
	margin: 2.5rem -1.25rem 0;
	padding: 0 1.25rem;
	overflow-x: auto;
	scrollbar-width: none;
}

.nl-tabs::-webkit-scrollbar {
	display: none;
}

.nl-tabs__item {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.875rem 0.875rem 1rem;
	font-size: 0.875rem;
	font-weight: 600;
	white-space: nowrap;
	text-decoration: none;
	color: var(--nl-muted);
	transition: color 200ms ease;
}

.nl-tabs__item svg {
	width: 1rem;
	height: 1rem;
}

.nl-tabs__item::after {
	content: "";
	position: absolute;
	left: 0.875rem;
	right: 0.875rem;
	bottom: -1px;
	height: 3px;
	border-radius: 3px 3px 0 0;
	background: transparent;
}

.nl-tabs__item:hover {
	color: var(--nl-ink);
}

.nl-tabs__item[aria-current="page"] {
	color: var(--nl-ink);
}

.nl-tabs__item[aria-current="page"] svg {
	color: var(--nl-green-dark);
}

.nl-tabs__item[aria-current="page"]::after {
	background: linear-gradient(90deg, #f97316 0%, #10b981 100%);
}

/* Body: contents rail + document */
.nl-body {
	padding: 2.5rem 0 4rem;
	background: var(--nl-field);
}

.nl-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 1.5rem;
	align-items: start;
}

.nl-aside {
	display: grid;
	gap: 1rem;
}

.nl-toc {
	border: 1px solid var(--nl-line);
	border-radius: 22px;
	background: #ffffff;
}

.nl-toc__toggle {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	padding: 1rem 1.25rem;
	border: 0;
	background: none;
	font: inherit;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	text-align: left;
	color: var(--nl-green-dark);
	cursor: pointer;
}

.nl-toc__toggle svg {
	width: 1.125rem;
	height: 1.125rem;
	color: var(--nl-muted);
	transition: transform 200ms ease;
}

.nl-toc__toggle[aria-expanded="true"] svg {
	transform: rotate(180deg);
}

.nl-toc__toggle:disabled {
	cursor: default;
}

.nl-toc__toggle:disabled svg {
	display: none;
}

.nl-toc.is-collapsed .nl-toc__list {
	display: none;
}

.nl-toc__list {
	display: grid;
	gap: 0.125rem;
	margin: 0;
	padding: 0 0.625rem 0.75rem;
	list-style: none;
}

.nl-toc__list a {
	display: flex;
	gap: 0.75rem;
	padding: 0.5rem 0.625rem;
	border-radius: 10px;
	font-size: 0.875rem;
	font-weight: 500;
	line-height: 1.45;
	text-decoration: none;
	color: var(--nl-body);
	transition: color 200ms ease, background-color 200ms ease;
}

.nl-toc__num {
	min-width: 1.25rem;
	font-size: 0.75rem;
	font-weight: 700;
	line-height: 1.6rem;
	font-variant-numeric: tabular-nums;
	color: #9ca3af;
	transition: color 200ms ease;
}

.nl-toc__list a:hover {
	background: var(--nl-field);
	color: var(--nl-ink);
}

.nl-toc__list a.is-active {
	background: var(--nl-mint);
	font-weight: 600;
	color: var(--nl-green-dark);
}

.nl-toc__list a.is-active .nl-toc__num {
	color: var(--nl-orange-dark);
}

.nl-help {
	display: none;
	padding: 1.25rem;
	border: 1px solid var(--nl-line);
	border-radius: 22px;
	background: #ffffff;
}

.nl-help__icon {
	display: grid;
	place-items: center;
	width: 2.5rem;
	height: 2.5rem;
	margin-bottom: 0.875rem;
	border-radius: 12px;
	background: #fff4ea;
	color: var(--nl-orange-dark);
}

.nl-help__icon svg {
	width: 1.125rem;
	height: 1.125rem;
}

.nl-help__title {
	margin: 0 0 0.25rem;
	font-size: 1rem;
	font-weight: 700;
	color: var(--nl-ink);
}

.nl-help__text {
	margin: 0 0 0.75rem;
	font-size: 0.875rem;
	line-height: 1.55;
	color: var(--nl-body);
}

.nl-help__link {
	font-size: 0.9375rem;
	font-weight: 700;
	text-decoration: none;
	color: var(--nl-green-dark);
	transition: color 200ms ease;
}

.nl-help__link:hover {
	color: var(--nl-orange-dark);
}

.nl-doc {
	padding: 1.75rem 1.25rem;
	border: 1px solid var(--nl-line);
	border-radius: 28px;
	background: #ffffff;
	box-shadow: 0 20px 50px -12px rgba(17, 24, 39, 0.08);
}

.nl-section + .nl-section {
	margin-top: 2.25rem;
	padding-top: 2.25rem;
	border-top: 1px solid var(--nl-line);
}

.nl-section__title {
	display: flex;
	align-items: baseline;
	gap: 0.75rem;
	margin: 0 0 1rem;
	font-size: clamp(1.25rem, 2.2vw, 1.5rem);
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: -0.015em;
	color: var(--nl-ink);
}

.nl-section__num {
	flex-shrink: 0;
	font-size: 0.875rem;
	font-weight: 700;
	letter-spacing: 0.02em;
	font-variant-numeric: tabular-nums;
	color: var(--nl-orange-dark);
}

/* Long-form copy */
.nl-prose p,
.nl-prose li {
	font-size: 1rem;
	line-height: 1.75;
	color: var(--nl-body);
}

.nl-prose p {
	margin: 0 0 1rem;
}

.nl-prose > :last-child {
	margin-bottom: 0;
}

.nl-prose strong {
	font-weight: 600;
	color: var(--nl-ink);
}

.nl-prose ul,
.nl-prose ol {
	display: grid;
	gap: 0.625rem;
	margin: 1.25rem 0;
	padding: 0;
	list-style: none;
}

.nl-prose li {
	position: relative;
	padding-left: 1.5rem;
}

.nl-prose ul > li::before {
	content: "";
	position: absolute;
	left: 0.25rem;
	top: 0.72em;
	width: 0.4375rem;
	height: 0.4375rem;
	border-radius: 50%;
	background: linear-gradient(135deg, #f97316 0%, #10b981 100%);
}

.nl-prose a {
	font-weight: 600;
	color: var(--nl-green-dark);
	text-decoration: underline;
	text-decoration-color: rgba(21, 128, 61, 0.3);
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	transition: color 200ms ease, text-decoration-color 200ms ease;
}

.nl-prose a:hover {
	color: var(--nl-orange-dark);
	text-decoration-color: currentColor;
}

/* Tables stack into labelled cards on phones */
.nl-table-wrap {
	margin: 1.5rem 0;
}

.nl-table-wrap table {
	width: 100%;
	border-collapse: collapse;
}

.nl-table-wrap thead {
	display: none;
}

.nl-table-wrap tr {
	display: block;
	padding: 1rem 1.125rem;
	border: 1px solid var(--nl-line);
	border-radius: 16px;
	background: var(--nl-field);
}

.nl-table-wrap tr + tr {
	margin-top: 0.75rem;
}

.nl-table-wrap td {
	display: block;
	padding: 0;
	font-size: 0.9375rem;
	line-height: 1.6;
	color: var(--nl-body);
}

.nl-table-wrap td + td {
	margin-top: 0.625rem;
}

.nl-table-wrap td[data-label]::before {
	content: attr(data-label);
	display: block;
	margin-bottom: 0.125rem;
	font-size: 0.6875rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--nl-muted);
}

.nl-table-wrap td:first-child::before {
	display: none;
}

.nl-table-wrap td:first-child {
	font-size: 1rem;
	color: var(--nl-ink);
}

.nl-doc__foot {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem 1.5rem;
	margin-top: 2.5rem;
	padding-top: 1.5rem;
	border-top: 1px solid var(--nl-line);
}

.nl-doc__foot p {
	margin: 0;
	font-size: 0.8125rem;
	line-height: 1.6;
	color: var(--nl-muted);
}

.nl-doc__top {
	display: inline-flex;
	align-items: center;
	gap: 0.375rem;
	font-size: 0.875rem;
	font-weight: 600;
	text-decoration: none;
	color: var(--nl-ink);
	transition: color 200ms ease;
}

.nl-doc__top svg {
	width: 1rem;
	height: 1rem;
}

.nl-doc__top:hover {
	color: var(--nl-green-dark);
}

/* Closing call to action, matching the contact page panel */
.nl-cta {
	padding: 0 0 5rem;
	background: var(--nl-field);
}

.nl-cta__panel {
	display: grid;
	gap: 1.75rem;
	padding: 2.5rem 1.75rem;
	border-radius: 32px;
	background:
		radial-gradient(circle at 0% 0%, rgba(249, 115, 22, 0.32) 0%, transparent 45%),
		radial-gradient(circle at 100% 100%, rgba(16, 185, 129, 0.32) 0%, transparent 45%),
		#0f172a;
	box-shadow: 0 30px 60px -24px rgba(15, 23, 42, 0.5);
}

.nl-cta__title {
	margin: 0 0 0.6rem;
	font-size: clamp(1.75rem, 3.2vw, 2.5rem);
	font-weight: 700;
	line-height: 1.15;
	letter-spacing: -0.025em;
	color: #ffffff;
}

.nl-cta__text {
	max-width: 34rem;
	margin: 0;
	font-size: 1rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.75);
}

.nl-cta__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
}

.nl-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	min-height: 3.25rem;
	padding: 0 1.5rem;
	border-radius: 999px;
	font-size: 0.9375rem;
	font-weight: 700;
	text-decoration: none;
	transition: transform 200ms ease, border-color 200ms ease, background-color 200ms ease;
}

.nl-btn svg {
	width: 1rem;
	height: 1rem;
}

.nl-btn--solid {
	background: linear-gradient(135deg, var(--nl-orange) 0%, #ea580c 100%);
	box-shadow: 0 10px 22px -8px rgba(234, 88, 12, 0.55);
	color: #ffffff;
}

.nl-btn--solid:hover {
	transform: translateY(-1px);
	color: #ffffff;
}

.nl-btn--light {
	border: 1.5px solid rgba(255, 255, 255, 0.25);
	background: rgba(255, 255, 255, 0.06);
	color: #ffffff;
}

.nl-btn--light:hover {
	border-color: rgba(255, 255, 255, 0.5);
	background: rgba(255, 255, 255, 0.12);
	color: #ffffff;
}

@media (min-width: 640px) {
	.nl-wrap {
		padding: 0 1.5rem;
	}

	.nl-tabs {
		margin: 2.5rem -1.5rem 0;
		padding: 0 1.5rem;
	}

	.nl-doc {
		padding: 2.5rem;
	}

	.nl-section + .nl-section {
		margin-top: 2.5rem;
		padding-top: 2.5rem;
	}

	.nl-table-wrap {
		overflow: hidden;
		border: 1px solid var(--nl-line);
		border-radius: 16px;
	}

	.nl-table-wrap table {
		display: table;
	}

	.nl-table-wrap thead {
		display: table-header-group;
	}

	.nl-table-wrap tr,
	.nl-table-wrap tr + tr {
		display: table-row;
		margin: 0;
		padding: 0;
		border: 0;
		border-radius: 0;
		background: none;
	}

	.nl-table-wrap th,
	.nl-table-wrap td,
	.nl-table-wrap td + td {
		display: table-cell;
		margin: 0;
		padding: 0.875rem 1.125rem;
		border-bottom: 1px solid var(--nl-line);
		text-align: left;
		vertical-align: top;
	}

	.nl-table-wrap td[data-label]::before {
		display: none;
	}

	.nl-table-wrap th {
		background: var(--nl-field);
		font-size: 0.6875rem;
		font-weight: 700;
		letter-spacing: 0.12em;
		text-transform: uppercase;
		color: var(--nl-muted);
	}

	.nl-table-wrap td {
		font-size: 0.875rem;
	}

	.nl-table-wrap td:first-child {
		width: 9.5rem;
		font-size: 0.875rem;
	}

	.nl-table-wrap td:last-child {
		width: 9rem;
	}

	.nl-table-wrap tr:last-child td {
		border-bottom: 0;
	}

	.nl-cta__panel {
		padding: 3rem;
	}
}

@media (min-width: 1024px) {
	.nl-hero {
		padding-top: 8rem;
	}

	.nl-body {
		padding: 3.5rem 0 5rem;
	}

	.nl-layout {
		grid-template-columns: 18rem minmax(0, 1fr);
		gap: 3.5rem;
	}

	.nl-aside {
		position: sticky;
		top: var(--nl-sticky);
	}

	.nl-toc__toggle {
		padding: 1.25rem 1.25rem 0.75rem;
	}

	.nl-help {
		display: block;
	}

	.nl-doc {
		padding: 3.5rem 4.5rem;
	}

	.nl-prose p,
	.nl-prose li {
		font-size: 1.0625rem;
	}

	.nl-cta__panel {
		grid-template-columns: minmax(0, 1fr) auto;
		align-items: center;
		gap: 3rem;
		padding: 3.5rem;
	}
}

@media (max-width: 479px) {
	.nl-tabs {
		gap: 0;
	}

	.nl-tabs__item {
		padding: 0.875rem 0.625rem 1rem;
		font-size: 0.8125rem;
	}

	.nl-tabs__item svg {
		display: none;
	}

	.nl-tabs__item::after {
		left: 0.625rem;
		right: 0.625rem;
	}

	.nl-cta__actions,
	.nl-btn {
		width: 100%;
	}
}

@media (prefers-reduced-motion: reduce) {
	.nessa-legal *,
	.nessa-legal *::before,
	.nessa-legal *::after {
		transition: none !important;
	}
}

@media print {
	.nessa-topbar,
	.nessa-site-header,
	.nf,
	.nl-breadcrumb,
	.nl-meta__print,
	.nl-tabs,
	.nl-aside,
	.nl-doc__top,
	.nl-cta {
		display: none !important;
	}

	.nl-hero,
	.nl-body {
		padding: 0;
		background: none;
		border: 0;
	}

	.nl-pill {
		padding: 0;
		background: none;
		box-shadow: none;
		color: var(--nl-muted);
	}

	.nl-pill__dot {
		display: none;
	}

	.nl-hero__title {
		font-size: 2rem;
	}

	.nl-gradient-text {
		background: none;
		color: var(--nl-ink);
	}

	.nl-layout {
		display: block;
	}

	.nl-doc {
		margin-top: 1.5rem;
		padding: 0;
		border: 0;
		box-shadow: none;
	}

	.nl-section__title {
		break-after: avoid;
	}
}



/* ==========================================================================
   Site footer
   ========================================================================== */
.nf {
	--nf-ink: #111827;
	--nf-text: #4b5563;
	--nf-muted: #6b7280;
	--nf-line: #e5e7eb;
	--nf-accent: #059669;
	--nf-chip: #f3f4f6;
	position: relative;
	background: #fff;
	color: var(--nf-text);
	border-top: 1px solid #f3f4f6;
	padding: 0;
	font-size: 14px;
	line-height: 1.5;
}

.nf-container {
	max-width: 1600px;
	margin: 0 auto;
	padding: 0 24px;
}

.nf ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.nf a {
	color: inherit;
	text-decoration: none;
	transition: color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
}

.nf a:focus-visible {
	outline: 2px solid var(--nf-accent);
	outline-offset: 3px;
	border-radius: 4px;
}

.nf-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 40px 24px;
	padding-bottom: 32px;
}

.nf-brand,
.nf-col--wide {
	grid-column: 1 / -1;
}

/* Brand block */
.nf-brand {
	display: grid;
	gap: 28px;
	align-content: start;
}

.nf-logo {
	display: inline-flex;
	margin-bottom: 20px;
}

.nf-logo img {
	display: block;
	height: 48px;
	width: auto;
}

.nf-tagline {
	display: grid;
	gap: 10px;
	max-width: 560px;
	font-size: 13px;
	line-height: 22px;
	color: var(--nf-text);
}

.nf-tagline p {
	margin: 0;
	text-wrap: pretty;
}

.nf-contact {
	display: grid;
	gap: 16px;
}

.nf-contact__row {
	display: grid;
	grid-template-columns: 20px minmax(0, 1fr);
	column-gap: 12px;
	align-items: start;
	font-size: 14px;
	line-height: 22px;
	color: var(--nf-text);
}

.nf-contact__link:hover {
	color: var(--nf-accent);
}

.nf-contact__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 20px;
	height: 22px;
	color: var(--nf-muted);
	transition: color 0.2s ease;
}

.nf-contact__link:hover .nf-contact__icon {
	color: var(--nf-accent);
}

.nf-contact__icon svg {
	display: block;
	width: 18px;
	height: 18px;
}

.nf-address {
	display: grid;
	gap: 2px;
	max-width: 340px;
}

.nf-address__label {
	display: block;
	font-size: 14px;
	line-height: 22px;
	font-weight: 600;
	color: var(--nf-ink);
}

.nf-address address {
	margin: 0;
	font-style: normal;
	font-size: 13px;
	line-height: 21px;
	color: var(--nf-text);
	text-wrap: balance;
}

/* Link columns */
.nf-heading {
	position: relative;
	margin: 0 0 24px;
	padding-bottom: 12px;
	font-size: 16px;
	line-height: 22px;
	font-weight: 700;
	letter-spacing: 0;
	color: var(--nf-ink);
}

.nf-heading::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 24px;
	height: 2px;
	border-radius: 2px;
	background: linear-gradient(90deg, #f97316, #059669);
}

.nf-links {
	display: grid;
	gap: 12px;
}

.nf-links a {
	display: inline-block;
	font-size: 14px;
	line-height: 22px;
	color: var(--nf-text);
}

.nf-links a:hover {
	color: var(--nf-accent);
}

/* Illustrated footer skyline */
.nf-skyline {
	width: 100%;
	aspect-ratio: 3.56;
	margin: 40px 0;
	background: url('assets/images/footer/footer-skyline.webp') 50% 48.5% / 220% auto no-repeat;
	pointer-events: none;
}

@media (min-width: 768px) {
	.nf-skyline {
		aspect-ratio: 5.23;
		background-size: 150% auto;
	}
}

@media (min-width: 1024px) {
	.nf-skyline {
		aspect-ratio: 5.71;
		margin: 40px 0;
		background-position: 50% 48.5%;
		background-size: 100% auto;
	}
}

@media (min-width: 1280px) {
	.nf-skyline {
		margin: 40px 0;
	}
}

/* Copyright + legal links: last item of the newsletter band */
.nf-legalbar {
	display: grid;
	gap: 8px;
	padding-top: 24px;
	border-top: 1px solid var(--nf-line);
}

.nf-copy {
	margin: 0;
	font-size: 13px;
	line-height: 20px;
	color: var(--nf-muted);
}

.nf-social {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px;
}

.nf-social a {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	border-radius: 9999px;
	background: var(--nf-chip);
	color: var(--nf-text);
}

.nf-social a:hover {
	background: #10b981;
	color: #fff;
}

.nf-social svg {
	display: block;
}

.nf-legal {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 24px;
}

.nf-legal a {
	font-size: 13px;
	line-height: 20px;
	color: var(--nf-muted);
}

.nf-legal a:hover {
	color: var(--nf-accent);
}

.nf-links--split {
	grid-template-columns: repeat(2, minmax(0, 1fr));
	grid-template-rows: repeat(7, auto);
	grid-auto-flow: column;
	column-gap: 24px;
}

@media (max-width: 1023px) {
	.nf-links--split-sm {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		grid-template-rows: repeat(4, auto);
		grid-auto-flow: column;
		column-gap: 24px;
	}
}

@media (min-width: 640px) {
	.nf-grid {
		gap: 48px 32px;
		padding-bottom: 32px;
	}

	.nf-links--split,
	.nf-links--split-sm {
		column-gap: 32px;
	}
}

@media (min-width: 1024px) {
	.nf-container {
		padding: 0 48px;
	}

	.nf-links--split {
		grid-template-columns: repeat(2, max-content);
	}

	.nf-grid {
		grid-template-columns: repeat(4, max-content);
		justify-content: space-between;
		column-gap: 56px;
	}

	.nf-brand {
		contain: inline-size;
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		column-gap: 56px;
		padding-bottom: 48px;
		border-bottom: 1px solid var(--nf-line);
	}

	.nf .nf-contact {
		align-content: start;
		padding-top: 68px;
	}

	.nf-col--wide {
		grid-column: auto;
	}
}

@media (min-width: 1280px) {
	.nf-brand {
		grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
		column-gap: 96px;
	}

	.nf-tagline {
		max-width: 640px;
	}

	.nf-contact {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 24px 40px;
	}
}

@media (min-width: 1360px) {
	.nf-container {
		padding: 0 40px;
	}

	.nf-grid {
		grid-template-columns: 300px repeat(4, max-content);
		column-gap: 36px;
		row-gap: 0;
	}

	.nf-links--split {
		column-gap: 24px;
	}

	.nf-grid {
		justify-content: space-between;
	}

	.nf-brand {
		display: contents;
	}

	.nf-brand__intro {
		grid-column: 1;
		grid-row: 1;
		padding-right: 16px;
	}

	.nf-logo {
		margin-bottom: 10px;
	}

	.nf-col {
		grid-row: 1;
	}

	.nf .nf-contact {
		grid-column: 1 / -1;
		grid-row: 2;
		grid-template-columns: 300px repeat(4, max-content);
		grid-template-columns: subgrid;
		grid-template-rows: auto auto;
		row-gap: 12px;
		column-gap: normal;
		margin-top: 44px;
		padding-top: 40px;
		border-top: 1px solid var(--nf-line);
	}

	.nf-contact > li:nth-child(1) {
		grid-column: 1;
		grid-row: 1;
	}

	.nf-contact > li:nth-child(2) {
		grid-column: 1;
		grid-row: 2;
	}

	.nf-contact > li:nth-child(3) {
		grid-column: 2 / span 2;
		grid-row: 1 / span 2;
	}

	.nf-contact > li:nth-child(4) {
		grid-column: 4 / span 2;
		grid-row: 1 / span 2;
	}

	.nf-contact > li {
		contain: inline-size;
	}

	.nf-address {
		max-width: 440px;
	}
}

@media (min-width: 1480px) {
	.nf-grid,
	.nf .nf-contact {
		grid-template-columns: 340px repeat(4, max-content);
	}

	.nf .nf-contact {
		grid-template-columns: subgrid;
	}
}

@media (min-width: 1536px) {
	.nf-container {
		padding: 0 48px;
	}

	.nf-grid {
		grid-template-columns: 380px repeat(4, max-content);
		column-gap: 44px;
	}

	.nf-links--split {
		column-gap: 32px;
	}

	.nf-brand__intro {
		padding-right: 32px;
	}

}

/* Footer newsletter band: last row of the link grid, above the bottom bar */
.nf-newsletter {
	grid-column: 1 / -1;
	display: grid;
	gap: 24px;
	padding-top: 32px;
	border-top: 1px solid var(--nf-line);
}

/* Heading directly above the pill; the title's own margin is the gap. */
.nf-newsletter__main {
	min-width: 0;
}

.nf-newsletter__intro {
	min-width: 0;
}

.nf-newsletter .nf-social {
	justify-content: flex-start;
}

/* Same heading treatment as the link columns (.nf-heading), tighter spacing for the band. */
.nf-newsletter__title,
.nf-follow__title {
	position: relative;
	margin: 0 0 12px;
	padding-bottom: 12px;
	font-size: 16px;
	line-height: 22px;
	font-weight: 700;
	color: var(--nf-ink);
}

.nf-newsletter__title::after,
.nf-follow__title::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 24px;
	height: 2px;
	border-radius: 2px;
	background: linear-gradient(90deg, #f97316, #059669);
}

.nf-newsletter__form {
	position: relative;
	width: 100%;
	margin: 0;
}

.nf-newsletter__field {
	display: flex;
	align-items: center;
	height: 44px;
	padding: 3px;
	border: 1px solid var(--nf-line);
	border-radius: 9999px;
	background: #fff;
	box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.nf-newsletter__field:hover {
	border-color: #d1d5db;
}

/* Neutral focus state: a slightly darker hairline and soft shadow, no orange ring. */
.nf-newsletter__field:focus-within {
	border-color: #d1d5db;
	box-shadow: 0 2px 8px rgba(15, 23, 42, 0.06);
}

.nf-newsletter__field:has(.nf-newsletter__input[aria-invalid="true"]) {
	border-color: #ea580c;
}

.nf .nf-newsletter__input {
	-webkit-appearance: none;
	appearance: none;
	flex: 1 1 auto;
	min-width: 0;
	height: 100%;
	margin: 0;
	padding: 0 12px 0 16px;
	border: 0;
	border-radius: 9999px;
	background: transparent;
	color: var(--nf-ink);
	font: inherit;
	font-size: 14px;
	outline: none;
	box-shadow: none;
}

.nf .nf-newsletter__input::placeholder {
	color: var(--nf-muted);
	opacity: 1;
}

.nf-newsletter__btn {
	display: inline-flex;
	flex-shrink: 0;
	align-items: center;
	gap: 8px;
	height: 100%;
	margin: 0;
	padding: 0 16px;
	border: 0;
	border-radius: 9999px;
	background: linear-gradient(90deg, #f97316 0%, #10b981 100%);
	color: #fff;
	font: inherit;
	font-size: 14px;
	font-weight: 600;
	line-height: 1;
	white-space: nowrap;
	box-shadow: 0 10px 15px -3px rgba(16, 185, 129, 0.25), 0 4px 6px -4px rgba(16, 185, 129, 0.25);
	cursor: pointer;
	transition: opacity 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

/* Same hover as the header Get Quote button. */
.nf-newsletter__btn:hover {
	opacity: 0.95;
	box-shadow: 0 14px 20px -4px rgba(16, 185, 129, 0.3), 0 6px 10px -6px rgba(16, 185, 129, 0.3);
}

.nf-newsletter__btn:active {
	transform: scale(0.97);
}

.nf-newsletter__btn:hover svg {
	transform: translateX(2px);
}

.nf-newsletter__btn svg {
	display: block;
	transition: transform 0.2s ease;
}

.nf-newsletter__btn:focus-visible {
	outline: 2px solid #f58220;
	outline-offset: 3px;
}

.nf-newsletter__btn:disabled {
	cursor: progress;
	opacity: 0.75;
}

.nf-newsletter__status {
	margin: 8px 0 0 18px;
	font-size: 13px;
	line-height: 18px;
	font-weight: 500;
}

.nf-newsletter__status[hidden] {
	display: none;
}

.nf-newsletter__status.is-success {
	color: #047857;
}

.nf-newsletter__status.is-error {
	color: #c2410c;
}

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

@media (max-width: 1023px) {
	/* 44px touch target for the button inside the pill. */
	.nf-newsletter__field {
		height: 54px;
	}
}

@media (max-width: 399px) {
	.nf-newsletter__btn {
		padding: 0 16px;
	}

	.nf .nf-newsletter__input {
		padding-left: 14px;
	}
}

@media (min-width: 1024px) {
	/* Follow us on the left; newsletter heading + pill stacked on the right.
	   Both headings share one line, icons and pill share the next. */
	.nf-newsletter {
		grid-template-columns: auto minmax(0, 1fr);
		grid-template-areas:
			"social main"
			"legal legal";
		align-items: start;
		column-gap: 48px;
	}

	/* Below 1360 the copyright row runs full width under the band: copyright left, links right. */
	.nf-legalbar {
		grid-area: legal;
		display: flex;
		flex-wrap: wrap;
		align-items: center;
		justify-content: space-between;
		gap: 8px 24px;
	}

	.nf-follow {
		grid-area: social;
	}

	/* 38px icons centred on the 44px pill. */
	.nf-follow .nf-social {
		padding-top: 3px;
	}

	.nf-newsletter__main {
		grid-area: main;
		justify-self: end;
		width: 380px;
	}

	/* The status line sits under the pill without pushing the band taller. */
	.nf-newsletter__status {
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		margin-top: 6px;
	}
}

/* Laptops: the band spans the max-content link columns; keep it from widening them. */
@media (min-width: 1024px) and (max-width: 1359px) {
	.nf-newsletter {
		contain: inline-size;
	}
}

/* Small laptops: slightly narrower pill. */
@media (min-width: 1024px) and (max-width: 1279px) {
	.nf-newsletter__main {
		width: 320px;
	}
}

/* Wide desktop: the band uses the link grid's columns (like the contact row above it),
   so Follow us sits under the brand and the heading + pill under Company–Resources. */
@media (min-width: 1360px) {
	.nf-grid {
		padding-bottom: 40px;
	}

	.nf .nf-contact {
		margin-top: 40px;
	}

	.nf-newsletter {
		grid-row: 3;
		grid-template-columns: subgrid;
		grid-template-areas: none;
		column-gap: normal;
		margin-top: 40px;
		padding-top: 40px;
	}

	/* Same as the contact items: don't let band content widen the link columns. */
	.nf-follow,
	.nf-newsletter__main {
		contain: inline-size;
	}

	.nf-follow {
		grid-area: auto;
		grid-column: 1;
		grid-row: 1;
	}

	.nf-newsletter__main {
		grid-area: auto;
		grid-column: 4 / span 2;
		grid-row: 1;
		justify-self: stretch;
		width: auto;
		max-width: 440px;
	}

	/* Copyright + legal links under Products–Solutions, on the icons/pill line
	   (46px heading offset; 20 + 4 + 20 = the 44px pill height). The block starts at
	   the Products column and its two lines are centred on each other. Its ~390px
	   max-content is narrower than the two columns it spans, so it never widens them. */
	.nf-legalbar {
		grid-area: auto;
		grid-column: 2 / span 2;
		grid-row: 1;
		justify-self: start;
		display: grid;
		justify-items: center;
		gap: 4px;
		align-content: start;
		margin-top: 46px;
		padding-top: 0;
		border-top: 0;
		text-align: center;
	}

	.nf-legalbar .nf-legal {
		justify-content: center;
	}
}

/* Header top bar (desktop only): contact, site search, social links. Equal side columns keep the search centred. */
.nessa-topbar{display:none}
@media(min-width:1024px){
	body{padding-top:52px}
	.nessa-topbar{display:block;position:relative;color:#1f2937;font-family:'Plus Jakarta Sans',Inter,system-ui,sans-serif;background:linear-gradient(180deg,#fbfbfb 0%,#f3f4f6 100%);border-bottom:1px solid #e5e7eb;margin-top:calc(var(--nessa-topbar-shift,0) * -1px)}
	.nessa-site-header.is-stuck .nessa-topbar{visibility:hidden}
	.nessa-topbar-inner{max-width:1600px;margin:0 auto;padding:0 48px;height:51px;display:grid;grid-template-columns:auto minmax(160px,1fr) auto;align-items:center;column-gap:28px}
	.nessa-topbar-contact,.nessa-topbar-social{display:flex;align-items:center}
	.nessa-topbar-contact{justify-self:start}
	.nessa-topbar-link{display:inline-flex;align-items:center;gap:10px;color:#1f2937;font-size:14px;font-weight:500;line-height:1;text-decoration:none;white-space:nowrap;transition:color .2s ease}
	.nessa-topbar-link+.nessa-topbar-link{margin-left:24px;padding-left:24px;border-left:1px solid #d1d5db}
	.nessa-topbar-link svg{flex-shrink:0;color:#111827;transition:color .2s ease}
	.nessa-topbar-link:hover,.nessa-topbar-link:hover svg{color:#f58220}
	.nessa-topbar-search{position:relative;width:100%;max-width:520px;justify-self:center;margin:0}
	.nessa-topbar-search svg{position:absolute;left:18px;top:50%;transform:translateY(-50%);color:#111827;pointer-events:none}
	.nessa-topbar-search input{-webkit-appearance:none;appearance:none;display:block;width:100%;height:38px;margin:0;padding:0 18px 0 48px;border-radius:9999px;border:1px solid #e5e7eb;background:#fff;color:#111827;font:400 13.5px/1 'Plus Jakarta Sans',Inter,system-ui,sans-serif;outline:none;box-shadow:0 1px 2px rgba(15,23,42,.04);transition:border-color .2s ease,box-shadow .2s ease}
	.nessa-topbar-search input::-webkit-search-decoration,.nessa-topbar-search input::-webkit-search-cancel-button{-webkit-appearance:none}
	.nessa-topbar-search input::placeholder{color:#6b7280;opacity:1}
	.nessa-topbar-search input:hover{border-color:#d1d5db}
	.nessa-topbar-search input:focus{border-color:#f58220;box-shadow:0 0 0 3px rgba(245,130,32,.15)}
	.nessa-topbar-social{justify-self:end;gap:6px;margin-right:-8px}
	/* Quick links sit before the social icons, separated by a hairline like the reference. */
	.nessa-topbar-end{justify-self:end;display:flex;align-items:center}
	.nessa-topbar-links{display:flex;align-items:center;gap:22px;margin-right:18px;padding-right:18px;border-right:1px solid #d1d5db}
	.nessa-topbar-links a{color:#1f2937;font-size:14px;font-weight:500;line-height:1;text-decoration:none;white-space:nowrap;transition:color .2s ease}
	.nessa-topbar-links a:hover{color:#f58220}
	.nessa-topbar-social a{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:9999px;color:#1f2937;transition:background .2s ease,color .2s ease,box-shadow .2s ease}
	.nessa-topbar-social a:hover{background:#fff;color:#f58220;box-shadow:0 1px 3px rgba(15,23,42,.08)}
	.nessa-topbar a:focus-visible{outline:2px solid #f58220;outline-offset:2px;border-radius:4px}
}

/* ==========================================================================
   Tablet and mobile refinements (below 1024px)
   Header, footer, home, contact and legal pages. Desktop and laptop layouts
   (1024px and up) are not changed by this block.
   ========================================================================== */
@media (max-width: 1023px) {
	/* Touch targets: links reach 44px tall. Padding plus a matching negative
	   margin keeps the visual spacing of each list exactly as designed. */
	.nf-links a,
	.nf-legal a,
	.nl-breadcrumb a {
		padding-block: 11px;
		margin-block: -11px;
	}

	.nc-link,
	.nc-direct__item,
	.nl-help__link,
	.nl-doc__top,
	.nl-meta button {
		min-height: 44px;
	}

	.nessa-mobile-menu a {
		display: flex;
		align-items: center;
		min-height: 44px;
	}

	/* Small labels and eyebrows: 10-11px is too small to read comfortably on a phone. */
	[class*="text-[10px]"],
	[class*="text-[11px]"],
	.nl-pill {
		font-size: 12px;
	}
}

/* ==========================================================================
   Products mega menu (inc/mega-menu.php)
   Ranges on the left, the hovered range's types on the right. Icons are
   two-tone: charcoal strokes with brand orange accents and green solar panels.
   Selectors are prefixed with .nm-panel so they beat `.nessa-primary-nav a`.
   ========================================================================== */
.nm-ico{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;color:#1f2937;flex-shrink:0;overflow:visible}
.nm-ico .a{fill:#f58220;stroke:none}
.nm-ico .as{stroke:#f58220}
.nm-ico .s{fill:rgba(245,130,32,.22);stroke:none}
.nm-ico .sp{fill:rgba(245,130,32,.16)}
.nm-ico .gp{fill:rgba(22,163,74,.2)}
.nm-ico .gs{stroke:#16a34a}
.nm-ico .ra{fill:rgba(245,130,32,.75);stroke:none}
.nm-ico .rg{fill:rgba(22,163,74,.6);stroke:none}
.nm-tile{width:40px;height:40px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background:#f8faf9;border:1px solid #eceff2;transition:background-color .2s ease,border-color .2s ease,transform .2s ease}
.nm-tile--cat{background:#fff3e8;border-color:#fde3cc}
.nm-tile--sm{width:32px;height:32px;border-radius:10px}
.nm-tile--sm .nm-ico{width:19px;height:19px}

.nm-panel{display:none}
@media(min-width:1024px){
	.nessa-header-container{position:relative}
	.nessa-primary-nav{align-self:stretch}
	.nm-item{display:flex;align-items:center;align-self:stretch}
	.nessa-primary-nav .nm-trigger{display:inline-flex;align-items:center;gap:5px}
	/* The caret widens Products, so keep every label on one line and tighten padding on small laptops. */
	.nessa-primary-nav>a,.nessa-primary-nav .nm-trigger{white-space:nowrap}
	.nm-caret{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transition:transform .25s ease}
	.nm-item.is-open .nm-trigger{color:#059669;background:#ecfdf5}
	.nm-item.is-open .nm-caret{transform:rotate(180deg)}

	.nm-panel{display:block;position:absolute;top:100%;left:50%;z-index:60;width:min(1040px,calc(100vw - 48px));background:#fff;border:1px solid #e5e7eb;border-radius:14px;box-shadow:0 22px 50px -20px rgba(17,24,39,.28),0 2px 4px rgba(17,24,39,.04);overflow:hidden;font-family:'Plus Jakarta Sans',Inter,system-ui,sans-serif;text-align:left;opacity:0;visibility:hidden;pointer-events:none;transform:translate(-50%,6px);transition:opacity .16s ease,transform .2s ease,visibility 0s linear .2s}
	.nm-item.is-open .nm-panel{opacity:1;visibility:visible;pointer-events:auto;transform:translate(-50%,0);transition:opacity .16s ease,transform .2s ease,visibility 0s}
	.nm-panel svg:not(.nm-ico){fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
	.nm-arrow{width:14px;height:14px;transition:transform .2s ease}

	/* Range rail: plain rows, the open range marked by an orange rule and its type count. */
	.nm-body{display:grid;grid-template-columns:244px minmax(0,1fr)}
	.nm-cats{list-style:none;margin:0;padding:14px 12px;border-right:1px solid #f0f1f3}
	.nm-panel .nm-cat{position:relative;display:grid;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:12px;padding:11px 12px;border-radius:8px;color:#4b5563;font-size:14.5px;font-weight:500;line-height:1.3;text-decoration:none;transition:background-color .15s ease,color .15s ease}
	.nm-cat .nm-ico{width:22px;height:22px}
	.nm-cat__count{font-size:11.5px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.02em;color:#c0c5cc;transition:color .15s ease}
	.nm-panel .nm-cat:hover{color:#111827}
	.nm-panel .nm-cat.is-active{background:#f6f6f4;color:#111827;font-weight:600}
	.nm-cat.is-active::before{content:"";position:absolute;left:0;top:50%;width:2px;height:18px;margin-top:-9px;border-radius:2px;background:#f58220}
	.nm-cat.is-active .nm-cat__count{color:#dc6418}

	/* Type list reads like a spec sheet: icon and name on ruled rows. */
	.nm-panes{display:grid}
	/* Only the incoming pane fades, so two panes never ghost over each other. */
	.nm-pane{grid-area:1/1;display:grid;grid-template-columns:minmax(0,1fr) 232px;visibility:hidden}
	/* inherit, not visible: a visible child of the hidden panel would stay hoverable while closed. */
	.nm-pane.is-active{visibility:inherit;animation:nm-pane-in .18s ease both}
	@keyframes nm-pane-in{from{opacity:0}to{opacity:1}}
	.nm-pane__main{padding:22px 28px 18px}
	.nm-pane__head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:10px}
	.nm-pane__title{margin:0;font-size:18px;font-weight:700;letter-spacing:-.015em;color:#111827}
	.nm-panel .nm-pane__link{display:inline-flex;align-items:center;gap:5px;padding:0;border-radius:0;color:#dc6418;font-size:13px;font-weight:600;white-space:nowrap;text-decoration:none}
	.nm-panel .nm-pane__link:hover{text-decoration:underline;text-underline-offset:3px}
	.nm-types{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:28px}
	.nm-types li{border-top:1px solid #f0f1f3}
	.nm-panel .nm-type{display:flex;align-items:center;gap:14px;padding:12px 2px;border-radius:0;color:#1f2937;font-size:14px;font-weight:500;line-height:1.3;text-decoration:none;transition:color .15s ease}
	.nm-type .nm-ico{width:26px;height:26px;transition:transform .2s ease}
	.nm-panel .nm-type:hover{color:#dc6418}
	.nm-type:hover .nm-ico{transform:translateX(2px)}
	.nm-type__tag{display:block;margin-top:2px;font-size:12px;font-weight:400;color:#6b7280}

	/* Range photo: real product shots instead of decoration. */
	.nm-panel .nm-feature{display:flex;flex-direction:column;gap:12px;padding:20px;border-radius:0;background:#f7f7f5;border-left:1px solid #f0f1f3;color:#4b5563;font-size:13px;font-weight:400;line-height:1.55;text-decoration:none}
	.nm-feature__media{display:block;aspect-ratio:4/3;border-radius:8px;background:#fff;overflow:hidden}
	.nm-feature__media img{display:block;width:100%;height:100%;object-fit:contain;transition:transform .35s ease}
	.nm-feature:hover .nm-feature__media img{transform:scale(1.03)}
	.nm-feature__meta{margin-top:auto;font-size:12px;font-weight:600;color:#111827}
	.nm-feature__media--icon{display:grid;place-items:center;background:radial-gradient(90% 80% at 50% 100%,rgba(245,130,32,.16),transparent 70%),linear-gradient(180deg,#fff,#fff4ea)}
	.nm-feature__media--icon .nm-ico{width:96px;height:96px;stroke-width:1.1}

	.nm-foot{display:flex;align-items:center;gap:24px;padding:12px 28px 12px 24px;border-top:1px solid #f0f1f3;background:#fafaf9}
	.nm-foot p{flex:1;margin:0;font-size:12.5px;color:#6b7280}
	.nm-panel .nm-foot__link{display:inline-flex;align-items:center;gap:5px;padding:0;border-radius:0;color:#374151;font-size:13px;font-weight:600;white-space:nowrap;text-decoration:none}
	.nm-panel .nm-foot__link--strong{color:#dc6418}
	.nm-panel .nm-foot__link:hover{text-decoration:underline;text-underline-offset:3px}
	.nm-panel .nm-pane__link:hover .nm-arrow,.nm-panel .nm-foot__link:hover .nm-arrow{transform:translateX(2px)}

	/* Solutions panel: sites grouped by sector, with the hovered site's photo on the right. */
	.nm-panel--sol{width:min(1000px,calc(100vw - 48px))}
	.nm-sol{display:grid;grid-template-columns:minmax(0,1fr) 288px}
	.nm-sol__cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:24px;padding:22px 26px 16px}
	.nm-sol__head{margin:0 0 4px;padding:0 2px 10px;border-bottom:1px solid #f0f1f3;font-size:12.5px;font-weight:600;color:#6b7280}
	.nm-sol__list{list-style:none;margin:0;padding:0}
	.nm-panel .nm-sol__link{display:flex;align-items:center;gap:12px;padding:9px 2px;border-radius:0;color:#1f2937;font-size:14px;font-weight:500;line-height:1.3;text-decoration:none;transition:color .15s ease}
	.nm-sol__link .nm-ico{width:26px;height:26px;transition:transform .2s ease}
	.nm-panel .nm-sol__link:hover,.nm-panel .nm-sol__link.is-active{color:#dc6418}
	.nm-sol__link:hover .nm-ico{transform:translateX(2px)}
	.nm-sol__features{display:grid;background:#f7f7f5;border-left:1px solid #f0f1f3}
	.nm-panel .nm-sol__feature{grid-area:1/1;visibility:hidden;display:flex;flex-direction:column;gap:6px;padding:20px;border-radius:0;color:#4b5563;font-size:13px;font-weight:400;line-height:1.55;text-decoration:none}
	.nm-panel .nm-sol__feature.is-active{visibility:inherit;animation:nm-pane-in .18s ease both}
	.nm-sol__media{display:block;margin-bottom:8px;aspect-ratio:16/10;border-radius:8px;background:#e7e8e6;overflow:hidden}
	.nm-sol__media img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .35s ease}
	.nm-sol__feature:hover .nm-sol__media img{transform:scale(1.03)}
	.nm-sol__name{font-size:15px;font-weight:700;letter-spacing:-.01em;color:#111827}

	.nm-panel a:focus-visible,.nessa-primary-nav .nm-trigger:focus-visible{outline:2px solid #f58220;outline-offset:2px}
	@media(max-width:1279px){.nessa-primary-nav>a,.nessa-primary-nav .nm-trigger{padding-left:12px;padding-right:12px}}
	@media(max-width:1149px){.nessa-primary-nav>a,.nessa-primary-nav .nm-trigger{padding-left:9px;padding-right:9px}}
	@media(max-width:1199px){.nm-body{grid-template-columns:216px minmax(0,1fr)}.nm-pane{grid-template-columns:minmax(0,1fr) 196px}.nm-pane__main{padding:20px 22px 16px}.nm-types{column-gap:20px}.nm-foot p{display:none}.nm-foot{justify-content:flex-end}.nm-sol{grid-template-columns:minmax(0,1fr) 236px}.nm-sol__cols{column-gap:16px;padding:20px 20px 14px}}
	@media(prefers-reduced-motion:reduce){.nm-panel,.nm-caret,.nm-arrow,.nm-type .nm-ico,.nm-feature__media img,.nm-sol__link .nm-ico,.nm-sol__media img{transition:none!important}.nm-sol__feature.is-active{animation:none}.nm-pane.is-active{animation:none}}
}

/* Mobile and tablet: Products becomes an accordion of ranges and types. */
@media(max-width:1023px){
	.nessa-mobile-panel{max-height:calc(100vh - 80px);max-height:calc(100dvh - 80px);overflow-y:auto;overscroll-behavior:contain}
	.nm-m summary{list-style:none;cursor:pointer}
	.nm-m summary::-webkit-details-marker{display:none}
	.nm-m__sum{display:flex!important;align-items:center;justify-content:space-between;min-height:44px}
	.nm-caret{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;color:#6b7280;transition:transform .2s ease}
	.nm-m[open]>.nm-m__sum{color:#059669}
	.nm-m[open]>.nm-m__sum .nm-caret,.nm-m__cat[open]>summary .nm-caret{transform:rotate(180deg)}
	.nm-m__body{display:grid;gap:4px;margin:4px 0 8px;padding:8px;border-radius:14px;background:#f8faf9;border:1px solid #eceff2}
	.nessa-mobile-menu .nm-m__all{min-height:40px;padding:0 8px;color:#dc6418;font-size:14px;font-weight:700;text-decoration:none}
	.nm-m__cat>summary{display:flex;align-items:center;gap:12px;min-height:48px;padding:4px 8px;border-radius:10px;color:#111827;font-size:15px;font-weight:600}
	.nm-m__cat[open]>summary{background:#fff;box-shadow:0 0 0 1px #eceff2}
	.nm-m__name{flex:1}
	.nm-m__cat ul{list-style:none;margin:4px 0 8px;padding:0 0 0 12px;display:grid;gap:2px}
	.nessa-mobile-menu .nm-m__type{gap:12px;padding:2px 8px;border-radius:10px;color:#374151;font-size:14px;font-weight:500;line-height:1.3;text-decoration:none}
	.nessa-mobile-menu .nm-m__type:active{background:#fff}
	.nessa-mobile-menu .nm-m__type--all{color:#dc6418;font-weight:700}
	.nm-m__group{margin:10px 8px 2px;font-size:12px;font-weight:600;color:#6b7280}
	.nm-m__list{list-style:none;margin:0;padding:0;display:grid;gap:2px}
}

/* Products page: slim help CTA under the product grid. */
.np-assist {
	position: relative;
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	gap: 0.9rem 1.25rem;
	margin-top: 2rem;
	padding: 1.25rem;
	overflow: hidden;
	border: 1px solid var(--nc-line);
	border-radius: 24px;
	background:
		radial-gradient(60% 140% at 0% 50%, rgba(245, 130, 32, 0.12) 0%, transparent 70%),
		linear-gradient(90deg, #fff4ea 0%, #ffffff 55%);
	box-shadow: 0 20px 50px -24px rgba(17, 24, 39, 0.18);
}

.np-assist__icon {
	display: grid;
	place-items: center;
	width: 3.5rem;
	height: 3.5rem;
	border: 3px solid #ffffff;
	border-radius: 50%;
	background: linear-gradient(135deg, var(--nc-orange) 0%, #ea580c 100%);
	box-shadow: 0 0 0 1px rgba(245, 130, 32, 0.25), 0 12px 24px -10px rgba(234, 88, 12, 0.6);
}

.np-assist__icon .nm-ico {
	width: 1.6rem;
	height: 1.6rem;
	color: #ffffff;
}

.np-assist__icon .nm-ico .sp {
	fill: rgba(255, 255, 255, 0.28);
}

.np-assist__icon .nm-ico .as {
	stroke: #ffffff;
}

.np-assist__icon .nm-ico .a {
	fill: #ffffff;
}

.np-assist__title {
	margin: 0 0 0.25rem;
	font-size: 1.125rem;
	font-weight: 800;
	line-height: 1.25;
	letter-spacing: -0.02em;
	color: var(--nc-ink);
}

.np-assist__text {
	margin: 0;
	font-size: 0.875rem;
	line-height: 1.5;
	color: var(--nc-muted);
}

.np-assist .np-assist__btn {
	position: relative;
	z-index: 1;
	white-space: nowrap;
}

.np-assist__media {
	display: none;
}

@media (max-width: 639px) {
	.np-assist {
		grid-template-columns: auto minmax(0, 1fr);
	}

	.np-assist .np-assist__btn {
		grid-column: 1 / -1;
		justify-content: center;
		width: 100%;
	}
}

@media (min-width: 1024px) {
	.np-assist {
		grid-template-columns: auto minmax(0, 1fr) auto 30%;
		gap: 1.5rem;
		min-height: 6.5rem;
		padding: 0 0 0 1.5rem;
	}

	/* Engineer photo with a diagonal brand edge, like the reference. */
	.np-assist__media {
		position: relative;
		display: block;
		align-self: stretch;
		margin-left: 0.5rem;
		clip-path: polygon(16% 0, 100% 0, 100% 100%, 0 100%);
	}

	.np-assist__media::before {
		content: "";
		position: absolute;
		inset: 0;
		z-index: 1;
		background: linear-gradient(135deg, var(--nc-orange) 0%, var(--nc-green) 100%);
		clip-path: polygon(16% 0, 21% 0, 5% 100%, 0 100%);
	}

	.np-assist__media img {
		position: absolute;
		inset: 0;
		width: 100%;
		height: 100%;
		object-fit: cover;
		object-position: 74% 42%;
		transition: transform 400ms ease;
	}

	.np-assist:hover .np-assist__media img {
		transform: scale(1.03);
	}
}

@media (prefers-reduced-motion: reduce) {
	.np-assist__media img {
		transition: none;
	}
}

/* ==========================================================================
   Home - Process section ("From Lighting Needs to Lasting Performance")
   Replaces the overview video inside nessa-overview-section.
   Steps light up in turn on a 12s loop (3s each, offset by --np-i) while a
   pulse travels each connector to the next step. Hovering a step takes over.
   ========================================================================== */
.nessa-process {
	--np-orange: #f97316;
	--np-orange-deep: #ea580c;
	--np-green: #16a34a;
	--np-ink: #0f172a;
	--np-body: #475569;
	--np-muted: #64748b;
	--np-line: #e2e8f0;
	--np-media: 7rem;
	--np-gap: 2.5rem;
	--np-cycle: 12s;
	--np-step: 3s;
	position: relative;
	isolation: isolate;
	overflow: hidden;
	margin: 0 auto;
	padding: 2rem 1.25rem;
	border-radius: 1.75rem;
	background: linear-gradient(180deg, #ffffff 0%, #fbfdfc 100%);
	border: 1px solid rgba(15, 23, 42, 0.06);
	box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04), 0 28px 56px -36px rgba(15, 23, 42, 0.2);
	font-family: 'Plus Jakarta Sans', Inter, system-ui, sans-serif;
	text-align: center;
}

/* Slow drifting brand light behind the content. */
.nessa-process::before,
.nessa-process::after {
	content: "";
	position: absolute;
	z-index: -1;
	width: 26rem;
	height: 26rem;
	border-radius: 9999px;
	filter: blur(60px);
	pointer-events: none;
}

.nessa-process::before {
	top: -10rem;
	left: -6rem;
	background: rgba(249, 115, 22, 0.14);
	animation: nessa-process-drift 16s ease-in-out infinite alternate;
}

.nessa-process::after {
	right: -8rem;
	bottom: -12rem;
	background: rgba(34, 197, 94, 0.14);
	animation: nessa-process-drift 19s ease-in-out infinite alternate-reverse;
}

/* ---- Intro ---- */
.nessa-process-intro {
	display: flex;
	flex-direction: column;
	align-items: center;
	margin-bottom: 1.75rem;
}

.nessa-process-title {
	margin: 0;
	font-size: clamp(1.45rem, 2.2vw, 2rem);
	font-weight: 800;
	line-height: 1.18;
	letter-spacing: -0.025em;
	color: var(--np-ink);
	text-wrap: balance;
}

.nessa-process-title-accent {
	display: inline;
	background: linear-gradient(90deg, #f97316 0%, #f59e0b 25%, #16a34a 50%, #f59e0b 75%, #f97316 100%);
	background-size: 200% auto;
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	animation: nessa-process-shimmer 8s linear infinite;
}

.nessa-process-lead {
	max-width: 56rem;
	margin: 0.5rem 0 0;
	font-size: clamp(0.875rem, 1.1vw, 0.95rem);
	line-height: 1.7;
	color: var(--np-muted);
	text-wrap: balance;
}

/* ---- Steps ---- */
.nessa-process-steps {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--np-gap);
	margin: 0;
	padding: 0;
	list-style: none;
}

.nessa-process-step {
	--np-accent: var(--np-orange);
	--np-accent-soft: rgba(249, 115, 22, 0.42);
	--np-delay: calc(var(--np-i, 0) * var(--np-step));
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
}

.nessa-process-step:nth-child(even) {
	--np-accent: var(--np-green);
	--np-accent-soft: rgba(34, 197, 94, 0.4);
}

/* Connector: vertical on mobile, horizontal from 1024px. */
.nessa-process-link {
	position: absolute;
	left: 50%;
	bottom: calc(var(--np-gap) * -1 + 0.75rem);
	width: 0;
	height: calc(var(--np-gap) - 1.5rem);
	border-left: 1.5px dashed #cbd5e1;
}

/* Glowing pulse that carries the hand-off to the next step. */
.nessa-process-link::before {
	content: "";
	position: absolute;
	left: -2px;
	top: 0;
	width: 3px;
	height: 1.25rem;
	border-radius: 9999px;
	background: linear-gradient(180deg, rgba(249, 115, 22, 0), var(--np-accent));
	box-shadow: 0 0 10px var(--np-accent);
	opacity: 0;
	animation: nessa-process-pulse-y var(--np-cycle) linear infinite;
	animation-delay: var(--np-delay);
}

.nessa-process-step:last-child .nessa-process-link {
	display: none;
}

/* ---- Circle ---- */
.nessa-process-media {
	position: relative;
	width: var(--np-media);
	height: var(--np-media);
	flex-shrink: 0;
	animation: nessa-process-lift var(--np-cycle) ease-in-out infinite;
	animation-delay: var(--np-delay);
}

/* Soft light halo behind the active step. */
.nessa-process-glow {
	position: absolute;
	inset: -20px;
	border-radius: 9999px;
	background: radial-gradient(circle, var(--np-accent-soft) 0%, transparent 68%);
	opacity: 0;
	animation: nessa-process-glow var(--np-cycle) ease-in-out infinite;
	animation-delay: var(--np-delay);
}

/* Hairline track plus a slowly turning brand-gradient arc. */
.nessa-process-ring {
	position: absolute;
	inset: -7px;
	border-radius: 9999px;
	background: conic-gradient(from 210deg, var(--np-orange) 0deg, rgba(249, 115, 22, 0) 120deg, rgba(22, 163, 74, 0) 200deg, var(--np-green) 330deg, var(--np-orange) 360deg);
	-webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 2.5px), #000 calc(100% - 2px));
	mask: radial-gradient(farthest-side, transparent calc(100% - 2.5px), #000 calc(100% - 2px));
	animation: nessa-process-spin 14s linear infinite;
}

.nessa-process-step:nth-child(even) .nessa-process-ring {
	animation-direction: reverse;
}

.nessa-process-photo {
	position: absolute;
	inset: 0;
	border-radius: 9999px;
	overflow: hidden;
	background: #f1f5f9;
	box-shadow: 0 16px 32px -18px rgba(15, 23, 42, 0.45);
}

.nessa-process-photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	animation: nessa-process-zoom var(--np-cycle) ease-in-out infinite;
	animation-delay: var(--np-delay);
}

/* Icon artwork shown until a real photo is added. */
.nessa-process-photo.is-artwork {
	background: linear-gradient(140deg, #14532d 0%, var(--np-green) 100%);
}

.nessa-process-step:nth-child(odd) .nessa-process-photo.is-artwork {
	background: linear-gradient(140deg, #9a3412 0%, var(--np-orange) 100%);
}

.nessa-process-artwork {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	color: #fff;
}

.nessa-process-artwork svg {
	width: 40%;
	height: 40%;
}

.nessa-process-number {
	position: absolute;
	right: -2px;
	bottom: 2px;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2rem;
	height: 2rem;
	border-radius: 9999px;
	background-color: #fff;
	color: var(--np-accent);
	font-size: 0.75rem;
	font-weight: 800;
	letter-spacing: 0.02em;
	box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.06), 0 8px 18px -8px rgba(15, 23, 42, 0.35);
	animation: nessa-process-badge var(--np-cycle) ease-in-out infinite;
	animation-delay: var(--np-delay);
}

/* ---- Copy ---- */
.nessa-process-body {
	display: flex;
	flex-direction: column;
	align-items: center;
	width: 100%;
	max-width: 17rem;
	margin-top: 1.1rem;
}

.nessa-process-step-title {
	margin: 0;
	font-size: 1rem;
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: -0.01em;
	color: var(--np-ink);
	animation: nessa-process-heading var(--np-cycle) ease-in-out infinite;
	animation-delay: var(--np-delay);
}

.nessa-process-desc {
	margin: 0.35rem 0 0;
	font-size: 0.8125rem;
	line-height: 1.6;
	color: var(--np-muted);
	text-wrap: balance;
}

/* One centred column whose items share a left edge, so the dots line up. */
.nessa-process-tags {
	position: relative;
	display: grid;
	grid-template-columns: max-content;
	justify-content: center;
	justify-items: start;
	gap: 0.375rem;
	text-align: left;
	margin: 1rem 0 0;
	padding: 1rem 0 0;
	list-style: none;
	font-size: 0.75rem;
	font-weight: 600;
	line-height: 1.4;
	color: var(--np-body);
}

/* Divider that stretches while its step is active. */
.nessa-process-tags::before {
	content: "";
	position: absolute;
	top: 0;
	left: 50%;
	width: 1.75rem;
	height: 2px;
	margin-left: -0.875rem;
	border-radius: 9999px;
	background: linear-gradient(90deg, var(--np-orange), var(--np-green));
	animation: nessa-process-bar var(--np-cycle) ease-in-out infinite;
	animation-delay: var(--np-delay);
}

.nessa-process-tags li {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	white-space: nowrap;
}

.nessa-process-tags li::before {
	content: "";
	width: 4px;
	height: 4px;
	border-radius: 9999px;
	background: var(--np-accent);
}

/* ---- Hover takes over from the auto cycle ---- */
.nessa-process-steps:hover .nessa-process-media,
.nessa-process-steps:hover .nessa-process-glow,
.nessa-process-steps:hover .nessa-process-photo img,
.nessa-process-steps:hover .nessa-process-number,
.nessa-process-steps:hover .nessa-process-step-title,
.nessa-process-steps:hover .nessa-process-tags::before,
.nessa-process-steps:hover .nessa-process-link::before {
	animation: none;
	transition: transform 500ms cubic-bezier(0.22, 1, 0.36, 1), opacity 400ms ease, background-color 300ms ease, color 300ms ease, width 400ms ease, margin 400ms ease;
}

.nessa-process-step:hover .nessa-process-media {
	transform: translateY(-6px);
}

.nessa-process-step:hover .nessa-process-glow {
	opacity: 1;
}

.nessa-process-step:hover .nessa-process-photo img {
	transform: scale(1.07);
}

.nessa-process-step:hover .nessa-process-number {
	background-color: var(--np-accent);
	color: #fff;
	transform: scale(1.1);
}

.nessa-process-step:hover .nessa-process-step-title {
	color: var(--np-accent);
}

.nessa-process-step:hover .nessa-process-tags::before {
	width: 3.5rem;
	margin-left: -1.75rem;
}

.nessa-process-step:hover .nessa-process-ring {
	animation-duration: 5s;
}

/* ---- Tagline ---- */
.nessa-process-tagline {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 1.25rem;
	margin: 3rem 0 0;
	font-size: 0.9375rem;
	font-weight: 600;
	color: var(--np-ink);
}

.nessa-process-tagline strong {
	font-weight: 700;
	color: var(--np-orange-deep);
}

.nessa-process-tagline-rule {
	display: none;
	flex: 0 1 6rem;
	height: 1px;
	background: linear-gradient(90deg, transparent, var(--np-line));
}

.nessa-process-tagline-rule:last-child {
	background: linear-gradient(90deg, var(--np-line), transparent);
}

/* ---- Keyframes: each step is "on" for 5%-20% of the 12s loop ---- */
@keyframes nessa-process-glow {
	0%, 28%, 100% { opacity: 0; transform: scale(0.85); }
	6%, 20% { opacity: 1; transform: scale(1); }
}

@keyframes nessa-process-lift {
	0%, 28%, 100% { transform: translateY(0); }
	6%, 20% { transform: translateY(-6px); }
}

@keyframes nessa-process-zoom {
	0%, 28%, 100% { transform: scale(1); }
	6%, 20% { transform: scale(1.07); }
}

@keyframes nessa-process-badge {
	0%, 28%, 100% { background-color: #fff; color: var(--np-accent); transform: scale(1); }
	6%, 20% { background-color: var(--np-accent); color: #fff; transform: scale(1.1); }
}

@keyframes nessa-process-heading {
	0%, 28%, 100% { color: var(--np-ink); }
	6%, 20% { color: var(--np-accent); }
}

@keyframes nessa-process-bar {
	0%, 28%, 100% { width: 1.75rem; margin-left: -0.875rem; }
	6%, 20% { width: 3.5rem; margin-left: -1.75rem; }
}

@keyframes nessa-process-pulse-x {
	0%, 15% { left: -2.5rem; opacity: 0; }
	17% { opacity: 1; }
	25% { left: 100%; opacity: 1; }
	27%, 100% { left: 100%; opacity: 0; }
}

@keyframes nessa-process-pulse-y {
	0%, 15% { top: -1.25rem; opacity: 0; }
	17% { opacity: 1; }
	25% { top: 100%; opacity: 1; }
	27%, 100% { top: 100%; opacity: 0; }
}

@keyframes nessa-process-spin {
	to { transform: rotate(360deg); }
}

@keyframes nessa-process-shimmer {
	to { background-position: 200% center; }
}

@keyframes nessa-process-drift {
	0% { transform: translate(0, 0) scale(1); }
	100% { transform: translate(6rem, 3rem) scale(1.15); }
}

/* Tablet: 2 x 2 grid. */
@media (min-width: 640px) {
	.nessa-process {
		padding: 2.5rem 2rem;
	}

	.nessa-process-steps {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 3.5rem 2rem;
	}

	.nessa-process-link {
		display: none;
	}

	.nessa-process-tagline-rule {
		display: block;
	}
}

/* Desktop: 4 across on one baseline, joined by a dashed connector. */
@media (min-width: 1024px) {
	.nessa-process {
		--np-media: 7.5rem;
		--np-gap: 2rem;
		padding: 2.25rem 2.5rem;
	}

	.nessa-process-intro {
		margin-bottom: 1.75rem;
	}

	.nessa-process-steps {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: var(--np-gap);
	}

	.nessa-process-link {
		display: block;
		top: calc(var(--np-media) / 2);
		bottom: auto;
		left: calc(50% + var(--np-media) / 2 + 1.25rem);
		width: calc(100% + var(--np-gap) - var(--np-media) - 2.5rem);
		height: 0;
		border-left: 0;
		border-top: 1.5px dashed #cbd5e1;
	}

	.nessa-process-link::before {
		left: -2.5rem;
		top: -2px;
		width: 2.5rem;
		height: 3px;
		background: linear-gradient(90deg, rgba(249, 115, 22, 0), var(--np-accent));
		animation-name: nessa-process-pulse-x;
	}

	/* Chevron at the end of each connector. */
	.nessa-process-link::after {
		content: "";
		position: absolute;
		right: 0;
		top: -4.5px;
		width: 7px;
		height: 7px;
		border-top: 1.5px solid #cbd5e1;
		border-right: 1.5px solid #cbd5e1;
		transform: rotate(45deg);
	}

	.nessa-process-step:last-child .nessa-process-link {
		display: none;
	}

	/* Two-line slot keeps every step's tag row on the same baseline. */
	.nessa-process-desc {
		min-height: 3.2em;
	}
}

@media (prefers-reduced-motion: reduce) {
	.nessa-process::before,
	.nessa-process::after,
	.nessa-process-title-accent,
	.nessa-process-ring,
	.nessa-process-media,
	.nessa-process-glow,
	.nessa-process-photo img,
	.nessa-process-number,
	.nessa-process-step-title,
	.nessa-process-tags::before,
	.nessa-process-link::before {
		animation: none !important;
		transition: none !important;
	}
}

/* ==========================================================================
   Home - Contact section ("Let's light up your next project.")
   Slim navy band above the footer: short copy + compact form (name, email,
   phone, message). Posts to the shared nessa_enquiry handler, source "home".
   ========================================================================== */
.nessa-hc {
	position: relative;
	max-width: 72rem;
	margin: 0 auto;
	padding: 2rem 1rem 2.5rem;
	font-family: 'Plus Jakarta Sans', Inter, system-ui, sans-serif;
}

.nessa-hc-panel {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 1.5rem;
	align-items: center;
	padding: 1.75rem 1.5rem;
	border-radius: 1.5rem;
	color: #fff;
	background:
		radial-gradient(circle at 0% 0%, rgba(249, 115, 22, 0.32) 0%, transparent 45%),
		radial-gradient(circle at 100% 100%, rgba(16, 185, 129, 0.32) 0%, transparent 45%),
		#0f172a;
	box-shadow: 0 30px 60px -32px rgba(15, 23, 42, 0.5);
}

/* Fine dot texture. */
.nessa-hc-panel::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image: radial-gradient(rgba(255, 255, 255, 0.07) 1px, transparent 1px);
	background-size: 18px 18px;
	-webkit-mask-image: linear-gradient(90deg, #000 0%, transparent 70%);
	mask-image: linear-gradient(90deg, #000 0%, transparent 70%);
	pointer-events: none;
}

/* ---- Copy ---- */
.nessa-hc-pill {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0 0 0.9rem;
	padding: 0.35rem 0.9rem;
	border-radius: 999px;
	background: linear-gradient(90deg, #f97316 0%, #10b981 100%);
	box-shadow: 0 10px 15px -3px rgba(16, 185, 129, 0.25);
	font-size: 0.65rem;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: 0.26em;
	text-transform: uppercase;
	color: #fff;
}

.nessa-hc-pill-dot {
	width: 0.35rem;
	height: 0.35rem;
	border-radius: 50%;
	background: #fff;
}

.nessa-hc-title {
	margin: 0;
	font-size: clamp(1.4rem, 2.2vw, 1.75rem);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.02em;
	color: #fff;
}

.nessa-hc-title-accent {
	display: inline-block;
	background: linear-gradient(90deg, #fb923c 0%, #f59e0b 25%, #34d399 50%, #f59e0b 75%, #fb923c 100%);
	background-size: 200% auto;
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	animation: nessa-process-shimmer 8s linear infinite;
}

.nessa-hc-lead {
	margin: 0.5rem 0 0;
	max-width: 22rem;
	font-size: 0.875rem;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.7);
}

/* ---- Form ---- */
.nessa-hc-form {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 0.75rem;
}

.nessa-hc-input {
	display: block;
	width: 100%;
	min-height: 2.875rem;
	margin: 0;
	padding: 0 1rem;
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: 12px;
	background: rgba(255, 255, 255, 0.06);
	font: inherit;
	font-size: 0.9rem;
	color: #fff;
	outline: none;
	box-shadow: none;
	transition: border-color 160ms ease, background-color 160ms ease, box-shadow 160ms ease;
}

.nessa-hc-input::placeholder {
	color: rgba(255, 255, 255, 0.5);
	opacity: 1;
}

.nessa-hc-message {
	min-height: 4.75rem;
	padding: 0.75rem 1rem;
	line-height: 1.5;
	resize: none;
}

.nessa-hc-input:hover {
	border-color: rgba(255, 255, 255, 0.24);
}

/* Neutral focus - no orange. */
.nessa-hc-input:focus {
	border-color: rgba(255, 255, 255, 0.42);
	background: rgba(255, 255, 255, 0.09);
	box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.06);
}

.nessa-hc-input:user-invalid {
	border-color: rgba(252, 165, 165, 0.7);
	box-shadow: 0 0 0 4px rgba(239, 68, 68, 0.12);
}

/* Autofill keeps the dark field instead of the browser's yellow. */
.nessa-hc-input:-webkit-autofill {
	-webkit-text-fill-color: #fff;
	-webkit-box-shadow: 0 0 0 1000px #1e293b inset;
	caret-color: #fff;
}

.nessa-hc-submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.55rem;
	width: 100%;
	min-height: 2.875rem;
	padding: 0 1.5rem;
	border: 0;
	border-radius: 999px;
	background: linear-gradient(135deg, #f97316 0%, #ea580c 100%);
	box-shadow: 0 12px 24px -10px rgba(234, 88, 12, 0.6);
	font: inherit;
	font-size: 0.9rem;
	font-weight: 700;
	color: #fff;
	white-space: nowrap;
	cursor: pointer;
	transition: transform 200ms ease, box-shadow 200ms ease, opacity 200ms ease;
}

.nessa-hc-submit svg {
	width: 1rem;
	height: 1rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: transform 200ms ease;
}

.nessa-hc-submit:hover {
	transform: translateY(-1px);
	box-shadow: 0 16px 28px -10px rgba(234, 88, 12, 0.7);
}

.nessa-hc-submit:hover svg {
	transform: translateX(3px);
}

.nessa-hc-submit:focus-visible {
	outline: 2px solid #fff;
	outline-offset: 3px;
}

.nessa-hc-submit:disabled {
	opacity: 0.7;
	cursor: progress;
	transform: none;
}

.nessa-hc-alert {
	grid-column: 1 / -1;
	margin: 0;
	padding: 0.55rem 0.9rem;
	border-radius: 10px;
	background: rgba(249, 115, 22, 0.14);
	border: 1px solid rgba(251, 146, 60, 0.35);
	color: #fed7aa;
	font-size: 0.8125rem;
	font-weight: 500;
}

.nessa-hc-alert[hidden],
.nessa-hc-form[hidden],
.nessa-hc-thanks[hidden] {
	display: none;
}

/* ---- Thank-you ---- */
.nessa-hc-thanks {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem 1rem;
	padding: 1rem 1.1rem;
	border-radius: 14px;
	background: rgba(255, 255, 255, 0.06);
	border: 1px solid rgba(255, 255, 255, 0.14);
}

.nessa-hc-thanks-icon {
	display: flex;
	flex-shrink: 0;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	border-radius: 9999px;
	background: linear-gradient(135deg, #22c55e, #15803d);
	box-shadow: 0 0 0 6px rgba(34, 197, 94, 0.15);
}

.nessa-hc-thanks-icon svg {
	width: 1.1rem;
	height: 1.1rem;
	fill: none;
	stroke: #fff;
	stroke-width: 2.5;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.nessa-hc-thanks-text {
	flex: 1 1 14rem;
	margin: 0;
	font-size: 0.9rem;
	line-height: 1.5;
	color: rgba(255, 255, 255, 0.75);
	outline: none;
}

.nessa-hc-thanks-text strong {
	color: #fff;
}

.nessa-hc-again {
	padding: 0.45rem 1rem;
	border: 1px solid rgba(255, 255, 255, 0.25);
	border-radius: 999px;
	background: transparent;
	font: inherit;
	font-size: 0.8125rem;
	font-weight: 700;
	color: #fff;
	cursor: pointer;
	transition: border-color 200ms ease, background-color 200ms ease;
}

.nessa-hc-again:hover,
.nessa-hc-again:focus-visible {
	border-color: rgba(255, 255, 255, 0.5);
	background: rgba(255, 255, 255, 0.08);
}

/* Tablet: copy above, form in three columns. */
@media (min-width: 640px) {
	.nessa-hc {
		padding: 2.25rem 1.5rem 2.75rem;
	}

	.nessa-hc-panel {
		padding: 2rem;
	}

	.nessa-hc-form {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.nessa-hc-message {
		grid-column: span 2;
	}

	.nessa-hc-submit {
		align-self: end;
	}
}

/* Desktop: copy and form side by side. */
@media (min-width: 1024px) {
	.nessa-hc {
		padding: 2.5rem 2rem 3rem;
	}

	.nessa-hc-panel {
		grid-template-columns: minmax(0, 4fr) minmax(0, 8fr);
		gap: 2.5rem;
		padding: 2rem 2.25rem;
		border-radius: 1.75rem;
	}
}

@media (prefers-reduced-motion: reduce) {
	.nessa-hc-title-accent {
		animation: none;
	}

	.nessa-hc-input,
	.nessa-hc-submit,
	.nessa-hc-submit svg {
		transition: none;
	}
}

/* ==========================================================================
   Home - Solutions slider (between "Numbers That Light the Way" and the overview)
   Client banners crossfade every 6s; the active dot fills as a progress bar.
   Autoplay pauses on hover, keyboard focus, off-screen or hidden tab.
   ========================================================================== */
.nessa-hs {
	position: relative;
	max-width: 72rem;
	margin: 0 auto;
	padding: 0.5rem 1.5rem;
	background: #fff;
}

.nessa-hs-frame {
	position: relative;
	overflow: hidden;
	aspect-ratio: 1983 / 793;
	border-radius: 1.25rem;
	background: #0f172a;
	border: 1px solid rgba(15, 23, 42, 0.06);
	box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04), 0 28px 56px -34px rgba(15, 23, 42, 0.45);
	isolation: isolate;
}

.nessa-hs-track {
	display: grid;
	width: 100%;
	height: 100%;
}

.nessa-hs-slide {
	grid-area: 1 / 1;
	opacity: 0;
	visibility: hidden;
	transition: opacity 900ms ease, visibility 0s linear 900ms;
}

.nessa-hs-slide.is-active {
	z-index: 1;
	opacity: 1;
	visibility: visible;
	transition: opacity 900ms ease, visibility 0s;
}

.nessa-hs-slide img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transform: scale(1.035);
	transition: transform 7s cubic-bezier(0.22, 1, 0.36, 1);
}

/* Gentle settle-in on the slide that is showing. */
.nessa-hs-slide.is-active img {
	transform: scale(1);
}

/* ---- Arrows ---- */
.nessa-hs-arrow {
	position: absolute;
	top: 50%;
	z-index: 3;
	display: none;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	margin-top: -1.375rem;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.25);
	border-radius: 9999px;
	background: rgba(15, 23, 42, 0.35);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
	color: #fff;
	cursor: pointer;
	opacity: 0;
	transition: opacity 300ms ease, background-color 250ms ease, border-color 250ms ease, transform 250ms ease;
}

.nessa-hs-arrow svg {
	width: 1.25rem;
	height: 1.25rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.nessa-hs-arrow--prev {
	left: 1rem;
}

.nessa-hs-arrow--next {
	right: 1rem;
}

.nessa-hs-frame:hover .nessa-hs-arrow,
.nessa-hs-frame:focus-within .nessa-hs-arrow {
	opacity: 1;
}

.nessa-hs-arrow:hover {
	background: #f97316;
	border-color: #f97316;
}

.nessa-hs-arrow--prev:hover {
	transform: translateX(-2px);
}

.nessa-hs-arrow--next:hover {
	transform: translateX(2px);
}

.nessa-hs-arrow:focus-visible,
.nessa-hs-dot:focus-visible {
	outline: 2px solid #fff;
	outline-offset: 2px;
}

/* ---- Dots / progress ---- */
.nessa-hs-dots {
	position: absolute;
	left: 50%;
	bottom: 0.5rem;
	z-index: 3;
	display: flex;
	align-items: center;
	gap: 0.3rem;
	padding: 0.3rem 0.45rem;
	border-radius: 9999px;
	background: rgba(15, 23, 42, 0.35);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
	transform: translateX(-50%);
}

.nessa-hs-dot {
	position: relative;
	overflow: hidden;
	width: 6px;
	height: 6px;
	padding: 0;
	border: 0;
	border-radius: 9999px;
	background: rgba(255, 255, 255, 0.45);
	cursor: pointer;
	transition: width 400ms cubic-bezier(0.22, 1, 0.36, 1), background-color 250ms ease;
}

/* Larger tap target than the visible dot. */
.nessa-hs-dot::before {
	content: "";
	position: absolute;
	inset: -8px -3px;
}

.nessa-hs-dot:hover {
	background: rgba(255, 255, 255, 0.75);
}

.nessa-hs-dot.is-active {
	width: 22px;
	background: rgba(255, 255, 255, 0.3);
}

.nessa-hs-dot-fill {
	position: absolute;
	inset: 0;
	width: 0;
	border-radius: inherit;
	background: linear-gradient(90deg, #f97316, #22c55e);
}

.nessa-hs-dot.is-active .nessa-hs-dot-fill {
	animation: nessa-hs-progress var(--hs-delay, 6000ms) linear forwards;
}

.nessa-hs-frame.is-paused .nessa-hs-dot.is-active .nessa-hs-dot-fill {
	animation-play-state: paused;
}

@keyframes nessa-hs-progress {
	from { width: 0; }
	to { width: 100%; }
}

@media (min-width: 640px) {
	.nessa-hs {
		padding: 0.75rem 1.5rem;
	}

	.nessa-hs-frame {
		border-radius: 1.75rem;
	}

	.nessa-hs-arrow {
		display: flex;
	}

	.nessa-hs-dots {
		bottom: 1rem;
		gap: 0.45rem;
		padding: 0.45rem 0.7rem;
	}

	.nessa-hs-dot {
		width: 8px;
		height: 8px;
	}

	.nessa-hs-dot.is-active {
		width: 32px;
	}
}

@media (min-width: 1024px) {
	.nessa-hs {
		padding: 1rem 2rem;
	}

	.nessa-hs-arrow--prev {
		left: 1.25rem;
	}

	.nessa-hs-arrow--next {
		right: 1.25rem;
	}
}

/* Touch screens have no hover: keep arrows visible. */
@media (hover: none) {
	.nessa-hs-arrow {
		opacity: 1;
	}
}

@media (prefers-reduced-motion: reduce) {
	.nessa-hs-slide,
	.nessa-hs-slide.is-active,
	.nessa-hs-slide img,
	.nessa-hs-dot,
	.nessa-hs-arrow {
		transition: none;
	}

	.nessa-hs-slide img {
		transform: none;
	}

	.nessa-hs-dot.is-active .nessa-hs-dot-fill {
		width: 100%;
		animation: none;
	}
}
