/*
 * ============================================================
 *  NYASATECH — nyasa.css
 *  Your Custom Stylesheet
 *  ============================================================
 *  Add ALL your custom CSS here. This file is enqueued after
 *  Elementor Pro styles so every rule here takes priority.
 *
 *  Organised into sections — jump to what you need:
 *
 *  1.  CSS Custom Properties (Design Tokens)
 *  2.  Typography
 *  3.  Global Utilities
 *  4.  Header & Navigation
 *  5.  Hero / Banner
 *  6.  Buttons
 *  7.  Cards & Widgets
 *  8.  Footer
 *  9.  Forms
 * 10.  Elementor Pro Overrides
 * 11.  WooCommerce (if used)
 * 12.  Responsive Breakpoints
 * 13.  Dark Mode
 * 14.  Animations & Motion
 * 15.  Utilities / Helpers
 * ============================================================
 */


/* ============================================================
   1. CSS Custom Properties — Design Tokens
   ============================================================ */
:root {
	/* Brand Colours */
	--nt-primary:        #0a5c99;   /* main brand blue       */
	--nt-primary-dark:   #07457a;   /* darker variant        */
	--nt-primary-light:  #e8f3fb;   /* tint / backgrounds    */
	--nt-accent:         #f4a623;   /* warm highlight        */
	--nt-accent-dark:    #d4891a;

	/* Neutrals */
	--nt-white:          #ffffff;
	--nt-black:          #0d0d0d;
	--nt-gray-100:       #f7f8fa;
	--nt-gray-200:       #eef0f3;
	--nt-gray-300:       #dde0e6;
	--nt-gray-400:       #b0b7c3;
	--nt-gray-500:       #6e7a8a;
	--nt-gray-700:       #3a4250;
	--nt-gray-900:       #1a1f2b;

	/* Typography */
	--nt-font-base:      'Inter', system-ui, -apple-system, sans-serif;
	--nt-font-heading:   'Poppins', 'Inter', sans-serif;
	--nt-font-mono:      'JetBrains Mono', 'Fira Code', monospace;

	--nt-size-xs:        0.75rem;   /* 12px */
	--nt-size-sm:        0.875rem;  /* 14px */
	--nt-size-base:      1rem;      /* 16px */
	--nt-size-md:        1.125rem;  /* 18px */
	--nt-size-lg:        1.25rem;   /* 20px */
	--nt-size-xl:        1.5rem;    /* 24px */
	--nt-size-2xl:       2rem;      /* 32px */
	--nt-size-3xl:       2.5rem;    /* 40px */
	--nt-size-4xl:       3.25rem;   /* 52px */

	--nt-weight-regular: 400;
	--nt-weight-medium:  500;
	--nt-weight-semi:    600;
	--nt-weight-bold:    700;
	--nt-weight-black:   900;

	--nt-leading-tight:  1.2;
	--nt-leading-snug:   1.4;
	--nt-leading-base:   1.65;
	--nt-leading-loose:  1.85;

	/* Spacing scale */
	--nt-space-1:   0.25rem;
	--nt-space-2:   0.5rem;
	--nt-space-3:   0.75rem;
	--nt-space-4:   1rem;
	--nt-space-5:   1.25rem;
	--nt-space-6:   1.5rem;
	--nt-space-8:   2rem;
	--nt-space-10:  2.5rem;
	--nt-space-12:  3rem;
	--nt-space-16:  4rem;
	--nt-space-20:  5rem;
	--nt-space-24:  6rem;

	/* Layout */
	--nt-container:       1280px;
	--nt-container-wide:  1440px;
	--nt-container-prose: 760px;
	--nt-gutter:          clamp(1rem, 4vw, 2rem);

	/* Elevation / Shadows */
	--nt-shadow-xs: 0 1px 2px rgba(0,0,0,0.06);
	--nt-shadow-sm: 0 2px 6px rgba(0,0,0,0.08);
	--nt-shadow-md: 0 6px 20px rgba(0,0,0,0.10);
	--nt-shadow-lg: 0 16px 40px rgba(0,0,0,0.12);
	--nt-shadow-xl: 0 32px 64px rgba(0,0,0,0.14);

	/* Borders & Radius */
	--nt-radius-xs:   2px;
	--nt-radius-sm:   4px;
	--nt-radius-md:   8px;
	--nt-radius-lg:   16px;
	--nt-radius-xl:   24px;
	--nt-radius-full: 9999px;

	/* Transitions */
	--nt-transition-fast:   0.15s ease;
	--nt-transition-base:   0.25s ease;
	--nt-transition-slow:   0.4s ease;
	--nt-transition-spring: 0.35s cubic-bezier(0.34,1.56,0.64,1);

	/* Z-index scale */
	--nt-z-base:    1;
	--nt-z-raised:  10;
	--nt-z-dropdown:100;
	--nt-z-sticky:  200;
	--nt-z-overlay: 500;
	--nt-z-modal:   1000;
	--nt-z-toast:   9000;
}


