/*
 * Namma Matrimony Footer - layout, motion and components.
 * All colours come from the --nmf-* variables in nmf-themes.css.
 * Everything is scoped to .nmf so it never leaks into the host theme.
 *
 * Quick tweaks (add to your theme's Additional CSS):
 *   .nmf { --nmf-radius: 8px; }
 */

.nmf {
	--nmf-radius: 16px;
	--nmf-radius-lg: 26px;
	--nmf-ease: cubic-bezier(.4, 0, .2, 1);
	--nmf-pop: cubic-bezier(.2, .8, .2, 1.2);
	position: relative;
	display: block;
	margin: 64px 0 0;
	padding: 0;
	background: var(--nmf-foot);
	color: var(--nmf-text);
	font-family: var(--nmf-font-body);
	font-size: 15px;
	line-height: 1.65;
	text-align: left;
	-webkit-font-smoothing: antialiased;
	transition: background .4s var(--nmf-ease), color .4s var(--nmf-ease);
	isolation: isolate;
}
.nmf *, .nmf *::before, .nmf *::after { box-sizing: border-box; }
:where(.nmf) :where(ul, ol) { list-style: none; margin: 0; padding: 0; }
:where(.nmf) li { margin: 0; padding: 0; }
:where(.nmf) a { text-decoration: none; box-shadow: none; }
:where(.nmf) p { margin: 0; }
:where(.nmf) img { max-width: 100%; height: auto; border: 0; box-shadow: none; }
:where(.nmf) button { font-family: inherit; }
.nmf .nmf-sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.nmf :focus-visible { outline: 3px solid var(--nmf-accent); outline-offset: 3px; border-radius: 6px; }

/* ------------------------------------------------------------ decoration */
.nmf__wave { position: absolute; left: 0; right: 0; top: -59px; height: 60px; overflow: hidden; pointer-events: none; z-index: 2; }
.nmf__wave-track { display: flex; width: 200%; height: 100%; animation: nmfWave 22s linear infinite; }
.nmf__wave svg { flex: 0 0 50%; width: 50%; height: 100%; display: block; }
.nmf__wave path { fill: var(--nmf-foot-top); transition: fill .4s var(--nmf-ease); }
.nmf__line {
	position: absolute; left: 0; right: 0; top: 0; height: 3px; z-index: 3; pointer-events: none;
	background: linear-gradient(90deg, transparent, var(--nmf-accent), var(--nmf-accent-2), var(--nmf-accent), transparent);
	background-size: 200% 100%; animation: nmfLine 7s linear infinite;
}
.nmf__bg { position: absolute; inset: 0; overflow: hidden; z-index: -1; pointer-events: none; }
.nmf__orb { position: absolute; border-radius: 50%; filter: blur(70px); opacity: .22; will-change: transform; }
.nmf__orb--1 { width: 380px; height: 380px; left: -120px; top: 10%; background: var(--nmf-accent); animation: nmfDrift 18s ease-in-out infinite alternate; }
.nmf__orb--2 { width: 420px; height: 420px; right: -140px; bottom: -80px; background: var(--nmf-accent-2); animation: nmfDrift 22s ease-in-out infinite alternate-reverse; }
.nmf[data-mode="dark"] .nmf__orb { opacity: .16; }
.nmf__motif {
	position: absolute; right: clamp(-60px, -2vw, 0px); bottom: 70px; width: clamp(220px, 28vw, 420px); aspect-ratio: 1.2;
	background: var(--nmf-emblem) no-repeat center / contain; opacity: .09; animation: nmfFloat 9s ease-in-out infinite;
}
.nmf[data-mode="dark"] .nmf__motif { opacity: .12; }

.nmf__wrap { position: relative; max-width: var(--kms-max, 1240px); margin: 0 auto; padding: 56px clamp(16px, 4vw, 32px) 18px; }

/* ----------------------------------------------------------- reveal on scroll */
/* Content is always visible. Browsers that support scroll-driven animation
   fade sections in as they enter the screen; others simply show them. */