/* ============================================================
   2. Typography
   ============================================================ */

body {
	font-family: var(--nt-font-base);
	font-size: var(--nt-size-base);
	font-weight: var(--nt-weight-regular);
	line-height: var(--nt-leading-base);
	color: var(--nt-gray-700);
	background-color: var(--nt-white);
}

h1, h2, h3, h4, h5, h6,
.elementor-heading-title {
	font-family: var(--nt-font-heading);
	font-weight: var(--nt-weight-bold);
	line-height: var(--nt-leading-tight);
	color: var(--nt-gray-900);
}

h1 { font-size: clamp(var(--nt-size-2xl), 5vw, var(--nt-size-4xl)); }
h2 { font-size: clamp(var(--nt-size-xl), 3.5vw, var(--nt-size-3xl)); }
h3 { font-size: clamp(var(--nt-size-lg), 2.5vw, var(--nt-size-2xl)); }
h4 { font-size: var(--nt-size-xl); }
h5 { font-size: var(--nt-size-lg); }
h6 { font-size: var(--nt-size-md); }

p { margin-block-end: var(--nt-space-4); }
p:last-child { margin-block-end: 0; }

a {
	color: var(--nt-primary);
	transition: color var(--nt-transition-fast);
}
a:hover { color: var(--nt-primary-dark); }

strong, b { font-weight: var(--nt-weight-semi); }
em, i     { font-style: italic; }

small     { font-size: var(--nt-size-sm); }

blockquote {
	border-left: 4px solid var(--nt-primary);
	padding: var(--nt-space-4) var(--nt-space-6);
	margin: var(--nt-space-6) 0;
	background: var(--nt-primary-light);
	border-radius: 0 var(--nt-radius-md) var(--nt-radius-md) 0;
	font-size: var(--nt-size-md);
	font-style: italic;
	color: var(--nt-gray-700);
}

code, kbd, samp {
	font-family: var(--nt-font-mono);
	font-size: 0.875em;
	background: var(--nt-gray-100);
	border: 1px solid var(--nt-gray-200);
	border-radius: var(--nt-radius-sm);
	padding: 0.1em 0.4em;
}

pre {
	font-family: var(--nt-font-mono);
	background: var(--nt-gray-900);
	color: #e2e8f0;
	padding: var(--nt-space-6);
	border-radius: var(--nt-radius-lg);
	overflow-x: auto;
	font-size: var(--nt-size-sm);
	line-height: 1.7;
}
pre code { background: none; border: 0; padding: 0; color: inherit; }

hr {
	border: 0;
	height: 1px;
	background: var(--nt-gray-200);
	margin: var(--nt-space-8) 0;
}


/* ============================================================
   3. Global Utilities
   ============================================================ */

/* Container */
.nt-container {
	width: 100%;
	max-width: var(--nt-container);
	margin-inline: auto;
	padding-inline: var(--nt-gutter);
}
.nt-container--wide  { max-width: var(--nt-container-wide); }
.nt-container--prose { max-width: var(--nt-container-prose); }

/* Flex helpers */
.nt-flex        { display: flex; }
.nt-flex-center { display: flex; align-items: center; justify-content: center; }
.nt-flex-between{ display: flex; align-items: center; justify-content: space-between; }
.nt-flex-col    { display: flex; flex-direction: column; }
.nt-flex-wrap   { flex-wrap: wrap; }
.nt-gap-2  { gap: var(--nt-space-2); }
.nt-gap-4  { gap: var(--nt-space-4); }
.nt-gap-6  { gap: var(--nt-space-6); }
.nt-gap-8  { gap: var(--nt-space-8); }