@keyframes nmfReveal { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: none; } }
@supports (animation-timeline: view()) {
	.nmf[data-anim="1"] .nmf-reveal { animation: nmfReveal linear both; animation-timeline: view(); animation-range: entry 0% entry 55%; }
}

/* ------------------------------------------------- heading hover effects */
.nmf__h {
	display: flex; align-items: center; gap: 10px; margin: 0 0 16px; padding: 0;
	font-family: var(--nmf-font-head); font-size: 1.05rem; font-weight: 700; letter-spacing: .03em; line-height: 1.3; color: var(--nmf-head); text-transform: none;
}
.nmf__h-i {
	flex: none; display: grid; place-items: center; width: 34px; height: 34px; border-radius: 11px; font-size: .85rem;
	background: var(--nmf-grad); color: var(--nmf-on-primary); box-shadow: 0 8px 18px -8px var(--nmf-shadow);
	transition: transform .4s var(--nmf-pop);
}
.nmf__col:hover .nmf__h-i, .nmf-wa:hover .nmf__h-i { transform: rotate(-10deg) scale(1.12); }
.nmf-fx { display: inline-block; max-width: 100%; color: var(--nmf-head); }

/* Fill wipe: a gradient fills the heading from left to right. */
.nmf[data-fx="wipe"] .nmf-fx {
	color: transparent;
	background-image: linear-gradient(90deg, var(--nmf-fx-1), var(--nmf-fx-2)), linear-gradient(var(--nmf-head), var(--nmf-head));
	background-repeat: no-repeat; background-size: 0% 100%, 100% 100%; background-position: 0 0, 0 0;
	-webkit-background-clip: text; background-clip: text;
	transition: background-size .8s var(--nmf-ease);
}
.nmf[data-fx="wipe"] :is(.nmf__h:hover, .nmf__h:focus-within, .nmf__col:hover, .nmf__col:focus-within, .nmf-wa:hover) .nmf-fx { background-size: 100% 100%, 100% 100%; }

/* Gradient sweep: a bright band of colour glides across the heading. */
.nmf[data-fx="sweep"] .nmf-fx {
	color: transparent;
	background-image: linear-gradient(105deg, var(--nmf-head) 0 38%, var(--nmf-fx-1) 46%, var(--nmf-fx-2) 54%, var(--nmf-head) 62% 100%);
	background-size: 320% 100%; background-position: 100% 0;
	-webkit-background-clip: text; background-clip: text;
	transition: background-position 1s var(--nmf-ease);
}
.nmf[data-fx="sweep"] :is(.nmf__h:hover, .nmf__h:focus-within, .nmf__col:hover, .nmf__col:focus-within, .nmf-wa:hover) .nmf-fx { background-position: 0 0; }