/* Grid helpers */
.nt-grid-2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px,1fr)); gap: var(--nt-space-6); }
.nt-grid-3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px,1fr)); gap: var(--nt-space-6); }
.nt-grid-4 { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px,1fr)); gap: var(--nt-space-6); }

/* Text alignment */
.nt-text-left   { text-align: left; }
.nt-text-center { text-align: center; }
.nt-text-right  { text-align: right; }

/* Visibility */
.nt-sr-only {
	position: absolute; width: 1px; height: 1px;
	margin: -1px; padding: 0; overflow: hidden;
	clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}
.nt-hidden   { display: none !important; }
.nt-visible  { visibility: visible !important; }

/* Spacing utilities */
.nt-mt-auto { margin-top: auto; }
.nt-mb-0    { margin-bottom: 0 !important; }
.nt-py-8    { padding-block: var(--nt-space-8); }
.nt-py-16   { padding-block: var(--nt-space-16); }
.nt-py-20   { padding-block: var(--nt-space-20); }
.nt-py-24   { padding-block: var(--nt-space-24); }


/* ============================================================
   4. Header & Navigation
   ============================================================ */

.site-header {
	background-color: var(--nt-white);
	box-shadow: var(--nt-shadow-xs);
	position: relative;
	z-index: var(--nt-z-sticky);
}

/* Sticky header behaviour */
.site-header.is-sticky {
	position: sticky;
	top: 0;
	animation: nt-slideDown 0.3s ease forwards;
}

@keyframes nt-slideDown {
	from { transform: translateY(-100%); opacity: 0; }
	to   { transform: translateY(0);     opacity: 1; }
}

/* Site logo */
.site-logo img {
	height: 48px;
	width: auto;
	display: block;
}

/* Navigation */
.site-nav ul {
	display: flex;
	align-items: center;
	gap: var(--nt-space-2);
	list-style: none;
}

.site-nav a {
	display: block;
	padding: var(--nt-space-2) var(--nt-space-3);
	font-size: var(--nt-size-sm);
	font-weight: var(--nt-weight-medium);
	color: var(--nt-gray-700);
	border-radius: var(--nt-radius-sm);
	transition: color var(--nt-transition-fast), background var(--nt-transition-fast);
}
.site-nav a:hover,
.site-nav .current-menu-item > a {
	color: var(--nt-primary);
	background: var(--nt-primary-light);
}

/* Hamburger (mobile) */
.nt-hamburger {
	display: none;
	flex-direction: column;
	gap: 5px;
	cursor: pointer;
	padding: var(--nt-space-2);
	background: none;
	border: none;
}
.nt-hamburger span {
	display: block;
	width: 24px;
	height: 2px;
	background: var(--nt-gray-700);
	border-radius: var(--nt-radius-full);
	transition: transform var(--nt-transition-base), opacity var(--nt-transition-base);
}
.nt-hamburger.active span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nt-hamburger.active span:nth-child(2) { opacity: 0; }
.nt-hamburger.active span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }


/* ============================================================
   5. Hero / Banner
   ============================================================ */

.nt-hero {
	min-height: 80vh;
	display: flex;
	align-items: center;
	position: relative;
	overflow: hidden;
	background: linear-gradient(
		135deg,
		var(--nt-primary-dark) 0%,
		var(--nt-primary) 60%,
		#1a7cc4 100%
	);
	color: var(--nt-white);
}

.nt-hero__bg-pattern {
	position: absolute;
	inset: 0;
	background-image:
		radial-gradient(circle at 80% 20%, rgba(255,255,255,0.06) 0%, transparent 50%),
		radial-gradient(circle at 20% 80%, rgba(255,255,255,0.04) 0%, transparent 40%);
	pointer-events: none;
}

.nt-hero__content {
	position: relative;
	z-index: 1;
	max-width: var(--nt-container-prose);
}

.nt-hero__eyebrow {
	display: inline-block;
	font-size: var(--nt-size-sm);
	font-weight: var(--nt-weight-semi);
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--nt-accent);
	margin-bottom: var(--nt-space-4);
}

.nt-hero__title {
	font-size: clamp(var(--nt-size-2xl), 6vw, var(--nt-size-4xl));
	font-weight: var(--nt-weight-black);
	color: var(--nt-white);
	line-height: 1.1;
	margin-bottom: var(--nt-space-6);
}