/* ----------------------------------------------------------------- buttons */
.nmf .nmf-btn {
	position: relative; overflow: hidden; display: inline-flex; align-items: center; justify-content: center; gap: 10px;
	padding: 13px 26px; border: 2px solid transparent; border-radius: 999px; cursor: pointer;
	font: 700 .95rem/1.2 var(--nmf-font-body); letter-spacing: .01em; text-decoration: none;
	transition: transform .3s var(--nmf-pop), box-shadow .3s var(--nmf-ease), background .3s, color .3s, border-color .3s;
}
.nmf .nmf-btn::after {
	content: ""; position: absolute; top: 0; left: -80%; width: 50%; height: 100%; pointer-events: none;
	background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .55), transparent); transform: skewX(-20deg); transition: left .8s var(--nmf-ease);
}
.nmf .nmf-btn:hover::after { left: 130%; }
.nmf .nmf-btn i { transition: transform .3s var(--nmf-pop); }
.nmf .nmf-btn:hover { transform: translateY(-3px); }
.nmf .nmf-btn:hover i { transform: scale(1.2) rotate(-8deg); }
.nmf .nmf-btn:active { transform: translateY(0) scale(.97); }
.nmf .nmf-btn--gold { background: var(--nmf-gold-grad); color: var(--nmf-on-gold); box-shadow: 0 12px 26px -12px rgba(0, 0, 0, .55); }
.nmf .nmf-btn--gold:hover { box-shadow: 0 18px 32px -12px rgba(0, 0, 0, .6); color: var(--nmf-on-gold); }
.nmf .nmf-btn--ghost { background: transparent; color: #fff; border-color: rgba(255, 255, 255, .75); }
.nmf .nmf-btn--ghost:hover { background: #fff; color: var(--nmf-primary-dark); border-color: #fff; }
.nmf .nmf-btn--wa { background: #25D366; color: #052E16; box-shadow: 0 12px 24px -14px rgba(37, 211, 102, .9); }
.nmf .nmf-btn--wa:hover { color: #052E16; box-shadow: 0 18px 30px -12px rgba(37, 211, 102, .9); }
.nmf .nmf-btn:disabled { opacity: .55; cursor: not-allowed; transform: none; box-shadow: none; }
.nmf .nmf-btn:disabled::after { display: none; }

/* ------------------------------------------------------------ CTA band */
.nmf-cta {
	position: relative; overflow: hidden; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 22px 34px;
	margin: 0 0 44px; padding: clamp(26px, 4.5vw, 46px); border-radius: var(--nmf-radius-lg); color: #fff;
	background: radial-gradient(circle at 12% 18%, rgba(255, 255, 255, .22), transparent 38%), radial-gradient(circle at 90% 90%, rgba(0, 0, 0, .28), transparent 45%), var(--nmf-grad);
	box-shadow: 0 30px 60px -28px var(--nmf-shadow), inset 0 0 0 1px rgba(255, 255, 255, .14);
}
.nmf-cta::after { content: ""; position: absolute; inset: 0; background: linear-gradient(110deg, transparent 35%, rgba(255, 255, 255, .16) 50%, transparent 65%); background-size: 250% 100%; animation: nmfSheen 7s ease-in-out infinite; pointer-events: none; }
.nmf-cta__copy { position: relative; z-index: 1; flex: 1 1 340px; max-width: 640px; }
.nmf-cta__title { margin: 0 0 8px; padding: 0; font-family: var(--nmf-font-head); font-size: clamp(1.45rem, 3.2vw, 2.15rem); font-weight: 800; line-height: 1.2; color: #fff; letter-spacing: .01em; }
.nmf-cta__title span {
	display: inline-block; color: transparent; background: linear-gradient(100deg, #fff 0 42%, #FFE9A8 50%, #fff 58% 100%); background-size: 260% 100%;
	-webkit-background-clip: text; background-clip: text; animation: nmfShimmer 6s linear infinite;
}
.nmf-cta p { color: rgba(255, 255, 255, .92); max-width: 52ch; }
.nmf-cta__btns { position: relative; z-index: 1; display: flex; flex-wrap: wrap; gap: 12px; }
.nmf-cta__heart { position: absolute; z-index: 0; color: rgba(255, 255, 255, .16); pointer-events: none; animation: nmfFloat 7s ease-in-out infinite; }
.nmf-cta__heart--1 { right: 28%; top: 14%; font-size: 2.6rem; }
.nmf-cta__heart--2 { right: 6%; bottom: 10%; font-size: 4rem; animation-delay: -2.5s; }
.nmf-cta__heart--3 { left: 46%; bottom: 6%; font-size: 2rem; animation-delay: -4.5s; }

/* -------------------------------------------------------------- stats */
.nmf-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; margin: 0 0 44px; }
.nmf-stat {
	display: flex; align-items: center; gap: 14px; padding: 18px 20px; border-radius: var(--nmf-radius);
	background: var(--nmf-bg); border: 1px solid var(--nmf-border); box-shadow: 0 14px 30px -22px var(--nmf-shadow);
	transition: transform .35s var(--nmf-pop), box-shadow .35s, border-color .35s;
}
.nmf-stat:hover { transform: translateY(-5px); border-color: var(--nmf-accent); box-shadow: 0 22px 36px -20px var(--nmf-shadow); }
.nmf-stat__ic { flex: none; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 14px; background: var(--nmf-grad); color: var(--nmf-on-primary); font-size: 1.15rem; transition: transform .4s var(--nmf-pop); }
.nmf-stat:hover .nmf-stat__ic { transform: rotate(-8deg) scale(1.1); }
.nmf-stat b { display: block; font-family: var(--nmf-font-head); font-size: clamp(1.4rem, 2.6vw, 1.9rem); line-height: 1.15; color: var(--nmf-head); }
.nmf-stat small { display: block; color: var(--nmf-muted); font-size: .85rem; }
@supports (-webkit-background-clip: text) or (background-clip: text) {
	.nmf-stat b { background: var(--nmf-grad); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
	.nmf[data-mode="dark"] .nmf-stat b { background-image: var(--nmf-text-grad); }
}

/* --------------------------------------------------------------- grid */
.nmf__grid { display: grid; grid-template-columns: var(--nmf-gt, minmax(240px, 1.5fr) repeat(auto-fit, minmax(150px, 1fr))); gap: clamp(26px, 3.2vw, 50px); padding: 6px 0 38px; }
.nmf__brand { min-width: 0; }
.nmf__logo-link { display: inline-block; margin: 0 0 14px; }
.nmf__logo-wrap { display: inline-block; border-radius: 16px; line-height: 0; transition: transform .45s var(--nmf-pop), box-shadow .4s, background .3s; }
.nmf__logo { width: clamp(130px, 14vw, 170px); height: auto; display: block; transition: filter .4s; }
.nmf__logo-link:hover .nmf__logo-wrap { transform: scale(1.05) rotate(-1.5deg); }
.nmf__logo-link:hover .nmf__logo { filter: drop-shadow(0 8px 18px var(--nmf-shadow)); }
/* Logos with dark lettering sit on a soft ivory plate in dark mode. */
.nmf[data-plate="always"] .nmf__logo-wrap,
.nmf[data-plate="auto"][data-mode="dark"] .nmf__logo-wrap { padding: 10px 14px; background: linear-gradient(145deg, #FFF9F0, #F6E7CF); box-shadow: 0 0 0 1px rgba(212, 175, 55, .55), 0 14px 30px -14px rgba(0, 0, 0, .7); }
.nmf__wordmark { display: inline-block; font-family: var(--nmf-font-head); font-size: 1.7rem; font-weight: 800; line-height: 1.1; color: var(--nmf-head); background: var(--nmf-text-grad); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.nmf__tagline { margin: 0 0 8px; font-family: var(--nmf-font-head); font-size: 1.02rem; font-weight: 700; color: var(--nmf-head); letter-spacing: .02em; }
.nmf__pulse { color: var(--nmf-accent-2); margin-right: 4px; animation: nmfHeart 1.8s ease-in-out infinite; }
.nmf__desc { color: var(--nmf-muted); max-width: 40ch; margin: 0 0 18px; }

.nmf__social { margin-top: 4px; }
.nmf__social-t { display: block; margin: 0 0 10px; font-size: .74rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--nmf-muted); }
.nmf__social ul { display: flex; flex-wrap: wrap; gap: 10px; }
.nmf__social a {
	position: relative; display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; font-size: 1.05rem;
	color: var(--nmf-primary); background: var(--nmf-bg); border: 1px solid var(--nmf-border);
	transition: transform .35s var(--nmf-pop), background .3s, color .3s, box-shadow .3s, border-color .3s;
}
.nmf[data-mode="dark"] .nmf__social a { color: var(--nmf-head); }
.nmf__social a:hover { transform: translateY(-5px) rotate(-8deg) scale(1.08); background: var(--c, var(--nmf-primary)); color: #fff; border-color: var(--nmf-accent); box-shadow: 0 12px 22px -10px var(--c, var(--nmf-primary)), 0 0 0 3px var(--nmf-surface); }
.nmf__social a::after { content: ""; position: absolute; inset: -4px; border-radius: 50%; border: 2px solid var(--c, var(--nmf-primary)); opacity: 0; transform: scale(.8); }
.nmf__social a:hover::after { animation: nmfRipple .7s ease-out; }

.nmf__col { min-width: 0; }
.nmf__links a { position: relative; display: flex; align-items: center; gap: 10px; padding: 6px 0; color: var(--nmf-muted); transition: color .25s, transform .3s var(--nmf-ease); }
.nmf__li { flex: none; width: 18px; text-align: center; font-size: .78rem; color: var(--nmf-accent); opacity: .85; transition: transform .3s var(--nmf-pop), color .25s; }
.nmf__links a span { background: linear-gradient(currentColor, currentColor) 0 100% / 0 1.5px no-repeat; transition: background-size .35s var(--nmf-ease); padding-bottom: 1px; }
.nmf__links a:hover, .nmf__links a:focus-visible { color: var(--nmf-link); transform: translateX(6px); }
.nmf__links a:hover span { background-size: 100% 1.5px; }
.nmf__links a:hover .nmf__li { color: var(--nmf-accent-2); transform: scale(1.25) rotate(-8deg); }

.nmf__info li { display: flex; align-items: flex-start; gap: 12px; padding: 7px 0; color: var(--nmf-muted); overflow-wrap: break-word; word-break: normal; }
.nmf__info li > a, .nmf__info li > span:last-child { min-width: 0; }
.nmf__info a { color: var(--nmf-muted); transition: color .25s; }
.nmf__info a:hover { color: var(--nmf-link); }
.nmf__ci { flex: none; display: grid; place-items: center; width: 34px; height: 34px; border-radius: 11px; font-size: .85rem; color: var(--nmf-primary); background: var(--nmf-bg); border: 1px solid var(--nmf-border); transition: transform .35s var(--nmf-pop), background .3s, color .3s; }
.nmf[data-mode="dark"] .nmf__ci { color: var(--nmf-head); }
.nmf__info li:hover .nmf__ci { background: var(--nmf-grad); color: var(--nmf-on-primary); transform: scale(1.12) rotate(-6deg); border-color: transparent; }
.nmf__info li > span:last-child, .nmf__info li > a { padding-top: 5px; }
.nmf__dir { display: inline-block; margin-left: 6px; font-weight: 700; font-size: .85rem; color: var(--nmf-link) !important; }
.nmf__dir i { font-size: .7em; }

/* ------------------------------------------------------ WhatsApp card */
.nmf-wa {
	display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 20px 30px; align-items: center; margin: 0 0 30px; padding: 22px 26px;
	border-radius: var(--nmf-radius-lg); background: var(--nmf-bg); border: 1px solid var(--nmf-border); border-left: 5px solid #25D366; box-shadow: 0 20px 40px -30px var(--nmf-shadow);
}
.nmf-wa__copy { display: flex; align-items: center; gap: 16px; }
.nmf-wa__copy .nmf__h { margin-bottom: 4px; }
.nmf-wa__copy p { color: var(--nmf-muted); font-size: .92rem; }
.nmf-wa__ic { flex: none; display: grid; place-items: center; width: 54px; height: 54px; border-radius: 50%; font-size: 1.7rem; color: #fff; background: #25D366; box-shadow: 0 0 0 0 rgba(37, 211, 102, .6); animation: nmfWaPulse 2.4s ease-out infinite; }
.nmf-wa__form { display: flex; flex-wrap: wrap; gap: 10px; }
.nmf-wa__form input {
	flex: 1 1 140px; min-width: 0; height: 46px; padding: 0 18px; border-radius: 999px; font: inherit; color: var(--nmf-text);
	background: var(--nmf-surface); border: 1px solid var(--nmf-border); transition: border-color .25s, box-shadow .25s; box-shadow: none;
}
.nmf-wa__form input::placeholder { color: var(--nmf-muted); opacity: .85; }
.nmf-wa__form input:focus { outline: none; border-color: var(--nmf-accent); box-shadow: 0 0 0 4px rgba(212, 175, 55, .22); }
.nmf-wa__form input.is-bad { border-color: #d64545; animation: nmfShake .35s; }

/* --------------------------------------------------------- trust badges */
.nmf-trust { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin: 0 0 28px; }
.nmf-trust li { display: inline-flex; align-items: center; gap: 10px; padding: 10px 18px; border-radius: 999px; font-weight: 600; font-size: .9rem; color: var(--nmf-text); background: var(--nmf-bg); border: 1px solid var(--nmf-border); transition: transform .35s var(--nmf-pop), border-color .3s, box-shadow .3s; }
.nmf-trust i { color: var(--nmf-accent-2); font-size: 1rem; transition: transform .4s var(--nmf-pop); }
.nmf-trust li:hover { transform: translateY(-4px); border-color: var(--nmf-accent); box-shadow: 0 14px 24px -16px var(--nmf-shadow); }
.nmf-trust li:hover i { transform: scale(1.3) rotate(-10deg); }

/* ------------------------------------------------- broker disclaimer */
.nmf__note { margin: 0 0 16px; padding: 10px 16px; max-width: 100%; box-sizing: border-box; text-align: center; font-size: .85rem; line-height: 1.5; color: var(--nmf-muted); background: var(--nmf-bg); border: 1px solid var(--nmf-border); border-radius: 12px; overflow-wrap: anywhere; }
.nmf__note-i { margin-right: 6px; color: var(--nmf-accent-2); }

/* ---------------------------------------------------------- bottom bar */
.nmf__bottom { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 26px; padding: 22px 0 8px; border-top: 1px solid var(--nmf-border); }
.nmf__copy { color: var(--nmf-muted); font-size: .88rem; }
.nmf__legal { display: flex; flex-wrap: wrap; gap: 4px 18px; }
.nmf__legal a { position: relative; color: var(--nmf-muted); font-size: .88rem; transition: color .25s; }
.nmf__legal a::after { content: ""; position: absolute; left: 0; bottom: -2px; height: 2px; width: 0; background: var(--nmf-grad); transition: width .3s var(--nmf-ease); }
.nmf__legal a:hover { color: var(--nmf-link); }
.nmf__legal a:hover::after { width: 100%; }
.nmf__tools { display: flex; align-items: center; gap: 14px; }
.nmf__made { flex: 1 0 100%; display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 14px; margin-top: 4px; font-size: .85rem; color: var(--nmf-muted); text-align: center; }
.nmf__made a { color: var(--nmf-link); font-weight: 700; }
.nmf__made a:hover { text-decoration: underline; }
.nmf__beat { display: inline-block; color: #e0245e; animation: nmfHeart 1.6s ease-in-out infinite; }

/* theme picker */
.nmf-picker { display: flex; gap: 8px; }
.nmf-dot { width: 24px; height: 24px; padding: 0; border-radius: 50%; border: 2px solid var(--nmf-bg); cursor: pointer; box-shadow: 0 0 0 1px var(--nmf-border); transition: transform .3s var(--nmf-pop), box-shadow .3s; }
.nmf-dot:hover { transform: scale(1.25); }
.nmf-dot.is-on { box-shadow: 0 0 0 2px var(--nmf-accent), 0 4px 10px -2px var(--nmf-shadow); transform: scale(1.12); }

/* light / dark switch */
.nmf-toggle { display: inline-flex; align-items: center; gap: 10px; padding: 4px 12px 4px 4px; border-radius: 999px; cursor: pointer; background: var(--nmf-bg); color: var(--nmf-text); border: 1px solid var(--nmf-border); font-weight: 700; font-size: .8rem; transition: box-shadow .3s, border-color .3s, transform .3s var(--nmf-pop); }
.nmf-toggle:hover { border-color: var(--nmf-accent); box-shadow: 0 8px 18px -10px var(--nmf-shadow); transform: translateY(-2px); }
.nmf-toggle__track { position: relative; display: flex; align-items: center; justify-content: space-between; width: 62px; height: 30px; padding: 0 8px; border-radius: 999px; background: var(--nmf-surface); font-size: .78rem; }
.nmf-toggle__sun { color: #E0A100; }
.nmf-toggle__moon { color: #7C8BFF; }
.nmf-toggle__knob { position: absolute; top: 3px; left: 3px; width: 24px; height: 24px; border-radius: 50%; background: var(--nmf-grad); box-shadow: 0 3px 8px rgba(0, 0, 0, .3); transition: transform .45s var(--nmf-pop); }
.nmf[data-mode="dark"] .nmf-toggle__knob { transform: translateX(32px); }
.nmf-toggle__txt--dark, .nmf[data-mode="dark"] .nmf-toggle__txt--light { display: none; }
.nmf[data-mode="dark"] .nmf-toggle__txt--dark { display: inline; }
.nmf-float { position: fixed; right: 16px; bottom: 16px; z-index: 9998; margin: 0; background: none; }
.nmf-float .nmf-toggle { box-shadow: 0 10px 24px -10px var(--nmf-shadow); }

/* back to top with scroll-progress ring */
.nmf-top { position: fixed; right: 18px; bottom: 18px; z-index: 9997; display: grid; place-items: center; width: 48px; height: 48px; padding: 0; border: 0; border-radius: 50%; cursor: pointer; color: var(--nmf-primary); background: var(--nmf-bg); box-shadow: 0 12px 26px -10px var(--nmf-shadow); opacity: 0; visibility: hidden; transform: translateY(18px) scale(.8); transition: opacity .35s, transform .4s var(--nmf-pop), visibility .35s, background .3s, color .3s; }
.nmf[data-mode="dark"] .nmf-top { color: var(--nmf-head); }
.nmf-top.is-visible { opacity: 1; visibility: visible; transform: none; }
.nmf-top.is-offset { bottom: 78px; }
.nmf-top:hover { background: var(--nmf-grad); color: var(--nmf-on-primary); transform: translateY(-4px); }
.nmf-top:hover i { animation: nmfUp .6s ease infinite; }
.nmf-top__ring { position: absolute; inset: 0; width: 100%; height: 100%; transform: rotate(-90deg); }
.nmf-top__ring circle { fill: none; stroke-width: 2.6; }
.nmf-top__bg { stroke: var(--nmf-border); }
.nmf-top__bar { stroke: var(--nmf-accent); stroke-linecap: round; stroke-dasharray: 119.38; stroke-dashoffset: calc(119.38 * (1 - var(--p, 0))); }
.nmf-top:hover .nmf-top__bar { stroke: #fff; }

/* ---------------------------------------------------- centered layout */
.nmf[data-layout="centered"] .nmf__grid { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); text-align: center; }
.nmf[data-layout="centered"] .nmf__brand { grid-column: 1 / -1; display: flex; flex-direction: column; align-items: center; text-align: center; }
.nmf[data-layout="centered"] .nmf__desc { margin-left: auto; margin-right: auto; max-width: 62ch; }
.nmf[data-layout="centered"] .nmf__h { justify-content: center; }
.nmf[data-layout="centered"] .nmf__links a { justify-content: center; }
.nmf[data-layout="centered"] .nmf__social ul { justify-content: center; }
.nmf[data-layout="centered"] .nmf__info li { justify-content: center; text-align: left; }
.nmf[data-layout="centered"] .nmf__bottom { flex-direction: column; text-align: center; justify-content: center; }
.nmf[data-layout="centered"] .nmf__legal { justify-content: center; }
.nmf[data-layout="centered"] .nmf__motif { left: 50%; right: auto; transform: translateX(-50%); bottom: 24px; }

/* ------------------------------------------------------- responsive */
@media (max-width: 1024px) {
	.nmf__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.nmf__brand { grid-column: 1 / -1; }
	.nmf-wa { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
	.nmf { margin-top: 48px; font-size: 14.5px; }
	.nmf__wave { top: -47px; height: 48px; }
	.nmf__wrap { padding-top: 40px; }
	.nmf__grid { grid-template-columns: 1fr; gap: 28px; }
	.nmf-cta { flex-direction: column; align-items: flex-start; }
	.nmf-cta__copy { flex: 0 0 auto; }
	.nmf-cta__btns, .nmf-cta__btns .nmf-btn { width: 100%; }
	.nmf__bottom { flex-direction: column; text-align: center; justify-content: center; }
	.nmf__legal { justify-content: center; }
	.nmf-wa { padding: 18px; }
	.nmf-wa__copy { align-items: flex-start; }
	.nmf-trust li { flex: 1 1 calc(50% - 12px); justify-content: center; }
}

/* ---------------------------------------------------------- animations */
@keyframes nmfWave { to { transform: translateX(-50%); } }
@keyframes nmfLine { to { background-position: -200% 0; } }
@keyframes nmfDrift { from { transform: translate(0, 0) scale(1); } to { transform: translate(60px, -40px) scale(1.15); } }
@keyframes nmfFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-14px); } }
@keyframes nmfSheen { 0%, 60% { background-position: 150% 0; } 100% { background-position: -100% 0; } }
@keyframes nmfShimmer { to { background-position: -260% 0; } }
@keyframes nmfHeart { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.3); } }
@keyframes nmfRipple { from { opacity: .7; transform: scale(.8); } to { opacity: 0; transform: scale(1.5); } }
@keyframes nmfWaPulse { 70% { box-shadow: 0 0 0 16px rgba(37, 211, 102, 0); } 100% { box-shadow: 0 0 0 0 rgba(37, 211, 102, 0); } }
@keyframes nmfShake { 25% { transform: translateX(-5px); } 75% { transform: translateX(5px); } }
@keyframes nmfUp { 50% { transform: translateY(-3px); } }

/* Animations switched off in settings, or the visitor prefers less motion. */
.nmf[data-anim="0"] *, .nmf[data-anim="0"] *::before, .nmf[data-anim="0"] *::after { animation: none !important; }
.nmf[data-anim="0"] .nmf-reveal { opacity: 1 !important; transform: none !important; }
@media (prefers-reduced-motion: reduce) {
	.nmf *, .nmf *::before, .nmf *::after { animation: none !important; transition-duration: .01ms !important; transition-delay: 0s !important; }
	.nmf .nmf-reveal { opacity: 1; transform: none; }
}
/* ------------------------------------------------ robustness (1.1.2)
   Font Awesome and some themes also style <i> and <li>. Their rules have the same
   weight as ours, so the load order decided who won (icons jumped to the corner
   of their boxes, bullets came back). Doubling the weight makes the result the same every time. */
.nmf .nmf__h-i, .nmf .nmf__ci, .nmf .nmf-stat__ic, .nmf .nmf-wa__ic { display: grid; place-items: center; line-height: 1; text-align: center; }
.nmf .nmf__h-i::before, .nmf .nmf__ci::before, .nmf .nmf-stat__ic::before, .nmf .nmf-wa__ic::before { display: block; line-height: 1; }
.nmf .nmf__li { display: inline-block; line-height: 1; }
.nmf ul, .nmf ol, .nmf ul li, .nmf ol li { list-style: none !important; margin-left: 0; padding-left: 0; }
.nmf ul li::marker, .nmf ol li::marker { content: none; }
.nmf ul li::before, .nmf .nmf__links li::before { content: none; }
@media print { .nmf-top, .nmf-float, .nmf__wave, .nmf__bg, .nmf-wa, .nmf-toggle, .nmf-picker { display: none !important; } }