.nt-hero__desc {
	font-size: var(--nt-size-md);
	line-height: var(--nt-leading-base);
	color: rgba(255,255,255,0.85);
	margin-bottom: var(--nt-space-8);
}

.nt-hero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--nt-space-4);
}


/* ============================================================
   6. Buttons
   ============================================================ */

.nt-btn {
	display: inline-flex;
	align-items: center;
	gap: var(--nt-space-2);
	padding: 0.75em 1.75em;
	border-radius: var(--nt-radius-full);
	font-family: var(--nt-font-heading);
	font-size: var(--nt-size-sm);
	font-weight: var(--nt-weight-semi);
	letter-spacing: 0.02em;
	cursor: pointer;
	border: 2px solid transparent;
	text-decoration: none;
	transition:
		background var(--nt-transition-fast),
		color var(--nt-transition-fast),
		border-color var(--nt-transition-fast),
		box-shadow var(--nt-transition-fast),
		transform var(--nt-transition-spring);
	white-space: nowrap;
}
.nt-btn:focus-visible {
	outline: 3px solid var(--nt-primary);
	outline-offset: 3px;
}
.nt-btn:active { transform: scale(0.97); }

/* Primary */
.nt-btn--primary {
	background: var(--nt-primary);
	color: var(--nt-white);
	border-color: var(--nt-primary);
}
.nt-btn--primary:hover {
	background: var(--nt-primary-dark);
	border-color: var(--nt-primary-dark);
	box-shadow: 0 8px 24px rgba(10,92,153,0.3);
	color: var(--nt-white);
}

/* Accent */
.nt-btn--accent {
	background: var(--nt-accent);
	color: var(--nt-black);
	border-color: var(--nt-accent);
}
.nt-btn--accent:hover {
	background: var(--nt-accent-dark);
	border-color: var(--nt-accent-dark);
	color: var(--nt-black);
	box-shadow: 0 8px 24px rgba(244,166,35,0.35);
}

/* Outline */
.nt-btn--outline {
	background: transparent;
	color: var(--nt-primary);
	border-color: var(--nt-primary);
}
.nt-btn--outline:hover {
	background: var(--nt-primary);
	color: var(--nt-white);
}

/* Ghost (on dark bg) */
.nt-btn--ghost {
	background: rgba(255,255,255,0.12);
	color: var(--nt-white);
	border-color: rgba(255,255,255,0.4);
	backdrop-filter: blur(8px);
}
.nt-btn--ghost:hover {
	background: rgba(255,255,255,0.22);
	border-color: var(--nt-white);
	color: var(--nt-white);
}

/* Size modifiers */
.nt-btn--sm  { padding: 0.5em 1.25em; font-size: var(--nt-size-xs); }
.nt-btn--lg  { padding: 1em 2.5em;    font-size: var(--nt-size-base); }
.nt-btn--xl  { padding: 1.1em 3em;    font-size: var(--nt-size-md);   }
.nt-btn--block { width: 100%; justify-content: center; }

/* Elementor button overrides */
.elementor-button {
	font-family: var(--nt-font-heading) !important;
	transition: all var(--nt-transition-fast) !important;
}
.elementor-button:active { transform: scale(0.97); }


/* ============================================================
   7. Cards & Widgets
   ============================================================ */

.nt-card {
	background: var(--nt-white);
	border-radius: var(--nt-radius-lg);
	border: 1px solid var(--nt-gray-200);
	overflow: hidden;
	transition:
		box-shadow var(--nt-transition-base),
		transform var(--nt-transition-base);
}
.nt-card:hover {
	box-shadow: var(--nt-shadow-lg);
	transform: translateY(-4px);
}

.nt-card__image img {
	width: 100%;
	aspect-ratio: 16/9;
	object-fit: cover;
	display: block;
}

.nt-card__body {
	padding: var(--nt-space-6);
}

.nt-card__tag {
	display: inline-block;
	font-size: var(--nt-size-xs);
	font-weight: var(--nt-weight-semi);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nt-primary);
	background: var(--nt-primary-light);
	border-radius: var(--nt-radius-full);
	padding: 0.2em 0.75em;
	margin-bottom: var(--nt-space-3);
}

.nt-card__title {
	font-size: var(--nt-size-lg);
	font-weight: var(--nt-weight-bold);
	color: var(--nt-gray-900);
	margin-bottom: var(--nt-space-3);
	line-height: var(--nt-leading-snug);
}

.nt-card__excerpt {
	font-size: var(--nt-size-sm);
	color: var(--nt-gray-500);
	line-height: var(--nt-leading-base);
	margin-bottom: var(--nt-space-5);
}

.nt-card__footer {
	padding: var(--nt-space-4) var(--nt-space-6);
	border-top: 1px solid var(--nt-gray-200);
	display: flex;
	align-items: center;
	justify-content: space-between;
	font-size: var(--nt-size-xs);
	color: var(--nt-gray-400);
}

/* Feature icon card */
.nt-icon-card {
	padding: var(--nt-space-8);
	background: var(--nt-white);
	border-radius: var(--nt-radius-xl);
	border: 1px solid var(--nt-gray-200);
	text-align: center;
	transition: box-shadow var(--nt-transition-base), transform var(--nt-transition-base);
}
.nt-icon-card:hover {
	box-shadow: var(--nt-shadow-lg);
	transform: translateY(-6px);
}
.nt-icon-card__icon {
	width: 64px;
	height: 64px;
	margin: 0 auto var(--nt-space-5);
	background: var(--nt-primary-light);
	border-radius: var(--nt-radius-lg);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 1.75rem;
	color: var(--nt-primary);
}

/* Testimonial card */
.nt-testimonial {
	background: var(--nt-white);
	border-radius: var(--nt-radius-xl);
	padding: var(--nt-space-8);
	border: 1px solid var(--nt-gray-200);
	box-shadow: var(--nt-shadow-sm);
}
.nt-testimonial__quote {
	font-size: var(--nt-size-md);
	line-height: var(--nt-leading-loose);
	color: var(--nt-gray-700);
	margin-bottom: var(--nt-space-6);
	position: relative;
}
.nt-testimonial__quote::before {
	content: '"';
	font-size: 5rem;
	color: var(--nt-primary-light);
	line-height: 1;
	position: absolute;
	top: -1.5rem;
	left: -0.5rem;
	font-family: Georgia, serif;
}
.nt-testimonial__author {
	display: flex;
	align-items: center;
	gap: var(--nt-space-3);
}
.nt-testimonial__avatar {
	width: 48px;
	height: 48px;
	border-radius: 50%;
	object-fit: cover;
}
.nt-testimonial__name {
	font-weight: var(--nt-weight-semi);
	color: var(--nt-gray-900);
}
.nt-testimonial__role {
	font-size: var(--nt-size-sm);
	color: var(--nt-gray-400);
}

/* Stat / counter block */
.nt-stat {
	text-align: center;
}
.nt-stat__number {
	font-family: var(--nt-font-heading);
	font-size: clamp(2.5rem, 6vw, 4rem);
	font-weight: var(--nt-weight-black);
	color: var(--nt-primary);
	line-height: 1;
}
.nt-stat__label {
	font-size: var(--nt-size-sm);
	color: var(--nt-gray-500);
	margin-top: var(--nt-space-2);
}


/* ============================================================
   8. Footer
   ============================================================ */

.site-footer {
	background: var(--nt-gray-900);
	color: rgba(255,255,255,0.75);
}

.site-footer a {
	color: rgba(255,255,255,0.65);
	font-size: var(--nt-size-sm);
	transition: color var(--nt-transition-fast);
}
.site-footer a:hover { color: var(--nt-white); }

.site-footer__heading {
	font-size: var(--nt-size-base);
	font-weight: var(--nt-weight-semi);
	color: var(--nt-white);
	margin-bottom: var(--nt-space-5);
}

.site-footer__links ul {
	display: flex;
	flex-direction: column;
	gap: var(--nt-space-3);
}

.site-footer__bottom {
	border-top: 1px solid rgba(255,255,255,0.08);
	padding: var(--nt-space-5) 0;
	font-size: var(--nt-size-xs);
	color: rgba(255,255,255,0.4);
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: var(--nt-space-4);
}

/* Social icons */
.nt-social-links {
	display: flex;
	gap: var(--nt-space-3);
}
.nt-social-links a {
	width: 36px;
	height: 36px;
	border-radius: 50%;
	border: 1px solid rgba(255,255,255,0.15);
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background var(--nt-transition-fast), border-color var(--nt-transition-fast);
}
.nt-social-links a:hover {
	background: var(--nt-primary);
	border-color: var(--nt-primary);
	color: var(--nt-white);
}


/* ============================================================
   9. Forms
   ============================================================ */

.nt-form-group {
	margin-bottom: var(--nt-space-5);
}

.nt-label {
	display: block;
	font-size: var(--nt-size-sm);
	font-weight: var(--nt-weight-medium);
	color: var(--nt-gray-700);
	margin-bottom: var(--nt-space-2);
}

.nt-input,
.nt-select,
.nt-textarea {
	width: 100%;
	padding: 0.75em 1em;
	border: 1.5px solid var(--nt-gray-300);
	border-radius: var(--nt-radius-md);
	font-family: var(--nt-font-base);
	font-size: var(--nt-size-base);
	color: var(--nt-gray-700);
	background: var(--nt-white);
	transition:
		border-color var(--nt-transition-fast),
		box-shadow var(--nt-transition-fast);
	outline: none;
}

.nt-input:focus,
.nt-select:focus,
.nt-textarea:focus {
	border-color: var(--nt-primary);
	box-shadow: 0 0 0 3px rgba(10,92,153,0.12);
}

.nt-input::placeholder,
.nt-textarea::placeholder { color: var(--nt-gray-400); }

.nt-textarea { resize: vertical; min-height: 140px; }

/* Contact Form 7 / WPForms overrides */
.wpcf7-form input[type="text"],
.wpcf7-form input[type="email"],
.wpcf7-form input[type="tel"],
.wpcf7-form textarea,
.wpforms-field input,
.wpforms-field textarea {
	border: 1.5px solid var(--nt-gray-300) !important;
	border-radius: var(--nt-radius-md) !important;
	padding: 0.75em 1em !important;
	transition: border-color var(--nt-transition-fast), box-shadow var(--nt-transition-fast) !important;
	outline: none !important;
}
.wpcf7-form input:focus,
.wpcf7-form textarea:focus,
.wpforms-field input:focus,
.wpforms-field textarea:focus {
	border-color: var(--nt-primary) !important;
	box-shadow: 0 0 0 3px rgba(10,92,153,0.12) !important;
}


/* ============================================================
   10. Elementor Pro Overrides
   ============================================================ */

/* Remove default Elementor padding on stretched sections */
.elementor-section.elementor-section-stretched {
	width: 100% !important;
	left: 0 !important;
}

/* Elementor Popup */
.elementor-popup-modal .dialog-widget-content {
	border-radius: var(--nt-radius-xl) !important;
	overflow: hidden;
}

/* Elementor Pro Forms */
.elementor-form .elementor-field-group .elementor-field {
	border-radius: var(--nt-radius-md) !important;
	transition: border-color var(--nt-transition-fast), box-shadow var(--nt-transition-fast) !important;
}
.elementor-form .elementor-field-group .elementor-field:focus {
	border-color: var(--nt-primary) !important;
	box-shadow: 0 0 0 3px rgba(10,92,153,0.12) !important;
	outline: none !important;
}

/* Elementor Nav Menu */
.elementor-nav-menu .elementor-item {
	font-family: var(--nt-font-heading) !important;
	font-weight: var(--nt-weight-medium) !important;
}

/* Elementor image widget */
.elementor-widget-image img {
	border-radius: var(--nt-radius-md);
}

/* Elementor divider */
.elementor-divider-separator {
	border-color: var(--nt-gray-200);
}

/* Elementor icon box */
.elementor-icon-box-icon .elementor-icon {
	transition: transform var(--nt-transition-spring) !important;
}
.elementor-widget-icon-box:hover .elementor-icon-box-icon .elementor-icon {
	transform: scale(1.12) !important;
}

/* Fix Elementor column gap on mobile */
@media (max-width: 767px) {
	.elementor-column-gap-default .elementor-row {
		margin: 0 !important;
	}
}


/* ============================================================
   11. WooCommerce (if used)
   ============================================================ */

.woocommerce .woocommerce-breadcrumb {
	font-size: var(--nt-size-sm);
	color: var(--nt-gray-400);
}

.woocommerce ul.products li.product .price {
	color: var(--nt-primary);
	font-weight: var(--nt-weight-bold);
}

.woocommerce a.button,
.woocommerce button.button,
.woocommerce .single_add_to_cart_button {
	background: var(--nt-primary) !important;
	color: var(--nt-white) !important;
	border-radius: var(--nt-radius-full) !important;
	font-weight: var(--nt-weight-semi) !important;
	transition: background var(--nt-transition-fast), box-shadow var(--nt-transition-fast) !important;
}
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce .single_add_to_cart_button:hover {
	background: var(--nt-primary-dark) !important;
	box-shadow: 0 8px 24px rgba(10,92,153,0.3) !important;
}

.woocommerce-product-gallery .flex-viewport img {
	border-radius: var(--nt-radius-lg);
}

.woocommerce div.product .woocommerce-tabs ul.tabs li.active a {
	color: var(--nt-primary);
	border-bottom-color: var(--nt-primary);
}


/* ============================================================
   12. Responsive Breakpoints
   ============================================================ */

/* Tablet — max 1024px */
@media (max-width: 1024px) {
	.nt-hamburger { display: flex; }

	.site-nav {
		display: none;
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		background: var(--nt-white);
		box-shadow: var(--nt-shadow-lg);
		padding: var(--nt-space-4);
		border-top: 1px solid var(--nt-gray-200);
	}
	.site-nav.is-open {
		display: block;
	}
	.site-nav ul {
		flex-direction: column;
		gap: 0;
	}
	.site-nav a {
		padding: var(--nt-space-3) var(--nt-space-4);
		border-radius: var(--nt-radius-md);
	}

	.nt-grid-4 { grid-template-columns: repeat(2, 1fr); }
}

/* Mobile — max 767px */
@media (max-width: 767px) {
	.nt-hero { min-height: 60vh; padding: var(--nt-space-12) 0; }
	.nt-hero__actions { flex-direction: column; }
	.nt-btn--block-mobile { width: 100%; justify-content: center; }

	.nt-grid-2,
	.nt-grid-3,
	.nt-grid-4 { grid-template-columns: 1fr; }

	.site-footer__bottom { flex-direction: column; text-align: center; }

	.nt-card__body { padding: var(--nt-space-5); }
	.nt-icon-card  { padding: var(--nt-space-6); }
}

/* Small mobile — max 480px */
@media (max-width: 480px) {
	:root { --nt-gutter: 1rem; }
	.nt-btn--xl { padding: 0.9em 2em; font-size: var(--nt-size-base); }
}


/* ============================================================
   13. Dark Mode
   ============================================================ */

@media (prefers-color-scheme: dark) {
	:root {
		--nt-primary-light: rgba(10,92,153,0.18);
		--nt-gray-100: #1a1f2b;
		--nt-gray-200: #252b38;
		--nt-gray-300: #2e3545;
		--nt-gray-400: #8892a0;
		--nt-gray-500: #a0aab6;
		--nt-gray-700: #c9d1dc;
		--nt-gray-900: #eef0f3;
		--nt-white: #111622;
		--nt-black: #ffffff;
	}

	body {
		background-color: #111622;
		color: var(--nt-gray-700);
	}

	.nt-card,
	.nt-icon-card,
	.nt-testimonial {
		background: #161c2a;
		border-color: var(--nt-gray-200);
	}

	.site-header  { background-color: #111622; border-bottom: 1px solid var(--nt-gray-200); }
	.nt-input,
	.nt-select,
	.nt-textarea  { background: #1a1f2b; color: var(--nt-gray-700); }
}

/* Manual dark mode class */
.dark-mode {
	--nt-primary-light: rgba(10,92,153,0.18);
	--nt-gray-100: #1a1f2b;
	--nt-gray-200: #252b38;
	--nt-gray-300: #2e3545;
	--nt-gray-700: #c9d1dc;
	--nt-gray-900: #eef0f3;
	--nt-white: #111622;
	background-color: #111622;
	color: var(--nt-gray-700);
}


/* ============================================================
   14. Animations & Motion
   ============================================================ */

/* Fade in up — add class .nt-fade-in-up */
@keyframes nt-fadeInUp {
	from { opacity: 0; transform: translateY(24px); }
	to   { opacity: 1; transform: translateY(0); }
}

/* Fade in — add class .nt-fade-in */
@keyframes nt-fadeIn {
	from { opacity: 0; }
	to   { opacity: 1; }
}

/* Scale in */
@keyframes nt-scaleIn {
	from { opacity: 0; transform: scale(0.92); }
	to   { opacity: 1; transform: scale(1); }
}

/* Pulse */
@keyframes nt-pulse {
	0%, 100% { box-shadow: 0 0 0 0 rgba(10,92,153,0.4); }
	50%       { box-shadow: 0 0 0 12px rgba(10,92,153,0); }
}

.nt-animate-fade-up    { animation: nt-fadeInUp 0.6s ease both; }
.nt-animate-fade-in    { animation: nt-fadeIn   0.5s ease both; }
.nt-animate-scale-in   { animation: nt-scaleIn  0.4s ease both; }
.nt-animate-pulse      { animation: nt-pulse    2s infinite; }

/* Staggered children */
.nt-stagger > *:nth-child(1) { animation-delay: 0.05s; }
.nt-stagger > *:nth-child(2) { animation-delay: 0.10s; }
.nt-stagger > *:nth-child(3) { animation-delay: 0.15s; }
.nt-stagger > *:nth-child(4) { animation-delay: 0.20s; }
.nt-stagger > *:nth-child(5) { animation-delay: 0.25s; }
.nt-stagger > *:nth-child(6) { animation-delay: 0.30s; }

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* Scroll reveal — pair with Intersection Observer in JS */
.nt-reveal {
	opacity: 0;
	transform: translateY(20px);
	transition: opacity 0.6s ease, transform 0.6s ease;
}
.nt-reveal.is-visible {
	opacity: 1;
	transform: translateY(0);
}


/* ============================================================
   15. Utilities / Helpers
   ============================================================ */

/* Gradient text */
.nt-text-gradient {
	background: linear-gradient(135deg, var(--nt-primary), var(--nt-accent));
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}

/* Section badge */
.nt-badge {
	display: inline-flex;
	align-items: center;
	gap: var(--nt-space-2);
	font-size: var(--nt-size-xs);
	font-weight: var(--nt-weight-semi);
	letter-spacing: 0.1em;
	text-transform: uppercase;
	padding: 0.35em 0.9em;
	border-radius: var(--nt-radius-full);
}
.nt-badge--primary  { background: var(--nt-primary-light); color: var(--nt-primary); }
.nt-badge--accent   { background: rgba(244,166,35,0.12); color: var(--nt-accent-dark); }
.nt-badge--success  { background: #ecfdf5; color: #059669; }
.nt-badge--warning  { background: #fffbeb; color: #d97706; }
.nt-badge--danger   { background: #fef2f2; color: #dc2626; }

/* Divider with label */
.nt-divider {
	display: flex;
	align-items: center;
	gap: var(--nt-space-4);
	color: var(--nt-gray-400);
	font-size: var(--nt-size-sm);
	margin: var(--nt-space-6) 0;
}
.nt-divider::before,
.nt-divider::after {
	content: '';
	flex: 1;
	height: 1px;
	background: var(--nt-gray-200);
}

/* Overlay */
.nt-overlay {
	position: relative;
}
.nt-overlay::after {
	content: '';
	position: absolute;
	inset: 0;
	background: rgba(0,0,0,0.45);
	border-radius: inherit;
}
.nt-overlay > * { position: relative; z-index: 1; }

/* Aspect ratios */
.nt-ratio-16-9  { aspect-ratio: 16/9;   overflow: hidden; }
.nt-ratio-4-3   { aspect-ratio: 4/3;    overflow: hidden; }
.nt-ratio-1-1   { aspect-ratio: 1/1;    overflow: hidden; }
.nt-ratio-3-2   { aspect-ratio: 3/2;    overflow: hidden; }

/* Image cover */
.nt-img-cover { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Truncate text */
.nt-truncate    { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nt-line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.nt-line-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }

/* Backdrop blur card */
.nt-glass {
	background: rgba(255,255,255,0.7);
	backdrop-filter: blur(16px);
	-webkit-backdrop-filter: blur(16px);
	border: 1px solid rgba(255,255,255,0.5);
	border-radius: var(--nt-radius-xl);
}

/* Sticky sidebar */
.nt-sticky-sidebar {
	position: sticky;
	top: calc(var(--nt-space-6) + 60px); /* 60px = approx header height */
}

/* Print utilities */
@media print {
	.site-header,
	.site-footer,
	.nt-btn,
	.no-print { display: none !important; }
	body { font-size: 12pt; color: #000; }
	a[href]::after { content: " (" attr(href) ")"; font-size: 0.8em; }
}


/* ============================================================
   END OF nyasa.css
   Add your custom code below this line
   ============================================================ */
