/* NFS Custom Account — design system
   Sidebar fix + panouri, pe baza machetelor furnizate. */

:root {
	/* Design tokens preluate din Claude Design — fonturi identice cu artifact-ul:
	   Public Sans pentru corp de text, Sora pentru titluri (h1-h3). */
	--nfs-font: "Public Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	--nfs-font-heading: "Sora", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	--nfs-navy: #032657;
	--nfs-navy-light: #0a4a8f;
	--nfs-gold: #ffce00;
	--nfs-gold-dark: #f0c200;
	--nfs-bg: #f5f7fa;
	--nfs-card: #ffffff;
	--nfs-border: #e3e8f0;
	--nfs-text: #032657;
	--nfs-text-muted: #4a5f7d;
	--nfs-text-label: #7d8ea6;
	--nfs-radius: 14px;
	--nfs-radius-sm: 8px;
	/* Design-ul folosește doar bordură pe panouri, fără umbră (.nf-panel). */
	--nfs-shadow: none;
}

.nfs-account {
	display: flex;
	flex-direction: column;
	width: 100%;
	color: var(--nfs-text);
	font-family: var(--nfs-font);
	box-sizing: border-box;
}

.nfs-account *,
.nfs-page-header,
.nfs-page-header *,
.nfs-seminar-player,
.nfs-seminar-player *,
.nfs-seminar-locked {
	box-sizing: border-box;
}

/* :where() ține specificitatea la (0,1,0) — la fel ca orice clasă simplă
   (ex: .nfs-watch-header__title) — ca marginile specifice de mai jos din
   fișier să câștige normal, prin ordine, în loc să fie suprascrise silențios
   de acest reset (altfel "h1" în selector ar adăuga specificitate în plus). */
.nfs-account :where(h1, h2, h3),
.nfs-page-header :where(h1, h2, h3) {
	font-family: var(--nfs-font-heading);
	margin: 0;
}

/* ---------- Header nativ (breadcrumb + salut + logout) ---------- */

.nfs-page-header {
	/* Fără fundal/bordură/padding mare — cele controlate de secțiunea
	   Elementor în care e plasat widget-ul (full-width + fundal propriu). */
	padding: 20px 0;
	font-family: var(--nfs-font);
	color: var(--nfs-text);
}

.nfs-page-header__inner {
	width: 100%;
}

.nfs-page-header .nfs-breadcrumb {
	margin-bottom: 0;
}

.nfs-page-header .nfs-btn--outline {
	background: #fff !important;
}

.nfs-page-header__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 30px;
	flex-wrap: wrap;
	margin-top: 22px;
}

.nfs-page-header__identity {
	display: flex;
	align-items: center;
	gap: 18px;
	min-width: 0;
}

.nfs-avatar {
	width: 58px;
	height: 58px;
	border-radius: var(--nfs-radius-sm);
	background: var(--nfs-navy);
	color: var(--nfs-gold);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 21px;
	font-weight: 800;
	flex-shrink: 0;
}

.nfs-page-header__title {
	font-size: 32px;
	font-weight: 800;
	line-height: 1.15;
	letter-spacing: -0.4px;
	color: var(--nfs-text);
	margin: 0;
}

.nfs-page-header__name {
	border-bottom: 4px solid var(--nfs-gold);
}

.nfs-page-header__meta {
	font-size: 15px;
	line-height: 1.6;
	color: var(--nfs-text-muted);
	margin: 8px 0 0;
}

/* ---------- Pagina de produs a unui seminar (înainte de achiziție) ----------
   Container-ul de produs al temei e mai îngust decât 1400px — "spargem"
   lățimea containerului temei (tehnica standard cu margin negativ raportat
   la viewport), ca fundalul header-ului să fie full-width, iar conținutul
   din interior să poată ajunge la 1400px, centrat. */
.nfs-seminar-buy {
	/* 100vw include și bara de scroll verticală, de unde rezulta un scroll
	   orizontal de ~15px. --nfs-sbw e lățimea reală a barei, măsurată în
	   account.js; până rulează (sau dacă JS e blocat) fallback-ul 0px
	   păstrează exact comportamentul de dinainte. */
	width: calc(100vw - var(--nfs-sbw, 0px));
	margin-left: calc(50% - 50vw + var(--nfs-sbw, 0px) / 2);
	margin-right: calc(50% - 50vw + var(--nfs-sbw, 0px) / 2);

	/* Aceleași fonturi ca pe restul paginilor: pagina de produs nu e învelită
	   în .nfs-account, deci fără asta tipografia temei se scurge înăuntru. */
	font-family: var(--nfs-font);
	color: var(--nfs-text);
}

.nfs-seminar-buy,
.nfs-seminar-buy * {
	box-sizing: border-box;
}

/* :where() ține specificitatea la (0,1,0), ca regulile de componentă de mai
   jos (ex. .nfs-watch-header__title) să câștige normal, prin ordine. */

.nfs-seminar-buy :where(h1, h2, h3, h4) {
	font-family: var(--nfs-font-heading);
}

.nfs-seminar-buy :where(p, span, a, li, strong, em, div) {
	font-family: var(--nfs-font);
}

/* Prețul afișează deja sufixul WooCommerce "cu TVA inclus", iar informația se
   repetă în nota de sub el — o lăsăm doar în notă. */

.nfs-buy-price .woocommerce-price-suffix {
	display: none;
}

.nfs-seminar-buy__header {
	background: var(--nfs-bg);
	border-top: 1px solid var(--nfs-border);
	border-bottom: 1px solid var(--nfs-border);
	padding: 30px 0 34px;
}

/* Lățime fixă de 1400px, ca pe restul paginilor. Gutterul lateral vine din
   containerul Elementor în care e pus shortcode-ul, deci antetul nu mai adaugă
   unul propriu — altfel conținutul ar fi ieșit din coloana site-ului. */

.nfs-seminar-buy__header-inner,
.nfs-seminar-buy__content {
	box-sizing: border-box;
	max-width: 1400px;
	margin: 0 auto;
}

.nfs-seminar-buy__content {
	padding: 40px 0;
}

/* ---------- Meniu orizontal (sticky sus) ---------- */

.nfs-account__nav {
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius);
	background: var(--nfs-card);
	padding: 10px;
	margin-bottom: 28px;
}

.nfs-account__menu {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.nfs-account__menu-item a {
	display: flex;
	align-items: center;
	gap: 9px;
	border-radius: var(--nfs-radius-sm);
	padding: 13px 20px;
	white-space: nowrap;
	text-decoration: none;
	color: var(--nfs-text-muted);
	font-weight: 700;
	font-size: 14.5px;
	transition: background-color 0.2s ease, color 0.2s ease;
}

.nfs-account__menu-icon {
	flex: 0 0 auto;
	display: flex;
	color: currentColor;
}

.nfs-account__menu-icon svg {
	width: 17px;
	height: 17px;
}

.nfs-account__menu-item a:hover {
	background: var(--nfs-bg);
}

.nfs-account__menu-item.is-active a {
	background: var(--nfs-navy);
	color: #fff;
}

.nfs-account__menu-item.is-active a:hover {
	background: var(--nfs-navy);
}

.nfs-account__menu-badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 20px;
	height: 20px;
	padding: 0 6px;
	border-radius: 999px;
	background: #e9edf4;
	color: var(--nfs-navy);
	font-size: 11px;
	font-weight: 800;
}

.nfs-account__menu-item.is-active .nfs-account__menu-badge {
	background: var(--nfs-gold);
	color: var(--nfs-navy);
}

/* ---------- Content ---------- */

.nfs-account__content {
	width: 100%;
	min-width: 0;
}

.nfs-panel__title {
	font-size: 22px;
	font-weight: 700;
	margin: 0 0 20px;
	color: var(--nfs-text);
}

.nfs-back-link {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin-bottom: 16px;
	color: var(--nfs-text-muted);
	font-weight: 600;
	font-size: 14px;
	text-decoration: none;
}

.nfs-back-link:hover {
	color: var(--nfs-text);
}

.nfs-panel__subtitle {
	font-size: 17px;
	font-weight: 700;
	margin: 0;
	color: var(--nfs-text);
}

.nfs-card {
	background: var(--nfs-card);
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius);
	box-shadow: var(--nfs-shadow);
	padding: 24px;
}

/* ---------- Dashboard: stat cards ---------- */

.nfs-stats-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
	margin-bottom: 16px;
}

/* Ultima editie si „Continua de unde ai ramas", una langa alta pe ecrane late.
   Grid, nu flex: cele doua coloane raman egale indiferent cat continut are
   fiecare — cu flex, cardul cu mai mult text ar fi furat din latimea celuilalt.
   Cand una dintre sectiuni lipseste (client fara abonament), cea ramasa ocupa
   tot randul, fara reguli in plus. */
.nfs-dash-row {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
	gap: 16px;
	align-items: start;
	margin-bottom: 16px;
}

.nfs-stat-card {
	background: var(--nfs-card);
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius);
	box-shadow: var(--nfs-shadow);
	padding: 20px;
}

.nfs-stat-card__value {
	font-size: 30px;
	font-weight: 800;
	line-height: 1.1;
	margin-top: 4px;
}

.nfs-stat-card__label {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
}

.nfs-stat-card--subscription {
	background: #f4f6fb;
	position: relative;
}

.nfs-stat-card__info {
	position: absolute;
	top: 16px;
	right: 16px;
	width: 22px;
	height: 22px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--nfs-text-label);
	transition: color 0.15s ease;
}

.nfs-stat-card__info svg {
	width: 18px;
	height: 18px;
}

.nfs-stat-card__info:hover {
	color: var(--nfs-navy);
}

.nfs-stat-card--subscription .nfs-stat-card__value {
	font-size: 20px;
}

.nfs-stat-card__meta {
	margin-top: 4px;
	font-size: 13px;
	color: var(--nfs-text-muted);
}

.nfs-stat-card--subscription .nfs-progress {
	margin-top: 12px;
}

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

.nfs-progress {
	width: 100%;
	height: 8px;
	background: var(--nfs-border);
	border-radius: 999px;
	overflow: hidden;
	margin-top: 10px;
}

.nfs-progress__bar {
	height: 100%;
	background: var(--nfs-gold);
	border-radius: 999px;
}

/* ---------- Buttons & links ---------- */

/* !important pe proprietățile vizuale: temele/Elementor definesc adesea un
   stil global pentru <button> (accent-ul temei) care altfel câștigă în
   fața claselor noastre, indiferent de ordinea de încărcare a CSS-ului. */
button.nfs-btn,
a.nfs-btn {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	white-space: nowrap;
	padding: 14px 28px;
	border-radius: var(--nfs-radius-sm) !important;
	font-family: var(--nfs-font) !important;
	font-weight: 700 !important;
	font-size: 15px !important;
	line-height: 1.2;
	text-decoration: none !important;
	border: none;
	cursor: pointer;
	appearance: none;
	-webkit-appearance: none;
	outline: none;
	transition: transform 0.15s ease, background-color 0.15s ease;
}

.nfs-btn:focus,
.nfs-btn:focus-visible,
.nfs-btn:active {
	outline: none !important;
	box-shadow: 0 1px 2px rgba(3, 38, 87, 0.12) !important;
}

.nfs-btn:hover {
	transform: translateY(-2px);
}

button.nfs-btn--gold,
a.nfs-btn--gold {
	background: var(--nfs-gold) !important;
	color: var(--nfs-navy) !important;
	box-shadow: 0 1px 2px rgba(3, 38, 87, 0.12);
}

.nfs-btn--gold:hover {
	background: var(--nfs-gold-dark) !important;
	color: var(--nfs-navy) !important;
}

/* Status "deja cumpărat" pe cardul de shop — înlocuiește butonul de
   Cumpără, ca clientul logat să nu i se ceară să cumpere din nou același
   seminar; rămâne clickabil, dar vizual neutru (gri), nu ca un CTA activ. */
a.nfs-seminar-card__owned {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	white-space: nowrap;
	padding: 14px 28px;
	border-radius: var(--nfs-radius-sm) !important;
	font-family: var(--nfs-font) !important;
	font-weight: 700 !important;
	font-size: 15px !important;
	line-height: 1.2;
	text-decoration: none !important;
	background: var(--nfs-bg) !important;
	color: var(--nfs-text-muted) !important;
	border: 1px solid var(--nfs-border) !important;
}

.nfs-seminar-card__owned-icon {
	color: #6b9b6e;
	font-weight: 700;
}

/* Ascunde link-ul "Vezi coșul" pe care WooCommerce îl injectează automat
   lângă butonul de AJAX add-to-cart — pe cardurile din loop grid nu are
   sens (userul rămâne pe aceeași pagină, nu vede unde apare textul). */
.nfs-seminar-card__footer .added_to_cart {
	display: none !important;
}

.nfs-link {
	color: var(--nfs-text);
	font-weight: 600;
	font-size: 14px;
	text-decoration: none;
}

.nfs-link:hover {
	text-decoration: underline;
}

.nfs-empty {
	color: var(--nfs-text-muted);
	font-size: 14px;
	margin: 16px 0 0;
}

/* ---------- Continue watching ---------- */

.nfs-continue-watching__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
}

.nfs-continue-watching__list {
	margin-top: 18px;
	display: flex;
	flex-direction: column;
}

.nfs-continue-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	padding: 16px 0;
}

.nfs-continue-row + .nfs-continue-row {
	border-top: 1px solid var(--nfs-border);
}

.nfs-continue-row__thumb {
	position: relative;
	display: block;
	flex: 0 0 96px;
	width: 96px;
	aspect-ratio: 16 / 9;
	border-radius: var(--nfs-radius-sm);
	background: linear-gradient(135deg, var(--nfs-navy) 0%, var(--nfs-navy-light) 100%);
	overflow: hidden;
}

.nfs-continue-row__thumb.has-image {
	background-size: 130%;
	background-position: center;
	background-repeat: no-repeat;
}

.nfs-continue-row__thumb.has-image::after {
	content: "";
	position: absolute;
	inset: 0;
	background: rgba(3, 38, 87, 0.18);
}

.nfs-continue-row__play {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 30px;
	height: 30px;
	border-radius: 50%;
	background: var(--nfs-gold);
	z-index: 1;
}

.nfs-continue-row__play::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 55%;
	transform: translate(-50%, -50%);
	border-style: solid;
	border-width: 5px 0 5px 9px;
	border-color: transparent transparent transparent var(--nfs-navy);
}

.nfs-continue-row__info {
	flex: 1 1 auto;
	min-width: 0;
}

.nfs-continue-row__title {
	font-weight: 700;
	color: var(--nfs-text);
	margin-bottom: 4px;
}

.nfs-continue-row__status {
	font-size: 13px;
	color: var(--nfs-text-muted);
	margin-bottom: 8px;
}

.nfs-continue-row .nfs-progress {
	max-width: 320px;
	margin-top: 0;
}

/* ---------- Badges (status) ---------- */

.nfs-badge {
	display: inline-flex;
	align-items: center;
	padding: 3px 10px;
	border-radius: 999px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.03em;
	text-transform: uppercase;
}

.nfs-badge--success {
	background: #e7f7ee;
	color: #1c8a4d;
	border: 1px solid #bfe8d1;
}

.nfs-badge--warning {
	background: #fdf3df;
	color: #9a6b12;
	border: 1px solid #f3ddac;
}

.nfs-badge--danger {
	background: #fbe7e7;
	color: #b23a3a;
	border: 1px solid #f3caca;
}

.nfs-badge--muted {
	background: var(--nfs-bg);
	color: var(--nfs-text-muted);
	border: 1px solid var(--nfs-border);
}

/* ---------- Orders list ---------- */

.nfs-order-list {
	margin-top: 16px;
	display: flex;
	flex-direction: column;
}

.nfs-order-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	padding: 18px 0;
}

.nfs-order-row + .nfs-order-row {
	border-top: 1px solid var(--nfs-border);
}

.nfs-order-row__main {
	min-width: 0;
}

.nfs-order-row__head {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 6px;
}

.nfs-order-row__number {
	font-weight: 700;
	color: var(--nfs-text);
}

.nfs-order-row__title {
	font-size: 14px;
	color: var(--nfs-text);
	margin-bottom: 4px;
}

.nfs-order-row__date {
	font-size: 13px;
	color: var(--nfs-text-muted);
}

.nfs-order-row__side {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	gap: 18px;
}

.nfs-order-row__total {
	font-weight: 700;
	font-size: 17px;
	color: var(--nfs-text);
	white-space: nowrap;
}

/* ---------- Order row menu (⋮) ---------- */

.nfs-order-menu {
	position: relative;
}

/* 'button.' în față: reset.css al temei se încarcă după noi și declară
   display pe [type=button], care e la aceeași specificitate ca o clasă. */
button.nfs-order-menu__trigger {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	padding: 0;
	background: #fff !important;
	color: var(--nfs-text-muted) !important;
	border: 1px solid var(--nfs-border) !important;
	border-radius: var(--nfs-radius-sm) !important;
	cursor: pointer;
	outline: none;
	transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.nfs-order-menu__trigger:hover,
.nfs-order-menu.is-open .nfs-order-menu__trigger {
	background: var(--nfs-bg) !important;
	border-color: var(--nfs-navy) !important;
	color: var(--nfs-navy) !important;
}

.nfs-order-menu__panel {
	position: absolute;
	top: calc(100% + 6px);
	right: 0;
	min-width: 210px;
	background: #fff;
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius-sm);
	box-shadow: 0 10px 28px rgba(3, 38, 87, 0.16);
	padding: 6px;
	z-index: 20;
	display: none;
}

.nfs-order-menu.is-open .nfs-order-menu__panel {
	display: block;
}

.nfs-order-menu__item {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 9px 10px;
	border-radius: 8px;
	font-size: 14px;
	font-weight: 600;
	color: var(--nfs-text) !important;
	text-decoration: none !important;
}

.nfs-order-menu__item:hover {
	background: var(--nfs-bg);
}

.nfs-order-menu__item svg {
	width: 16px;
	height: 16px;
	flex: 0 0 auto;
	color: var(--nfs-text-muted);
}

/* ---------- Downloads list ---------- */

.nfs-download-list {
	margin-top: 16px;
	display: flex;
	flex-direction: column;
}

.nfs-download-row {
	display: flex;
	align-items: center;
	gap: 16px;
	padding: 16px 0;
}

.nfs-download-row + .nfs-download-row {
	border-top: 1px solid var(--nfs-border);
}

.nfs-download-row__icon {
	flex: 0 0 auto;
	width: 40px;
	height: 40px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--nfs-bg);
	border: 1px solid var(--nfs-border);
	border-radius: 8px;
	font-size: 10px;
	font-weight: 800;
	letter-spacing: 0.02em;
	color: var(--nfs-text-muted);
}

.nfs-download-row__info {
	flex: 1 1 auto;
	min-width: 0;
}

.nfs-download-row__name {
	font-weight: 700;
	color: var(--nfs-text);
	margin-bottom: 4px;
}

.nfs-download-row__meta {
	font-size: 13px;
	color: var(--nfs-text-muted);
}

/* ---------- Notice bar ---------- */

.nfs-notice {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	background: #eef1f8;
	border-radius: var(--nfs-radius);
	padding: 16px 20px;
	margin-bottom: 16px;
	font-size: 14px;
	color: var(--nfs-text);
}

/* ---------- Notificări WooCommerce (Datele mele, Comenzile mele etc.) ----------
   Randate de WooCommerce pe 'woocommerce_account_content' (prioritate 5), deci
   CHIAR ÎN interiorul .nfs-account__content, ca prim element — nu în afara
   blocului nostru, cum scria aici înainte. Markup-ul nu-l putem schimba, doar
   restilizat. */

.woocommerce-notices-wrapper {
	margin: 0 0 20px;
}

/* Lățimea completă a coloanei, ca notificarea să se alinieze cu tab-urile și
   cardurile. Fără asta rămâne mai îngustă și arată ca o bucată dintr-o altă
   pagină: stilurile WooCommerce dau mesajului padding-left de 3.5em pentru
   pictograma lor, iar tema adaugă un max-width pe elementele de alertă. */
.nfs-account__content > .woocommerce-notices-wrapper {
	box-sizing: border-box;
	width: 100% !important;
	max-width: none !important;
	/* Fara spatiu propriu in afara de cel de jos: distanta pana la carduri o
	   da aceasta regula, nu marginile mostenite de la WooCommerce. */
	margin: 0 0 30px !important;
	padding: 0 !important;
}

.nfs-account__content > .woocommerce-notices-wrapper > .woocommerce-message,
.nfs-account__content > .woocommerce-notices-wrapper > .woocommerce-error,
.nfs-account__content > .woocommerce-notices-wrapper > .woocommerce-info {
	box-sizing: border-box;
	width: 100% !important;
	max-width: none !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

/* Pictograma lor (un pseudo-element pozitionat in padding-ul de 3.5em) ramane
   suspendata cand scoatem acel padding. */
.nfs-account__content > .woocommerce-notices-wrapper > .woocommerce-message::before,
.nfs-account__content > .woocommerce-notices-wrapper > .woocommerce-error::before,
.nfs-account__content > .woocommerce-notices-wrapper > .woocommerce-info::before {
	display: none !important;
	content: none !important;
}

.woocommerce-notices-wrapper:empty {
	display: none;
	margin: 0;
}

.woocommerce-notices-wrapper ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.woocommerce-notices-wrapper li {
	list-style: none !important;
	margin: 0 !important;
	padding: 0 !important;
}

.woocommerce-notices-wrapper .woocommerce-message,
.woocommerce-notices-wrapper .woocommerce-error,
.woocommerce-notices-wrapper .woocommerce-info {
	box-sizing: border-box;
	list-style: none !important;
	margin: 0 0 10px !important;
	padding: 13px 16px !important;
	border-radius: var(--nfs-radius-sm) !important;
	border-top: none !important;
	border-left: none !important;
	border-right: none !important;
	box-shadow: none !important;
	font: 500 14px var(--nfs-font) !important;
	line-height: 1.55;
}

.woocommerce-notices-wrapper .woocommerce-message:last-child,
.woocommerce-notices-wrapper .woocommerce-error:last-child,
.woocommerce-notices-wrapper .woocommerce-info:last-child {
	margin-bottom: 0 !important;
}

.woocommerce-notices-wrapper .woocommerce-message {
	background: #e7f6ee !important;
	color: #0d6b3f !important;
	border: 1px solid #b6e3ca !important;
}

.woocommerce-notices-wrapper .woocommerce-error {
	background: #fbe7e7 !important;
	color: #8a2a26 !important;
	border: 1px solid #f3caca !important;
}

.woocommerce-notices-wrapper .woocommerce-info {
	background: #eaf1fb !important;
	color: var(--nfs-navy-light) !important;
	border: 1px solid #c3d8f2 !important;
}

.woocommerce-notices-wrapper a {
	color: inherit !important;
	font-weight: 700;
	text-decoration: underline;
}

.woocommerce-notices-wrapper .woocommerce-message::before,
.woocommerce-notices-wrapper .woocommerce-error::before,
.woocommerce-notices-wrapper .woocommerce-info::before,
.woocommerce-notices-wrapper li::before,
.woocommerce-notices-wrapper li::after {
	display: none !important;
	content: none !important;
}

/* ---------- Seminar grid ---------- */

.nfs-seminar-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 20px;
}

.nfs-seminar-card {
	background: var(--nfs-card);
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius);
	box-shadow: var(--nfs-shadow);
	overflow: hidden;
	display: flex;
	flex-direction: column;
}

.nfs-seminar-card__thumb {
	position: relative;
	display: block;
	aspect-ratio: 16 / 9;
	background: linear-gradient(135deg, var(--nfs-navy) 0%, var(--nfs-navy-light) 100%);
	overflow: hidden;
}

.nfs-seminar-card__thumb::after {
	content: "";
	position: absolute;
	top: -30%;
	right: -20%;
	width: 70%;
	height: 140%;
	background: rgba(255, 255, 255, 0.05);
	border-radius: 50%;
}

.nfs-seminar-card__thumb.has-image {
	/* Vimeo trimite thumbnail-ul cu "pad" (bare negre sus/jos dacă video-ul
	   sursă nu e exact 16:9) — cover nu ajută când raportul e deja identic
	   cu al containerului; mărim explicit peste 100% ca să tăiem barele. */
	background-size: 130%;
	background-position: center;
	background-repeat: no-repeat;
}

.nfs-seminar-card__thumb.has-image::after {
	background: rgba(3, 38, 87, 0.18);
	border-radius: 0;
	inset: 0;
	top: 0;
	right: 0;
	width: 100%;
	height: 100%;
}

.nfs-seminar-card__duration {
	position: absolute;
	bottom: 10px;
	right: 10px;
	z-index: 1;
	background: rgba(3, 38, 87, 0.85);
	color: #fff;
	font-size: 11px;
	font-weight: 700;
	padding: 3px 7px;
	border-radius: 4px;
}

.nfs-seminar-card__parts {
	font-size: 12.5px;
	font-weight: 600;
	color: var(--nfs-text-label);
	margin-bottom: 4px;
}

.nfs-seminar-card__price {
	font: 800 18px var(--nfs-font-heading);
	color: var(--nfs-text);
	margin: 4px 0 10px;
}

.nfs-seminar-card__price del {
	font-size: 14px;
	font-weight: 500;
	color: var(--nfs-text-label);
	opacity: 0.7;
	margin-right: 6px;
}

.nfs-seminar-card__price ins {
	text-decoration: none;
}

.nfs-seminar-card__badge {
	position: absolute;
	top: 12px;
	left: 12px;
	z-index: 1;
	background: rgba(255, 255, 255, 0.15);
	color: #fff;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.03em;
	text-transform: uppercase;
	padding: 4px 10px;
	border-radius: 999px;
}

.nfs-seminar-card__play {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 48px;
	height: 48px;
	border-radius: 50%;
	background: var(--nfs-gold);
	z-index: 1;
}

.nfs-seminar-card__play::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 55%;
	transform: translate(-50%, -50%);
	border-style: solid;
	border-width: 8px 0 8px 14px;
	border-color: transparent transparent transparent var(--nfs-navy);
}

.nfs-seminar-card__play {
	transition: transform 0.18s ease, background-color 0.18s ease;
}

.nfs-seminar-card__thumb:hover .nfs-seminar-card__play {
	transform: translate(-50%, -50%) scale(1.1);
	background: var(--nfs-gold-dark);
}

.nfs-seminar-card__body {
	padding: 18px;
	flex: 1 1 auto;
	display: flex;
	flex-direction: column;
}

.nfs-seminar-card__title {
	display: block;
	font-weight: 600;
	color: var(--nfs-text) !important;
	text-decoration: none !important;
	margin-bottom: 10px;
}

.nfs-seminar-card__title:hover {
	color: var(--nfs-navy-light) !important;
	text-decoration: underline !important;
}

.nfs-seminar-card__status {
	font-size: 13px;
	color: var(--nfs-text-muted);
	margin-bottom: 10px;
}

/* Grupează tot ce e sub titlu (părți, status, progres, buton) și îl împinge
   spre baza cardului — diferențele de înălțime dintre titluri (1 vs 2-3
   linii) se absorb doar în spațiul liber de deasupra acestui grup, nu în
   poziția butonului, care rămâne aliniat identic pe toate cardurile. */
.nfs-seminar-card__meta-group {
	margin-top: auto;
}

.nfs-seminar-card__footer {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 10px;
	margin-top: 16px;
}

.nfs-seminar-card__footer .nfs-btn--block {
	align-self: stretch;
}

/* ---------- Seminar player (pagina de produs) ---------- */

.nfs-seminar-player {
	background: var(--nfs-card);
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius);
	overflow: hidden;
}

.nfs-seminar-player__frame {
	position: relative;
	width: 100%;
	aspect-ratio: 16 / 9;
	border-radius: 10px 10px 0 0;
	overflow: hidden;
	background: var(--nfs-navy);
}

.nfs-seminar-player__frame iframe {
	/* La fel ca la thumbnail-uri: dacă video-ul sursă nu e exact 16:9,
	   Vimeo adaugă bare negre sus/jos în interiorul playerului. Mărim ușor
	   iframe-ul (centrat, cu overflow:hidden pe container) ca să le tăiem —
	   zoom moderat, ca bara de control Vimeo să nu iasă din cadru. */
	position: absolute;
	top: 50%;
	left: 50%;
	width: 122%;
	height: 122%;
	transform: translate(-50%, -50%);
	border: 0;
}

.nfs-seminar-player__meta {
	padding: 20px 24px;
}

.nfs-seminar-player__progress {
	cursor: pointer;
	height: 8px;
}

.nfs-seminar-player__meta-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	flex-wrap: wrap;
	margin-top: 12px;
}

.nfs-seminar-player__time {
	font-size: 13.5px;
	font-weight: 600;
	color: var(--nfs-text-muted);
}

.nfs-seminar-player__percent {
	font-size: 13.5px;
	font-weight: 700;
	color: var(--nfs-text);
}

/* ---------- Părțile seminarului (playlist, seminarii cu mai multe părți) ---------- */

.nfs-seminar-parts__head {
	padding: 24px 26px 20px;
	border-bottom: 1px solid var(--nfs-border);
}

.nfs-seminar-parts__meta {
	font: 600 12.5px var(--nfs-font);
	color: var(--nfs-text-label);
	margin: 6px 0 0;
}

.nfs-seminar-parts__list {
	display: flex;
	flex-direction: column;
	/* ~6 rânduri vizibile (rând ≈ 92px: padding 16px sus/jos + thumb 58px +
	   border), restul intră la scroll — util pentru seminarii cu multe părți. */
	max-height: 552px;
	overflow-y: auto;
	/* Scroll-ul se oprește la capătul listei, nu continuă cu pagina. */
	overscroll-behavior: contain;
	scrollbar-width: thin;
	scrollbar-color: var(--nfs-border) transparent;
}

.nfs-seminar-parts__list::-webkit-scrollbar {
	width: 7px;
}

.nfs-seminar-parts__list::-webkit-scrollbar-track {
	background: transparent;
}

.nfs-seminar-parts__list::-webkit-scrollbar-thumb {
	background-color: var(--nfs-border);
	border-radius: 10px;
}

.nfs-seminar-parts__list::-webkit-scrollbar-thumb:hover {
	background-color: var(--nfs-gold);
}

button.nfs-seminar-parts__item {
	display: flex;
	align-items: center;
	gap: 14px;
	width: 100%;
	box-sizing: border-box;
	padding: 16px 22px;
	border: none !important;
	border-bottom: 1px solid var(--nfs-border) !important;
	border-left: 3px solid transparent !important;
	border-radius: 0 !important;
	background: #fff !important;
	color: inherit !important;
	cursor: pointer;
	outline: none;
	box-shadow: none !important;
	text-align: left;
	font-family: var(--nfs-font) !important;
	transition: background-color 0.15s ease, border-color 0.15s ease;
}

button.nfs-seminar-parts__item:last-child {
	border-bottom: none !important;
}

button.nfs-seminar-parts__item.is-active {
	background: var(--nfs-bg) !important;
	border-left-color: var(--nfs-gold) !important;
}

.nfs-seminar-parts__thumb {
	position: relative;
	width: 96px;
	height: 58px;
	border-radius: var(--nfs-radius-sm);
	background:
		radial-gradient( circle at 88% -10%, rgba(255, 206, 0, 0.18), transparent 60% ),
		var(--nfs-navy);
	overflow: hidden;
	flex-shrink: 0;
	display: flex;
	align-items: center;
	justify-content: center;
}

.nfs-seminar-parts__thumb.has-image {
	background-size: 130%;
	background-position: center;
	background-repeat: no-repeat;
}

.nfs-seminar-parts__thumb.has-image .nfs-seminar-parts__play {
	background: rgba(3, 38, 87, 0.55);
}

.nfs-seminar-parts__thumb.has-image .nfs-seminar-parts__play-icon {
	border-left-color: #fff;
}

.nfs-seminar-parts__play {
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.85);
	display: flex;
	align-items: center;
	justify-content: center;
	transition: transform 0.18s ease, background-color 0.18s ease;
}

.nfs-seminar-parts__item:hover .nfs-seminar-parts__play {
	transform: scale(1.15);
}

.nfs-seminar-parts__item.is-active .nfs-seminar-parts__play {
	background: var(--nfs-gold);
}

.nfs-seminar-parts__play-icon {
	width: 0;
	height: 0;
	border-left: 9px solid var(--nfs-navy);
	border-top: 6px solid transparent;
	border-bottom: 6px solid transparent;
	margin-left: 3px;
}

.nfs-seminar-parts__duration {
	position: absolute;
	bottom: 5px;
	right: 6px;
	background: rgba(3, 38, 87, 0.85);
	color: #fff;
	font: 700 9.5px var(--nfs-font);
	padding: 2px 5px;
	border-radius: 3px;
}

.nfs-seminar-parts__info {
	flex: 1;
	min-width: 0;
}

.nfs-seminar-parts__eyebrow {
	display: block;
	font: 700 11px var(--nfs-font);
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
}

.nfs-seminar-parts__item.is-active .nfs-seminar-parts__eyebrow {
	color: var(--nfs-navy-light);
}

.nfs-seminar-parts__item.is-active .nfs-seminar-parts__eyebrow::after {
	content: " · se redă";
}

.nfs-seminar-parts__name {
	display: block;
	font: 700 14px var(--nfs-font-heading);
	color: var(--nfs-text);
	line-height: 1.35;
	margin-top: 5px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.nfs-seminar-parts__bar {
	display: block;
	height: 4px;
	border-radius: 2px;
	background: #e9edf4;
	margin-top: 9px;
	overflow: hidden;
}

.nfs-seminar-parts__bar-fill {
	display: block;
	height: 100%;
	background: var(--nfs-gold);
}

/* ---------- Pagina de produs, înainte de achiziție (lacăt în loc de preview) ---------- */

.nfs-seminar-player__frame--locked {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 14px;
	background-size: cover;
	background-position: center;
}

.nfs-seminar-player__frame--locked.has-image {
	background-size: 130%;
}

.nfs-seminar-player__frame--locked::before {
	content: "";
	position: absolute;
	inset: 0;
	background: rgba(3, 38, 87, 0.82);
}

.nfs-seminar-lock {
	position: relative;
	z-index: 1;
	width: 60px;
	height: 60px;
	border-radius: 50%;
	background: var(--nfs-gold);
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}

.nfs-seminar-player__locked-label {
	position: relative;
	z-index: 1;
	font: 700 13px var(--nfs-font);
	color: #fff;
	text-align: center;
	padding: 0 20px;
}

.nfs-seminar-parts__item.is-locked {
	cursor: default;
}

.nfs-seminar-parts__item.is-locked:hover .nfs-seminar-parts__play,
.nfs-seminar-parts__item.is-locked:hover .nfs-seminar-parts__cta {
	transform: none;
}

.nfs-seminar-parts__play--lock {
	color: var(--nfs-navy);
}

.nfs-seminar-parts__thumb.has-image .nfs-seminar-parts__play--lock {
	color: #fff;
}

.nfs-seminar-parts__cta--locked {
	background: var(--nfs-bg) !important;
	color: var(--nfs-text-muted) !important;
	border: 1px solid var(--nfs-border);
}

/* ---------- Casetă de preț (pagina de produs, sidebar) ---------- */

.nfs-buy-price {
	display: flex;
	align-items: baseline;
	gap: 10px;
	flex-wrap: wrap;
	font: 800 34px var(--nfs-font-heading);
	color: var(--nfs-text);
}

/* Suma mosteneste tipografia cutiei, ca pe pagina de produs a unui ghid:
   altfel wc_price() isi aduce propriul font si suma apare subtire langa
   mentiunile de TVA. */
.nfs-buy-price .woocommerce-Price-amount,
.nfs-buy-price .woocommerce-Price-amount bdi {
	font: inherit;
	letter-spacing: inherit;
	color: inherit;
}

/* Mentiunile de TVA raman mici si discrete, nu la 34px. */
.nfs-buy-price .nfs-price__vat {
	font: 700 15px var(--nfs-font);
	color: var(--nfs-text-label);
}

.nfs-buy-price .nfs-price__gross {
	font: 500 14px var(--nfs-font);
	color: var(--nfs-text-muted);
}

.nfs-buy-price del {
	font-size: 16px;
	font-weight: 500;
	color: var(--nfs-text-label);
	opacity: 0.7;
}

.nfs-buy-price ins {
	text-decoration: none;
}

.nfs-buy-note {
	font: 600 12.5px var(--nfs-font);
	color: var(--nfs-text-label);
	margin: 8px 0 0;
}

.nfs-seminar-parts__item.is-completed .nfs-seminar-parts__bar-fill {
	background: #0d6b3f;
}

.nfs-seminar-parts__cta {
	flex-shrink: 0;
	border-radius: var(--nfs-radius-sm);
	padding: 9px 14px;
	font: 700 12px var(--nfs-font);
	white-space: nowrap;
	background: var(--nfs-gold) !important;
	color: var(--nfs-navy) !important;
	display: inline-block;
	transition: transform 0.15s ease;
}

.nfs-seminar-parts__item:hover .nfs-seminar-parts__cta {
	transform: translateY(-2px);
}

.nfs-seminar-parts__item.is-active .nfs-seminar-parts__cta {
	background: var(--nfs-navy) !important;
	color: #fff !important;
}

.nfs-seminar-parts__cta-playing,
.nfs-seminar-parts__cta-review,
.nfs-seminar-parts__cta-watch {
	display: none;
}

.nfs-seminar-parts__item:not(.is-active):not(.is-completed) .nfs-seminar-parts__cta-watch {
	display: inline;
}

.nfs-seminar-parts__item.is-completed:not(.is-active) .nfs-seminar-parts__cta-review {
	display: inline;
}

.nfs-seminar-parts__item.is-active .nfs-seminar-parts__cta-playing {
	display: inline;
}

.nfs-seminar-player__materials {
	margin-top: 14px;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	font-size: 14px;
}

.nfs-seminar-locked {
	background: var(--nfs-bg);
	border-radius: var(--nfs-radius-sm);
	padding: 16px;
	color: var(--nfs-text-muted);
}

/* ---------- Notices ---------- */

.nfs-account .woocommerce-message,
.nfs-account .woocommerce-error,
.nfs-account .woocommerce-info {
	list-style: none;
	background: #e6f4ea;
	color: #1e7a3d;
	border-radius: var(--nfs-radius-sm);
	padding: 14px 18px;
	margin: 0 0 16px;
	font-size: 14px;
}

.nfs-account .woocommerce-error {
	background: #fbe7e7;
	color: #b23a3a;
}

/* ---------- Account details: cards & fields ---------- */

.nfs-panel--account-details .nfs-card + .nfs-card {
	margin-top: 20px;
}

.nfs-panel--subscriptions .nfs-card + .nfs-card {
	margin-top: 28px;
}

.nfs-card__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 18px;
}

.nfs-edit-card__toggle {
	background: none !important;
	border: none !important;
	padding: 0 !important;
	margin: 0;
	cursor: pointer;
	font: inherit;
	font-weight: 600 !important;
	color: var(--nfs-text) !important;
	text-decoration: none !important;
	box-shadow: none !important;
	outline: none;
}

.nfs-edit-card__toggle:hover {
	color: var(--nfs-navy) !important;
	text-decoration: underline !important;
}

.nfs-edit-card__actions {
	margin-top: 18px;
	display: none;
	align-items: center;
	gap: 12px;
}

.nfs-edit-card.is-editing .nfs-edit-card__actions {
	display: flex;
}

.nfs-field-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
}

.nfs-field--wide {
	grid-column: 1 / -1;
}

.nfs-field label {
	display: block;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
	margin-bottom: 6px;
}

.nfs-field input,
.nfs-field select {
	width: 100%;
	padding: 11px 14px;
	background: var(--nfs-bg) !important;
	border: 1px solid transparent !important;
	border-radius: var(--nfs-radius-sm) !important;
	font-size: 14px !important;
	color: var(--nfs-text) !important;
	font-family: inherit !important;
	box-shadow: none !important;
}

.nfs-field input:read-only,
.nfs-field select:disabled {
	color: var(--nfs-text) !important;
	cursor: default;
}

.nfs-edit-card.is-editing .nfs-field input,
.nfs-edit-card.is-editing .nfs-field select {
	background: #fff !important;
	border-color: var(--nfs-border) !important;
}

.nfs-field input:focus,
.nfs-field select:focus {
	outline: none !important;
	border-color: var(--nfs-navy) !important;
	box-shadow: 0 0 0 3px rgba(3, 38, 87, 0.12) !important;
}

/* ---------- Câmpuri de adresă WooCommerce (billing_*), randate cu
   woocommerce_form_field() ca să respecte exact comportamentul/JS-ul
   nativ (Țară -> Județ/Stat dinamic) — restilizate ca .nfs-field. ---------- */

.nfs-field-grid--wc {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
	margin-top: 16px;
}

.nfs-field-grid--wc .form-row {
	margin: 0;
	padding: 0;
}

.nfs-field-grid--wc .form-row.nfs-full {
	grid-column: 1 / -1;
}

.nfs-field-grid--wc .form-row[hidden] {
	display: none !important;
}

/* Vindem doar în România — Țara rămâne în formular (se trimite la submit),
   dar nu se mai afișează. */
.nfs-field-grid--wc .form-row.nfs-hidden-field {
	display: none !important;
}

/* Dacă tema/alt plugin (ex: select2 pe #billing_state) înfrumusețează
   selectul nativ cu un widget separat, îl aducem la același aspect ca
   restul câmpurilor din formular. */
.nfs-field-grid--wc .select2-container {
	width: 100% !important;
}

.nfs-field-grid--wc .select2-selection--single {
	display: flex !important;
	align-items: center;
	height: 44px !important;
	min-height: 44px !important;
	padding: 0 14px !important;
	box-sizing: border-box !important;
	background: var(--nfs-bg) !important;
	border: 1px solid transparent !important;
	border-radius: var(--nfs-radius-sm) !important;
	box-shadow: none !important;
}

.nfs-field-grid--wc .select2-selection__rendered {
	padding: 0 !important;
	line-height: normal !important;
	font-size: 14px !important;
	color: var(--nfs-text) !important;
	font-family: inherit !important;
}

.nfs-field-grid--wc .select2-selection__arrow {
	height: 100% !important;
	top: 0 !important;
	right: 8px !important;
}

.nfs-edit-card.is-editing .nfs-field-grid--wc .select2-selection--single {
	background: #fff !important;
	border-color: var(--nfs-border) !important;
}

.nfs-field-grid--wc .form-row label {
	display: block;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
	margin-bottom: 6px;
}

.nfs-field-grid--wc .form-row label .required {
	color: var(--nfs-gold-dark, #b8860b);
	text-decoration: none;
}

.nfs-field-grid--wc .form-row input.input-text,
.nfs-field-grid--wc .form-row select {
	width: 100%;
	min-height: 44px;
	padding: 11px 14px;
	box-sizing: border-box;
	background: var(--nfs-bg) !important;
	border: 1px solid transparent !important;
	border-radius: var(--nfs-radius-sm) !important;
	font-size: 14px !important;
	color: var(--nfs-text) !important;
	font-family: inherit !important;
	box-shadow: none !important;
	appearance: none;
	-webkit-appearance: none;
}

.nfs-field-grid--wc .form-row input.input-text:read-only,
.nfs-field-grid--wc .form-row select:disabled {
	color: var(--nfs-text) !important;
	cursor: default;
}

.nfs-edit-card.is-editing .nfs-field-grid--wc .form-row input.input-text,
.nfs-edit-card.is-editing .nfs-field-grid--wc .form-row select {
	background: #fff !important;
	border-color: var(--nfs-border) !important;
}

.nfs-field-grid--wc .form-row input.input-text:focus,
.nfs-field-grid--wc .form-row select:focus {
	outline: none !important;
	border-color: var(--nfs-navy) !important;
	box-shadow: 0 0 0 3px rgba(3, 38, 87, 0.12) !important;
}

.nfs-field-grid--wc .form-row .woocommerce-input-wrapper {
	display: block;
}

.nfs-field-grid--wc .form-row .description,
.nfs-field-grid--wc .form-row abbr {
	text-decoration: none;
}

button.nfs-btn--outline,
a.nfs-btn--outline {
	background: transparent !important;
	color: var(--nfs-text) !important;
	border: 1px solid rgba(3, 38, 87, 0.25) !important;
}

.nfs-btn--outline:hover {
	background: var(--nfs-bg) !important;
}

/* Variantă albă cu bordură + text navy — folosită pentru acțiuni distincte
   de CTA-ul principal auriu, dar mai apăsate decât outline-ul standard
   (ex: "Prelungește" pe cardul planului curent). */
button.nfs-btn--navy-outline,
a.nfs-btn--navy-outline {
	background: #fff !important;
	color: var(--nfs-navy) !important;
	border: 1.5px solid var(--nfs-navy) !important;
}

.nfs-btn--navy-outline:hover {
	background: var(--nfs-navy) !important;
	color: #fff !important;
}

/* ---------- Security & newsletter rows ---------- */

.nfs-security-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 16px 0;
}

.nfs-security-row + .nfs-security-row {
	border-top: 1px solid var(--nfs-border);
}

.nfs-security-row__title {
	font-weight: 700;
	color: var(--nfs-text);
	margin-bottom: 4px;
}

.nfs-security-row__meta {
	font-size: 13px;
	color: var(--nfs-text-muted);
}

.nfs-password-form {
	padding-bottom: 16px;
	border-bottom: 1px solid var(--nfs-border);
}

.nfs-password-form .nfs-field-grid {
	grid-template-columns: repeat(2, 1fr);
	margin-top: 12px;
}

.nfs-password-form .nfs-field input {
	background: #fff !important;
	border-color: var(--nfs-border) !important;
}

/* Toggle (switch auriu) */

.nfs-toggle {
	position: relative;
	display: inline-block;
	width: 44px;
	height: 26px;
	flex: 0 0 auto;
}

.nfs-toggle input {
	position: absolute;
	opacity: 0;
	width: 100%;
	height: 100%;
	margin: 0;
	cursor: pointer;
}

.nfs-toggle__track {
	position: absolute;
	inset: 0;
	background: var(--nfs-border);
	border-radius: 999px;
	transition: background-color 0.15s ease;
}

.nfs-toggle__track::before {
	content: "";
	position: absolute;
	top: 3px;
	left: 3px;
	width: 20px;
	height: 20px;
	background: #fff;
	border-radius: 50%;
	transition: transform 0.15s ease;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
}

.nfs-toggle input:checked + .nfs-toggle__track {
	background: var(--nfs-gold);
}

.nfs-toggle input:checked + .nfs-toggle__track::before {
	transform: translateX(18px);
}

.nfs-seminar-description {
	font-size: 15px;
	line-height: 1.7;
	color: var(--nfs-text);
}

/* ---------- Disclaimer sub video ---------- */

.nfs-seminar-disclaimer {
	margin-top: 16px;
	padding: 16px 18px;
	background: #fff8e6;
	border: 1px solid #f3dfa0;
	border-radius: var(--nfs-radius-sm);
	font-size: 14px;
	line-height: 1.6;
	color: var(--nfs-text);
}

.nfs-seminar-disclaimer strong {
	display: block;
	margin-bottom: 6px;
	color: #8a5a00;
}

.nfs-seminar-disclaimer p {
	margin: 0 0 6px;
}

.nfs-seminar-disclaimer p:last-child {
	margin-bottom: 0;
}

/* ---------- Fișier descărcabil (bloc + buton dedesubt) ---------- */

.nfs-file-box {
	display: flex;
	align-items: center;
	gap: 16px;
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius-sm);
	padding: 18px 20px;
}

.nfs-file-box + .nfs-btn--block {
	margin-top: 16px;
}

.nfs-btn--block + .nfs-file-box {
	margin-top: 20px;
}

.nfs-file-box__icon {
	flex: 0 0 auto;
	width: 42px;
	height: 54px;
	border-radius: 6px;
	border: 1px solid var(--nfs-border);
	background: var(--nfs-bg);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 8.5px;
	font-weight: 800;
	letter-spacing: 0.1em;
	color: var(--nfs-text-label);
}

.nfs-file-box__info {
	min-width: 0;
}

.nfs-file-box__name {
	font-weight: 700;
	color: var(--nfs-text);
}

.nfs-file-box__meta {
	font-size: 12.5px;
	color: var(--nfs-text-label);
	margin-top: 5px;
}

.nfs-btn--block {
	width: 100% !important;
}

/* ---------- Breadcrumb & page header (Vizionare Seminar) ---------- */

.nfs-breadcrumb {
	display: flex;
	align-items: center;
	gap: 10px;
	font-size: 13px;
	font-weight: 600;
	color: var(--nfs-text-label);
	margin-bottom: 22px;
}

.nfs-breadcrumb a {
	color: var(--nfs-text-label);
	text-decoration: none;
}

.nfs-breadcrumb a:hover {
	color: var(--nfs-text);
}

.nfs-breadcrumb__current {
	color: var(--nfs-text);
}

.nfs-watch-header {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 30px;
	flex-wrap: wrap;
	margin-bottom: 28px;
}

.nfs-watch-header__main {
	min-width: 0;
}

.nfs-watch-header__title {
	font-size: 30px;
	font-weight: 800;
	line-height: 1.2;
	letter-spacing: -0.4px;
	color: var(--nfs-text);
	margin: 16px 0 0;
	max-width: 760px;
}

.nfs-watch-header__subtitle {
	font-size: 15px;
	color: var(--nfs-text-muted);
	margin: 10px 0 0;
}

.nfs-watch-header__instructor {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 14px 0 0;
}

.nfs-watch-header__instructor-photo {
	width: 44px;
	height: 44px;
	border-radius: 50%;
	overflow: hidden;
	flex-shrink: 0;
	background: var(--nfs-navy);
}

.nfs-watch-header__instructor-photo img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.nfs-watch-header__instructor-info {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.nfs-watch-header__instructor-name {
	font-size: 16px;
	font-weight: 700;
	color: var(--nfs-text);
}

/* Pill / tag (Claude Design tokens) */

.nfs-pill {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background: var(--nfs-bg);
	color: var(--nfs-text);
	border: 1px solid rgba(3, 38, 87, 0.1);
	border-radius: 999px;
	padding: 7px 15px;
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.nfs-pill--gold {
	background: rgba(255, 255, 255, 0.08);
	border-color: rgba(255, 255, 255, 0.2);
	color: var(--nfs-gold);
}

/* ---------- Abonamentele mele ---------- */

.nfs-card--navy {
	position: relative;
	background: var(--nfs-navy);
	overflow: hidden;
}

.nfs-card--navy__decor {
	position: absolute;
	width: 300px;
	height: 300px;
	border-radius: 50%;
	background: rgba(255, 206, 0, 0.12);
	right: -110px;
	top: -130px;
}

.nfs-card--navy__row {
	position: relative;
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 24px;
	flex-wrap: wrap;
}

.nfs-card--navy__title {
	font-size: 26px;
	color: #fff;
	margin-top: 16px;
}

.nfs-card--navy__meta {
	font: 500 14.5px var(--nfs-font);
	color: #b9c8dd;
	margin: 10px 0 0;
}

.nfs-card--navy__progress {
	position: relative;
	margin-top: 28px;
	max-width: 520px;
}

.nfs-card--navy__progress-row {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
}

.nfs-card--navy__days {
	font: 800 30px var(--nfs-font-heading);
	color: var(--nfs-gold);
}

.nfs-card--navy__days-total {
	font: 600 13px var(--nfs-font);
	color: #b9c8dd;
}

.nfs-progress--light {
	background: rgba(255, 255, 255, 0.16);
	margin-top: 12px;
}

.nfs-plans-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
	gap: 20px;
}

.nfs-plan-card {
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius-sm);
	padding: 22px;
	display: flex;
	flex-direction: column;
}

a.nfs-plan-card:hover {
	border-color: var(--nfs-navy);
	transform: translateY(-2px);
}

.nfs-plan-card.is-current {
	background: var(--nfs-bg);
	border-color: var(--nfs-gold);
}

.nfs-plan-card__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
}

.nfs-plan-card__name {
	font: 700 16px var(--nfs-font-heading);
	color: var(--nfs-text);
}

.nfs-plan-card__price {
	font: 800 26px var(--nfs-font-heading);
	color: var(--nfs-text);
	margin-top: 14px;
}

.nfs-plan-card__period {
	display: block;
	font: 600 12.5px var(--nfs-font);
	color: var(--nfs-text-label);
	margin-top: 4px;
}

.nfs-plan-card__cta {
	margin-top: auto;
	padding-top: 18px;
}

.nfs-tag {
	display: inline-flex;
	align-items: center;
	background: var(--nfs-gold);
	color: var(--nfs-navy);
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	padding: 5px 10px;
	border-radius: 4px;
}

.nfs-tag--soft {
	background: #eaf1fb;
	color: var(--nfs-navy-light);
	border: 1px solid #c3d8f2;
}

/* ---------- Watch layout (2 coloane: conținut + sidebar) ---------- */

.nfs-watch-layout {
	display: flex;
	flex-wrap: wrap;
	gap: 28px;
	align-items: flex-start;
}

.nfs-watch-layout__main {
	flex: 7 1 520px;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 28px;
}

.nfs-watch-layout__side {
	flex: 3 1 280px;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 28px;
}

.nfs-card--muted {
	background: var(--nfs-bg);
}

.nfs-divider {
	height: 1px;
	background: var(--nfs-border);
	margin: 26px 0;
}

/* ---------- Meta list (Despre acest seminar / Pe scurt) ---------- */

.nfs-label {
	font: 700 10.5px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
}

.nfs-meta-list {
	display: flex;
	flex-direction: column;
	gap: 18px;
	margin-top: 8px;
}

.nfs-meta-list__item .nfs-value {
	margin-top: 6px;
	font-weight: 600;
	font-size: 15px;
	color: var(--nfs-text);
}

.nfs-meta-list__item .nfs-value a {
	color: var(--nfs-text);
	text-decoration: none;
}

.nfs-meta-list__item .nfs-value a:hover {
	text-decoration: underline;
}

/* ---------- Tabel comandă (Vezi comanda) ---------- */

/* Lamurire sub o valoare dintr-o lista de date (ex. desfasurarea TVA sub
   totalul abonamentului). */
.nfs-meta-list__note {
	margin-top: 4px;
	font: 500 13px var(--nfs-font);
	line-height: 1.5;
	color: var(--nfs-text-muted);
}

.nfs-order-table__wrap {
	overflow-x: auto;
}

.nfs-order-table {
	width: 100%;
	border-collapse: collapse;
}

.nfs-order-table th {
	font: 700 10.5px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
	text-align: left;
	padding: 14px 18px;
	background: var(--nfs-bg);
	/* border: 0 !important — tema deseneaza chenar pe orice th/td de tabel, iar
	   peste separatorul nostru ieseau linii duble si coloane despartite vertical.
	   Celulele de dedesubt isi pastreaza separatorul orizontal. */
	border: 0 !important;
	white-space: nowrap;
}

.nfs-order-table th.nfs-order-table--right {
	text-align: right;
}

.nfs-order-table td {
	font-size: 14.5px;
	color: var(--nfs-text);
	padding: 18px;
	/* Doar separator orizontal; chenarul temei ar fi adaugat si linii verticale
	   intre coloane. */
	border: 0 !important;
	border-bottom: 1px solid var(--nfs-border) !important;
	vertical-align: middle;
}

/* Randurile raman albe: tema (si stilurile WooCommerce) coloreaza alternativ
   orice tabel, iar dungile gri se bateau cap in cap cu separatoarele noastre.
   !important pentru ca regula lor e pe tr:nth-child(), mai specifica. */
.nfs-order-table tbody tr:not(.nfs-order-table__subtotal):not(.nfs-order-table__total),
.nfs-order-table tbody tr:not(.nfs-order-table__subtotal):not(.nfs-order-table__total) td {
	background: transparent !important;
}

.nfs-order-table td.nfs-order-table--right {
	text-align: right;
	font-weight: 600;
}

.nfs-order-table tbody tr:last-child td {
	border-bottom: none !important;
}

.nfs-order-table__name {
	font-weight: 600;
	color: var(--nfs-text);
}

.nfs-order-table__meta {
	font: 600 12.5px var(--nfs-font);
	color: var(--nfs-text-label);
	margin-top: 4px;
}

/* Randurile intermediare (sub-total, reducere, TVA, metoda de plata) raman pe
   fundal alb: cu patru-cinci randuri colorate, tabelul devenea o banda gri in
   care nu se mai distingea nimic. Doar Totalul ramane scos in evidenta. */
.nfs-order-table__subtotal td {
	background: transparent !important;
	font-weight: 600;
}

.nfs-order-table__total td {
	background: var(--nfs-bg);
	border-bottom: none;
}

.nfs-order-table__total td.nfs-order-table--right {
	font: 800 18px var(--nfs-font-heading);
}

.nfs-order-table__total td:not(.nfs-order-table--right) {
	font: 700 15px var(--nfs-font-heading);
}

.nfs-order-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	padding: 26px 32px;
}

/* ---------- Abonamentul meu (view-subscription) ----------
   Conținutul din interior e randat integral de WooCommerce Subscriptions
   (do_action-uri native, inclusiv link-urile lor de acțiune cu nonce —
   Switch/Cancel/Suspend/Renew/Change payment) — aici doar îmbrăcăm vizual
   markup-ul lor generic (.shop_table, .button), fără să-l reconstruim. */

/* Doar un fallback de font/culoare pentru orice h2 nativ rămas nestilizat —
   fără padding aici (era aplicat greșit și peste titlurile cu margin-bottom
   propriu ale cardurilor .nfs-panel__subtitle, dublând spațiul). Titlul din
   cardul "Produse" (singurul fără margin/padding propriu, direct lipit de
   marginea cardului cu padding:0) își are propriul padding, inline. */
.nfs-view-subscription h2 {
	font: 700 18px var(--nfs-font-heading);
	color: var(--nfs-text);
}

.nfs-view-subscription table.shop_table {
	width: 100%;
	border-collapse: collapse;
	font-family: var(--nfs-font);
}

.nfs-view-subscription table.shop_table th,
.nfs-view-subscription table.shop_table td {
	padding: 16px 32px;
	border-bottom: 1px solid var(--nfs-border);
	text-align: left;
	font-size: 14.5px;
	color: var(--nfs-text);
	vertical-align: middle;
}

.nfs-view-subscription table.shop_table thead th {
	font: 700 10.5px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
	background: var(--nfs-bg);
}

.nfs-view-subscription table.shop_table tbody tr:last-child td,
.nfs-view-subscription table.shop_table tfoot tr:last-child td,
.nfs-view-subscription table.shop_table tfoot tr:last-child th {
	border-bottom: none;
}

.nfs-view-subscription table.shop_table tfoot th,
.nfs-view-subscription table.shop_table tfoot td {
	background: var(--nfs-bg);
	font-weight: 700;
}

.nfs-view-subscription table.subscription_details td:first-child {
	color: var(--nfs-text-label);
	font-weight: 600;
	white-space: nowrap;
	width: 1%;
}

/* Orice link/buton de acțiune nativ (Switch/Cancel/Suspend/Renew/Change
   payment) — stilul .nfs-btn, dar fără să atingem href-ul/nonce-ul. */
.nfs-view-subscription .button,
.nfs-view-subscription .woocommerce-button {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	margin: 4px 6px 4px 0;
	padding: 10px 18px !important;
	border-radius: var(--nfs-radius-sm) !important;
	font: 700 13px var(--nfs-font) !important;
	text-decoration: none !important;
	background: var(--nfs-bg) !important;
	color: var(--nfs-text) !important;
	border: 1px solid var(--nfs-border) !important;
	transition: transform 0.15s ease;
}

.nfs-view-subscription .button:hover,
.nfs-view-subscription .woocommerce-button:hover {
	transform: translateY(-2px);
}

.nfs-view-subscription .button.wcs-switch-link,
.nfs-view-subscription .button.switch-subscription,
.nfs-view-subscription .button.resubscribe {
	background: var(--nfs-gold) !important;
	color: var(--nfs-navy) !important;
	border-color: var(--nfs-gold) !important;
}

.nfs-view-subscription .button.cancel {
	background: #fff !important;
	color: #b3391f !important;
	border-color: #f3caca !important;
}

.nfs-view-subscription .woocommerce-customer-details {
	padding: 26px 32px;
}

.nfs-view-subscription .woocommerce-column__title {
	font: 700 14px var(--nfs-font-heading);
	color: var(--nfs-text);
	padding: 0 0 12px;
}

.nfs-view-subscription address {
	font: 500 14.5px var(--nfs-font);
	color: var(--nfs-text-muted);
	font-style: normal;
	line-height: 1.7;
}

/* Anulare abonament — accesibilă (mereu la un singur click, în cardul
   "Acțiuni", sub restul butoanelor), dar intenționat discretă: link simplu,
   nu un buton auriu ca celelalte acțiuni. Nu blocăm/ascundem acțiunea în
   sine — doar nu-i dăm aceeași proeminență ca "Schimbă planul"/"Reactivează",
   ca o renunțare să nu fie un impuls de-o secundă. */
.nfs-view-subscription__cancel-link {
	display: block;
	text-align: center;
	margin-top: 6px;
	padding: 8px 0;
	font: 500 13px var(--nfs-font);
	color: var(--nfs-text-label);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.nfs-view-subscription__cancel-link:hover {
	color: var(--nfs-text-muted);
}

/* ---------- Disclaimer (redesenat) ---------- */

.nfs-seminar-disclaimer__head {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 6px;
}

.nfs-seminar-disclaimer__badge {
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: var(--nfs-gold);
	color: var(--nfs-navy);
	display: flex;
	align-items: center;
	justify-content: center;
	font-weight: 800;
	font-size: 14px;
	flex-shrink: 0;
}

.nfs-seminar-disclaimer__head strong {
	font-size: 18px;
	color: var(--nfs-text);
}

.nfs-seminar-disclaimer__strong {
	font-weight: 600;
	color: var(--nfs-text);
}

/* ---------- Tematică (listă cu buline) ---------- */

.nfs-topics {
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.nfs-topics__item {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	font-size: 15.5px;
	line-height: 1.6;
	color: var(--nfs-text-muted);
}

.nfs-topics__dot {
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--nfs-gold);
	flex-shrink: 0;
	margin-top: 8px;
}

.nfs-download-list--tight .nfs-download-row {
	padding: 20px 0;
}

/* ---------- Skeleton (shimmer) — pentru date încărcate async ---------- */

.nfs-skeleton {
	display: inline-block;
	height: 14px;
	border-radius: 4px;
	background: linear-gradient(90deg, var(--nfs-bg) 25%, #e9edf4 37%, var(--nfs-bg) 63%);
	background-size: 400% 100%;
	animation: nfs-skeleton-shimmer 1.4s ease infinite;
	vertical-align: middle;
}

.nfs-skeleton--text {
	height: 13px;
}

@keyframes nfs-skeleton-shimmer {
	0% {
		background-position: 100% 50%;
	}
	100% {
		background-position: 0 50%;
	}
}

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

/* ---------- Autentificare / Înregistrare (form-login.php) ---------- */

.nfs-login-notices {
	margin: 20px 0 0 0;
}

.nfs-login-notices:empty {
	display: none;
	margin: 0;
}

/* Notificările WooCommerce (erori/succes/info) — box simplu, colorat, fără
   bullet-uri și fără chenarul/bara roșie implicite din tema WC. */
.nfs-login-notices ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.nfs-login-notices li {
	margin: 0;
	padding: 0;
}

.nfs-login-notices .woocommerce-error,
.nfs-login-notices .woocommerce-message,
.nfs-login-notices .woocommerce-info {
	box-sizing: border-box;
	list-style: none !important;
	margin: 0 !important;
	padding: 13px 16px !important;
	border-radius: var(--nfs-radius-sm) !important;
	border-top: none !important;
	border-left: none !important;
	border-right: none !important;
	box-shadow: none !important;
	font: 500 14px var(--nfs-font) !important;
	line-height: 1.55;
}

/* Unele teme adaugă o iconiță via ::before pe notificare/pe <li>, poziționată
   absolut și gândită pentru padding-ul lor implicit — la padding-ul nostru
   uniform, ajunge să se suprapună peste text. O ascundem complet. */
.nfs-login-notices .woocommerce-error::before,
.nfs-login-notices .woocommerce-message::before,
.nfs-login-notices .woocommerce-info::before,
.nfs-login-notices .woocommerce-error::after,
.nfs-login-notices .woocommerce-message::after,
.nfs-login-notices .woocommerce-info::after,
.nfs-login-notices li::before,
.nfs-login-notices li::after {
	display: none !important;
	content: none !important;
}

.nfs-login-notices .woocommerce-error {
	background: #fbe7e7 !important;
	color: #8a2a26 !important;
	border: 1px solid #f3caca !important;
}

.nfs-login-notices .woocommerce-error strong {
	color: #8a2a26 !important;
}

.nfs-login-notices .woocommerce-message {
	background: #e7f6ee !important;
	color: #0d6b3f !important;
	border: 1px solid #b6e3ca !important;
}

.nfs-login-notices .woocommerce-message strong {
	color: #0d6b3f !important;
}

.nfs-login-notices .woocommerce-info {
	background: #eaf1fb !important;
	color: var(--nfs-navy-light) !important;
	border: 1px solid #c3d8f2 !important;
}

.nfs-login-notices .woocommerce-info strong {
	color: var(--nfs-navy-light) !important;
}

.nfs-login-notices a {
	color: inherit !important;
	font-weight: 700;
	text-decoration: underline;
}

.nfs-login-grid {
	display: flex;
	flex-wrap: wrap;
	gap: 28px;
	align-items: stretch;
}

/* Paginile de parola au o singura treaba, deci o singura coloana, centrata —
   grila cu doua panouri (autentificare + inregistrare) n-are ce imparti aici. */
.nfs-login-grid--single {
	justify-content: center;
}

.nfs-login-grid--single .nfs-login-col {
	flex: 0 1 520px;
}

/* Cand WordPress isi insereaza indicatorul de putere INAUNTRUL containerului,
   acesta creste in inaltime, iar ochiul — centrat pe container — ajunge sub
   input. Il legam atunci de banda inputului, nu de mijlocul containerului. */
.nfs-login-password-wrap:has(.woocommerce-password-strength) button.nfs-login-password-toggle {
	top: 8px; /* marginea de sus a .nfs-login-field */
	height: 44px; /* min-height-ul inputului */
	transform: none;
	align-items: center;
}

/* Indicatorul de putere a parolei, adaugat de WordPress sub camp.
   Marcajul si textele sunt ale lor; stilurile implicite nu se incarca pe tema
   asta, de unde bara lipita peste chenarul campului. */
.nfs-login-panel .woocommerce-password-strength {
	display: block;
	margin: 10px 0 0;
	padding: 9px 13px;
	border: 1px solid transparent;
	border-radius: 8px;
	font-size: 13px;
	font-weight: 600;
	line-height: 1.4;
	text-align: left;
}

.nfs-login-panel .woocommerce-password-strength.short,
.nfs-login-panel .woocommerce-password-strength.bad {
	border-color: #f0c2c3;
	background: #fdf4f4;
	color: #8a2226;
}

.nfs-login-panel .woocommerce-password-strength.good {
	border-color: #f3dca6;
	background: #fdf8ec;
	color: #8a6a12;
}

.nfs-login-panel .woocommerce-password-strength.strong {
	border-color: #bfe3cb;
	background: #f2faf5;
	color: #1f7a3d;
}

.nfs-login-panel .woocommerce-password-hint {
	display: block;
	margin: 8px 0 0;
	font-size: 12.5px;
	font-weight: 400;
	line-height: 1.5;
	color: var(--nfs-text-muted);
}

/* Lamurire sub un camp (ex. lungimea minima a parolei). */
.nfs-login-hint {
	margin: 6px 0 0;
	font-size: 12.5px;
	line-height: 1.45;
	color: var(--nfs-text-muted);
}

.nfs-login-col {
	flex: 1 1 420px;
	min-width: 0;
	display: flex;
}

.nfs-login-panel {
	width: 100%;
	box-sizing: border-box;
	background: var(--nfs-card);
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius);
	box-shadow: var(--nfs-shadow);
	padding: 38px;
	display: flex;
	flex-direction: column;
}

.nfs-login-panel--muted {
	background: var(--nfs-bg);
}

/* Tema pune implicit border+padding+margin pe orice <form class="login">/
   <form class="register"> din interiorul .woocommerce (gândit pentru
   formularul WC nestilizat) — la noi produce un chenar dublu + spațiu gol
   sub fiecare panou, peste .nfs-login-panel-ul propriu. Îl anulăm. */
/*
 * ":not(.nfs-checkout-login__form)" — formularul de autentificare din
 * checkout ARE nevoie de chenarul și padding-ul lui. Fără excepție, regula
 * de mai jos i le ștergea cu !important și rămânea o grămadă de câmpuri
 * lipite de bara de deasupra.
 */
.woocommerce form.login:not(.nfs-checkout-login__form),
.woocommerce form.register {
	border: none !important;
	padding: 0 !important;
	margin: 0 !important;
	border-radius: 0 !important;
}

.nfs-login-icon {
	width: 44px;
	height: 44px;
	border-radius: 12px;
	background: var(--nfs-navy);
	color: var(--nfs-gold);
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	margin-bottom: 22px;
}

.nfs-login-title {
	font-family: var(--nfs-font-heading) !important;
	font-size: 24px;
	font-weight: 700;
	margin: 0;
	color: var(--nfs-text);
}

.nfs-login-body {
	font-family: var(--nfs-font) !important;
	font-size: 15px;
	line-height: 1.7;
	color: var(--nfs-text-muted);
	margin: 10px 0 0;
}

.nfs-login-body a {
	color: var(--nfs-navy) !important;
	text-decoration: underline;
}

.nfs-login-field-wrap {
	margin-top: 26px;
}

.nfs-login-label {
	font: 700 10.5px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
	display: flex;
	align-items: center;
	gap: 7px;
}

.nfs-login-req {
	color: #b23a3a;
	font-weight: 700;
	text-transform: none;
	letter-spacing: normal;
}

.nfs-login-field {
	box-sizing: border-box;
	width: 100%;
	min-height: 44px;
	border: 1px solid var(--nfs-border) !important;
	border-radius: var(--nfs-radius-sm) !important;
	background: var(--nfs-bg) !important;
	padding: 11px 14px;
	font: 500 14px var(--nfs-font) !important;
	color: var(--nfs-text) !important;
	margin-top: 8px;
	outline: none;
	box-shadow: none !important;
}

.nfs-login-field:focus {
	border-color: var(--nfs-navy) !important;
	background: #ffffff !important;
}

.nfs-login-field--white {
	background: #ffffff !important;
}

.nfs-login-password-wrap {
	position: relative;
}

/* 'button.' în față: reset.css al temei se încarcă după noi și declară
   display pe [type=button], la aceeași specificitate ca o clasă. */
button.nfs-login-password-toggle {
	position: absolute;
	right: 14px;
	top: 50%;
	transform: translateY(calc(-50% + 4px));
	background: none !important;
	border: none !important;
	padding: 0 !important;
	cursor: pointer;
	color: var(--nfs-text-label) !important;
	display: flex;
	align-items: center;
	box-shadow: none !important;
	outline: none;
}

.nfs-login-password-toggle:hover {
	color: var(--nfs-navy) !important;
}

.nfs-login-eye-icon {
	display: flex;
}

.nfs-login-eye-icon--hide {
	display: none;
}

.nfs-login-password-toggle.is-visible .nfs-login-eye-icon--show {
	display: none;
}

.nfs-login-password-toggle.is-visible .nfs-login-eye-icon--hide {
	display: flex;
}

.nfs-login-remember {
	display: flex;
	align-items: center;
	gap: 11px;
	margin-top: 22px;
	cursor: pointer;
}

.nfs-login-remember input {
	width: 18px;
	height: 18px;
	accent-color: var(--nfs-navy);
	flex-shrink: 0;
}

.nfs-login-remember span {
	font-size: 14.5px;
	color: var(--nfs-text-muted);
}

.nfs-login-checkbox {
	display: flex;
	align-items: flex-start;
	gap: 11px;
	margin-top: 20px;
	cursor: pointer;
}

.nfs-login-checkbox input {
	width: 18px;
	height: 18px;
	margin-top: 2px;
	accent-color: var(--nfs-navy);
	flex-shrink: 0;
}

.nfs-login-checkbox span {
	font-size: 14.5px;
	line-height: 1.6;
	color: var(--nfs-text-muted);
}

.nfs-login-checkbox a {
	color: var(--nfs-navy) !important;
	font-weight: 700;
	text-decoration: underline;
}

.nfs-login-forgot {
	font: 700 14px var(--nfs-font);
	color: var(--nfs-navy) !important;
	text-decoration: none !important;
	margin-top: 20px;
	display: inline-block;
}

/* Textul de confidențialitate randat nativ de WooCommerce (hook
   'woocommerce_register_form') — nu e generat de noi, deci nu are clasele
   .nfs-login-*; îl aliniem la același stil tipografic + fixăm link-ul. */
.woocommerce-form-register .woocommerce-privacy-policy-text {
	font: 500 15px var(--nfs-font) !important;
	line-height: 1.7;
	color: var(--nfs-text-muted) !important;
	margin: 16px 0 0;
}

.woocommerce-form-register .woocommerce-privacy-policy-text p {
	margin: 0;
}

.woocommerce-form-register .woocommerce-privacy-policy-text a,
a.woocommerce-privacy-policy-link {
	color: var(--nfs-navy) !important;
	text-decoration: underline !important;
}

.nfs-login-forgot:hover,
.nfs-login-body a:hover {
	text-decoration: underline !important;
}

.nfs-login-divider {
	height: 1px;
	background: var(--nfs-border);
	margin: 24px 0;
}

/* ---------- Pagina de produs, în context de switch (schimbă abonamentul) ---------- */
/* Vezi NFS_Subscription_Cart::render_switch_banner()/declutter_switch_page()
   și templates/single-product/product-subscription-options.php. */

/* Galeria produsului e scoasă în context de switch — coloana din stânga
   (.nfs-switch-left: card plan actual + card alte planuri) îi ia locul,
   EXACT în același punct din DOM (woocommerce_before_single_product_summary,
   în interiorul div.product, înaintea .summary.entry-summary) — deci facem
   din div.product un flex cu 2 coloane: stânga (creștere liberă, umple tot
   spațiul rămas) + "Sumar schimbare" (lățime fixă, dreapta). */
body.nfs-switch-page div.product {
	display: flex !important;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 28px;
}

body.nfs-switch-page div.product .summary.entry-summary {
	width: auto !important;
	float: none !important;
	flex: 0 1 420px;
	min-width: 300px;
}

.nfs-switch-left {
	flex: 1 1 380px;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 28px;
}

.nfs-switch-current {
	background: var(--nfs-bg);
}

.nfs-switch-current__row {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 24px;
	flex-wrap: wrap;
}

.nfs-switch-current__main {
	min-width: 0;
	flex: 1 1 220px;
}

/* Specificitate ridicată intenționat (.nfs-switch-current + clasa proprie) —
   altfel reset-ul global ".nfs-product-shortcode :where(h1,h2,h3){margin:0}"
   câștigă la egalitate de specificitate (:where() nu adaugă specificitate),
   fiindcă apare mai jos în foaia de stil, și anulează margin-top-ul. */
.nfs-switch-current .nfs-switch-current__title {
	font-size: 22px;
	font-weight: 700;
	margin-top: 20px;
}

.nfs-switch-current__meta {
	font: 500 14.5px var(--nfs-font);
	color: var(--nfs-text-muted);
	margin: 8px 0 0;
}

.nfs-switch-current__progress {
	flex: 0 1 360px;
	min-width: 180px;
}

.nfs-switch-current__progress-row {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
}

.nfs-switch-current__days {
	font: 800 22px var(--nfs-font-heading);
	color: var(--nfs-text);
}

.nfs-switch-current__days-total {
	font: 600 12.5px var(--nfs-font);
	color: var(--nfs-text-label);
}

.nfs-switch-current__unused {
	font: 600 12.5px var(--nfs-font);
	color: var(--nfs-text-label);
	margin: 10px 0 0;
}

.nfs-switch-current__unused strong,
.nfs-switch-current__unused .woocommerce-Price-amount {
	color: var(--nfs-text);
}

/* Notice nativ "Choose a new subscription." (netradus, clasa
   .woocommerce-info) — vine dintr-o sursă pe care n-o putem localiza sigur
   (probabil tema/Elementor), și scoaterea lui din sesiunea WooCommerce
   (vezi NFS_Subscription_Cart::remove_switch_choose_notice()) nu-l prinde
   mereu la timp. Îl ascundem și vizual, doar în context de switch — dar
   NU tot .woocommerce-notices-wrapper, ca o eventuală eroare reală
   (.woocommerce-error, dacă switch-ul chiar eșuează) să rămână vizibilă. */
body.nfs-switch-page .woocommerce-notices-wrapper .woocommerce-info {
	display: none !important;
}

/* Ceva JS (probabil din pluginul comercial WooCommerce Subscriptions, cod
   închis — nu vine nici din codul nostru, nici din "Subscribe to All the
   Things" open-source, ambele verificate) setează display:none pe wrapper
   DUPĂ încărcarea paginii — HTML-ul brut de la server nu are style deloc.
   Forțăm vizibilitatea cu !important, care poate suprascrie un style
   inline setat de JS (dacă acela nu e la rândul lui !important). */
.wcsatt-options-wrapper.nfs-switch-confirm {
	display: block !important;
}

.wcsatt-options-wrapper.nfs-switch-confirm > h3 {
	font: 700 11px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
	margin: 0 0 10px;
}

.wcsatt-options-wrapper.nfs-switch-confirm ul.wcsatt-options-product {
	list-style: none;
	margin: 0;
	padding: 0;
}

.wcsatt-options-wrapper.nfs-switch-confirm li.nfs-switch-hide {
	display: none;
}

/* Rândul de plan confirmat — arată ca o linie de sumar ("Abonament 3 luni …
   165 lei"), nu ca un card cu bordură; radio-ul rămâne real (checked, deci
   trimis la submit) dar invizibil — nu mai are sens un "buton" de reales
   când a mai rămas o singură variantă vizibilă. */
.wcsatt-options-wrapper.nfs-switch-confirm li.nfs-switch-selected {
	border: none;
	border-bottom: 1px solid var(--nfs-border);
	border-radius: 0;
	padding: 14px 0;
}

.wcsatt-options-wrapper.nfs-switch-confirm li.nfs-switch-selected label {
	display: block;
	cursor: default;
}

.wcsatt-options-wrapper.nfs-switch-confirm li.nfs-switch-selected input[type='radio'] {
	display: none;
}

.wcsatt-options-wrapper.nfs-switch-confirm li.nfs-switch-selected .subscription-option-details {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
	font: 600 14.5px var(--nfs-font);
	color: var(--nfs-text-label);
}

.nfs-switch-row__name {
	font: 600 14.5px var(--nfs-font);
	color: var(--nfs-text-muted);
}

.wcsatt-options-wrapper.nfs-switch-confirm li.nfs-switch-selected .price.subscription-price {
	font-weight: 700;
	color: var(--nfs-text);
	white-space: nowrap;
}

/* Doar prețul brut rămâne vizibil în dreapta ("165 lei") — sufixele native
   ("cu TVA inclus", "la fiecare 3 luni") sunt redundante aici, numele
   planului (stânga) și pilonul "Din → În" de mai sus acoperă deja contextul. */
.wcsatt-options-wrapper.nfs-switch-confirm li.nfs-switch-selected .woocommerce-price-suffix,
.wcsatt-options-wrapper.nfs-switch-confirm li.nfs-switch-selected .subscription-details {
	display: none;
}

/* Cardul "Din → În" (planul actual vs. cel nou ales) — vezi
   templates/single-product/product-subscription-options.php. */
.nfs-switch-pill {
	display: flex;
	align-items: center;
	gap: 16px;
	background: var(--nfs-bg);
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius-sm);
	padding: 16px 18px;
	margin: 0 0 20px;
}

.nfs-switch-pill__col {
	min-width: 0;
	flex: 1;
}

.nfs-switch-pill__label {
	font: 700 10.5px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
}

.nfs-switch-pill__value {
	font: 700 15px var(--nfs-font-heading);
	color: var(--nfs-navy);
	margin-top: 5px;
}

.nfs-switch-pill__arrow {
	flex-shrink: 0;
	color: var(--nfs-text-label);
	font-size: 16px;
}

/* Butonul real de submit (add-to-cart nativ) — doar restilizat auriu, ca
   restul acțiunilor din cont; textul e tradus în NFS_Subscription_Cart::switch_add_to_cart_text(). */
body.nfs-switch-page .single_add_to_cart_button {
	display: block !important;
	width: 100% !important;
	box-sizing: border-box !important;
	background: var(--nfs-gold) !important;
	border: none !important;
	border-radius: var(--nfs-radius-sm) !important;
	color: var(--nfs-navy) !important;
	font: 700 15px var(--nfs-font) !important;
	padding: 15px 20px !important;
	text-align: center !important;
	margin: 18px 0 12px !important;
	transition: transform 0.15s ease, background-color 0.15s ease !important;
}

body.nfs-switch-page .single_add_to_cart_button:hover {
	background: #f0c200 !important;
	transform: translateY(-2px);
}

/* Cantitatea e mereu 1 la un abonament (vezi NFS_Subscription_Cart::
   limit_quantity_input()) — stepper-ul n-are ce căuta în cardul de confirmare. */
body.nfs-switch-page .quantity {
	display: none;
}

/* Cardul "Sumar schimbare" — pilonul "Din → În" + rândul de plan +
   butonul real + "Renunță" (deschis/închis din NFS_Subscription_Cart::
   open_switch_summary_card()/close_switch_summary_card()), aliniat dreapta. */
.nfs-switch-summary {
	max-width: 420px;
	margin: 0 0 0 auto;
}

.nfs-switch-summary__note {
	font: 500 13px var(--nfs-font);
	line-height: 1.6;
	color: var(--nfs-text-label);
	margin: 0 0 4px;
}

.nfs-switch-summary__security {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	margin-top: 16px;
	color: var(--nfs-text-label);
}

.nfs-switch-summary__security span {
	font: 600 12.5px var(--nfs-font);
}

/* Estimarea "De plată acum" — vezi product-subscription-options.php; NU e
   calculul real de proration al WooCommerce Subscriptions (acela rămâne al
   lor, la pasul următor), de-aia rămâne etichetat explicit "estimativ". */
.nfs-switch-due {
	margin-top: 4px;
}

.nfs-switch-due__row {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	font: 700 14.5px var(--nfs-font);
	color: var(--nfs-text);
}

.nfs-switch-due__amount {
	font: 800 26px var(--nfs-font-heading);
	color: var(--nfs-navy);
}

.nfs-switch-due__note {
	font: 600 12.5px var(--nfs-font);
	line-height: 1.6;
	color: #0d6b3f;
	margin: 8px 0 0;
}

@media (max-width: 640px) {
	.nfs-switch-summary {
		max-width: none;
		margin-left: 0;
	}

	body.nfs-switch-page div.product {
		gap: 20px;
	}
}

/* ---------- Shortcode [nfs_switch_subscription] (integrare Elementor) ---------- */
/* Vezi NFS_Subscription_Cart::render_shortcode() — folosit când pagina de
   produs e construită într-un template Elementor (Theme Builder), care nu
   mai trece prin content-single-product.php al temei, deci hook-urile
   'woocommerce_before_single_product*' nu au unde să se agațe altfel. */

.nfs-product-shortcode {
	font-family: var(--nfs-font);
	color: var(--nfs-text);
}

.nfs-product-shortcode :where(h1, h2, h3) {
	font-family: var(--nfs-font-heading);
	margin: 0;
}

/* Context de switch — aceeași structură 2 coloane ca la fluxul clasic
   (body.nfs-switch-page div.product), doar cu propriile clase de wrapper,
   fiindcă nu mai există div.product/.summary.entry-summary aici. */
.nfs-switch-columns {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 28px;
}

.nfs-switch-summary-col {
	flex: 0 1 420px;
	min-width: 300px;
}

.nfs-product-shortcode .single_add_to_cart_button {
	display: block !important;
	width: 100% !important;
	box-sizing: border-box !important;
	background: var(--nfs-gold) !important;
	border: none !important;
	border-radius: var(--nfs-radius-sm) !important;
	color: var(--nfs-navy) !important;
	font: 700 15px var(--nfs-font) !important;
	padding: 15px 20px !important;
	text-align: center !important;
	margin: 18px 0 12px !important;
	transition: transform 0.15s ease, background-color 0.15s ease !important;
}

.nfs-product-shortcode .single_add_to_cart_button:hover {
	background: var(--nfs-gold-dark) !important;
	transform: translateY(-2px);
}

.nfs-product-shortcode .quantity {
	display: none;
}

/* Fallback pentru prima achiziție (fără context de switch) — titlu + preț +
   descriere scurtă + selectorul clasic de scheme, într-un singur card. */
.nfs-product-shortcode__default .product_title {
	font-size: 24px;
	margin-bottom: 10px;
}

.nfs-product-shortcode__default .price {
	font: 800 22px var(--nfs-font-heading);
	color: var(--nfs-navy);
}

.nfs-product-shortcode__default .woocommerce-product-details__short-description {
	font: 500 14.5px var(--nfs-font);
	color: var(--nfs-text-muted);
	margin-top: 14px;
}

/* Card "Alege noul plan" — listă pe o coloană (nu grid), rânduri cu
   radio-buton vizual — vezi NFS_Subscription_Cart::render_plan_picker(). */
.nfs-switch-plans-list {
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.nfs-switch-plan-row {
	display: flex;
	align-items: flex-start;
	gap: 16px;
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius-sm);
	padding: 18px 20px;
	text-decoration: none;
	color: inherit;
	transition: border-color 0.15s ease, background-color 0.15s ease;
}

a.nfs-switch-plan-row:hover {
	border-color: var(--nfs-navy);
}

.nfs-switch-plan-row.is-selected {
	border: 2px solid var(--nfs-navy);
	background: var(--nfs-bg);
	padding: 17px 19px;
}

.nfs-switch-plan-row.is-disabled {
	opacity: 0.6;
	cursor: default;
}

.nfs-switch-plan-row__radio {
	box-sizing: border-box;
	width: 22px;
	height: 22px;
	border-radius: 50%;
	flex-shrink: 0;
	margin-top: 2px;
	display: flex;
	align-items: center;
	justify-content: center;
	border: 2px solid var(--nfs-border);
}

/* Bulina marcheaza o alegere: planul ales acum sau cel pe care clientul il are.
   Un plan doar blocat (mai mic decat cel curent) ramane cu cerc gol — altfel
   toate randurile inerte ar parea selectate. */
.nfs-switch-plan-row.is-selected .nfs-switch-plan-row__radio,
.nfs-switch-plan-row.is-current .nfs-switch-plan-row__radio {
	border-color: var(--nfs-navy);
}

.nfs-switch-plan-row__radio-dot {
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: var(--nfs-gold);
	display: none;
}

.nfs-switch-plan-row.is-selected .nfs-switch-plan-row__radio-dot,
.nfs-switch-plan-row.is-current .nfs-switch-plan-row__radio-dot {
	display: block;
}

.nfs-switch-plan-row__body {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.nfs-switch-plan-row__head {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
}

.nfs-switch-plan-row__name {
	font: 700 16px var(--nfs-font-heading);
	color: var(--nfs-text);
}

.nfs-switch-plan-row__meta {
	font: 500 13.5px var(--nfs-font);
	color: var(--nfs-text-muted);
}

.nfs-switch-plan-row__price {
	text-align: right;
	flex-shrink: 0;
}

.nfs-switch-plan-row__price-main {
	font: 800 22px var(--nfs-font-heading);
	color: var(--nfs-text);
}

.nfs-switch-plan-row__price-period {
	display: block;
	font: 600 12px var(--nfs-font);
	color: var(--nfs-text-label);
	margin-top: 2px;
}

@media (max-width: 480px) {
	.nfs-switch-plan-row {
		flex-wrap: wrap;
	}

	.nfs-switch-plan-row__price {
		text-align: left;
		margin-left: 38px;
	}
}

@media (max-width: 640px) {
	.nfs-switch-summary-col {
		min-width: 0;
		flex-basis: 100%;
	}
}

/* ---------- Responsive ---------- */

@media (max-width: 860px) {
	/* Meniul contului devine o bandă cu derulare pe orizontală: aceleași
	   butoane rotunjite ca pe desktop, dar pe un singur rând, în loc să se
	   rupă pe trei rânduri. */
	.nfs-account__nav {
		position: relative;
		padding: 8px;
	}

	.nfs-account__menu {
		flex-wrap: nowrap;
		overflow-x: auto;
		scroll-snap-type: x proximity;
		scroll-padding-left: 8px;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
	}

	.nfs-account__menu::-webkit-scrollbar {
		display: none;
	}

	.nfs-account__menu-item {
		flex: 0 0 auto;
		scroll-snap-align: start;
	}

	/* Degradeuri la capete, ca să se vadă că banda continuă. Apar doar în
	   partea în care mai există conținut — clasele vin din account.js. */
	.nfs-account__nav::before,
	.nfs-account__nav::after {
		content: "";
		position: absolute;
		top: 8px;
		bottom: 8px;
		width: 28px;
		z-index: 1;
		opacity: 0;
		pointer-events: none;
		transition: opacity 0.2s ease;
	}

	.nfs-account__nav::before {
		left: 8px;
		background: linear-gradient(to right, var(--nfs-card), rgba(255, 255, 255, 0));
	}

	.nfs-account__nav::after {
		right: 8px;
		background: linear-gradient(to left, var(--nfs-card), rgba(255, 255, 255, 0));
	}

	.nfs-account__nav.has-prev::before {
		opacity: 1;
	}

	.nfs-account__nav.has-next::after {
		opacity: 1;
	}

	.nfs-account__menu-item a {
		padding: 12px 16px;
		font-size: 14px;
	}

	/* Comenzi și Seminarii active rămân alături, pe un rând; Abonamentul trece
	   dedesubt, pe toată lățimea — are mai mult de arătat (plan, zile rămase,
	   bară de progres) și s-ar înghesui într-o jumătate de ecran. */
	.nfs-stats-grid {
		grid-template-columns: repeat(2, 1fr);
		gap: 12px;
	}

	.nfs-stat-card {
		padding: 16px;
	}

	.nfs-stat-card__value {
		font-size: 26px;
	}

	.nfs-stat-card--subscription {
		grid-column: 1 / -1;
	}

	.nfs-field-grid {
		grid-template-columns: 1fr;
	}

	/* Formularul de parolă are propria grilă de 2 coloane, cu doi selectori
	   (.nfs-password-form .nfs-field-grid), deci nu e prins de regula de mai
	   sus — o repetăm aici, altfel cele două câmpuri rămân alături. */
	.nfs-password-form .nfs-field-grid {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 640px) {
	/* Header Cont: salutul și avatarul mai mici, iar butonul de deconectare
	   trece pe rândul lui — lângă un nume lung n-ar mai încăpea. */
	.nfs-page-header {
		padding: 16px 0;
	}

	.nfs-page-header__row {
		align-items: flex-start;
		gap: 16px;
		margin-top: 16px;
	}

	.nfs-page-header__identity {
		gap: 14px;
	}

	.nfs-avatar {
		width: 46px;
		height: 46px;
		font-size: 17px;
	}

	.nfs-page-header__title {
		font-size: 23px;
		letter-spacing: -0.2px;
	}

	.nfs-page-header__meta {
		font-size: 13.5px;
		/* Adresa de e-mail e un singur cuvânt lung: fără asta ar lărgi pagina
		   și ar apărea derulare orizontală. */
		overflow-wrap: anywhere;
	}

	.nfs-page-header .nfs-btn--outline {
		width: 100%;
	}

	/* "Continuă de unde ai rămas": thumbnail și titlu pe primul rând, butonul
	   pe toată lățimea dedesubt, în loc de toate trei înghesuite pe o linie. */
	.nfs-continue-watching__header {
		flex-wrap: wrap;
		gap: 8px;
	}

	/* Grila se aplică DOAR rândurilor din Panou, care au thumbnail și buton.
	   Aceeași clasă e refolosită de "Istoric abonamente", unde nu există
	   niciunul: acolo grila lăsa o coloană goală de 76px și împingea suma
	   într-o celulă greșită. */
	.nfs-continue-watching__list .nfs-continue-row {
		display: grid;
		grid-template-columns: 76px minmax(0, 1fr);
		grid-template-areas:
			"thumb info"
			"cta cta";
		align-items: center;
		gap: 12px 14px;
	}

	.nfs-continue-watching__list .nfs-continue-row__thumb {
		grid-area: thumb;
		flex: none;
		width: 76px;
	}

	.nfs-continue-watching__list .nfs-continue-row__info {
		grid-area: info;
	}

	.nfs-continue-watching__list .nfs-continue-row > a.nfs-btn {
		grid-area: cta;
		width: 100%;
	}

	/* "Istoric abonamente": planul și perioada sus, iar suma și "Detalii" pe
	   rândul de dedesubt, la capete opuse. */
	.nfs-panel--subscriptions .nfs-continue-row {
		flex-direction: column;
		align-items: stretch;
		gap: 8px;
	}

	.nfs-panel--subscriptions .nfs-continue-row > div:last-child {
		justify-content: space-between;
	}

	.nfs-continue-row__title {
		font-size: 15px;
		line-height: 1.35;
	}

	.nfs-continue-row .nfs-progress {
		max-width: none;
	}

	/* "Comenzile mele": numărul, statusul, titlul și data se așază pe
	   verticală, iar totalul și meniul (⋮) trec pe un rând propriu dedesubt —
	   pe o singură linie, totalul și butonul striveau titlul comenzii. */
	.nfs-panel--orders .nfs-card {
		padding: 16px;
	}

	.nfs-order-row {
		flex-direction: column;
		align-items: stretch;
		gap: 12px;
		padding: 16px 0;
	}

	.nfs-order-row__head {
		flex-wrap: wrap;
		gap: 8px;
	}

	.nfs-order-row__side {
		justify-content: space-between;
		gap: 12px;
	}

	/* Panoul se deschide aliniat la dreapta butonului: pe ecrane înguste îi
	   dăm o limită, ca să nu iasă din marginea cardului. */
	.nfs-order-menu__panel {
		max-width: calc(100vw - 56px);
	}

	/* "Seminariile mele": nota de deasupra grilei. Textul și linkul nu mai
	   stau pe aceeași linie — propoziția se strângea într-o coloană îngustă,
	   iar linkul era împins în marginea din dreapta. */
	.nfs-notice {
		flex-direction: column;
		align-items: flex-start;
		gap: 10px;
		padding: 14px 16px;
		font-size: 13.5px;
		line-height: 1.5;
	}

	/* Linkul devine o acțiune clară, cu zonă de atins mai mare. */
	.nfs-notice .nfs-link {
		font-weight: 700;
		text-decoration: underline;
		text-decoration-color: var(--nfs-gold);
		text-decoration-thickness: 2px;
		text-underline-offset: 4px;
		padding: 2px 0;
	}

	/* Breadcrumb: pe ecran îngust, cele patru segmente (Acasă / Contul meu /
	   Seminariile mele / titlul seminarului) nu încap pe o linie. Fără
	   flex-wrap, rândul se revarsă și apare derulare orizontală. */
	.nfs-breadcrumb {
		flex-wrap: wrap;
		gap: 4px 8px;
		font-size: 12.5px;
		margin-bottom: 16px;
	}

	/* Titlul paginii curente poate fi foarte lung: îl tăiem cu "…" pe un
	   singur rând, în loc să umple trei. Nu e link, deci nu se pierde nimic
	   din navigare. */
	.nfs-breadcrumb__current {
		min-width: 0;
		max-width: 100%;
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}

	/* ---- Restul paginilor din cont ---- */

	/* Spațiere mai mică în carduri, ca rândurile să câștige lățime. */
	.nfs-panel .nfs-card {
		padding: 16px;
	}

	.nfs-card__header {
		flex-wrap: wrap;
		gap: 8px;
	}

	/* "Datele mele": butoanele de salvare/anulare, unul sub altul. */
	.nfs-edit-card__actions {
		flex-wrap: wrap;
		gap: 10px;
	}

	.nfs-edit-card__actions .nfs-btn {
		flex: 1 1 100%;
	}

	/* "Securitate și comunicări": textul sus, acțiunea pe toată lățimea. */
	.nfs-security-row {
		flex-direction: column;
		align-items: stretch;
		gap: 12px;
	}

	.nfs-security-row .nfs-btn {
		width: 100%;
	}

	.nfs-security-row--newsletter .nfs-toggle {
		align-self: flex-start;
	}

	/* "Descărcări": iconița și numele fișierului pe primul rând, butonul
	   de descărcare pe toată lățimea dedesubt. */
	.nfs-download-row {
		flex-wrap: wrap;
		gap: 12px 14px;
	}

	.nfs-download-row__info {
		flex: 1 1 60%;
	}

	.nfs-download-row > a.nfs-btn {
		flex: 1 1 100%;
	}

	/* Paginile de detaliu (comandă, abonament, vizionare seminar). Layout-ul
	   pe două coloane se pliază deja singur; aici doar strângem spațiile. */
	.nfs-watch-layout {
		gap: 18px;
	}

	.nfs-watch-header {
		gap: 16px;
		margin-bottom: 18px;
	}

	.nfs-watch-header__title {
		font-size: 22px;
	}

	.nfs-watch-header__subtitle {
		font-size: 14px;
	}

	/* Tabelul produselor din detaliul comenzii păstrează derularea orizontală
	   (containerul are deja overflow-x), dar cu spațiere mai mică încap mai
	   multe coloane pe ecran înainte de a fi nevoie să derulezi. */
	.nfs-order-table th,
	.nfs-order-table td {
		padding: 12px;
	}

	.nfs-order-table td {
		font-size: 13.5px;
	}

	.nfs-order-actions {
		padding: 18px 16px;
	}

	.nfs-order-actions .nfs-btn {
		flex: 1 1 100%;
	}

	/* Materialele de pe pagina de vizionare. */
	.nfs-file-box {
		padding: 14px 16px;
		gap: 12px;
	}

	.nfs-meta-list {
		gap: 14px;
	}
}

/* ---------- Checkout ---------- */

.nfs-checkout-hero {
	padding: 140px 24px 80px;
	background: var(--nfs-bg);
	border-top: 1px solid rgb(227, 232, 240);
	border-bottom: 1px solid rgb(227, 232, 240);
}

.nfs-checkout-hero__inner {
	max-width: 1400px;
	margin: 0 auto;
}

.nfs-checkout-hero__crumbs {
	display: flex;
	align-items: center;
	gap: 8px;
	font: 600 13px var(--nfs-font);
	color: var(--nfs-text-label);
	flex-wrap: wrap;
}

.nfs-checkout-hero__crumbs a {
	color: var(--nfs-text-label);
	text-decoration: none;
}

.nfs-checkout-hero__crumbs .is-current {
	color: var(--nfs-navy);
}

.nfs-checkout-hero__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	flex-wrap: wrap;
	margin-top: 16px;
}

.nfs-checkout-hero__title {
	font: 800 32px var(--nfs-font-heading);
	color: var(--nfs-navy);
	margin: 0;
}

.nfs-checkout-hero__title-accent {
	border-bottom: 4px solid var(--nfs-gold);
}

.nfs-checkout-hero__note {
	font-size: 15px;
	line-height: 1.6;
	color: var(--nfs-text-muted);
	margin: 10px 0 0;
}

.nfs-checkout-steps {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
	margin-top: 24px;
}

.nfs-checkout-steps__step {
	display: flex;
	align-items: center;
	gap: 9px;
	font: 700 13.5px var(--nfs-font);
	color: var(--nfs-text-label);
	text-decoration: none;
}

a.nfs-checkout-steps__step:hover {
	color: var(--nfs-navy);
}

.nfs-checkout-steps__step.is-active,
.nfs-checkout-steps__step.is-done {
	color: var(--nfs-navy);
}

.nfs-checkout-steps__dot {
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background: var(--nfs-border);
	color: var(--nfs-text-label);
	display: flex;
	align-items: center;
	justify-content: center;
	font: 800 11px var(--nfs-font-heading);
	flex-shrink: 0;
}

.nfs-checkout-steps__step.is-active .nfs-checkout-steps__dot,
.nfs-checkout-steps__step.is-done .nfs-checkout-steps__dot {
	background: var(--nfs-navy);
	color: var(--nfs-gold);
}

.nfs-checkout-steps__line {
	width: 40px;
	height: 2px;
	background: var(--nfs-border);
	flex-shrink: 0;
}

.nfs-checkout-steps__line.is-done {
	background: var(--nfs-gold);
}

/* Pasul curent (confirmarea): bulina aurie, ca in design — distinct de pasii
   parcursi, care sunt navy cu bifa. */
.nfs-checkout-steps__step.is-current {
	color: var(--nfs-navy);
}

.nfs-checkout-steps__step.is-current .nfs-checkout-steps__dot {
	background: var(--nfs-gold);
	color: var(--nfs-navy);
}

.nfs-checkout-steps__dot svg {
	width: 13px;
	height: 13px;
}

/* ================= CONFIRMARE COMANDA (checkout/thankyou.php)
   O singura coloana centrata, fara carduri si fara antet cu breadcrumb —
   varianta minimala a designului.
   ================= */

.nfs-confirm {
	max-width: 660px;
	margin: 0 auto;
	padding: 96px 0 120px;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
}

@media (max-width: 640px) {
	.nfs-confirm {
		padding: 56px 0 72px;
	}
}

.nfs-confirm__mark {
	width: 80px;
	height: 80px;
	border-radius: 50%;
	background: var(--nfs-gold);
	color: var(--nfs-navy);
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}

.nfs-confirm__mark svg {
	width: 38px;
	height: 38px;
}

.nfs-confirm__pill {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background: var(--nfs-bg);
	color: var(--nfs-navy);
	border: 1px solid rgba(3, 38, 87, 0.1);
	border-radius: 999px;
	padding: 7px 15px;
	font: 700 11.5px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	margin-top: 30px;
}

.nfs-confirm__title {
	font: 800 clamp(30px, 4.4vw, 44px) / 1.12 var(--nfs-font-heading);
	letter-spacing: -0.8px;
	color: var(--nfs-navy);
	margin: 20px 0 0;
	text-wrap: balance;
}

.nfs-confirm__title-accent {
	border-bottom: 6px solid var(--nfs-gold);
}

.nfs-confirm__text {
	font-size: 17px;
	line-height: 1.7;
	color: var(--nfs-text-muted);
	margin: 20px 0 0;
	max-width: 500px;
	text-wrap: pretty;
}

.nfs-confirm__text strong {
	color: var(--nfs-navy);
	font-weight: 700;
}

.nfs-confirm__line-plan {
	display: block;
	margin-top: 3px;
	font-size: 13px;
	font-weight: 500;
	line-height: 1.4;
	color: var(--nfs-text-muted);
}

/* Rândul despre abonament — ține locul blocului netradus al WCS. */
.nfs-confirm__sub {
	display: inline-flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin: 16px 0 0;
	padding: 10px 14px;
	border-radius: 999px;
	background: #f1f5fb;
	font-size: 15px;
	line-height: 1.5;
	color: var(--nfs-navy);
	text-wrap: pretty;
}

.nfs-confirm__sub a {
	font-weight: 700;
	color: var(--nfs-navy);
	text-decoration: underline;
	text-underline-offset: 3px;
}

@media (max-width: 640px) {
	.nfs-confirm__sub {
		display: block;
		border-radius: 12px;
		font-size: 14.5px;
	}

	.nfs-confirm__sub a {
		display: inline-block;
		margin-top: 4px;
	}
}

.nfs-confirm__actions {
	display: flex;
	gap: 12px;
	flex-wrap: wrap;
	justify-content: center;
	margin-top: 34px;
}

/* ---------- Rezumatul: comanda / data / total ---------- */

.nfs-confirm__meta {
	width: 100%;
	display: flex;
	gap: 40px;
	flex-wrap: wrap;
	justify-content: center;
	margin-top: 56px;
	padding: 30px 0;
	border-top: 1px solid var(--nfs-border);
	border-bottom: 1px solid var(--nfs-border);
}

.nfs-confirm__label {
	font: 700 10.5px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
}

.nfs-confirm__meta-value {
	font: 800 18px var(--nfs-font-heading);
	color: var(--nfs-navy);
	margin-top: 7px;
}

/* ---------- Stadiul comenzii ---------- */

.nfs-confirm__progress {
	width: 100%;
	max-width: 520px;
	margin-top: 52px;
}

.nfs-confirm__track {
	display: flex;
	align-items: center;
}

.nfs-confirm__dot {
	width: 18px;
	height: 18px;
	border-radius: 50%;
	border: 2px solid #cfd8e6;
	background: #fff;
	box-sizing: border-box;
	flex-shrink: 0;
}

.nfs-confirm__dot.is-done {
	background: var(--nfs-gold);
	border-color: var(--nfs-gold);
}

.nfs-confirm__dot.is-current {
	border-color: var(--nfs-gold);
}

.nfs-confirm__bar {
	flex: 1;
	height: 2px;
	background: var(--nfs-border);
}

.nfs-confirm__bar.is-done {
	background: var(--nfs-gold);
}

.nfs-confirm__steps {
	display: flex;
	gap: 12px;
	margin-top: 14px;
}

.nfs-confirm__step {
	flex: 1;
	font: 700 13px var(--nfs-font);
	color: var(--nfs-text-label);
}

.nfs-confirm__step.is-reached {
	color: var(--nfs-navy);
}

.nfs-confirm__step:first-child {
	text-align: left;
}

.nfs-confirm__step:nth-child(2) {
	text-align: center;
}

.nfs-confirm__step:last-child {
	text-align: right;
}

/* ---------- Produsele comandate ---------- */

.nfs-confirm__items {
	width: 100%;
	max-width: 520px;
	margin-top: 56px;
}

.nfs-confirm__lines {
	margin-top: 18px;
}

.nfs-confirm__line {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 18px;
	padding: 16px 0;
	border-bottom: 1px solid var(--nfs-border);
	text-align: left;
}

.nfs-confirm__line-name {
	min-width: 0;
	font: 600 15px var(--nfs-font);
	color: var(--nfs-navy);
}

.nfs-confirm__line-value {
	font: 700 14.5px var(--nfs-font);
	color: var(--nfs-text-label);
	white-space: nowrap;
}

.nfs-confirm__line--muted .nfs-confirm__line-name {
	color: var(--nfs-text-muted);
}

.nfs-confirm__line--discount .nfs-confirm__line-value {
	color: #0d6b3f;
}

.nfs-confirm__line--total {
	border-bottom: none;
	padding-top: 20px;
}

.nfs-confirm__line--total .nfs-confirm__line-name {
	font: 700 15px var(--nfs-font);
}

.nfs-confirm__line--total .nfs-confirm__line-value {
	font: 800 20px var(--nfs-font-heading);
	color: var(--nfs-navy);
}

/* ---------- Date bancare (transfer bancar direct) ---------- */

.nfs-confirm__bank {
	width: 100%;
	max-width: 520px;
	margin-top: 56px;
	padding: 26px 28px;
	border: 1px solid var(--nfs-gold);
	border-radius: var(--nfs-radius);
	background: #fffdf2;
	text-align: left;
}

.nfs-confirm__bank-title {
	font: 800 17px var(--nfs-font-heading);
	color: var(--nfs-navy);
}

.nfs-confirm__bank-note {
	font: 600 13px var(--nfs-font);
	line-height: 1.6;
	color: var(--nfs-text-muted);
	margin: 8px 0 0;
}

.nfs-confirm__bank-row {
	margin-top: 18px;
	padding-top: 18px;
	border-top: 1px solid var(--nfs-border);
}

.nfs-confirm__bank-row:first-of-type {
	border-top: none;
	padding-top: 0;
}

.nfs-confirm__bank-account {
	font: 700 15px var(--nfs-font-heading);
	color: var(--nfs-navy);
	margin-bottom: 12px;
}

.nfs-confirm__bank-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr));
	gap: 14px;
}

.nfs-confirm__bank-value {
	font: 600 14.5px var(--nfs-font);
	color: var(--nfs-navy);
	margin-top: 5px;
}

/* IBAN-ul e singurul lucru pe care omul chiar il copiaza: monospace ca
   cifrele sa nu joace, si selectabil dintr-un click. */
.nfs-confirm__bank-value--iban {
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 15px;
	letter-spacing: 0.02em;
	user-select: all;
}

.nfs-confirm__help {
	font: 600 13.5px var(--nfs-font);
	line-height: 1.7;
	color: var(--nfs-text-label);
	margin: 48px 0 0;
	max-width: 440px;
}

.nfs-confirm__help a {
	color: var(--nfs-navy);
	text-decoration: none;
	border-bottom: 2px solid var(--nfs-gold);
}

.nfs-checkout__layout {
	max-width: 1400px;
	margin: 0 auto;
	padding: 50px 0;
	display: flex;
	align-items: flex-start;
	gap: 28px;
	flex-wrap: wrap;
}

@media (max-width: 640px) {
	.nfs-checkout__layout {
		padding: 32px 0;
	}
}

.nfs-checkout__main {
	flex: 1 1 540px;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 24px;
}

/* Sumarul ramane pe ecran cat timp se completeaza formularul: butonul de plata
   si bifa de termeni sunt in el, iar metoda de plata e tocmai jos in coloana
   principala — fara sticky, omul completeaza cardul si trebuie sa urce inapoi
   ca sa poata plati.
   Offset-ul de 90px lasa loc antetului fix al site-ului. Numai pe ecrane late:
   sub 1024px coloanele se aseaza una sub alta si sticky n-ar avea sens. */
@media (min-width: 1025px) {
	.nfs-checkout__aside {
		position: sticky;
		top: 90px;
		align-self: flex-start;
		/* Un sumar lung (multe produse) ar depasi ecranul si ar ascunde exact
		   butonul pe care vrem sa-l tinem la vedere. */
		max-height: calc(100vh - 110px);
		overflow-y: auto;
	}
}

.nfs-checkout__aside {
	flex: 1 1 320px;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 24px;
}

/* Fara sticky: sumarul e lung (produse + totaluri + cupon + termeni + buton),
   iar lipit de viewport ajungea sa depaseasca inaltimea ecranului si sa taie
   butonul pe laptopuri. */
.nfs-checkout__summary-card {
	position: static;
}

.nfs-checkout__help-card {
	background: var(--nfs-bg);
}

/* Butoanele cu contur de pe fundal gri (antetul paginii si cardul de ajutor)
   sunt ALBE in design, nu transparente — pe gri, transparent se pierde.
   Fixam si line-height:1 plus padding explicit: varianta mostenita avea
   line-height 1.2, iar tema mai adauga padding peste, de unde spatiul inegal
   sus-jos. */
.nfs-checkout-hero .nfs-btn--outline,
.nfs-checkout__help-card .nfs-btn--outline {
	background: #fff !important;
	color: var(--nfs-navy) !important;
	border: 1px solid rgba(3, 38, 87, 0.25) !important;
	padding: 14px 28px !important;
	line-height: 1 !important;
	height: auto !important;
	min-height: 0 !important;
}

/* La hover ramane ALB: varianta implicita vira spre gri, exact culoarea
   fundalului pe care sta butonul, si parea ca dispare. Miscarea de ridicare
   (.nfs-btn:hover) ramane, iar conturul se inchide ca sa se simta reactia. */
.nfs-checkout-hero .nfs-btn--outline:hover,
.nfs-checkout__help-card .nfs-btn--outline:hover,
.nfs-checkout-hero .nfs-btn--outline:focus,
.nfs-checkout__help-card .nfs-btn--outline:focus {
	background: #fff !important;
	color: var(--nfs-navy) !important;
	border-color: var(--nfs-navy) !important;
}

/* Plasa pentru wpautop: daca vreun <br> ajunge totusi in interiorul unui
   buton, nu trebuie sa-i strice inaltimea. */
.nfs-checkout .nfs-btn br,
.nfs-checkout-hero .nfs-btn br {
	display: none;
}

/* ---------- Ce mai agață EVENTUAL alte plugin-uri de
   woocommerce_before_checkout_form (cuponul nativ nu mai e printre ele — vezi
   NFS_Checkout::__construct()), mutat din baner-ul de deasupra formularului
   aici, în sidebar ---------- */

.nfs-checkout__extras {
	display: flex;
	flex-direction: column;
	gap: 20px;
	margin-top: 22px;
	padding-top: 22px;
	border-top: 1px solid var(--nfs-border);
}

.nfs-checkout__extras .woocommerce-form-coupon-toggle {
	display: none !important;
}

/* ---------- Cod de reducere (câmp propriu, aplicat prin AJAX — vezi
   applyCoupon în account.js și templates/checkout/review-order.php) ---------- */

/* Ritmul din design: peste tot intre blocurile sumarului, 22px deasupra liniei
   si 22px sub ea. Inainte cuponul avea 18px sus si primea alt spatiu jos, de
   unde asimetria vizibila. */
.nfs-coupon {
	margin: 22px 0 0;
	padding-top: 22px;
	border-top: 1px solid var(--nfs-border);
}

.nfs-coupon__label {
	display: block;
	font: 700 10.5px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
	margin: 0 0 8px;
}

.nfs-coupon__row {
	display: flex;
	align-items: stretch;
	gap: 10px;
}

.nfs-checkout .nfs-coupon__input {
	box-sizing: border-box;
	flex: 1 1 auto;
	min-width: 0;
	height: 46px;
	border: 1px solid var(--nfs-border) !important;
	border-radius: 8px !important;
	background: var(--nfs-bg) !important;
	padding: 0 14px !important;
	font: 500 14.5px var(--nfs-font) !important;
	color: var(--nfs-navy) !important;
	box-shadow: none !important;
}

.nfs-checkout .nfs-coupon__input:focus {
	outline: none;
	border-color: var(--nfs-navy) !important;
	background: #fff !important;
}

.nfs-checkout .nfs-coupon__button {
	flex: 0 0 auto;
	height: 46px;
	white-space: nowrap;
	background: transparent;
	color: var(--nfs-navy);
	border: 1px solid rgba(3, 38, 87, 0.25);
	border-radius: 8px;
	padding: 0 22px;
	font: 700 13.5px var(--nfs-font);
	cursor: pointer;
	transition: border-color 0.15s ease, background 0.15s ease, opacity 0.15s ease;
}

/* Acelasi hover ca butoanele cu contur din antet si din cardul de ajutor:
   fundalul ramane alb, se inchide doar conturul, plus ridicarea. Varianta
   veche vira spre gri si arata ca si cum butonul s-ar stinge.

   CULOAREA textului e obligatorie aici: tema pune color:#fff pe butoane la
   hover, iar noi fixasem doar fundalul — iesea alb pe alb, adica text
   invizibil. */
.nfs-checkout .nfs-coupon__button:hover,
.nfs-checkout .nfs-coupon__button:focus,
.nfs-checkout .nfs-coupon__button:active {
	background: #fff !important;
	color: var(--nfs-navy) !important;
	border-color: var(--nfs-navy) !important;
	transform: translateY(-2px);
}

.nfs-checkout .nfs-coupon__button:disabled:hover {
	transform: none;
	border-color: rgba(3, 38, 87, 0.25) !important;
}

.nfs-checkout .nfs-coupon__button:disabled {
	opacity: 0.55;
	cursor: default;
}

.nfs-coupon__feedback {
	font: 600 12.5px var(--nfs-font);
	line-height: 1.5;
	color: var(--nfs-text-muted);
	margin-top: 8px;
}

/* Fără text, div-ul tot ar ocupa înălțimea unei linii sub câmp. */
.nfs-coupon__feedback:empty {
	display: none;
}

.nfs-coupon__feedback.is-success {
	color: #1a7f4b;
}

.nfs-coupon__feedback.is-error {
	color: #c0392b;
}

.nfs-checkout__help-text {
	font-size: 14px;
	line-height: 1.65;
	color: var(--nfs-text-muted);
	margin: 12px 0 18px;
}

/* Câmpuri reale WooCommerce (billing/shipping/additional) + cele adăugate de
   SmartBill (CIF/Denumire firmă) — restilizate doar prin CSS, nu prin
   suprascriere de template, ca bucla lor de câmpuri (inclusiv cele injectate
   de alte plugin-uri prin filtre) să rămână intactă. */

.nfs-checkout #customer_details {
	display: flex;
	flex-direction: column;
	margin: 0 !important;
}

/* Spațiul dintre .col-1 (facturare) și .col-2 (livrare) — pe margin-top,
   nu pe gap: gap adăuga spațiu inclusiv când .col-2 era colapsat/gol,
   creând un gol vizibil fără rost deasupra. */
.nfs-checkout #customer_details .col-2 {
	margin-top: 24px !important;
}

/* Fără livrare reală disponibilă, form-shipping.php nu mai afișează nimic
   (vezi templates/checkout/form-shipping.php) — .col-2 rămâne complet gol;
   fără asta, tot ar păstra margin-top-ul de mai sus ca spațiu gol. */
.nfs-checkout #customer_details .col-2:empty {
	display: none !important;
	margin: 0 !important;
}

.nfs-checkout #customer_details .col-1,
.nfs-checkout #customer_details .col-2 {
	width: 100%;
	display: flex;
	flex-direction: column;
	gap: 24px;
	margin-left: 0 !important;
	margin-right: 0 !important;
	margin-bottom: 0 !important;
}

/* Elementul de "order attribution" (tracking, doar inputuri ascunse) al
   WooCommerce e primul copil din .col-1 — cu .col-1 devenit flex column cu
   gap, el conta ca un element FĂRĂ conținut vizibil, dar gap-ul tot adăuga
   spațiu ÎNTRE el și cardul "Datele tale" de după el, creând un gol vizibil
   deasupra. display:none îl scoate complet din flux, deci nu mai consumă
   gap — inputurile lui ascunse se trimit oricum normal la submit. */
.nfs-checkout wc-order-attribution-inputs {
	display: none !important;
}

.nfs-checkout wc-order-attribution-inputs + p {
	display: none !important;
}

.nfs-checkout .woocommerce-billing-fields,
.nfs-checkout .woocommerce-shipping-fields,
.nfs-checkout .woocommerce-additional-fields {
	background: var(--nfs-card) !important;
	border: 1px solid var(--nfs-border) !important;
	border-radius: var(--nfs-radius) !important;
	padding: 32px !important;
}

.nfs-checkout .woocommerce-billing-fields > h3,
.nfs-checkout .woocommerce-additional-fields > h3,
.nfs-checkout__box-title {
	font: 700 20px var(--nfs-font-heading) !important;
	color: var(--nfs-navy) !important;
	margin: 0 0 22px !important;
}

.nfs-checkout .shipping_address {
	margin-top: 22px;
}

.nfs-checkout .woocommerce-billing-fields__field-wrapper,
.nfs-checkout .woocommerce-shipping-fields__field-wrapper,
.nfs-checkout .woocommerce-additional-fields__field-wrapper {
	display: grid !important;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)) !important;
	gap: 18px 20px;
}

/* "Datele tale" — Nume+Prenume pe un rând, Telefon+Email pe altul. Folosim
   același sistem de span-uri ca restul (vezi mai jos): grid de 6 coloane,
   fiecare câmp span 3 = jumătate de rând. */
.nfs-checkout #billing_first_name_field,
.nfs-checkout #billing_last_name_field,
.nfs-checkout #billing_phone_field,
.nfs-checkout #billing_email_field {
	grid-column: span 3 !important;
}

/* Livrare: Prenume + Nume + Telefon, toate trei pe acelasi rand (o treime
   fiecare din grid-ul de 6 coloane). Ordinea o da data-priority, setata in
   NFS_Checkout::adjust_checkout_fields(). */
.nfs-checkout #shipping_first_name_field,
.nfs-checkout #shipping_last_name_field,
.nfs-checkout #shipping_phone_field {
	grid-column: span 2 !important;
}

/* "Tip Client" la livrare: informatie dublata — entitatea fiscala o stabileste
   sectiunea de facturare. Ramane in formular (SmartBill primeste o valoare
   valida), dar ascuns si sincronizat din JS cu selectia de sus — vezi
   syncShippingClientType() in account.js. */
.nfs-checkout #smartbill_shipping_type_field {
	display: none !important;
}

/*
 * LAYOUT PE GRID PLAT — nu pe rânduri proprii.
 *
 * Scriptul nativ WooCommerce address-i18n.js ia TOATE elementele .form-row
 * din wrapper, le sortează după data-priority și le re-atașează direct la
 * wrapper (semnătura lui e atributul data-o_class pe câmpuri). Orice div de
 * rând construit de noi era golit imediat după încărcare, iar câmpurile
 * ieșeau frați direcți — de-aia proporțiile păreau mereu greșite, deși
 * sursa HTML arăta corect.
 *
 * Soluția: nu mai încercăm să grupăm câmpuri în rânduri. Wrapper-ul e un
 * grid de 6 coloane (6 = cel mai mic multiplu comun pentru 1/2 și 1/3), iar
 * fiecare câmp își cere lățimea prin span: 6 = rând întreg, 3 = jumătate,
 * 2 = o treime. Rezultatul nu depinde de structura DOM, deci nici de ce
 * mută sau reordonează alte scripturi.
 */
.nfs-checkout .woocommerce-billing-fields__field-wrapper,
.nfs-checkout .woocommerce-shipping-fields__field-wrapper {
	grid-template-columns: repeat(6, 1fr) !important;
}

/* Implicit: rând întreg. Câmpurile care trebuie să împartă un rând
   suprascriu mai jos. */
.nfs-checkout .woocommerce-billing-fields__field-wrapper > *,
.nfs-checkout .woocommerce-shipping-fields__field-wrapper > * {
	grid-column: span 6;
}

/* Jumătate de rând: CIF + Denumire companie. */
.nfs-checkout #smartbill_billing_cif_field,
.nfs-checkout #smartbill_billing_company_name_field,
.nfs-checkout #smartbill_shipping_cif_field,
.nfs-checkout #smartbill_shipping_company_name_field {
	grid-column: span 3 !important;
}

/* O treime: Județ + Localitate/Sector (mutual exclusive, mereu unul vizibil)
   + Cod poștal — exact 3 vizibile pe rând. */
.nfs-checkout #billing_state_field,
.nfs-checkout #billing_city_field,
.nfs-checkout #billing_bucuresti_sector_field,
.nfs-checkout #billing_postcode_field,
.nfs-checkout #shipping_state_field,
.nfs-checkout #shipping_city_field,
.nfs-checkout #shipping_bucuresti_sector_field,
.nfs-checkout #shipping_postcode_field {
	grid-column: span 2 !important;
}

/* Rândurile vechi nu se mai generează, dar dacă rămâne vreunul gol în DOM
   (cache, altă versiune), nu trebuie să ocupe spațiu. */
.nfs-checkout__address-row,
.nfs-checkout__field-slot {
	display: contents;
}

@media (max-width: 640px) {
	.nfs-checkout .woocommerce-billing-fields__field-wrapper > *,
	.nfs-checkout .woocommerce-shipping-fields__field-wrapper > *,
	.nfs-checkout #smartbill_billing_cif_field,
	.nfs-checkout #smartbill_billing_company_name_field,
	.nfs-checkout #billing_state_field,
	.nfs-checkout #billing_city_field,
	.nfs-checkout #billing_bucuresti_sector_field,
	.nfs-checkout #billing_postcode_field,
	.nfs-checkout #billing_first_name_field,
	.nfs-checkout #billing_last_name_field,
	.nfs-checkout #billing_phone_field,
	.nfs-checkout #billing_email_field,
	.nfs-checkout #smartbill_shipping_cif_field,
	.nfs-checkout #smartbill_shipping_company_name_field,
	.nfs-checkout #shipping_state_field,
	.nfs-checkout #shipping_city_field,
	.nfs-checkout #shipping_bucuresti_sector_field,
	.nfs-checkout #shipping_postcode_field,
	.nfs-checkout #shipping_first_name_field,
	.nfs-checkout #shipping_last_name_field,
	.nfs-checkout #shipping_phone_field {
		grid-column: span 6 !important;
	}
}

/* Un <p></p> gol apare uneori la reîncărcarea paginii (nu de la noi — probabil
   un alt plugin de câmpuri de checkout) chiar înaintea primului câmp real,
   ocupând o celulă din grid și decalând Prenume/Nume pe coloana greșită.
   display:none îl scoate complet din grid, nu doar vizual. */
/* Oriunde in formular, nu doar in wrapperele de campuri: un <p> gol vine fie
   din wpautop, fie din reparatia browserului pentru un </p> orfan, si singurul
   lui efect e spatiul ocupat. JS-ul (removeEmptyParagraphs) le si sterge,
   inclusiv pe cele cu doar spatii, pe care :empty nu le poate selecta —
   regula asta actioneaza insa imediat, fara sa astepte JS-ul. */
.nfs-checkout p:empty {
	display: none !important;
}

@media (max-width: 480px) {
	.nfs-checkout .nfs-checkout__identity-fields {
		grid-template-columns: 1fr !important;
	}
}

.nfs-checkout .woocommerce-billing-fields__field-wrapper .form-row-wide,
.nfs-checkout .woocommerce-additional-fields__field-wrapper .form-row-wide {
	grid-column: 1 / -1;
}

/* WooCommerce randează Nume/Prenume ca .form-row-first/.form-row-last, cu
   width/float proprii (47%/flotate) — asta lupta cu grid-ul nostru și le
   făcea să apară mici, cu spațiu mare între ele. Le neutralizăm ca să se
   comporte ca celule normale de grid (2 pe rând, la lățime egală). */
.nfs-checkout .woocommerce-billing-fields__field-wrapper .form-row-first,
.nfs-checkout .woocommerce-billing-fields__field-wrapper .form-row-last,
.nfs-checkout .woocommerce-shipping-fields__field-wrapper .form-row-first,
.nfs-checkout .woocommerce-shipping-fields__field-wrapper .form-row-last {
	width: auto !important;
	float: none !important;
}

/* "Municipiu/localitate" are 2 steluțe (una de la pluginul de oraș, una
   nativă WooCommerce) — păstrăm doar cea nativă. */
.nfs-checkout #billing_city_field label abbr.required,
.nfs-checkout #shipping_city_field label abbr.required {
	display: none;
}

/* Țara e mereu România (livrăm doar aici) — rămâne trimisă în formular,
   doar ascunsă vizual. */
.nfs-checkout #billing_country_field,
.nfs-checkout #shipping_country_field {
	display: none !important;
}

/*
 * Ordinea vizuală NU se mai face din CSS ('order'). Scriptul nativ
 * address-i18n.js (WooCommerce) rearanjează oricum câmpurile în DOM după
 * data-priority, deci ordinea o dăm de-acolo (vezi render_raw_field()):
 * Județ 80 → Localitate 85 → Sector 87 → Cod poștal 90. Regulile vechi de
 * 'order' și 'grid-column: auto' au fost scoase — intrau în conflict cu
 * span-urile de mai sus (Sector rămânea pe order:0 și sărea în fața
 * Județului, iar 'auto' anula span-ul de 1/3).
 */

.nfs-checkout .woocommerce-billing-fields__field-wrapper > .form-row > label,
.nfs-checkout .woocommerce-shipping-fields__field-wrapper > .form-row > label,
.nfs-checkout .woocommerce-additional-fields__field-wrapper > .form-row > label {
	display: block !important;
	font: 700 10.5px var(--nfs-font) !important;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nfs-text-label) !important;
	margin-bottom: 8px !important;
}

.nfs-checkout .woocommerce-billing-fields__field-wrapper input.input-text,
.nfs-checkout .woocommerce-billing-fields__field-wrapper select,
.nfs-checkout .woocommerce-billing-fields__field-wrapper textarea,
.nfs-checkout .woocommerce-shipping-fields__field-wrapper input.input-text,
.nfs-checkout .woocommerce-shipping-fields__field-wrapper select,
.nfs-checkout .woocommerce-shipping-fields__field-wrapper textarea,
.nfs-checkout .woocommerce-additional-fields__field-wrapper input.input-text,
.nfs-checkout .woocommerce-additional-fields__field-wrapper select,
.nfs-checkout .woocommerce-additional-fields__field-wrapper textarea,
.nfs-checkout .select2-container .select2-selection--single {
	box-sizing: border-box !important;
	width: 100% !important;
	height: auto !important;
	border: 1px solid var(--nfs-border) !important;
	border-radius: 8px !important;
	background: var(--nfs-bg) !important;
	padding: 12px 14px !important;
	font: 500 14.5px var(--nfs-font) !important;
	color: var(--nfs-navy) !important;
	line-height: 1.4 !important;
}

/* ---------- Scroll orizontal: <select>-ul ascuns de select2 ----------

   select2 lasa in DOM <select>-ul original, ascuns cu .select2-hidden-accessible
   (position:absolute, width/height 1px, clip). Regula noastra de stilizare a
   inputurilor vizeaza "...__field-wrapper select", are specificitate mai mare
   si ii impunea width:100% + height:auto + padding — asa ajungea #billing_state
   sa aiba o cutie de ~1900px. Clip-ul il face invizibil, DAR clip nu schimba
   layout-ul: cutia ramane si extinde zona de scroll a paginii.

   Restauram aici exact ascunderea proprie a lui select2, cu specificitate mai
   mare decat regula noastra de inputuri. */

.nfs-checkout .woocommerce-billing-fields__field-wrapper select.select2-hidden-accessible,
.nfs-checkout .woocommerce-shipping-fields__field-wrapper select.select2-hidden-accessible,
.nfs-checkout select.select2-hidden-accessible,
.nfs-cart select.select2-hidden-accessible {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	min-height: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	overflow: hidden !important;
	clip: rect(0 0 0 0) !important;
	clip-path: inset(50%) !important;
	white-space: nowrap !important;
}

.nfs-checkout .select2-container .select2-selection__rendered {
	padding: 0 !important;
	line-height: 1.4 !important;
	color: var(--nfs-navy) !important;
}

.nfs-checkout .select2-container .select2-selection__arrow {
	height: 100% !important;
}

/* ---------- Scroll orizontal: select2 + capacitatea de a se micsora ----------

   Select2 scrie latimea INLINE, in pixeli, calculata la initializare din
   elementul <select> original (ex. style="width: 724px"). Cand se
   initializeaza intr-un container ascuns — .shipping_address e display:none
   pana bifezi "Livrezi la o alta adresa" — masuratoarea iese gresita si
   ramane asa.

   Separat, elementele de grid au implicit min-width:auto, deci NU se pot
   micsora sub latimea continutului lor: un select2 de 724px nu doar ca iese
   din coloana, ci largeste efectiv coloana si impinge toata pagina.

   Rezolvam ambele: latime 100% peste cea inline, si min-width:0 pe randuri,
   ca grid-ul sa poata strange coloanele la loc. */

.nfs-checkout .select2-container {
	width: 100% !important;
	max-width: 100%;
}

.nfs-checkout .form-row,
.nfs-checkout .nfs-checkout__raw-field,
.nfs-checkout .woocommerce-input-wrapper {
	min-width: 0;
}

/* Dropdown-ul select2 e atasat la <body>, in afara formularului, tot cu
   latime inline — il tinem si pe el in ecran. */
.select2-container--open .select2-dropdown {
	max-width: 100vw;
}

.nfs-checkout .woocommerce-billing-fields__field-wrapper input.input-text:focus,
.nfs-checkout .woocommerce-shipping-fields__field-wrapper input.input-text:focus,
.nfs-checkout .woocommerce-additional-fields__field-wrapper input.input-text:focus {
	outline: none;
	border-color: var(--nfs-navy) !important;
	background: #fff !important;
}

/* Toggle-ul Persoană fizică/juridică al SmartBill — restilizat ca pill navy/gold. */
.sb-client-type-radios {
	display: inline-flex;
	gap: 6px;
	border: 1px solid var(--nfs-border);
	border-radius: 10px;
	padding: 5px;
	margin-top: 8px;
}

.sb-radio-item {
	position: relative;
}

.sb-radio-item .input-radio {
	position: absolute;
	opacity: 0;
}

.sb-radio-label {
	display: block !important;
	cursor: pointer;
	border-radius: 7px !important;
	padding: 9px 14px !important;
	font: 700 13.5px var(--nfs-font) !important;
	line-height: 1.3 !important;
	color: var(--nfs-text-muted) !important;
	white-space: nowrap;
	margin: 0 !important;
	text-transform: none !important;
	letter-spacing: normal !important;
}

.sb-radio-item .input-radio:checked + .sb-radio-label {
	background: var(--nfs-navy) !important;
	color: #fff !important;
}

/* ================= PAGINA DE COȘ (cart/cart.php, cart/cart-empty.php)
   Refoloseste antetul, cardurile si randurile de sumar de la checkout.
   ================= */

.nfs-cart__layout {
	max-width: 1400px;
	margin: 0 auto;
	padding: 50px 0;
	display: flex;
	align-items: flex-start;
	gap: 28px;
	flex-wrap: wrap;
}

@media (max-width: 640px) {
	.nfs-cart__layout {
		padding: 32px 0;
	}
}

.nfs-cart__main {
	flex: 1 1 540px;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 24px;
}

.nfs-cart__aside {
	flex: 1 1 320px;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 24px;
}

/* Cardul de produse isi tine padding-ul pe randuri, ca liniile despartitoare
   sa mearga de la un capat la altul. */
.nfs-cart__items-card {
	padding: 0 !important;
	overflow: hidden;
}

.nfs-cart__items-head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 20px;
	flex-wrap: wrap;
	padding: 26px 32px 22px;
	border-bottom: 1px solid var(--nfs-border);
}

.nfs-cart__items-head .nfs-checkout__box-title {
	margin: 0 !important;
}

.nfs-cart__clear {
	font: 700 13px var(--nfs-font);
	color: var(--nfs-text-label);
	text-decoration: none;
	transition: color 0.15s ease;
}

.nfs-cart__clear:hover {
	color: #c0392b;
}

.nfs-cart-item {
	display: flex;
	align-items: flex-start;
	gap: 18px;
	flex-wrap: wrap;
	padding: 24px 32px;
	border-bottom: 1px solid var(--nfs-border);
}

.nfs-cart-item__media {
	flex-shrink: 0;
	width: 104px;
	height: 78px;
	border-radius: 10px;
	overflow: hidden;
	background: var(--nfs-bg);
}

.nfs-cart-item__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.nfs-cart-item__body {
	min-width: 0;
	flex: 1 1 220px;
}

.nfs-cart-item__tag {
	display: inline-block;
	background: var(--nfs-bg);
	color: var(--nfs-text-muted);
	border: 1px solid var(--nfs-border);
	border-radius: 999px;
	padding: 4px 12px;
	font: 700 11px var(--nfs-font);
}

.nfs-cart-item__title {
	display: block;
	font: 700 17px var(--nfs-font-heading);
	color: var(--nfs-navy);
	line-height: 1.35;
	margin-top: 10px;
	text-decoration: none;
}

a.nfs-cart-item__title:hover {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.nfs-cart-item__meta,
.nfs-cart-item__body .stock {
	font: 600 13px var(--nfs-font);
	color: var(--nfs-text-label);
	margin-top: 6px;
}

.nfs-cart-item__meta p {
	margin: 0;
}

.nfs-cart-item__actions {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
	margin-top: 16px;
}

.nfs-cart-item__qty {
	display: flex;
	align-items: center;
	border: 1px solid var(--nfs-border);
	border-radius: 8px;
	overflow: hidden;
}

/* Toate proprietatile cu !important: tema coloreaza butoanele cu accentul ei
   (conturul roz din captura) si le da propriile raze si umbre. */
.nfs-cart .nfs-cart-item__qty-btn {
	width: 34px !important;
	height: 36px !important;
	min-height: 0 !important;
	display: flex !important;
	align-items: center;
	justify-content: center;
	background: #fff !important;
	border: none !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	cursor: pointer;
	font: 700 17px var(--nfs-font) !important;
	line-height: 1 !important;
	color: var(--nfs-text-muted) !important;
	padding: 0 !important;
	text-transform: none !important;
	letter-spacing: normal !important;
}

.nfs-cart .nfs-cart-item__qty-btn:first-child {
	border-right: 1px solid var(--nfs-border) !important;
}

.nfs-cart .nfs-cart-item__qty-btn:last-child {
	border-left: 1px solid var(--nfs-border) !important;
}

.nfs-cart .nfs-cart-item__qty-btn:hover,
.nfs-cart .nfs-cart-item__qty-btn:focus {
	background: var(--nfs-bg) !important;
	color: var(--nfs-navy) !important;
	transform: none !important;
}

/* Input-ul nativ de cantitate: fara sageti proprii, ca stepperul nostru sa fie
   singurul mod de a-l schimba vizual. */
.nfs-cart-item__qty .quantity {
	margin: 0 !important;
	float: none !important;
}

.nfs-cart-item__qty input.qty {
	width: 44px !important;
	height: 36px !important;
	border: none !important;
	border-radius: 0 !important;
	background: #fff !important;
	text-align: center;
	padding: 0 !important;
	font: 700 14.5px var(--nfs-font) !important;
	color: var(--nfs-navy) !important;
	box-shadow: none !important;
	-moz-appearance: textfield;
}

.nfs-cart-item__qty input.qty::-webkit-outer-spin-button,
.nfs-cart-item__qty input.qty::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

/* Link-ul de stergere poarta si clasa nativa .remove, pe care WooCommerce si
   tema o stilizeaza ca pe un "×" mare si rosu (de aici "Elimină" urias din
   captura). Rescriem complet, cu !important, inclusiv dimensiunile impuse de
   regula nativa a.remove{width:1em;height:1em;font-size:1.5em}. */
.nfs-cart .nfs-cart-item__remove,
.nfs-cart a.remove.nfs-cart-item__remove {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	gap: 7px;
	width: auto !important;
	height: 36px !important;
	padding: 0 14px !important;
	border: 1px solid var(--nfs-border) !important;
	border-radius: 8px !important;
	background: #fff !important;
	color: var(--nfs-text-label) !important;
	font: 700 12.5px var(--nfs-font) !important;
	line-height: 1 !important;
	text-decoration: none !important;
	transition: background 0.18s ease, color 0.18s ease, border-color 0.18s ease;
}

.nfs-cart .nfs-cart-item__remove svg {
	width: 14px;
	height: 14px;
	flex-shrink: 0;
}

.nfs-cart .nfs-cart-item__remove:hover,
.nfs-cart a.remove.nfs-cart-item__remove:hover {
	background: #fdecea !important;
	border-color: #c0392b !important;
	color: #c0392b !important;
}

/* Cat timp se actualizeaza coșul prin AJAX. */
.nfs-cart.is-loading {
	opacity: 0.55;
	pointer-events: none;
	transition: opacity 0.15s ease;
}

.nfs-cart-item__price {
	text-align: right;
	flex-shrink: 0;
}

.nfs-cart-item__total {
	font: 800 21px var(--nfs-font-heading);
	color: var(--nfs-navy);
}

.nfs-cart-item__total del {
	font-size: 14px;
	font-weight: 600;
	color: var(--nfs-text-label);
}

.nfs-cart-item__unit {
	font: 600 12.5px var(--nfs-font);
	color: var(--nfs-text-label);
	margin-top: 4px;
}

/* Butonul nativ de actualizare: ascuns vizual, dar focusabil — fara JS ramane
   singura cale de a schimba cantitatile. */
.nfs-cart__update {
	padding: 0;
	height: 0;
	overflow: hidden;
}

.nfs-cart__update:focus-within {
	height: auto;
	padding: 18px 32px;
}

.nfs-cart__summary-note {
	font: 600 12.5px var(--nfs-font);
	line-height: 1.6;
	color: var(--nfs-text-label);
	margin: 10px 0 0;
}

.nfs-cart__checkout {
	display: block;
	width: 100%;
	box-sizing: border-box;
	text-align: center;
	margin-top: 18px;
}

.nfs-cart__info-list {
	list-style: none;
	margin: 14px 0 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.nfs-cart__info-list li {
	position: relative;
	padding-left: 20px;
	font: 500 14px var(--nfs-font);
	line-height: 1.6;
	color: var(--nfs-text-muted);
}

.nfs-cart__info-list li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 8px;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--nfs-gold);
}

/* ---------- Coș gol ---------- */

/* align-items:stretch e OBLIGATORIU aici: regula de baza .nfs-cart__layout
   pune flex-start (corect pentru layout-ul pe 2 coloane), dar pe o coloana
   flex-start face copiii sa se stranga la latimea continutului — panoul si
   grila de categorii ieseau inguste si lipite la stanga. */
.nfs-cart__layout--empty {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 28px;
}

.nfs-cart__empty {
	text-align: center;
	padding: 76px 40px !important;
	background: var(--nfs-bg) !important;
	display: flex;
	flex-direction: column;
	align-items: center;
}

/* Cercul alb cu pictograma de cos + bulina aurie cu "+" in colt. */
.nfs-cart__empty-icon {
	position: relative;
	width: 116px;
	height: 116px;
	border-radius: 50%;
	background: #fff;
	border: 1px solid var(--nfs-border);
	color: var(--nfs-navy);
	display: flex;
	align-items: center;
	justify-content: center;
}

.nfs-cart__empty-icon > svg {
	width: 48px;
	height: 48px;
}

.nfs-cart__empty-badge {
	position: absolute;
	right: -4px;
	bottom: -4px;
	width: 36px;
	height: 36px;
	border-radius: 50%;
	background: var(--nfs-gold);
	color: var(--nfs-navy);
	display: flex;
	align-items: center;
	justify-content: center;
}

.nfs-cart__empty-badge svg {
	width: 17px;
	height: 17px;
}

.nfs-cart__empty-title {
	font: 800 28px var(--nfs-font-heading);
	color: var(--nfs-navy);
	margin: 32px 0 0;
	letter-spacing: -0.3px;
}

.nfs-cart__empty-text {
	font-size: 16.5px;
	line-height: 1.7;
	color: var(--nfs-text-muted);
	margin: 14px 0 0;
	max-width: 540px;
}

.nfs-cart__empty-actions {
	display: flex;
	gap: 12px;
	flex-wrap: wrap;
	justify-content: center;
	margin-top: 32px;
}

/* Linkul discret de sub butoane, cu sublinierea aurie din design. */
.nfs-cart__empty-link {
	margin-top: 26px;
	font: 700 13.5px var(--nfs-font);
	color: var(--nfs-navy);
	text-decoration: none;
	border-bottom: 2px solid var(--nfs-gold);
	padding-bottom: 2px;
}

.nfs-cart__empty-link:hover {
	border-bottom-color: var(--nfs-navy);
}

@media (max-width: 640px) {
	.nfs-cart__items-head,
	.nfs-cart-item {
		padding-left: 20px;
		padding-right: 20px;
	}

	.nfs-cart-item__price {
		text-align: left;
		width: 100%;
	}
}

/* ---------- Card "Livrare" (metodele reale, mutate din fragmentul de sumar
   de moveShippingOptions din account.js) ---------- */

.nfs-shipping-options {
	display: flex;
	flex-direction: column;
	gap: 14px;
}

/* Siglele curierilor, cand exista fisierele. Specificitatea cu .elementor e
   necesara: tema incarca dupa noi si pune height/border-radius pe orice img. */
/* Siglele sunt wordmark-uri late (FANbox e 7:1), deci le dam latime si le
   limitam pe inaltime — invers decat la o pictograma patrata. */
.elementor .nfs-ship-option__icon img,
.nfs-ship-option__logo {
	display: block;
	width: auto;
	max-width: 76px;
	max-height: 30px;
	height: auto;
	border-radius: 0;
	object-fit: contain;
	padding: 5px;
}

.nfs-ship-option__icon:has(.nfs-ship-option__logo) {
	width: auto;
	min-width: 76px;
}

/* Sigla procesatorului de plati, in locul numelui metodei. */
.elementor .nfs-payment-method__title img,
img.nfs-pay-logo {
	display: inline-block;
	width: auto;
	max-width: 70px;
	max-height: 36px;
	height: auto;
	border-radius: 0;
	vertical-align: middle;
	object-fit: contain;
}

/* ---------- Punctul de ridicare FANbox ---------- */

/* Marcajul vine de la pluginul FanCourier (un <tr> cu butonul in <th> si
   numele in <td>), convertit in div-uri de review-order.php. Numele lockerului
   ales e informatia importanta, deci urca deasupra butonului. */
.nfs-ship-extra .locker-pickup {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin-top: 12px;
}

.nfs-ship-extra .locker-pickup > div:first-child {
	order: 2;
}

.nfs-ship-extra .locker-pickup > div:last-child {
	order: 1;
}

/* Cat timp nu e ales niciun locker, randul numelui nu ocupa spatiu. */
.nfs-ship-extra .locker-pickup > div:last-child:not(:has(#FANshowLockerDetails:not(:empty))) {
	display: none;
}

.nfs-ship-extra .locker-pickup strong {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 11px 14px;
	border: 1px solid var(--nfs-border);
	border-left: 3px solid var(--nfs-navy);
	border-radius: 10px;
	background: #f7f9fc;
	font-size: 14px;
	line-height: 1.4;
	color: var(--nfs-navy);
}

button#FANopenMap {
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

@media (max-width: 768px) {
	button#FANopenMap {
		width: 100%;
	}
}

/* Scheletul afisat cat timp se calculeaza livrarea. Aceleasi dimensiuni ca
   .nfs-ship-option, ca lista reala sa nu impinga pagina cand o inlocuieste. */
.nfs-ship-skeleton {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.nfs-ship-skeleton__row {
	height: 66px;
	border: 1px solid var(--nfs-border);
	border-radius: 12px;
	background: linear-gradient(90deg, #f4f6fa 25%, #e9edf4 37%, #f4f6fa 63%);
	background-size: 400% 100%;
	animation: nfs-ship-skeleton 1.4s ease-in-out infinite;
}

@keyframes nfs-ship-skeleton {
	0% { background-position: 100% 50%; }
	100% { background-position: 0 50%; }
}

/* Fara animatie pentru cine a cerut miscare redusa din sistem. */
@media (prefers-reduced-motion: reduce) {
	.nfs-ship-skeleton__row {
		animation: none;
	}
}

.nfs-ship-option {
	display: flex;
	align-items: center;
	gap: 14px;
	position: relative;
	margin: 0;
	padding: 14px 16px;
	border: 1px solid var(--nfs-border);
	border-radius: 12px;
	background: #fff;
	cursor: pointer;
	transition: border-color 0.18s ease;
}

/* Ca la metodele de plata: starea vine din input (:checked), nu dintr-o clasa
   pusa la randare — lista se re-randeaza la fiecare recalculare. */
.nfs-ship-option:has(.shipping_method:checked) {
	border: 2px solid var(--nfs-navy);
	padding: 13px 15px;
}

.nfs-ship-option .shipping_method {
	position: absolute;
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	width: 20px;
	height: 20px;
	margin: 0;
	opacity: 0;
	cursor: pointer;
}

.nfs-ship-option__radio {
	flex-shrink: 0;
	width: 20px;
	height: 20px;
	border-radius: 50%;
	border: 1.5px solid #cfd8e6;
	background: #fff;
	box-sizing: border-box;
	position: relative;
}

.nfs-ship-option:has(.shipping_method:checked) .nfs-ship-option__radio {
	border-color: var(--nfs-navy);
	border-width: 2px;
}

.nfs-ship-option:has(.shipping_method:checked) .nfs-ship-option__radio::after {
	content: "";
	position: absolute;
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: var(--nfs-gold);
}

.nfs-ship-option__icon {
	flex-shrink: 0;
	width: 38px;
	height: 38px;
	border-radius: 10px;
	background: var(--nfs-navy);
	color: var(--nfs-gold);
	display: flex;
	align-items: center;
	justify-content: center;
}

.nfs-ship-option__icon svg {
	width: 19px;
	height: 19px;
}

.nfs-ship-option__body {
	min-width: 0;
	flex: 1 1 auto;
}

.nfs-ship-option__title {
	display: block;
	font: 700 15px var(--nfs-font-heading);
	color: var(--nfs-navy);
}

.nfs-ship-option__meta {
	display: block;
	margin-top: 4px;
	font: 600 12.5px var(--nfs-font);
	color: var(--nfs-text-label);
}

.nfs-ship-option__price {
	flex-shrink: 0;
	font: 800 17px var(--nfs-font-heading);
	color: var(--nfs-navy);
}

/* Selectorul de FANBox al pluginului FanCourier (butonul de harta + numele
   lockerului ales), agatat de woocommerce_review_order_after_shipping si
   convertit din <tr>/<td> in div-uri — vezi review-order.php. */

.nfs-ship-extra:empty {
	display: none;
}

.nfs-ship-extra .locker-pickup {
	display: flex;
	align-items: center;
	gap: 14px;
	flex-wrap: wrap;
	margin-top: 14px;
	padding: 14px 16px;
	border: 1px dashed var(--nfs-border);
	border-radius: 12px;
	background: var(--nfs-bg);
}

.nfs-checkout .nfs-ship-extra #FANopenMap {
	background: var(--nfs-navy) !important;
	color: #fff !important;
	border: 1px solid var(--nfs-navy) !important;
	border-radius: 8px !important;
	padding: 11px 18px !important;
	font: 700 13.5px var(--nfs-font) !important;
	line-height: 1.2 !important;
	cursor: pointer;
	white-space: nowrap;
}

.nfs-checkout .nfs-ship-extra #FANopenMap:hover {
	background: #05366f !important;
}

.nfs-ship-extra #FANshowLockerDetails {
	font: 700 14px var(--nfs-font-heading);
	color: var(--nfs-navy);
}

/* ---------- Sumar comandă (checkout/review-order.php) ---------- */

.nfs-order-review__items {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin-top: 20px;
	padding-bottom: 20px;
	border-bottom: 1px solid var(--nfs-border);
}

.nfs-order-review__item {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	font: 600 14.5px var(--nfs-font);
	color: var(--nfs-text-muted);
}

.nfs-order-review__item-name {
	min-width: 0;
}

.nfs-order-review__item-qty {
	color: var(--nfs-text-label);
	margin-left: 4px;
}

.nfs-order-review__item-total {
	color: var(--nfs-navy);
	font-weight: 700;
	white-space: nowrap;
	flex-shrink: 0;
}

.nfs-order-review__totals {
	display: flex;
	flex-direction: column;
	gap: 14px;
	margin-top: 18px;
}

.nfs-sumrow {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	font: 600 14.5px var(--nfs-font);
	color: var(--nfs-text-muted);
}

.nfs-sumrow span:last-child {
	color: var(--nfs-navy);
	font-weight: 700;
}

.nfs-sumrow--discount span:last-child {
	color: #0d6b3f;
}

/* Eticheta "Cupon" ramane ca toate celelalte etichete de sumar; doar CODUL
   cuponului iese in evidenta, in acelasi verde ca suma redusa. */
.nfs-sumrow__coupon-code {
	color: #0d6b3f;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.02em;
}

/* Link-ul nativ "[Înlătură]": tema Elementor il coloreaza roz si il lasa ca
   text intre paranteze drepte. Ascundem textul (font-size:0) si punem un ×
   discret in locul lui — numele accesibil ramane intact, WooCommerce pune deja
   aria-label="Înlătură cuponul …" pe link. */
.nfs-sumrow--discount .woocommerce-remove-coupon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 18px;
	height: 18px;
	margin-left: 6px;
	flex-shrink: 0;
	vertical-align: middle;
	border-radius: 50%;
	border: 1px solid rgba(3, 38, 87, 0.2);
	background: #fff;
	font-size: 0;
	line-height: 0;
	text-decoration: none !important;
	transition: border-color 0.15s ease, background 0.15s ease, color 0.15s ease;
}

.nfs-sumrow--discount .woocommerce-remove-coupon::before {
	content: "×";
	font: 400 15px/1 var(--nfs-font);
	color: var(--nfs-text-label);
	transform: translateY(-1px);
}

.nfs-sumrow--discount .woocommerce-remove-coupon:hover {
	border-color: #c0392b;
	background: #fdecea;
}

.nfs-sumrow--discount .woocommerce-remove-coupon:hover::before {
	color: #c0392b;
}

.nfs-order-review__shipping .woocommerce-shipping-methods {
	list-style: none;
	margin: 0;
	padding: 0;
}

/* O SINGURA linie inainte de total, cu acelasi ritm de 22px ca restul. Randul
   de total nu mai are bordura proprie: inainte desenau si blocul, si randul,
   si mai venea una de la zona butonului — trei linii una sub alta. */
.nfs-order-review__totals--final {
	margin-top: 22px;
	padding-top: 22px;
	border-top: 1px solid var(--nfs-border);
	gap: 0;
}

.nfs-order-review__total {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	margin: 0;
	padding: 0;
	border: none;
	font: 700 15px var(--nfs-font);
	color: var(--nfs-navy);
}

.nfs-order-review__total-amount {
	font: 800 30px var(--nfs-font-heading);
	color: var(--nfs-navy);
	letter-spacing: -0.8px;
}

/* wc_cart_totals_order_total_html() adaugă native "(include X lei TVA)" —
   redundant, TVA apare deja ca rând separat mai sus ("din care TVA"). */
.nfs-order-review__total-amount .includes_tax {
	display: none;
}

/* ---------- Metode de plată (checkout/payment.php + payment-method.php) ---------- */

#payment.woocommerce-checkout-payment {
	margin: 0 !important;
	padding: 0 !important;
	border: none !important;
	background: transparent !important;
}

/* Pluginul de plăți (Woo Stripe Payment) își aduce propriul CSS pentru
   lista de metode — fundalul gri uniform peste toate rândurile venea de
   acolo, nu de la noi. Resetăm explicit orice fundal/bordură de pe listă
   și pe wrapper-ele ei posibile, ca stilul nostru (cardul navy la selecție)
   să rămână singurul vizibil. */
.nfs-checkout__payment-card ul.wc_payment_methods,
.nfs-checkout__payment-card ul.wc_payment_methods > li,
.nfs-checkout__payment-card .payment_methods {
	background: transparent !important;
	box-shadow: none !important;
}

ul.wc_payment_methods {
	list-style: none !important;
	margin: 0 !important;
	padding: 0 !important;
	display: flex !important;
	flex-direction: column !important;
	gap: 12px !important;
}

.nfs-payment-method {
	border: 1px solid var(--nfs-border) !important;
	border-radius: 12px !important;
	padding: 14px 16px !important;
	background: #fff !important;
	transition: border-color 0.18s ease;
}

/* Si chenarul cardului urmeaza selectia reala, nu clasa de la randare.
   Pastram si varianta cu --chosen pentru randarea initiala, inainte ca
   browserul sa evalueze :has (si ca fallback daca nu-l suporta). */
.nfs-payment-method--chosen,
.nfs-payment-method:has(.input-radio:checked) {
	border: 2px solid var(--nfs-navy) !important;
	background: #fff !important;
	padding: 13px 15px !important;
}

/* Metoda randata ca aleasa, dar din care selectia a plecat intre timp. */
.nfs-payment-method--chosen:not(:has(.input-radio:checked)) {
	border: 1px solid var(--nfs-border) !important;
	padding: 14px 16px !important;
}

.nfs-payment-method__row {
	display: flex;
	align-items: center;
	gap: 14px;
	position: relative;
	margin: 0 !important;
	cursor: pointer;
}

/* Input-ul real ramane focusabil si functional, doar invizibil, suprapus
   peste cercul desenat de noi. */
.nfs-payment-method__row .input-radio {
	position: absolute;
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	width: 20px;
	height: 20px;
	margin: 0;
	opacity: 0;
	cursor: pointer;
}

.nfs-payment-method__radio {
	flex-shrink: 0;
	width: 20px;
	height: 20px;
	border-radius: 50%;
	border: 1.5px solid #cfd8e6;
	background: #fff;
	box-sizing: border-box;
	position: relative;
	transition: border-color 0.18s ease;
}

/* Starea selectata se ia din INPUT (:checked), nu din clasa --chosen pusa de
   PHP la randare: WooCommerce comuta la click doar .payment_box, clasa de pe
   <li> ramane pe metoda randata initial. Cu :checked, cercul urmeaza selectia
   reala, instant, fara JS. */
.nfs-payment-method__row .input-radio:checked ~ .nfs-payment-method__radio {
	border-color: var(--nfs-navy);
	border-width: 2px;
}

/* Punctul auriu din mijloc, doar la metoda aleasa. */
.nfs-payment-method__row .input-radio:checked ~ .nfs-payment-method__radio::after {
	content: "";
	position: absolute;
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: var(--nfs-gold);
}

.nfs-payment-method__body {
	display: flex;
	flex-direction: column;
	gap: 3px;
	min-width: 0;
	flex: 1 1 auto;
}

.nfs-payment-method__title {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
	font: 700 14.5px var(--nfs-font-heading);
	color: var(--nfs-navy);
}

.nfs-payment-method__title img {
	max-height: 22px;
	width: auto;
	margin: 0 !important;
	float: none !important;
}

.nfs-payment-method__desc {
	font: 500 13px var(--nfs-font);
	line-height: 1.5;
	color: var(--nfs-text-label);
}

.nfs-payment-method__badge {
	flex-shrink: 0;
	align-self: center;
	font: 700 10.5px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
	white-space: nowrap;
}

/* Cutia ramane doar pentru gateway-urile cu campuri reale (formularul de card
   Stripe). Fara linie hasurata si fara sageata — pluginul de gateway-uri
   deseneaza uneori un varf cu ::before/::after peste chenarul cutiei. */
.nfs-payment-method .payment_box {
	margin-top: 14px !important;
	padding: 14px 0 0 34px !important;
	border: none !important;
	border-top: 1px solid var(--nfs-border) !important;
	border-radius: 0 !important;
	background: transparent !important;
	font-size: 13.5px;
	line-height: 1.6;
	color: var(--nfs-text-muted);
}

.nfs-payment-method .payment_box::before,
.nfs-payment-method .payment_box::after {
	display: none !important;
	content: none !important;
}

/* Pluginul Stripe isi tipareste descrierea inca o data in interiorul cutiei
   (.wc-stripe-gateway-desc), iar noi o aratam deja ca subtitlu sub denumire —
   o ascundem pe a lui, ca sa nu apara acelasi text de doua ori. Ramane in DOM:
   e randata de el, nu de noi. */
.nfs-payment-method .payment_box .wc-stripe-gateway-desc {
	display: none !important;
}

/* Cutia ramane goala cand butonul Stripe nu se randeaza — Apple Pay si Google
   Pay isi deseneaza butonul in #wc-stripe-*-container doar daca dispozitivul
   si browserul le suporta. Fara continut, se vedea doar linia de sus si
   padding-ul. Cat timp containerul e gol, ascundem toata cutia; in momentul in
   care Stripe injecteaza butonul, :empty nu mai e adevarat si cutia reapare
   singura, fara JS. */
.nfs-payment-method .payment_box:has(.wc-payment-form > div[id^="wc-stripe-"]:empty) {
	display: none !important;
}

/* Chenar rămas sub lista de metode de plată — venea fie din CSS-ul
   pluginului de gateway-uri, fie din stilul implicit WooCommerce pentru
   liste/wrapper-e (NU de la .nfs-payment-method — acelea își păstrează
   bordura proprie, intenționată). */
.nfs-checkout__payment-card #payment,
.nfs-checkout__payment-card ul.wc_payment_methods {
	border: none !important;
	box-shadow: none !important;
}

/* ---------- Erori pe câmp (vezi markInvalidFields în account.js) ---------- */

.nfs-checkout .form-row.nfs-has-error input.input-text,
.nfs-checkout .form-row.nfs-has-error select,
.nfs-checkout .form-row.nfs-has-error textarea,
.nfs-checkout .form-row.woocommerce-invalid input.input-text,
.nfs-checkout .form-row.woocommerce-invalid select,
.nfs-checkout .form-row.woocommerce-invalid textarea,
.nfs-checkout .form-row.nfs-has-error .select2-container .select2-selection--single,
.nfs-checkout .form-row.woocommerce-invalid .select2-container .select2-selection--single {
	border-color: #b3261e !important;
	background: #fdf4f4 !important;
}

.nfs-checkout .form-row.nfs-has-error label,
.nfs-checkout .form-row.woocommerce-invalid label {
	color: #b3261e !important;
}

.nfs-field-error {
	display: block;
	margin-top: 6px;
	font: 600 12.5px var(--nfs-font);
	line-height: 1.45;
	color: #b3261e;
}

/* ---------- Termeni și condiții + butonul "Plasează comanda"
   (mutate în Sumar comandă, o singură randare — vezi NFS_Checkout) ---------- */

/* Fara bordura: linia dinaintea totalului e singura de acolo. */
.nfs-checkout__place-order {
	margin-top: 22px;
}

.nfs-checkout__place-order .woocommerce-privacy-policy-text {
	font-size: 12.5px;
	line-height: 1.6;
	color: var(--nfs-text-muted);
	margin: 0 0 14px;
}

.nfs-checkout__place-order .woocommerce-privacy-policy-text a {
	color: var(--nfs-navy);
}

/* ---------- Consimțăminte: randuri separate de o linie subtire, ca in design.
   Folosite de checkout/terms.php (termeni + newsletter) SI de bifa "Livrezi
   la o altă adresă?" din checkout/form-shipping.php, ca sa arate identic —
   de aceea regulile sunt legate de .nfs-consents, nu de locul unde apar. */

.nfs-checkout .nfs-consents {
	margin: 0 0 18px;
}

.nfs-checkout .nfs-consents__row {
	margin: 0;
	padding: 0;
}

/* Exact 22px deasupra liniei si 22px sub ea, ca in design. Varianta anterioara
   punea padding pe fiecare rand si il anula pe primul/ultimul, ceea ce lasa
   spatiile inegale in jurul liniei. */
.nfs-checkout .nfs-consents__row + .nfs-consents__row {
	margin-top: 22px;
	padding-top: 22px;
	border-top: 1px solid var(--nfs-border);
}

/* Bifa de livrare e singura din cutia ei, deci fara margine sub — cand e
   bifata, campurile de adresa vin imediat dedesubt cu spatiul lor propriu. */
.nfs-checkout .nfs-checkout__ship-toggle {
	margin: 0;
}

/* Checkbox custom (pătrat auriu la bifare + bifă), identic cu artifact-ul
   Claude Design — input-ul real rămâne funcțional (focus/tastatură/submit),
   doar invizibil, suprapus exact peste pseudo-elementul ::before care
   arată vizual cutia. */
.nfs-checkout .nfs-consents label.woocommerce-form__label-for-checkbox {
	position: relative;
	display: block;
	padding-left: 32px;
	min-height: 22px;
	font-size: 14.5px;
	line-height: 1.65;
	color: var(--nfs-text-muted);
	cursor: pointer;
}

.nfs-checkout .nfs-consents input.woocommerce-form__input-checkbox {
	position: absolute;
	left: 0;
	top: 1px;
	width: 22px;
	height: 22px;
	margin: 0;
	opacity: 0;
	cursor: pointer;
}

.nfs-checkout .nfs-consents label.woocommerce-form__label-for-checkbox::before {
	content: "";
	position: absolute;
	left: 0;
	top: 1px;
	width: 22px;
	height: 22px;
	border-radius: 6px;
	border: 1.5px solid #cfd8e6;
	background: #fff;
	box-sizing: border-box;
}

.nfs-checkout .nfs-consents label.woocommerce-form__label-for-checkbox:has(input:checked)::before {
	background: var(--nfs-gold);
	border-color: var(--nfs-gold);
}

.nfs-checkout .nfs-consents label.woocommerce-form__label-for-checkbox::after {
	content: "";
	position: absolute;
	left: 5px;
	top: 7px;
	width: 11px;
	height: 6px;
	border-left: 2.5px solid var(--nfs-navy);
	border-bottom: 2.5px solid var(--nfs-navy);
	transform: rotate(-45deg);
	opacity: 0;
}

.nfs-checkout .nfs-consents label.woocommerce-form__label-for-checkbox:has(input:checked)::after {
	opacity: 1;
}

.nfs-checkout .nfs-consents .woocommerce-terms-and-conditions-checkbox-text,
.nfs-checkout .nfs-consents__text {
	color: var(--nfs-text-muted);
}

/* ---------- Ce randeaza gateway-ul in interiorul metodei de plata ---------- */

/* Marcajul de aici vine de la pluginul de plati (textul de mandat si bifa de
   salvare a cardului), deci nu-i cunoastem clasele si nici nu ne putem baza pe
   ele peste update-uri. Stilizam din containerul NOSTRU, .payment_box, pe
   elemente generice: orice paragraf si orice checkbox arata ca restul paginii,
   indiferent cum isi numeste pluginul clasele. */

.nfs-checkout .nfs-payment-method .payment_box p {
	position: relative;
	margin: 0 0 12px;
	font: 500 13px var(--nfs-font);
	line-height: 1.55;
	color: var(--nfs-text-label);
}

.nfs-checkout .nfs-payment-method .payment_box p:last-child {
	margin-bottom: 0;
}

/* Bifa nativa dispare vizual, dar ramane in pagina: tot ea primeste focusul
   si tot ea e citita de tehnologiile de asistare. */
.nfs-checkout .nfs-payment-method .payment_box input[type="checkbox"] {
	position: absolute;
	left: 0;
	top: 0;
	width: 22px;
	height: 22px;
	margin: 0;
	opacity: 0;
	cursor: pointer;
}

.nfs-checkout .nfs-payment-method .payment_box input[type="checkbox"] + label,
.nfs-checkout .nfs-payment-method .payment_box label:has(> input[type="checkbox"]) {
	position: relative;
	display: block;
	padding-left: 32px;
	min-height: 22px;
	font-size: 14.5px;
	line-height: 1.6;
	color: var(--nfs-text-muted);
	cursor: pointer;
}

.nfs-checkout .nfs-payment-method .payment_box input[type="checkbox"] + label::before,
.nfs-checkout .nfs-payment-method .payment_box label:has(> input[type="checkbox"])::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0;
	width: 22px;
	height: 22px;
	border-radius: 6px;
	border: 1.5px solid #cfd8e6;
	background: #fff;
	box-sizing: border-box;
}

.nfs-checkout .nfs-payment-method .payment_box input[type="checkbox"]:checked + label::before,
.nfs-checkout .nfs-payment-method .payment_box label:has(> input[type="checkbox"]:checked)::before {
	background: var(--nfs-gold);
	border-color: var(--nfs-gold);
}

.nfs-checkout .nfs-payment-method .payment_box input[type="checkbox"] + label::after,
.nfs-checkout .nfs-payment-method .payment_box label:has(> input[type="checkbox"])::after {
	content: "";
	position: absolute;
	left: 5px;
	top: 6px;
	width: 11px;
	height: 6px;
	border-left: 2.5px solid var(--nfs-navy);
	border-bottom: 2.5px solid var(--nfs-navy);
	transform: rotate(-45deg);
	opacity: 0;
}

.nfs-checkout .nfs-payment-method .payment_box input[type="checkbox"]:checked + label::after,
.nfs-checkout .nfs-payment-method .payment_box label:has(> input[type="checkbox"]:checked)::after {
	opacity: 1;
}

/* Bifa de salvare a cardului vine lipita de campurile de deasupra.
 *
 * Spatiul se pune pe RANDUL care contine bifa, nu pe eticheta: WooCommerce
 * randeaza eticheta cu style="display:inline" direct in marcaj, iar pe un
 * element inline marginile verticale sunt ignorate de browser. Un stil inline
 * nu poate fi batut dintr-o foaie de stil decat cu !important, asa ca ii
 * schimbam afisarea si abia apoi marginea are efect. */
.nfs-checkout .nfs-payment-method .payment_box p.woocommerce-SavedPaymentMethods-saveNew,
.nfs-checkout .nfs-payment-method .payment_box p:has(> input[type="checkbox"]),
.nfs-checkout .nfs-payment-method .payment_box div:has(> input[type="checkbox"]) {
	margin-top: 16px;
}

.nfs-checkout .nfs-payment-method .payment_box input[type="checkbox"] + label,
.nfs-checkout .nfs-payment-method .payment_box label:has(> input[type="checkbox"]) {
	display: block !important;
	margin-top: 14px;
}

/* Butoanele express (Apple Pay / Google Pay) nu au ce cauta pe pagina de
   schimbare a abonamentului: ele cumpara produsul direct, ocolind fluxul de
   switch — adica al doilea abonament in loc de schimbarea celui existent. */
.nfs-switch-page .wc-stripe-product-checkout-container,
.nfs-switch-page .wc-stripe-express-skeleton {
	display: none !important;
}

/* Plan indisponibil la schimbare (mai mic decat cel curent). Ramane vizibil,
   dar inert: clientul vede ca pachetul exista si de ce nu-l poate alege acum. */
.wcsatt-options-product li.nfs-plan-locked {
	opacity: 0.55;
	cursor: not-allowed;
}

.wcsatt-options-product li.nfs-plan-locked label,
.wcsatt-options-product li.nfs-plan-locked input {
	cursor: not-allowed;
	pointer-events: none;
}

.nfs-plan-locked__reason {
	display: block;
	margin-top: 4px;
	font-size: 12.5px;
	font-weight: 600;
	color: var(--nfs-text-muted);
}

/* ---------- Notificarile WooCommerce din zona de cont ---------- */

/* Marcajul lor pune butonul INAINTEA textului si se bazeaza pe un float din
   stilurile implicite WooCommerce, pe care tema nu le incarca. Fara ele,
   butonul ramane lipit de mesaj. Il asezam cu flex: textul la stanga, butonul
   la dreapta, pe acelasi rand. */
.woocommerce-notices-wrapper .woocommerce-info,
.woocommerce-notices-wrapper .woocommerce-message {
	display: flex;
	align-items: center;
	gap: 16px;
	margin: 0 0 20px;
	padding: 14px 18px;
	border: 1px solid #cfe0f5;
	border-left: 3px solid var(--nfs-navy);
	border-radius: 12px;
	background: #f2f7fd;
	font: 500 14px/1.55 var(--nfs-font);
	color: var(--nfs-navy);
	list-style: none;
}

.woocommerce-notices-wrapper .woocommerce-info > a.button,
.woocommerce-notices-wrapper .woocommerce-message > a.button {
	order: 2;
	margin-left: auto;
	flex-shrink: 0;
	padding: 9px 18px;
	border: 1px solid var(--nfs-navy);
	border-radius: 8px;
	background: #fff;
	font-size: 13.5px;
	font-weight: 600;
	color: var(--nfs-navy);
	text-decoration: none;
	white-space: nowrap;
}

.woocommerce-notices-wrapper .woocommerce-info > a.button:hover,
.woocommerce-notices-wrapper .woocommerce-message > a.button:hover {
	background: var(--nfs-navy);
	color: #fff;
}

/* Pe telefon butonul coboara sub mesaj, altfel textul ramane pe doua litere. */
@media (max-width: 600px) {
	.woocommerce-notices-wrapper .woocommerce-info,
	.woocommerce-notices-wrapper .woocommerce-message {
		flex-direction: column;
		align-items: flex-start;
		gap: 12px;
	}

	.woocommerce-notices-wrapper .woocommerce-info > a.button,
	.woocommerce-notices-wrapper .woocommerce-message > a.button {
		margin-left: 0;
	}
}

/* Notificarea de pe pagina de produs, adusa langa butonul de adaugare in cos
   (vezi moveProductError in account.js). */
.nfs-product-error {
	margin: 18px 0 16px !important;
}

.nfs-product-error .woocommerce-error {
	box-sizing: border-box;
	list-style: none !important;
	margin: 0 !important;
	padding: 14px 16px !important;
	border: 1px solid #f0c2c3 !important;
	border-left: 3px solid #b32d2e !important;
	border-radius: 10px !important;
	background: #fdf4f4 !important;
	font: 500 13.5px/1.55 var(--nfs-font) !important;
	color: #8a2226 !important;
	box-shadow: none !important;
}

/* Fara pictograma: incercarea de a pune una proprie nu trecea de stilurile
   care o ascund mai sus in fisier, iar un padding lasat pentru o pictograma
   inexistenta arata ca un text nealiniat. */
.nfs-product-error .woocommerce-error::before,
.nfs-product-error .woocommerce-error li::before {
	display: none !important;
	content: none !important;
}

.nfs-product-error .woocommerce-error li {
	list-style: none !important;
	margin: 0 !important;
	padding: 0 !important;
}

/* Link-ul „Vezi coșul" devine o actiune discreta, nu un al doilea buton care
   sa concureze cu „Adauga in cos" de dedesubt. */
/* float: none — stilurile WooCommerce il arunca la dreapta, pe un rand propriu,
   rupt de fraza din care face parte. */
.nfs-product-error .woocommerce-error a.button {
	display: inline !important;
	float: none !important;
	margin: 0 0 0 4px !important;
	padding: 0 !important;
	border: 0 !important;
	background: none !important;
	color: #8a2226 !important;
	font-size: inherit !important;
	font-weight: 700;
	line-height: inherit !important;
	text-decoration: underline;
	white-space: nowrap;
}

/* Eroare legata de un camp anume, afisata langa el (ex. bifa de termeni la
   inregistrare), nu in capul paginii unde omul n-o pune in legatura cu campul. */
.nfs-inline-error {
	display: block;
	margin: 0 0 10px;
	padding: 11px 14px 11px 40px;
	position: relative;
	border: 1px solid #f0c2c3;
	border-left: 3px solid #b32d2e;
	border-radius: 10px;
	background: #fdf4f4;
	font: 500 13.5px/1.5 var(--nfs-font);
	color: #8a2226;
}

.nfs-inline-error::before {
	content: "!";
	position: absolute;
	left: 13px;
	top: 50%;
	transform: translateY(-50%);
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: #b32d2e;
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	line-height: 18px;
	text-align: center;
}

/* ---------- Eroarea de la procesatorul de plati ---------- */

/* Mesajul e randat de pluginul de plati, cu stilul lui. Il imbracam in stilul
   notificarilor noastre, pastrandu-i locul: clientul se uita deja acolo. */
.nfs-checkout .nfs-pay-error {
	display: block;
	margin: 0 0 14px;
	padding: 13px 16px 13px 44px;
	position: relative;
	border: 1px solid #f0c2c3;
	border-left: 3px solid var(--nfs-danger, #b32d2e);
	border-radius: 10px;
	background: #fdf4f4;
	box-shadow: none;
	font: 500 13.5px/1.55 var(--nfs-font);
	color: #8a2226;
	list-style: none;
}

.nfs-checkout .nfs-pay-error::before {
	content: "!";
	position: absolute;
	left: 15px;
	/* Centrat pe inaltimea cutiei, nu la o distanta fixa de sus: mesajele au
	   una sau doua randuri, iar un offset fix nimereste doar pentru unul. */
	top: 50%;
	transform: translateY(-50%);
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: var(--nfs-danger, #b32d2e);
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	line-height: 18px;
	text-align: center;
}

/* Mesajul vine imbricat: div.woocommerce-NoticeGroup > ul.woocommerce-error >
   li. Toate trei primesc clasa, pentru ca nu stim dinainte care dintre ele
   exista. Deseneaza insa doar cea din afara; restul se dezbraca, altfel ies
   trei cutii una in alta, cu trei pictograme. */
.nfs-checkout .nfs-pay-error .nfs-pay-error {
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: none;
	box-shadow: none;
	color: inherit;
	font: inherit;
}

/* !important pentru ca marcajul lor isi pune propriul semn pe <li>, cu reguli
   de-ale temei peste care o declaratie obisnuita nu trece — de aici a doua
   bulina rosie peste text. */
.nfs-checkout .nfs-pay-error .nfs-pay-error::before,
.nfs-checkout .nfs-pay-error .nfs-pay-error::after,
.nfs-checkout .nfs-pay-error li::before,
.nfs-checkout .nfs-pay-error li::after {
	display: none !important;
	content: none !important;
}

.nfs-checkout .nfs-pay-error li {
	list-style: none !important;
	margin: 0;
	padding: 0;
}

/* Marcajul lor poate aduce propria pictograma; a noastra o inlocuieste. */
.nfs-checkout .nfs-pay-error > svg,
.nfs-checkout .nfs-pay-error > img,
.nfs-checkout .nfs-pay-error::after {
	display: none;
}

/* Chenarul merge pe METODA care a esuat, nu pe toata cutia: eroarea e a
   cardului, iar un chenar peste tot ar arata ca si transferul bancar e de
   vina. Specificitate ridicata, ca sa bata starea "aleasa" a metodei. */
/* !important pentru ca starea "aleasa" a metodei isi pune bordura tot cu
   !important (vezi .nfs-payment-method--chosen); metoda in eroare e mereu si
   cea aleasa, deci fara asta rosul nu s-ar vedea niciodata. */
.nfs-checkout .nfs-payment-methods .nfs-payment-method.nfs-pay-invalid,
.nfs-checkout li.nfs-payment-method.nfs-pay-invalid {
	border: 2px solid var(--nfs-danger, #b32d2e) !important;
	box-shadow: 0 0 0 3px rgba(179, 45, 46, 0.08);
}

/* Conturul de focus trebuie sa ramana vizibil: bifa reala e transparenta, deci
   fara asta navigarea cu tastatura devine oarba. */
.nfs-checkout .nfs-payment-method .payment_box input[type="checkbox"]:focus-visible + label::before {
	outline: 2px solid var(--nfs-navy);
	outline-offset: 2px;
}

.nfs-checkout .nfs-consents .woocommerce-terms-and-conditions-checkbox-text a {
	color: var(--nfs-navy);
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 2px;
}

.nfs-checkout .nfs-consents .woocommerce-terms-and-conditions-checkbox-text a:hover {
	color: var(--nfs-gold-dark);
}

/* Cutia de livrare: cand bifa e nebifata, .shipping_address e ascuns de JS-ul
   nativ WooCommerce, deci cutia ramane doar cu randul bifei — fara spatiu gol
   dedesubt. */
.nfs-checkout .nfs-checkout__shipping-card .shipping_address {
	margin-top: 18px;
	padding-top: 18px;
	border-top: 1px solid var(--nfs-border);
}

#place_order {
	width: 100%;
	box-sizing: border-box;
	background: var(--nfs-gold);
	color: var(--nfs-navy);
	border: 1px solid var(--nfs-gold);
	border-radius: 8px;
	font: 700 15.5px var(--nfs-font);
	padding: 16px 0;
	cursor: pointer;
	transition: transform 0.15s ease, background 0.15s ease;
}

#place_order:hover {
	background: var(--nfs-gold-dark);
	transform: translateY(-2px);
}

/* Doar aspect de "indisponibil" cât timp termenii nu sunt bifați — butonul
   rămâne funcțional, ca validarea nativă WooCommerce să-și poată afișa
   mesajul dacă utilizatorul apasă totuși. */
#place_order.is-disabled {
	opacity: 0.55;
}

#place_order.is-disabled:hover {
	background: var(--nfs-gold);
	transform: none;
}

.nfs-checkout__terms-warning {
	margin: 10px 0 0;
	font: 600 12.5px var(--nfs-font);
	line-height: 1.5;
	color: #c0392b;
	text-align: center;
}

.nfs-checkout__secure-note {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 7px;
	margin-top: 14px;
	font: 600 12.5px var(--nfs-font);
	color: var(--nfs-text-label);
}

.nfs-checkout__secure-note svg {
	width: 15px;
	height: 15px;
	flex-shrink: 0;
}

@media (max-width: 900px) {
	.nfs-checkout__summary-card {
		position: static;
	}
}

/* Mesaj afișat DOAR editorilor când un shortcode al plugin-ului nu are
   context (ex. [nfs_seminar_product] fără produs). Vizitatorii nu îl văd. */

.nfs-shortcode-notice {
	font: 600 13.5px var(--nfs-font);
	line-height: 1.6;
	color: var(--nfs-text-muted);
	background: var(--nfs-bg);
	border: 1px dashed var(--nfs-border);
	border-radius: 10px;
	padding: 16px 18px;
	margin: 0;
}

/* ---------- Etichetele seminarului, peste imaginea din hero ---------- */

.nfs-seminar-player__tags {
	position: absolute;
	top: 14px;
	left: 14px;
	z-index: 2;
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
	max-width: calc(100% - 28px);
}

/* Pe fundalul navy al cadrului blocat, varianta "soft" (bleu pal pe alb) ar
   fi ilizibilă — o trecem pe alb translucid. */

.nfs-seminar-player__tags .nfs-tag--soft {
	background: rgba(255, 255, 255, 0.16);
	color: #fff;
	border-color: rgba(255, 255, 255, 0.3);
}

/* ---------- Capitolele seminarului în sidebar (pagina de produs) ----------
   Aceeași listă ca în coloana principală, dar la ~360px lățime: thumbnail
   mai mic, rânduri mai strânse, iar eticheta "Blocat" dispare — lacătul de
   pe thumbnail spune deja același lucru; la fel și pilula "Vezi". */

.nfs-watch-layout__side .nfs-seminar-parts__head {
	padding: 20px 20px 16px;
}

.nfs-watch-layout__side button.nfs-seminar-parts__item {
	padding: 13px 18px;
	gap: 12px;
}

.nfs-watch-layout__side .nfs-seminar-parts__thumb {
	width: 62px;
	height: 38px;
}

.nfs-watch-layout__side .nfs-seminar-parts__name {
	font-size: 13px;
}

.nfs-watch-layout__side .nfs-seminar-parts__cta {
	display: none;
}

/* În sidebar rândurile sunt ~64px: 300px lasă 4-5 capitole vizibile, restul la scroll. */
.nfs-watch-layout__side .nfs-seminar-parts__list {
	max-height: 300px;
}

/* ---------- Seminar deja cumpărat: play în loc de lacăt ----------
   Pagina de produs rămâne aceeași; se schimbă doar acțiunile. */

.nfs-seminar-player__frame--locked.is-unlocked::before {
	background: rgba(3, 38, 87, 0.55);
}

.nfs-seminar-player__watch {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 14px;
	text-decoration: none !important;
	transition: transform 0.15s ease;
}

.nfs-seminar-player__watch:hover {
	transform: translateY(-2px);
}

.nfs-seminar-player__watch-mark {
	width: 68px;
	height: 68px;
	border-radius: 50%;
	background: var(--nfs-gold);
	display: flex;
	align-items: center;
	justify-content: center;
}

.nfs-seminar-player__watch-mark svg {
	width: 30px;
	height: 30px;
	/* Triunghiul de play arată centrat abia decalat spre dreapta. */
	margin-left: 3px;
}

.nfs-seminar-player__watch-label {
	font: 700 13px var(--nfs-font);
	color: #fff;
	text-align: center;
	padding: 0 20px;
}

/* Caseta din sidebar, când seminarul e deja în contul clientului. */

.nfs-buy-owned {
	display: flex;
	align-items: center;
	gap: 10px;
	font: 700 15px var(--nfs-font);
	color: var(--nfs-text);
}

.nfs-buy-owned__badge {
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: var(--nfs-gold);
	color: var(--nfs-navy);
	font-size: 13px;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}

/* Capitolele devin linkuri (nu butoane dezactivate) pentru cine are deja
   seminarul — aceeași înfățișare ca varianta <button>. */

a.nfs-seminar-parts__item {
	display: flex;
	align-items: center;
	gap: 14px;
	width: 100%;
	padding: 16px 22px;
	border-bottom: 1px solid var(--nfs-border);
	border-left: 3px solid transparent;
	background: #fff;
	color: inherit;
	text-decoration: none !important;
	text-align: left;
	transition: background-color 0.15s ease, border-color 0.15s ease;
}

a.nfs-seminar-parts__item:last-child {
	border-bottom: none;
}

a.nfs-seminar-parts__item:hover {
	background: var(--nfs-bg);
	border-left-color: var(--nfs-gold);
}

.nfs-watch-layout__side a.nfs-seminar-parts__item {
	padding: 13px 18px;
	gap: 12px;
}

/* Butonul "Toate seminariile" din antetul paginii de produs stă pe fundalul
   gri al benzii, unde hover-ul standard (tot gri) nu se vedea. Primește
   același comportament ca butoanele outline din antetul de checkout: alb,
   text și bordură navy. */

.nfs-seminar-buy__header .nfs-btn--outline {
	background: #fff !important;
	color: var(--nfs-navy) !important;
	border: 1px solid rgba(3, 38, 87, 0.25) !important;
}

.nfs-seminar-buy__header .nfs-btn--outline:hover,
.nfs-seminar-buy__header .nfs-btn--outline:focus {
	background: #fff !important;
	color: var(--nfs-navy) !important;
	border-color: var(--nfs-navy) !important;
}

/* ================= PAGINA 404 (shortcode [nfs_404])
   O singură coloană centrată: cifra mare, mesajul și două acțiuni.
   Antetul și subsolul rămân ale site-ului.
   ================= */

.nfs-404 {
	max-width: 640px;
	margin: 0 auto;
	padding: 96px 0 120px;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	font-family: var(--nfs-font);
	color: var(--nfs-text);
	box-sizing: border-box;
}

@media (max-width: 640px) {
	.nfs-404 {
		padding: 56px 0 72px;
	}
}

.nfs-404 :where(h1) {
	font-family: var(--nfs-font-heading);
	margin: 0;
}

.nfs-404__code {
	font: 800 clamp(90px, 16vw, 150px) var(--nfs-font-heading);
	line-height: 0.9;
	letter-spacing: -6px;
	color: var(--nfs-navy);
}

.nfs-404__code-accent {
	color: var(--nfs-gold);
}

.nfs-404__pill {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background: var(--nfs-bg);
	color: var(--nfs-navy);
	border: 1px solid rgba(3, 38, 87, 0.1);
	border-radius: 999px;
	padding: 7px 15px;
	font: 700 11.5px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	margin-top: 26px;
}

.nfs-404__title {
	font-size: clamp(28px, 4vw, 40px);
	font-weight: 800;
	line-height: 1.15;
	letter-spacing: -0.7px;
	color: var(--nfs-navy);
	margin-top: 20px;
	text-wrap: balance;
}

.nfs-404__title-accent {
	border-bottom: 6px solid var(--nfs-gold);
}

.nfs-404__text {
	font-size: 17px;
	line-height: 1.7;
	color: var(--nfs-text-muted);
	margin: 20px 0 0;
	max-width: 480px;
	text-wrap: pretty;
}

.nfs-404__actions {
	display: flex;
	gap: 12px;
	flex-wrap: wrap;
	justify-content: center;
	margin-top: 34px;
}

.nfs-404__help {
	font: 600 13.5px var(--nfs-font);
	color: var(--nfs-text-label);
	line-height: 1.7;
	margin: 48px 0 0;
	max-width: 440px;
}

.nfs-404__help a {
	color: var(--nfs-navy);
	text-decoration: none;
	border-bottom: 2px solid var(--nfs-gold);
}

/* ================= PAGINA DE CONTACT (shortcode [nfs_contact])
   Bandă gri cu titlul, trei canale de contact, apoi formularul și datele
   legale. Antetul și subsolul rămân ale site-ului.
   ================= */

.nfs-contact {
	/* Aceeași bandă full-width ca pe pagina de produs: fundalul gri al
	   antetului trebuie să treacă dincolo de containerul Elementor.
	   --nfs-sbw (lățimea barei de scroll) e măsurat în account.js. */
	width: calc(100vw - var(--nfs-sbw, 0px));
	margin-left: calc(50% - 50vw + var(--nfs-sbw, 0px) / 2);
	margin-right: calc(50% - 50vw + var(--nfs-sbw, 0px) / 2);
	font-family: var(--nfs-font);
	color: var(--nfs-text);
}

.nfs-contact,
.nfs-contact * {
	box-sizing: border-box;
}

.nfs-contact :where(h1, h2, h3) {
	font-family: var(--nfs-font-heading);
	margin: 0;
}

.nfs-contact :where(p, span, a, li, label, div) {
	font-family: var(--nfs-font);
}

/*
 * Padding-ul lateral vine de aici, nu din containerul Elementor: blocul iese
 * pe toată lățimea ecranului (vezi .nfs-contact), deci setările de spațiere
 * ale containerului nu îl mai ating.
 */
.nfs-contact__inner {
	box-sizing: border-box;
	max-width: 1400px;
	margin: 0 auto;
	padding-left: 24px;
	padding-right: 24px;
}

@media (max-width: 767px) {
	.nfs-contact__inner {
		padding-left: 20px;
		padding-right: 20px;
	}
}

.nfs-contact__hero {
	background: var(--nfs-bg);
	border-top: 1px solid var(--nfs-border);
	border-bottom: 1px solid var(--nfs-border);
	padding: 34px 0 60px;
}

/*
 * Doar sus și jos, scrise separat.
 *
 * Cu shorthand-ul "padding: 56px 0 90px", laterala devenea 0 și anula
 * padding-ul lui .nfs-contact__inner — aceeași specificitate, dar declarat
 * mai jos, deci câștiga el, iar conținutul ajungea lipit de marginea
 * ecranului pe telefon.
 */
.nfs-contact__body {
	padding-top: 56px;
	padding-bottom: 90px;
}

.nfs-contact__hero-row {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
	gap: 40px;
	align-items: end;
	margin-top: 26px;
}

.nfs-contact__pill {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background: var(--nfs-card);
	color: var(--nfs-navy);
	border: 1px solid rgba(3, 38, 87, 0.1);
	border-radius: 999px;
	padding: 7px 15px;
	font: 700 11.5px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.nfs-contact__title {
	font-size: clamp(30px, 4vw, 42px);
	font-weight: 800;
	line-height: 1.15;
	letter-spacing: -0.4px;
	color: var(--nfs-navy);
	margin-top: 18px;
}

.nfs-contact__title-accent {
	border-bottom: 4px solid var(--nfs-gold);
}

.nfs-contact__lead {
	font-size: 17px;
	line-height: 1.65;
	color: var(--nfs-text-muted);
	margin: 16px 0 0;
	max-width: 600px;
	text-wrap: pretty;
}

.nfs-contact__hero-actions {
	display: flex;
	gap: 14px;
	justify-content: flex-end;
	flex-wrap: wrap;
}

@media (max-width: 860px) {
	.nfs-contact__hero-actions {
		justify-content: flex-start;
	}
}

/* ---------- Canale de contact (e-mail / telefon / adresă) ---------- */

.nfs-contact__channels {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
	gap: 24px;
}

.nfs-contact__channels .nfs-card {
	padding: 32px;
}

.nfs-contact__icon {
	width: 44px;
	height: 44px;
	border-radius: 12px;
	background: var(--nfs-navy);
	color: var(--nfs-gold);
	display: flex;
	align-items: center;
	justify-content: center;
	margin-bottom: 20px;
}

.nfs-contact__icon svg {
	width: 20px;
	height: 20px;
}

.nfs-contact__card-title {
	font-size: 19px;
	font-weight: 700;
	color: var(--nfs-navy);
}

.nfs-contact__card-text {
	font-size: 16px;
	line-height: 1.7;
	color: var(--nfs-text-muted);
	margin: 12px 0 16px;
	text-wrap: pretty;
}

.nfs-contact__card-link {
	font: 700 15px var(--nfs-font);
	color: var(--nfs-navy);
	text-decoration: none;
	word-break: break-word;
}

.nfs-contact__card-link:hover {
	color: var(--nfs-navy-light);
}

/* ---------- Formular + date legale ---------- */

.nfs-contact__layout {
	display: flex;
	flex-wrap: wrap;
	gap: 28px;
	align-items: flex-start;
	margin-top: 28px;
}

.nfs-contact__form-col {
	flex: 1 1 520px;
	min-width: 0;
}

.nfs-contact__side {
	flex: 1 1 340px;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 28px;
}

.nfs-contact__layout .nfs-card {
	padding: 32px;
}

.nfs-contact__form-title {
	font-size: 22px;
	font-weight: 700;
	color: var(--nfs-navy);
}

.nfs-contact__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
	gap: 20px;
	margin-top: 12px;
}

.nfs-contact__row {
	margin: 0;
	min-width: 0;
}

.nfs-contact__row--full {
	margin-top: 20px;
}

.nfs-contact__field {
	box-sizing: border-box;
	width: 100%;
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius-sm);
	background: var(--nfs-bg);
	padding: 13px 15px;
	font: 500 14.5px var(--nfs-font);
	color: var(--nfs-navy);
	margin-top: 8px;
	outline: none;
	box-shadow: none;
}

.nfs-contact__field:focus {
	border-color: var(--nfs-navy);
	background: var(--nfs-card);
	outline: none;
	box-shadow: none;
}

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

/* Capcana pentru roboți: prezentă în pagină, invizibilă pentru oameni.
   display:none ar fi ignorat de unii roboți, de aceea o scoatem din cadru. */

.nfs-contact__trap {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.nfs-contact__consent {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	margin-top: 20px;
	cursor: pointer;
	font-size: 14px;
	line-height: 1.6;
	color: var(--nfs-text-muted);
}

.nfs-contact__consent input {
	width: 18px;
	height: 18px;
	margin-top: 2px;
	accent-color: var(--nfs-navy);
	flex-shrink: 0;
}

.nfs-contact__consent a {
	color: var(--nfs-navy);
}

.nfs-contact__submit {
	margin-top: 24px;
}

.nfs-contact__notice {
	border-radius: var(--nfs-radius-sm);
	padding: 14px 16px;
	margin-top: 20px;
	font: 600 14px var(--nfs-font);
	line-height: 1.6;
}

.nfs-contact__notice--ok {
	background: #eef8f1;
	border: 1px solid #bfe2cc;
	color: #0d6b3f;
}

.nfs-contact__notice--error {
	background: #fdf1f1;
	border: 1px solid #f0c9c9;
	color: #96231f;
}

.nfs-contact__legal {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 20px;
	padding: 16px 0;
	border-bottom: 1px solid var(--nfs-border);
}

.nfs-contact__legal.is-last {
	border-bottom: none;
	padding-bottom: 0;
}

.nfs-contact__legal-value {
	font: 600 14.5px var(--nfs-font);
	color: var(--nfs-navy);
	text-align: right;
}

/* ---------- Formularul de contact: câmpuri identice, două pe rând ----------
   Selectorii de mai jos includ și numele elementului, ca stilurile temei /
   WooCommerce pe input, select și textarea să nu se strecoare peste ele
   (tema le dă înălțimi și borduri proprii). */

.nfs-contact__grid {
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 20px 24px;
}

@media (max-width: 720px) {
	.nfs-contact__grid {
		grid-template-columns: minmax(0, 1fr);
	}
}

.nfs-contact input.nfs-contact__field,
.nfs-contact select.nfs-contact__field,
.nfs-contact textarea.nfs-contact__field {
	box-sizing: border-box !important;
	display: block !important;
	width: 100% !important;
	max-width: 100% !important;
	height: 48px !important;
	min-height: 0 !important;
	padding: 0 15px !important;
	border: 1px solid var(--nfs-border) !important;
	border-radius: var(--nfs-radius-sm) !important;
	background-color: var(--nfs-bg) !important;
	color: var(--nfs-navy) !important;
	font: 500 14.5px/1 var(--nfs-font) !important;
	margin: 8px 0 0 !important;
	box-shadow: none !important;
	outline: none !important;
	appearance: none;
	-webkit-appearance: none;
	transition: border-color 0.15s ease, background-color 0.15s ease;
}

/* Textarea nu are înălțime fixă: crește cu rows și rămâne redimensionabilă. */

.nfs-contact textarea.nfs-contact__field {
	height: auto !important;
	min-height: 150px !important;
	padding: 14px 15px !important;
	line-height: 1.6 !important;
	resize: vertical;
}

/* Săgeata proprie a selectului — cea nativă dispare odată cu appearance:none. */

.nfs-contact select.nfs-contact__field {
	padding-right: 42px !important;
	background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23032657' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 15px center;
	background-size: 16px 16px;
	cursor: pointer;
}

.nfs-contact input.nfs-contact__field:focus,
.nfs-contact select.nfs-contact__field:focus,
.nfs-contact textarea.nfs-contact__field:focus {
	border-color: var(--nfs-navy) !important;
	background-color: var(--nfs-card) !important;
}

.nfs-contact input.nfs-contact__field::placeholder,
.nfs-contact textarea.nfs-contact__field::placeholder {
	color: var(--nfs-text-label);
	opacity: 1;
}

/* ================= CARD SEMINAR — actualizare de design =================
   Cardul apare și în afara paginilor de cont (Loop Grid în magazin), unde
   tipografia temei se scurgea înăuntru: aici îl aducem la același sistem
   ca restul paginilor — Public Sans pe corp, Sora pe titlu și preț.
   Regulile de mai jos vin după cele originale, deci le completează prin
   ordine, fără să le rescrie pe acelea. */

.nfs-seminar-card {
	font-family: var(--nfs-font);
	color: var(--nfs-text);
	transition: border-color 0.18s ease, transform 0.18s ease;
}

.nfs-seminar-card,
.nfs-seminar-card * {
	box-sizing: border-box;
}

.nfs-seminar-card :where(p, span, div, a) {
	font-family: var(--nfs-font);
}

.nfs-seminar-card:hover {
	border-color: rgba(3, 38, 87, 0.28);
	transform: translateY(-2px);
}

/* Thumbnail: imaginea se apropie ușor la hover, ca butonul de play să pară
   că reacționează împreună cu ea, nu separat. */

.nfs-seminar-card__thumb {
	transition: background-size 0.35s ease;
}

.nfs-seminar-card__thumb.has-image:hover {
	background-size: 138%;
}

/* Eticheta de tip: aceeași pastilă aurie folosită peste imaginea din
   pagina de seminar, în locul dreptunghiului translucid. */

.nfs-seminar-card__badge {
	background: var(--nfs-gold);
	color: var(--nfs-navy);
	font: 700 10px var(--nfs-font);
	letter-spacing: 0.08em;
	padding: 5px 10px;
	border-radius: 4px;
}

.nfs-seminar-card__duration {
	font: 700 10.5px var(--nfs-font);
	padding: 3px 7px;
	border-radius: 4px;
	backdrop-filter: blur(2px);
}

.nfs-seminar-card__body {
	padding: 20px;
}

.nfs-seminar-card__title {
	font: 700 16px/1.4 var(--nfs-font-heading);
	letter-spacing: -0.2px;
	margin-bottom: 12px;
	/* Titlurile seminariilor sunt lungi; le oprim la două rânduri ca toate
	   cardurile din grilă să rămână la aceeași înălțime. */
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

/* Sublinierea la hover rupea ritmul cardului — rămâne doar schimbarea de
   culoare, ca la celelalte titluri din design. */

.nfs-seminar-card__title:hover {
	color: var(--nfs-navy-light) !important;
	text-decoration: none !important;
}

.nfs-seminar-card__parts {
	font: 700 10.5px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
	margin-bottom: 6px;
}

.nfs-seminar-card__price {
	font: 800 20px var(--nfs-font-heading);
	color: var(--nfs-navy);
	margin: 0 0 14px;
}

.nfs-seminar-card__price del {
	font: 500 14px var(--nfs-font);
}

.nfs-seminar-card__status {
	font: 600 13px var(--nfs-font);
}

/* "Achiziționat" e un link către seminar în cont, dar gri pe gri arăta ca un
   buton dezactivat — îl aducem la contrastul celorlalte butoane secundare. */

a.nfs-seminar-card__owned {
	color: var(--nfs-navy) !important;
	border-color: rgba(3, 38, 87, 0.2) !important;
	transition: background-color 0.15s ease, border-color 0.15s ease;
}

a.nfs-seminar-card__owned:hover,
a.nfs-seminar-card__owned:focus {
	background: var(--nfs-card) !important;
	border-color: var(--nfs-navy) !important;
	color: var(--nfs-navy) !important;
}

.nfs-seminar-card__owned-icon {
	color: var(--nfs-navy);
	background: var(--nfs-gold);
	width: 18px;
	height: 18px;
	border-radius: 50%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 11px;
	flex-shrink: 0;
}

/* ---------- Card produs (ghiduri, monografii) ----------
   Refolosește cardul de seminar, dar cu imaginea reală a produsului: fără
   buton de play, fără durată, cu proporție și încadrare alese din Elementor. */

.nfs-product-card__thumb {
	position: relative;
	display: block;
	overflow: hidden;
	background: var(--nfs-bg);
}

.nfs-product-card__thumb--4-3 {
	aspect-ratio: 4 / 3;
}

.nfs-product-card__thumb--16-9 {
	aspect-ratio: 16 / 9;
}

.nfs-product-card__thumb--1-1 {
	aspect-ratio: 1 / 1;
}

.nfs-product-card__thumb--3-4 {
	aspect-ratio: 3 / 4;
}

.nfs-product-card__thumb img {
	display: block;
	width: 100%;
	height: 100%;
	transition: transform 0.35s ease;
}

/* Imaginea umple cadrul, fără padding — exact ca thumbnail-ul cardurilor de
   seminar. "Imaginea întreagă" rămâne o opțiune pentru coperți cu proporții
   neobișnuite, dar tot lipită de margini. */

.nfs-product-card--fit-contain .nfs-product-card__thumb img {
	object-fit: contain;
}

.nfs-product-card--fit-cover .nfs-product-card__thumb img {
	object-fit: cover;
}

.nfs-product-card:hover .nfs-product-card__thumb img {
	transform: scale(1.03);
}

/* Eticheta stă peste o imagine deschisă la culoare, nu peste un cadru navy —
   pastila aurie rămâne lizibilă, dar îi adăugăm un contur subtil. */

.nfs-product-card .nfs-seminar-card__badge {
	box-shadow: 0 1px 3px rgba(3, 38, 87, 0.18);
}

/* Formatul disponibil, în colțul opus categoriei. Navy pe fundal alb, ca să
   citească peste orice imagine, și cu aceeași înălțime ca pastila aurie. */
.nfs-product-card__format {
	position: absolute;
	top: 12px;
	right: 12px;
	z-index: 1;
	max-width: calc(100% - 24px);
	background: #fff;
	color: var(--nfs-navy);
	font: 700 10px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	padding: 5px 10px;
	border-radius: 4px;
	box-shadow: 0 1px 3px rgba(3, 38, 87, 0.18);
}

@media (max-width: 480px) {
	.nfs-product-card__format {
		font-size: 9.5px;
		padding: 4px 8px;
	}
}

/* ================= PAGINA CURS FIZIC (NFS_Course_Page / [nfs_course_product])
   Antet gri cu datele evenimentului și caseta de cumpărare, apoi ce primești,
   programul, tematica, lectorul și regulile, cu detaliile în lateral.
   ================= */

.nfs-course-page {
	/* Aceeași bandă full-width ca pagina de seminar: fundalul antetului trece
	   dincolo de containerul temei. --nfs-sbw vine din account.js. */
	width: calc(100vw - var(--nfs-sbw, 0px));
	margin-left: calc(50% - 50vw + var(--nfs-sbw, 0px) / 2);
	margin-right: calc(50% - 50vw + var(--nfs-sbw, 0px) / 2);
	font-family: var(--nfs-font);
	color: var(--nfs-text);
}

.nfs-course-page,
.nfs-course-page * {
	box-sizing: border-box;
}

.nfs-course-page :where(h1, h2, h3) {
	font-family: var(--nfs-font-heading);
	margin: 0;
}

.nfs-course-page :where(p, span, a, li, div, strong) {
	font-family: var(--nfs-font);
}

.nfs-course-page__inner {
	max-width: 1400px;
	margin: 0 auto;
}

/* Sub 1460px conținutul de 1400px ar atinge marginile ecranului: abia de acolo
   în jos adăugăm spațiu lateral, ca pe desktop alinierea la 1400px să rămână. */

@media (max-width: 1460px) {
	.nfs-course-page__inner {
		padding-left: 24px;
		padding-right: 24px;
	}
}

.nfs-course-page__hero {
	background: var(--nfs-bg);
	border-top: 1px solid var(--nfs-border);
	border-bottom: 1px solid var(--nfs-border);
	padding: 40px 0 50px;
	margin-top: 44px;
}

.nfs-course-page__breadcrumb {
	flex-wrap: wrap;
	row-gap: 4px;
	margin-bottom: 0;
}

.nfs-course-page__hero-row {
	display: flex;
	align-items: flex-start;
	gap: 34px;
	flex-wrap: wrap;
	margin-top: 26px;
}

.nfs-course-page__hero-main {
	flex: 1 1 520px;
	min-width: 0;
}

.nfs-course-page__tags {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
}

.nfs-course-page__tag {
	display: inline-flex;
	align-items: center;
	font: 700 10px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	padding: 5px 10px;
	border-radius: 4px;
}

.nfs-course-page__tag--navy {
	background: var(--nfs-navy);
	color: var(--nfs-gold);
}

.nfs-course-page__tag--limited {
	background: #fffdf2;
	color: #7a5c00;
	border: 1px solid var(--nfs-gold);
}

.nfs-course-page__tag--soldout {
	background: #fdf1f1;
	color: #96231f;
	border: 1px solid #f0c9c9;
}

.nfs-course-page__tag--muted {
	background: var(--nfs-bg);
	color: var(--nfs-text-muted);
	border: 1px solid var(--nfs-border);
}

.nfs-course-page__title {
	font-size: clamp(28px, 4vw, 40px);
	font-weight: 800;
	line-height: 1.14;
	letter-spacing: -0.6px;
	color: var(--nfs-navy);
	margin-top: 18px;
	max-width: 780px;
	text-wrap: balance;
	overflow-wrap: anywhere;
}

.nfs-course-page__title-accent {
	border-bottom: 5px solid var(--nfs-gold);
}

.nfs-course-page__intro {
	font-size: 16.5px;
	line-height: 1.7;
	color: var(--nfs-text-muted);
	margin: 16px 0 0;
	max-width: 660px;
	text-wrap: pretty;
}

.nfs-course-page__facts {
	display: flex;
	flex-wrap: wrap;
	gap: 36px 52px;
	margin-top: 38px;
	padding-top: 30px;
	border-top: 2px solid var(--nfs-navy);
}

.nfs-course-page__label {
	font: 700 10.5px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
}

.nfs-course-page__value {
	font: 600 15px/1.5 var(--nfs-font);
	color: var(--nfs-navy);
	margin-top: 6px;
}

/* ---------- Caseta de cumpărare ---------- */

.nfs-course-buy {
	flex: 1 1 320px;
	min-width: 0;
	background: var(--nfs-card);
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius);
	padding: 30px;
}

.nfs-course-buy__price {
	display: flex;
	align-items: baseline;
	gap: 10px;
	flex-wrap: wrap;
}

.nfs-course-buy__amount {
	font: 800 34px var(--nfs-font-heading);
	color: var(--nfs-navy);
	letter-spacing: -0.8px;
}

.nfs-course-buy__suffix {
	font: 600 14px var(--nfs-font);
	color: var(--nfs-text-label);
}

.nfs-course-buy__qty-row {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 24px 0 6px;
}

.nfs-course-buy__qty-row .nfs-course-page__label {
	flex: 1;
}

.nfs-course-buy__qty {
	display: flex;
	align-items: center;
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius-sm);
	overflow: hidden;
}

.nfs-course-buy__qty-value {
	width: 54px;
	height: 44px;
	display: flex;
	align-items: center;
	justify-content: center;
	font: 700 16px var(--nfs-font-heading);
	color: var(--nfs-navy);
}

/* − și + sunt <button>: aceeași apărare ca pe cardurile de curs, altfel
   stilurile globale de buton ale temei și ale kitului le recolorează. */

.nfs-course-buy button.nfs-course-buy__step,
.nfs-course-buy button.nfs-course-buy__step:hover,
.nfs-course-buy button.nfs-course-buy__step:focus,
.nfs-course-buy button.nfs-course-buy__step:active {
	width: 40px !important;
	height: 44px !important;
	min-width: 0 !important;
	min-height: 0 !important;
	padding: 0 !important;
	margin: 0 !important;
	border: none !important;
	border-radius: 0 !important;
	background: var(--nfs-card) !important;
	background-image: none !important;
	color: var(--nfs-text-muted) !important;
	font: 700 18px/1 var(--nfs-font) !important;
	text-transform: none !important;
	letter-spacing: normal !important;
	text-shadow: none !important;
	box-shadow: none !important;
	outline: none !important;
	display: flex !important;
	align-items: center;
	justify-content: center;
	cursor: pointer;
}

.nfs-course-buy button.nfs-course-buy__step:hover {
	background: #eef2f8 !important;
}

.nfs-course-buy button.nfs-course-buy__step[data-step="-1"] {
	border-right: 1px solid var(--nfs-border) !important;
}

.nfs-course-buy button.nfs-course-buy__step[data-step="1"] {
	border-left: 1px solid var(--nfs-border) !important;
}

.nfs-course-buy button.nfs-course-buy__step[disabled] {
	opacity: 0.4;
	cursor: default;
}

.nfs-course-buy__note {
	font: 600 12.5px/1.6 var(--nfs-font);
	color: var(--nfs-text-label);
	margin: 10px 0 0;
}

.nfs-course-buy__rows {
	margin-top: 22px;
	padding-top: 22px;
	border-top: 1px solid var(--nfs-border);
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.nfs-course-buy__row {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	font: 600 14.5px var(--nfs-font);
	color: var(--nfs-text-muted);
}

.nfs-course-buy__row [data-role="net"],
.nfs-course-buy__row [data-role="vat"] {
	color: var(--nfs-navy);
	font-weight: 700;
}

.nfs-course-buy__total {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	margin-top: 20px;
	padding-top: 20px;
	border-top: 1px solid var(--nfs-border);
	font: 700 15px var(--nfs-font);
	color: var(--nfs-navy);
}

.nfs-course-buy__total-value {
	font: 800 26px var(--nfs-font-heading);
	letter-spacing: -0.6px;
}

.nfs-course-buy__add {
	margin-top: 22px;
	padding: 15px 0 !important;
}

.nfs-course-buy__now {
	margin-top: 12px;
	padding: 13px 0 !important;
	font-size: 14px !important;
}

.nfs-course-buy__seats {
	font: 600 12.5px/1.6 var(--nfs-font);
	color: var(--nfs-text-label);
	margin: 16px 0 0;
	text-align: center;
}

.nfs-course-buy__closed {
	font-size: 14.5px;
	line-height: 1.6;
	color: var(--nfs-text-muted);
	margin: 20px 0 0;
}

/* Linkul "Vezi coșul" adăugat de WooCommerce după o cumpărare AJAX nu își are
   locul în casetă — coșul din antet se actualizează singur. */

.nfs-course-buy .added_to_cart {
	display: none !important;
}

/* ---------- Conținut: coloana principală și lateralul ---------- */

.nfs-course-page__body {
	display: flex;
	flex-wrap: wrap;
	gap: 28px;
	align-items: flex-start;
	padding-top: 44px;
	padding-bottom: 90px;
}

.nfs-course-page__main {
	flex: 1 1 520px;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 28px;
}

.nfs-course-page__side {
	flex: 1 1 300px;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 28px;
}

.nfs-course-panel {
	padding: 32px;
}

.nfs-course-panel--flush {
	padding: 0;
	overflow: hidden;
}

.nfs-course-panel__head {
	padding: 26px 32px 22px;
	border-bottom: 1px solid var(--nfs-border);
}

.nfs-course-panel__head--split {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 20px;
	flex-wrap: wrap;
}

.nfs-course-panel__title {
	font: 700 20px/1.3 var(--nfs-font-heading);
	color: var(--nfs-navy);
}

.nfs-course-panel__title--sm {
	font-size: 18px;
}

.nfs-course-panel__meta {
	font: 600 13px var(--nfs-font);
	color: var(--nfs-text-label);
	margin: 7px 0 0;
}

.nfs-course-panel__text {
	font-size: 14.5px;
	line-height: 1.7;
	color: var(--nfs-text-muted);
	margin: 12px 0 20px;
}

.nfs-course-li {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	font-size: 15px;
	line-height: 1.65;
	color: var(--nfs-text-muted);
}

.nfs-course-li strong {
	color: var(--nfs-navy);
	font-weight: 700;
}

.nfs-course-li__dot {
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--nfs-gold);
	flex-shrink: 0;
	margin-top: 8px;
}

.nfs-course-benefits {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr));
	gap: 22px;
	margin-top: 22px;
}

.nfs-course-program {
	padding: 8px 32px 26px;
}

.nfs-course-program__slot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 14px 0;
	border-bottom: 1px solid var(--nfs-border);
}

.nfs-course-program__slot:last-child {
	border-bottom: none;
}

.nfs-course-program__time {
	font: 700 15px var(--nfs-font-heading);
	color: var(--nfs-navy);
	white-space: nowrap;
}

.nfs-course-program__label {
	min-width: 0;
	flex: 1;
	font: 500 15px var(--nfs-font);
	color: var(--nfs-text-muted);
	text-align: right;
}

/* ---------- Tematica: acordeon pe module ---------- */

.nfs-course-modules {
	display: flex;
	flex-direction: column;
}

.nfs-course-module {
	border-bottom: 1px solid var(--nfs-border);
}

.nfs-course-module:last-child {
	border-bottom: none;
}

/* Rândul cu litera e un <button>: resetăm stilurile de buton ale temei. */

.nfs-course-page button.nfs-course-module__toggle,
.nfs-course-page button.nfs-course-module__toggle:hover,
.nfs-course-page button.nfs-course-module__toggle:focus,
.nfs-course-page button.nfs-course-module__toggle:active {
	display: flex !important;
	align-items: flex-start;
	gap: 16px;
	width: 100% !important;
	min-height: 0 !important;
	margin: 0 !important;
	padding: 22px 32px !important;
	background: transparent !important;
	background-image: none !important;
	border: none !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	color: inherit !important;
	font: inherit !important;
	text-align: left !important;
	text-transform: none !important;
	letter-spacing: normal !important;
	cursor: pointer;
}

.nfs-course-page button.nfs-course-module__toggle:focus-visible {
	box-shadow: inset 0 0 0 2px rgba(255, 206, 0, 0.6) !important;
}

.nfs-course-module__letter {
	width: 30px;
	height: 30px;
	border-radius: 8px;
	background: var(--nfs-gold);
	color: var(--nfs-navy);
	display: flex;
	align-items: center;
	justify-content: center;
	font: 800 13px var(--nfs-font-heading);
	flex-shrink: 0;
}

.nfs-course-module__heading {
	min-width: 0;
	flex: 1;
	display: flex;
	flex-direction: column;
}

.nfs-course-module__title {
	font: 700 16px/1.35 var(--nfs-font-heading);
	color: var(--nfs-navy);
}

.nfs-course-module__meta {
	font: 600 12.5px var(--nfs-font);
	color: var(--nfs-text-label);
	margin-top: 6px;
}

.nfs-course-module__chevron {
	width: 15px;
	height: 15px;
	color: var(--nfs-text-label);
	flex-shrink: 0;
	margin-top: 7px;
	transition: transform 0.2s ease;
}

.nfs-course-module.is-open .nfs-course-module__chevron {
	transform: rotate(180deg);
}

.nfs-course-module__body {
	display: none;
	flex-direction: column;
	gap: 13px;
	padding: 0 32px 26px 78px;
}

.nfs-course-module.is-open .nfs-course-module__body {
	display: flex;
}

/* ---------- Lector, reguli, lateral ---------- */

.nfs-course-speaker {
	display: flex;
	gap: 26px;
	flex-wrap: wrap;
	align-items: flex-start;
}

.nfs-course-speaker__photo {
	width: 112px;
	height: 112px;
	border-radius: 14px;
	background: var(--nfs-navy);
	color: var(--nfs-gold);
	display: flex;
	align-items: center;
	justify-content: center;
	font: 800 34px var(--nfs-font-heading);
	flex-shrink: 0;
	overflow: hidden;
}

.nfs-course-speaker__photo img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.nfs-course-speaker__info {
	flex: 1 1 300px;
	min-width: 0;
}

.nfs-course-speaker__name {
	margin-top: 8px !important;
}

.nfs-course-speaker__role {
	font: 600 14px var(--nfs-font);
	color: var(--nfs-text-label);
	margin: 6px 0 0;
}

.nfs-course-speaker__bio {
	font-size: 15.5px;
	line-height: 1.75;
	color: var(--nfs-text-muted);
	margin: 12px 0 0;
	text-wrap: pretty;
}

.nfs-course-speaker .nfs-btn {
	margin-top: 20px;
}

.nfs-course-notes {
	border-color: var(--nfs-gold);
	background: #fffdf2;
}

.nfs-course-notes__head {
	display: flex;
	align-items: center;
	gap: 12px;
}

.nfs-course-notes__badge {
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: var(--nfs-gold);
	color: var(--nfs-navy);
	display: flex;
	align-items: center;
	justify-content: center;
	font: 800 14px var(--nfs-font-heading);
	flex-shrink: 0;
}

.nfs-course-notes .nfs-course-panel__title {
	font-size: 18px;
}

.nfs-course-notes__list {
	display: flex;
	flex-direction: column;
	gap: 14px;
	margin-top: 18px;
}

.nfs-course-details {
	display: flex;
	flex-direction: column;
	gap: 18px;
	margin-top: 20px;
}

.nfs-course-links {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

@media (max-width: 640px) {
	.nfs-course-panel,
	.nfs-course-buy {
		padding: 24px;
	}

	.nfs-course-panel--flush {
		padding: 0;
	}

	.nfs-course-panel__head,
	.nfs-course-program {
		padding-left: 24px;
		padding-right: 24px;
	}

	.nfs-course-page button.nfs-course-module__toggle {
		padding: 20px 24px !important;
	}

	.nfs-course-module__body {
		padding: 0 24px 22px 70px;
	}

	.nfs-course-program__slot {
		flex-direction: column;
		align-items: flex-start;
		gap: 4px;
	}

	.nfs-course-program__label {
		text-align: left;
	}
}

/* Sumele WooCommerce vin în span-uri interioare (.woocommerce-Price-amount),
   pe care regula :where(span) de mai sus le trecea pe Public Sans. Public Sans
   e încărcat doar până la greutatea 700, deci 800 cădea pe 700 — de aici prețul
   care nu arăta îngroșat. Suma moștenește acum fontul containerului (Sora 800). */

.nfs-course-page .woocommerce-Price-amount,
.nfs-course-page .woocommerce-Price-amount * {
	font: inherit;
	letter-spacing: inherit;
	color: inherit;
}

/* ---------- Informațiile din antet: iconiță, valoarea mare, rândul secundar ---------- */

.nfs-course-fact {
	min-width: 0;
	display: flex;
	gap: 14px;
}

.nfs-course-fact__icon {
	width: 18px;
	height: 18px;
	flex: none;
	margin-top: 3px;
	color: var(--nfs-navy);
}

.nfs-course-fact__body {
	min-width: 0;
}

.nfs-course-fact__main {
	font: 800 19px var(--nfs-font-heading);
	color: var(--nfs-navy);
	letter-spacing: -0.3px;
	margin-top: 7px;
}

.nfs-course-fact__sub {
	font: 600 13.5px var(--nfs-font);
	color: var(--nfs-text-muted);
	margin-top: 4px;
}

/* Tariful: suma și "/ pers." pe același rând, aliniate pe linia de bază. */

.nfs-course-fact__price {
	display: flex;
	align-items: baseline;
	gap: 7px;
	flex-wrap: wrap;
	margin-top: 7px;
}

.nfs-course-fact__price .nfs-course-fact__main,
.nfs-course-fact__price .nfs-course-fact__sub {
	margin-top: 0;
}

/* Locurile: bara arată cât s-a ocupat din sală, iar textul cât a rămas. */

.nfs-course-fact__seats {
	display: flex;
	align-items: center;
	gap: 9px;
	margin-top: 7px;
}

.nfs-course-fact__bar {
	display: block;
	width: 74px;
	height: 5px;
	border-radius: 3px;
	background: #dbe2ec;
	overflow: hidden;
}

.nfs-course-fact__bar > span {
	display: block;
	height: 100%;
	background: var(--nfs-gold);
}

.nfs-course-fact__left {
	font: 700 13px var(--nfs-font);
	color: #7a5c00;
}


/* =================
   PAGINA DE PRODUS (ghiduri, agende, pachete)
   Galerie și cumpărare, apoi tab-uri cu descrierea, livrarea și recenziile,
   cu întrebări în lateral și produse similare la final.
   ================= */

.nfs-product-page {
	/* Bandă full-width ca paginile de seminar și curs. --nfs-sbw vine din account.js. */
	width: calc(100vw - var(--nfs-sbw, 0px));
	margin-left: calc(50% - 50vw + var(--nfs-sbw, 0px) / 2);
	margin-right: calc(50% - 50vw + var(--nfs-sbw, 0px) / 2);
	font-family: var(--nfs-font);
	color: var(--nfs-text);
	background: var(--nfs-card);
}

.nfs-product-page,
.nfs-product-page * {
	box-sizing: border-box;
}

.nfs-product-page :where(h1, h2, h3, h4) {
	font-family: var(--nfs-font-heading);
	color: var(--nfs-navy);
	margin: 0;
}

.nfs-product-page :where(p, span, a, li, div, strong, button) {
	font-family: var(--nfs-font);
}

.nfs-product-page .woocommerce-Price-amount,
.nfs-product-page .woocommerce-Price-amount * {
	font: inherit;
	letter-spacing: inherit;
	color: inherit;
}

.nfs-product-page__inner {
	max-width: 1400px;
	margin: 0 auto;
}

@media (max-width: 1460px) {
	.nfs-product-page__inner {
		padding-left: 24px;
		padding-right: 24px;
	}
}

.nfs-product-page__crumbs {
	background: var(--nfs-bg);
	border-top: 1px solid var(--nfs-border);
	border-bottom: 1px solid var(--nfs-border);
	padding: 20px 0;
	margin-top: 44px;
}

.nfs-product-page__crumbs .nfs-breadcrumb {
	flex-wrap: wrap;
	row-gap: 4px;
	margin: 0;
}

.nfs-product-page__top {
	padding: 44px 0 60px;
}

.nfs-product-page__row {
	display: flex;
	flex-wrap: wrap;
	gap: 48px;
	align-items: flex-start;
}

/* ---------- Galeria ---------- */

.nfs-product-gallery {
	flex: 1 1 400px;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.nfs-product-gallery__main {
	height: 480px;
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius);
	overflow: hidden;
	background: var(--nfs-bg);
}

/* Copertele au proporții diferite: le arătăm întregi, pe fundalul gri. */
.nfs-product-gallery__main img {
	display: block;
	width: 100%;
	height: 100%;
	max-width: 100%;
	object-fit: contain;
	margin: 0;
}

.nfs-product-gallery__thumbs {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 12px;
}

.nfs-product-page button.nfs-product-gallery__thumb,
.nfs-product-page button.nfs-product-gallery__thumb:hover,
.nfs-product-page button.nfs-product-gallery__thumb:focus,
.nfs-product-page button.nfs-product-gallery__thumb:active {
	display: block;
	width: 100% !important;
	height: 92px !important;
	min-height: 0 !important;
	padding: 0 !important;
	margin: 0 !important;
	border: 1px solid var(--nfs-border) !important;
	border-radius: 10px !important;
	background: var(--nfs-bg) !important;
	box-shadow: none !important;
	overflow: hidden;
	cursor: pointer;
	transition: border-color 0.18s ease;
}

.nfs-product-page button.nfs-product-gallery__thumb:hover {
	border-color: var(--nfs-navy) !important;
}

/* Bordura activă de 2px e o umbră interioară, ca miniatura să nu se miște. */
.nfs-product-page button.nfs-product-gallery__thumb.is-active {
	border-color: var(--nfs-navy) !important;
	box-shadow: inset 0 0 0 1px var(--nfs-navy) !important;
}

.nfs-product-gallery__thumb img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	margin: 0;
}

/* ---------- Informații și cumpărare ---------- */

.nfs-product-info {
	flex: 1 1 400px;
	min-width: 0;
}

.nfs-product-page__tags {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
}

.nfs-product-page__tag {
	display: inline-flex;
	align-items: center;
	font: 700 10px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	padding: 5px 10px;
	border-radius: 4px;
}

.nfs-product-page__tag--navy {
	background: var(--nfs-navy);
	color: var(--nfs-gold);
}

.nfs-product-page__tag--gold {
	background: #fffdf2;
	color: #7a5c00;
	border: 1px solid var(--nfs-gold);
}

.nfs-product-info__title {
	font-size: clamp(28px, 3.4vw, 36px);
	font-weight: 800;
	line-height: 1.16;
	letter-spacing: -0.6px;
	margin-top: 18px !important;
	overflow-wrap: anywhere;
}

.nfs-product-info__intro {
	font-size: 16.5px;
	line-height: 1.7;
	color: var(--nfs-text-muted);
	margin-top: 14px;
	max-width: 560px;
}

.nfs-product-info__intro p {
	font-size: inherit;
	line-height: inherit;
	color: inherit;
	margin: 0 0 10px;
}

.nfs-product-info__intro > :last-child {
	margin-bottom: 0;
}

.nfs-product-info__meta {
	display: flex;
	align-items: center;
	gap: 14px;
	flex-wrap: wrap;
	margin-top: 20px;
}

.nfs-product-stars {
	display: inline-flex;
	gap: 3px;
}

.nfs-product-stars svg {
	width: 16px;
	height: 16px;
	fill: #dbe2ec;
}

.nfs-product-stars svg.is-on {
	fill: var(--nfs-gold);
}

.nfs-product-info__rating {
	font: 700 13.5px var(--nfs-font);
	color: var(--nfs-navy);
}

.nfs-product-page a.nfs-product-info__reviews {
	font: 600 13.5px var(--nfs-font);
	color: var(--nfs-text-label);
	text-decoration: none;
}

.nfs-product-page a.nfs-product-info__reviews:hover {
	color: var(--nfs-navy);
}

.nfs-product-info__sep {
	color: #dbe2ec;
}

.nfs-product-info__stock {
	font: 700 13.5px var(--nfs-font);
	color: #0d6b3f;
}

.nfs-product-info__stock.is-low {
	color: #7a5c00;
}

.nfs-product-info__stock.is-out {
	color: #96231f;
}

.nfs-product-info__price {
	display: flex;
	align-items: baseline;
	gap: 12px;
	flex-wrap: wrap;
	margin-top: 28px;
	padding-top: 28px;
	border-top: 1px solid var(--nfs-border);
}

.nfs-product-info__amount {
	font: 800 40px/1.1 var(--nfs-font-heading);
	letter-spacing: -1.2px;
	color: var(--nfs-navy);
}

.nfs-product-info__old {
	font: 600 20px var(--nfs-font);
	color: var(--nfs-text-label);
	text-decoration: line-through;
}

.nfs-product-info__save {
	font: 700 12px var(--nfs-font);
	color: #0d6b3f;
	background: #e8f5ee;
	padding: 5px 10px;
	border-radius: 4px;
}

.nfs-product-info__tax {
	font: 600 13px var(--nfs-font);
	color: var(--nfs-text-label);
	margin: 8px 0 0;
}

.nfs-product-buy {
	margin-top: 26px;
}

.nfs-product-buy__row {
	display: flex;
	align-items: center;
	gap: 14px;
	flex-wrap: wrap;
}

.nfs-product-buy__qty {
	display: flex;
	align-items: center;
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius-sm);
	overflow: hidden;
	flex: none;
}

/* Butoanele + / − sunt <button>: tema și kitul Elementor le recolorează. */
.nfs-product-buy button.nfs-product-buy__step,
.nfs-product-buy button.nfs-product-buy__step:hover,
.nfs-product-buy button.nfs-product-buy__step:focus,
.nfs-product-buy button.nfs-product-buy__step:active {
	width: 42px !important;
	height: 50px !important;
	min-width: 0 !important;
	min-height: 0 !important;
	padding: 0 !important;
	margin: 0 !important;
	border: none !important;
	border-radius: 0 !important;
	background: var(--nfs-card) !important;
	background-image: none !important;
	color: var(--nfs-text-muted) !important;
	font: 700 18px/1 var(--nfs-font) !important;
	text-transform: none !important;
	letter-spacing: normal !important;
	box-shadow: none !important;
	outline: none !important;
	display: flex !important;
	align-items: center;
	justify-content: center;
	cursor: pointer;
}

.nfs-product-buy button.nfs-product-buy__step:hover {
	background: #eef2f8 !important;
}

.nfs-product-buy button.nfs-product-buy__step[data-step="-1"] {
	border-right: 1px solid var(--nfs-border) !important;
}

.nfs-product-buy button.nfs-product-buy__step[data-step="1"] {
	border-left: 1px solid var(--nfs-border) !important;
}

.nfs-product-buy button.nfs-product-buy__step[disabled] {
	opacity: 0.4;
	cursor: default;
}

.nfs-product-buy__qty-value {
	width: 54px;
	height: 50px;
	display: flex;
	align-items: center;
	justify-content: center;
	font: 700 16px var(--nfs-font-heading) !important;
	color: var(--nfs-navy);
}

.nfs-product-buy a.nfs-btn.nfs-product-buy__add {
	flex: 1 1 220px;
	padding: 17px 28px;
	font-size: 15.5px !important;
}

.nfs-product-buy a.nfs-btn.nfs-product-buy__add.loading {
	opacity: 0.7;
}

/* WooCommerce adaugă "Vezi coșul" după buton, după adăugarea AJAX. */
.nfs-product-buy a.added_to_cart {
	flex-basis: 100%;
	font: 700 13.5px var(--nfs-font);
	color: var(--nfs-navy);
	text-decoration: underline;
	text-decoration-color: var(--nfs-gold);
	text-underline-offset: 4px;
}

.nfs-product-buy a.nfs-btn.nfs-product-buy__now {
	margin-top: 12px;
	padding: 14px 0;
}

.nfs-product-buy__closed {
	margin: 26px 0 0;
	padding: 14px 16px;
	border-radius: var(--nfs-radius-sm);
	background: #fdf1f1;
	border: 1px solid #f0c9c9;
	color: #96231f;
	font: 600 14px/1.6 var(--nfs-font);
}

.nfs-product-page ul.nfs-product-perks {
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 14px;
	margin: 30px 0 0;
	padding: 26px 0 0;
	border-top: 1px solid var(--nfs-border);
}

.nfs-product-perks li {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0;
	padding: 0;
	font: 600 14.5px/1.5 var(--nfs-font);
	color: var(--nfs-text-muted);
}

.nfs-product-perks li::before {
	content: none;
}

.nfs-product-perks svg {
	width: 17px;
	height: 17px;
	flex: none;
	fill: none;
	stroke: var(--nfs-navy);
	stroke-width: 1.9;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* ---------- Tab-uri, descriere, lateral ---------- */

.nfs-product-page__details {
	padding: 0 0 110px;
}

.nfs-product-tabs {
	display: flex;
	gap: 34px;
	flex-wrap: wrap;
	border-bottom: 1px solid var(--nfs-border);
}

.nfs-product-page button.nfs-product-tab,
.nfs-product-page button.nfs-product-tab:hover,
.nfs-product-page button.nfs-product-tab:focus,
.nfs-product-page button.nfs-product-tab:active {
	min-height: 0 !important;
	padding: 0 0 14px !important;
	margin: 0 0 -1px !important;
	border: none !important;
	border-bottom: 3px solid transparent !important;
	border-radius: 0 !important;
	background: transparent !important;
	background-image: none !important;
	box-shadow: none !important;
	outline: none !important;
	color: var(--nfs-text-label) !important;
	font: 700 15px/1.3 var(--nfs-font) !important;
	text-transform: none !important;
	letter-spacing: normal !important;
	cursor: pointer;
}

.nfs-product-page button.nfs-product-tab:hover {
	color: var(--nfs-navy) !important;
}

.nfs-product-page button.nfs-product-tab.is-active {
	color: var(--nfs-navy) !important;
	border-bottom-color: var(--nfs-gold) !important;
}

.nfs-product-page__body {
	display: flex;
	flex-wrap: wrap;
	gap: 48px;
	align-items: flex-start;
	margin-top: 40px;
}

.nfs-product-page__main {
	flex: 1 1 480px;
	min-width: 0;
}

.nfs-product-page__aside {
	flex: 0 1 360px;
	min-width: 0;
}

.nfs-product-page__h2 {
	font-size: 22px;
	font-weight: 700;
	line-height: 1.3;
}

.nfs-product-desc {
	margin-top: 18px;
	max-width: 820px;
}

.nfs-product-desc > :first-child {
	margin-top: 0 !important;
}

.nfs-product-page .nfs-product-desc :where(h2, h3, h4) {
	line-height: 1.3;
	font-weight: 700;
}

.nfs-product-page .nfs-product-desc h2 {
	font-size: 20px;
	margin-top: 34px;
}

.nfs-product-page .nfs-product-desc h3 {
	font-size: 18px;
	margin-top: 30px;
}

.nfs-product-page .nfs-product-desc h4 {
	font-size: 16px;
	margin-top: 24px;
}

.nfs-product-desc p {
	font-size: 16px;
	line-height: 1.8;
	color: var(--nfs-text-muted);
	margin: 16px 0 0;
}

.nfs-product-desc strong,
.nfs-product-desc b {
	color: var(--nfs-navy);
	font-weight: 700;
}

.nfs-product-desc a {
	color: var(--nfs-navy);
	text-decoration: underline;
	text-decoration-color: var(--nfs-gold);
	text-underline-offset: 3px;
}

.nfs-product-desc img {
	max-width: 100%;
	height: auto;
	border-radius: 10px;
}

/* Elementor își încarcă frontend.min.css după fișierele noastre și declară
   ".elementor img { height: auto; max-width: 100%; border-radius: 0 }", cu
   aceeași specificitate ca ".clasa img" — deci câștigă el, fiind ultimul.
   Prefixul ".elementor" urcă la (0,2,1) și ne redă înălțimea pozelor care
   trebuie să umple containerul, plus rotunjirea din descrierea produsului. */
.elementor .nfs-watch-header__instructor-photo img,
.elementor .nfs-cart-item__media img,
.elementor .nfs-product-card__thumb img,
.elementor .nfs-course-speaker__photo img,
.elementor .nfs-product-gallery__main img,
.elementor .nfs-product-gallery__thumb img {
	height: 100%;
}

.elementor .nfs-product-desc img {
	border-radius: 10px;
}

.nfs-product-page .nfs-product-desc ul {
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 14px;
	margin: 18px 0 0;
	padding: 0;
}

.nfs-product-page .nfs-product-desc ol {
	margin: 18px 0 0;
	padding-left: 22px;
}

.nfs-product-desc li {
	font-size: 15.5px;
	line-height: 1.7;
	color: var(--nfs-text-muted);
	margin: 0;
}

.nfs-product-page .nfs-product-desc ul li {
	position: relative;
	padding-left: 19px;
}

.nfs-product-page .nfs-product-desc ul li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 10px;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--nfs-gold);
}

.nfs-product-desc ol li + li {
	margin-top: 10px;
}

/* Tabelele lipite din Word poartă lățimi și înălțimi fixe în style=""
   (ex. 424.95pt pe o celulă) — le anulăm, ca tabelul să încapă pe telefon. */
.nfs-product-desc table {
	width: 100% !important;
	height: auto !important;
	border-collapse: collapse;
	margin-top: 18px;
	font-size: 15px;
}

.nfs-product-desc th,
.nfs-product-desc td {
	width: auto !important;
	height: auto !important;
	padding: 10px 12px;
	border: 1px solid var(--nfs-border);
	text-align: left;
	color: var(--nfs-text-muted);
	overflow-wrap: break-word;
}

.nfs-product-desc td p {
	margin: 0;
}

.nfs-product-panel {
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius);
	background: var(--nfs-card);
	padding: 32px;
}

.nfs-product-page .nfs-product-panel h2 {
	font-size: 18px;
	font-weight: 700;
	line-height: 1.3;
}

.nfs-product-panel p {
	font-size: 14.5px;
	line-height: 1.7;
	color: var(--nfs-text-muted);
	margin: 12px 0 18px;
}

.nfs-product-panel a.nfs-btn {
	padding: 11px 22px;
	font-size: 13.5px !important;
}

/* ---------- Recenzii ---------- */

.nfs-product-reviews__head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 24px;
	flex-wrap: wrap;
}

.nfs-product-reviews__score {
	display: flex;
	align-items: baseline;
	gap: 10px;
}

.nfs-product-reviews__score strong {
	font: 800 26px var(--nfs-font-heading);
	color: var(--nfs-navy);
}

.nfs-product-reviews__score span {
	font: 600 13.5px var(--nfs-font);
	color: var(--nfs-text-label);
}

.nfs-product-reviews {
	margin-top: 24px;
}

.nfs-product-review {
	padding: 24px 0;
	border-bottom: 1px solid var(--nfs-border);
}

.nfs-product-review__head {
	display: flex;
	align-items: center;
	gap: 14px;
}

.nfs-product-review__avatar {
	width: 38px;
	height: 38px;
	border-radius: 50%;
	background: var(--nfs-navy);
	color: var(--nfs-gold);
	display: flex;
	align-items: center;
	justify-content: center;
	font: 800 13px var(--nfs-font-heading) !important;
	flex: none;
}

.nfs-product-review__who {
	flex: 1;
	min-width: 0;
}

.nfs-product-review__name {
	font: 700 14.5px var(--nfs-font-heading) !important;
	color: var(--nfs-navy);
}

.nfs-product-review__date {
	font: 600 12.5px var(--nfs-font);
	color: var(--nfs-text-label);
	margin-top: 3px;
}

.nfs-product-review__stars {
	font: 700 13px var(--nfs-font);
	color: var(--nfs-gold);
	letter-spacing: 1px;
	flex: none;
}

.nfs-product-review__text p {
	font-size: 15.5px;
	line-height: 1.8;
	color: var(--nfs-text-muted);
	margin: 14px 0 0;
}

/* ---------- Produse similare ---------- */

.nfs-product-related {
	margin-top: 80px;
	padding-top: 56px;
	border-top: 1px solid var(--nfs-border);
}

.nfs-product-related__head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 24px;
	flex-wrap: wrap;
}

.nfs-product-page .nfs-product-related__head h2 {
	font-size: 26px;
	font-weight: 800;
	letter-spacing: -0.4px;
	line-height: 1.3;
}

.nfs-product-related__accent {
	font-family: inherit !important;
	border-bottom: 4px solid var(--nfs-gold);
}

.nfs-product-related__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
	gap: 22px;
	margin-top: 32px;
}

.nfs-product-page a.nfs-product-related__card,
.nfs-product-page a.nfs-product-related__card:hover,
.nfs-product-page a.nfs-product-related__card:focus {
	display: flex;
	flex-direction: column;
	min-width: 0;
	background: var(--nfs-navy);
	border-radius: var(--nfs-radius);
	overflow: hidden;
	text-decoration: none !important;
	transition: transform 0.18s ease;
}

.nfs-product-page a.nfs-product-related__card:hover {
	transform: translateY(-3px);
}

.nfs-product-related__top {
	position: relative;
	display: block;
	height: 126px;
	overflow: hidden;
}

.nfs-product-related__top::before {
	content: "";
	position: absolute;
	width: 150px;
	height: 150px;
	border-radius: 50%;
	background: rgba(255, 206, 0, 0.16);
	right: -52px;
	top: -58px;
}

.nfs-product-related__tag {
	position: absolute;
	bottom: 14px;
	left: 18px;
	background: var(--nfs-gold);
	color: var(--nfs-navy);
	font: 700 10px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	padding: 5px 10px;
	border-radius: 4px;
}

.nfs-product-related__body {
	display: flex;
	flex-direction: column;
	gap: 12px;
	flex: 1;
	padding: 22px 24px 24px;
}

.nfs-product-related__title {
	font: 700 17px/1.35 var(--nfs-font-heading) !important;
	color: #fff;
}

.nfs-product-related__meta {
	font: 500 13.5px/1.6 var(--nfs-font);
	color: #b9c8dd;
	flex: 1;
}

.nfs-product-related__foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	margin-top: 6px;
}

.nfs-product-related__price {
	font: 800 19px var(--nfs-font-heading) !important;
	color: var(--nfs-gold);
}

.nfs-product-related__more {
	font: 700 13px var(--nfs-font);
	color: #fff;
	white-space: nowrap;
}

@media (max-width: 782px) {
	.nfs-product-page__crumbs {
		margin-top: 24px;
		padding: 14px 0;
	}

	.nfs-product-page__top {
		padding: 28px 0 44px;
	}

	.nfs-product-page__row,
	.nfs-product-page__body {
		gap: 32px;
	}

	.nfs-product-gallery__main {
		height: 340px;
	}

	.nfs-product-page button.nfs-product-gallery__thumb,
	.nfs-product-page button.nfs-product-gallery__thumb:hover,
	.nfs-product-page button.nfs-product-gallery__thumb:focus,
	.nfs-product-page button.nfs-product-gallery__thumb:active {
		height: 70px !important;
	}

	.nfs-product-info__amount {
		font-size: 34px;
	}

	.nfs-product-tabs {
		gap: 22px;
		flex-wrap: nowrap;
		overflow-x: auto;
	}

	.nfs-product-page button.nfs-product-tab {
		white-space: nowrap;
	}

	.nfs-product-page__aside {
		flex-basis: 100%;
	}

	.nfs-product-page__details {
		padding-bottom: 70px;
	}

	.nfs-product-panel {
		padding: 24px;
	}

	.nfs-product-related {
		margin-top: 56px;
		padding-top: 40px;
	}
}


/* =================
   THUMBNAIL-URI VIMEO: SCHELET + ÎNCĂRCARE LA NEVOIE
   Pozele nu mai sunt fundal CSS, ci <img loading="lazy">: se descarcă doar
   când intră în ecran, iar până atunci se vede scheletul (fundalul decorativ
   + o sclipire). account.js pune .is-loaded când poza e gata.
   ================= */

.nfs-thumb {
	position: relative;
}

.nfs-thumb .nfs-thumb-img {
	position: absolute;
	inset: 0;
	z-index: 0;
	width: 100%;
	height: 100%;
	max-width: none;
	margin: 0;
	object-fit: cover;
	/* Vimeo trimite thumbnail-ul cu bare negre sus/jos când video-ul sursă nu
	   e exact 16:9 — mărim peste 100% ca să le tăiem (înainte: background-size 130%). */
	transform: scale(1.3);
	opacity: 0;
	transition: opacity 0.25s ease, transform 0.35s ease;
}

.nfs-thumb.is-loaded .nfs-thumb-img {
	opacity: 1;
}

/* Scheletul e un element real, nu ::before sau ::after: pe aceste containere
   ambele pseudo-elemente sunt deja folosite de voalurile navy de peste poză
   (antetul seminarului, cardurile, rândurile din Panou). Un schelet pus tot
   acolo le-ar suprascrie și le-ar șterge după încărcarea pozei. */

.nfs-thumb-skeleton {
	position: absolute;
	inset: 0;
	z-index: 0;
	background: linear-gradient(
		100deg,
		rgba(255, 255, 255, 0) 20%,
		rgba(255, 255, 255, 0.16) 50%,
		rgba(255, 255, 255, 0) 80%
	);
	background-size: 220% 100%;
	animation: nfs-shimmer 1.3s linear infinite;
}

.nfs-thumb.is-loaded .nfs-thumb-skeleton {
	display: none;
}

@keyframes nfs-shimmer {
	from {
		background-position: 130% 0;
	}
	to {
		background-position: -130% 0;
	}
}

/* Cardul de seminar: apropierea de la hover se mută de pe fundal pe imagine. */
.nfs-seminar-card__thumb.has-image:hover .nfs-thumb-img {
	transform: scale(1.38);
}

/* Imaginea din antetul paginii de produs stă sub voalul navy și sub conținut. */
.nfs-seminar-player__frame--locked::before {
	z-index: 1;
}

.nfs-seminar-player__frame--locked .nfs-seminar-player__tags,
.nfs-seminar-player__frame--locked .nfs-seminar-player__watch,
.nfs-seminar-player__frame--locked .nfs-seminar-lock,
.nfs-seminar-player__frame--locked .nfs-seminar-player__locked-label {
	z-index: 2;
}

/* Playerul: schelet peste iframe până când Vimeo afișează primul cadru. */
.nfs-seminar-player__frame {
	position: relative;
}

.nfs-seminar-player__frame.is-loading::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background:
		linear-gradient(
			100deg,
			rgba(255, 255, 255, 0) 20%,
			rgba(255, 255, 255, 0.1) 50%,
			rgba(255, 255, 255, 0) 80%
		),
		var(--nfs-navy);
	background-size: 220% 100%, auto;
	animation: nfs-shimmer 1.3s linear infinite;
}

@media (prefers-reduced-motion: reduce) {
	.nfs-thumb-skeleton,
	.nfs-seminar-player__frame.is-loading::after {
		animation: none;
	}
}

/* =================
   GESTIONEAZĂ ABONAMENTUL NEWSLETTER
   ================= */

.nfs-manage .nfs-card + .nfs-card {
	margin-top: 16px;
}

.nfs-manage__hint {
	font-size: 14.5px;
	line-height: 1.7;
	color: var(--nfs-text-muted);
	margin: 12px 0 0;
	max-width: 640px;
}

.nfs-manage__form {
	margin-top: 16px;
}

.nfs-manage__label {
	display: block;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
	margin-bottom: 6px;
}

.nfs-manage__textarea {
	/* Textarea e inline-block din naștere: fără asta, butonul de sub el urca
	   pe aceeași linie, lipit de marginea lui din dreapta. */
	display: block;
	width: 100%;
	max-width: 520px;
	padding: 11px 14px;
	background: var(--nfs-bg);
	border: 1px solid transparent;
	border-radius: var(--nfs-radius-sm);
	font-size: 14px;
	font-family: inherit;
	color: var(--nfs-text);
	margin-bottom: 14px;
	box-sizing: border-box;
}

.nfs-manage__textarea:focus {
	outline: none;
	border-color: var(--nfs-navy);
	box-shadow: 0 0 0 3px rgba(3, 38, 87, 0.12);
}

/* Anularea e ireversibilă și implică bani: butonul nu trebuie să arate ca
   o acțiune obișnuită. */
.nfs-manage a.nfs-btn.nfs-manage__danger,
.nfs-manage button.nfs-btn.nfs-manage__danger {
	color: #b23a3a !important;
	border-color: #f0c9c9 !important;
}

.nfs-manage .nfs-manage__danger:hover {
	background: #fbe7e7 !important;
}

.nfs-manage__plans {
	display: flex;
	flex-direction: column;
	margin-top: 16px;
}

.nfs-manage__plan {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	padding: 16px 0;
	flex-wrap: wrap;
}

.nfs-manage__plan + .nfs-manage__plan {
	border-top: 1px solid var(--nfs-border);
}

.nfs-manage__plan-name {
	font-weight: 700;
	color: var(--nfs-text);
}

.nfs-manage__plan-meta {
	font-size: 13px;
	color: var(--nfs-text-muted);
	margin-top: 4px;
}

.nfs-manage__plan-cta {
	display: flex;
	align-items: center;
	gap: 16px;
	flex-wrap: wrap;
}

.nfs-manage__plan-price {
	font: 800 20px var(--nfs-font-heading);
	color: var(--nfs-text);
	white-space: nowrap;
}

.nfs-notice--success {
	background: #e7f7ee;
	color: #1c8a4d;
}

.nfs-notice--error {
	background: #fdf1f0;
	color: #b3261e;
}

/* Mesaj văzut doar de administratori: aspect de "unealtă", nu de conținut. */
.nfs-notice--admin {
	border: 1px dashed #b58900;
	background: #fffaeb;
	color: #5c4400;
	font-size: 13.5px;
}

/* ---------- Reducerea de abonat la seminar ---------- */

/*
 * Grid cu zone numite: textul și butoanele în stânga, codul în dreapta,
 * întins pe ambele rânduri și centrat pe verticală. "display" e scris cu
 * specificitate (0,2,0), ca să treacă peste regulile generale ale .nfs-card.
 */
.nfs-card.nfs-perk {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	grid-template-areas:
		"text    code"
		"actions code";
	column-gap: 28px;
	row-gap: 14px;
	align-items: center;
}

.nfs-perk__text {
	grid-area: text;
	min-width: 0;
}

.nfs-perk__text .nfs-manage__hint {
	margin-bottom: 0;
}

.nfs-perk__actions {
	grid-area: actions;
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.nfs-perk__code-wrap {
	grid-area: code;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 6px;
}

.nfs-perk__code-label {
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
}

.nfs-perk__code {
	padding: 16px 24px;
	border: 2px dashed var(--nfs-navy);
	border-radius: 12px;
	background: #f7f9fc;
	font: 700 26px/1 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	letter-spacing: 0.08em;
	color: var(--nfs-navy);
	white-space: nowrap;
	user-select: all;
}

@media (max-width: 640px) {
	.nfs-card.nfs-perk {
		grid-template-columns: minmax(0, 1fr);
		grid-template-areas:
			"text"
			"code"
			"actions";
	}

	.nfs-perk__code {
		box-sizing: border-box;
		width: 100%;
		text-align: center;
		font-size: 21px;
		padding: 14px 12px;
	}

	.nfs-perk__actions .nfs-btn {
		flex: 1 1 auto;
		justify-content: center;
	}
}

.nfs-perk.is-used {
	opacity: 0.75;
}

.nfs-coupon__perk {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 8px 12px;
	margin-bottom: 12px;
	padding: 10px 12px;
	border: 1px solid #e8d48a;
	border-radius: 10px;
	background: #fffaeb;
	font-size: 13.5px;
	line-height: 1.5;
	color: var(--nfs-navy);
}

/* "button." în față: reset-ul temei ([type=button]) altfel îi ia display-ul. */
button.nfs-coupon__perk-apply {
	display: inline-flex;
	align-items: center;
	padding: 6px 12px;
	border: 0;
	border-radius: 8px;
	background: var(--nfs-navy);
	color: #fff;
	font: 700 13px var(--nfs-font);
	cursor: pointer;
}

.nfs-coupon__perk button.nfs-coupon__perk-apply:hover,
.nfs-coupon__perk button.nfs-coupon__perk-apply:focus {
	background: var(--nfs-navy);
	color: var(--nfs-gold);
}

/* ---------- Ghidul cadou ---------- */

.nfs-gift__claimed {
	margin: 10px 0 0;
	font-size: 15px;
	line-height: 1.6;
	color: var(--nfs-text);
}

.nfs-gift__claimed a {
	display: inline-block;
	margin-left: 6px;
	font-weight: 700;
	color: var(--nfs-navy);
}

/* Cinci ghiduri pe rând. Coloane egale, nu auto-fill: cu auto-fill, ultimul
   rând incomplet ar avea carduri mai late decât cele de deasupra. */
.nfs-gift__grid {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 14px;
	margin-top: 16px;
}

@media (max-width: 1280px) {
	.nfs-gift__grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

@media (max-width: 1024px) {
	.nfs-gift__grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (max-width: 680px) {
	.nfs-gift__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 10px;
	}
}

/* Cardurile sunt înguste la cinci pe rând — de aceea sunt strânse. */
.nfs-gift__option {
	display: flex;
	flex-direction: column;
	gap: 7px;
	padding: 12px;
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius-sm);
	background: #fff;
}

.elementor .nfs-gift__option img.nfs-gift__image,
.nfs-gift__option img.nfs-gift__image {
	width: 100%;
	height: 120px;
	object-fit: cover;
	border-radius: 8px;
	background: var(--nfs-bg);
}

.nfs-gift__name {
	font: 700 14px/1.3 var(--nfs-font-heading);
	color: var(--nfs-navy);
}

.nfs-gift__value {
	font-size: 13px;
	color: var(--nfs-text-muted);
}

.nfs-gift__option .nfs-btn {
	margin-top: auto;
}

@media (max-width: 640px) {
	.nfs-manage__plan {
		flex-direction: column;
		align-items: stretch;
		gap: 12px;
	}

	.nfs-manage__plan-cta {
		justify-content: space-between;
	}

	.nfs-manage__plan-cta .nfs-btn {
		flex: 1 1 auto;
	}
}

/* ---------- Arhiva edițiilor de newsletter ---------- */

.nfs-edition {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 14px 0;
	border-bottom: 1px solid var(--nfs-border);
}

/* ---------- Filtrul si paginarea editiilor ---------- */

/* Introducerea e explicatie, filtrul e unealta, lista e continut: fara linia
   asta, toate trei pareau acelasi bloc. */
.nfs-editions-intro {
	padding-bottom: 18px;
	margin-bottom: 18px;
	border-bottom: 1px solid var(--nfs-border);
}

.nfs-editions-filter {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 18px;
}

.nfs-editions-filter__label {
	font: 700 10.5px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
	white-space: nowrap;
}

/* Selectul nativ arata diferit in fiecare browser; il imbracam noi, cu sageata
   proprie desenata in fundal. */
.nfs-editions-filter__select {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	box-sizing: border-box;
	width: auto;
	min-width: 210px;
	min-height: 42px;
	margin: 0 !important;
	padding: 10px 40px 10px 14px !important;
	border: 1px solid var(--nfs-border) !important;
	border-radius: var(--nfs-radius-sm) !important;
	background-color: #fff !important;
	background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%235b6880' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") !important;
	background-repeat: no-repeat !important;
	background-position: right 14px center !important;
	font: 600 14px var(--nfs-font) !important;
	color: var(--nfs-text) !important;
	cursor: pointer;
}

.nfs-editions-filter__select:hover {
	border-color: var(--nfs-navy) !important;
}

.nfs-editions-filter__select:focus {
	outline: 2px solid var(--nfs-navy);
	outline-offset: 1px;
}

/* Lista se estompeaza cat se incarca, in loc sa sara brusc: omul vede ca s-a
   intamplat ceva, fara un spinner care sa mute randurile din loc. */
.nfs-editions.is-loading {
	opacity: 0.45;
	pointer-events: none;
	transition: opacity 0.15s ease;
}

.nfs-pager {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-top: 18px;
}

.nfs-pager__item {
	min-width: 34px;
	padding: 7px 10px;
	border: 1px solid var(--nfs-border);
	border-radius: 8px;
	background: #fff;
	font: 600 13px var(--nfs-font);
	color: var(--nfs-text);
	cursor: pointer;
}

.nfs-pager__item:hover {
	border-color: var(--nfs-navy);
}

.nfs-pager__item.is-current {
	border-color: var(--nfs-navy);
	background: var(--nfs-navy);
	color: #fff;
	cursor: default;
}

/* Pictograma de fisier, aceeasi ca in Descarcari: lista de editii arata
   altfel a articole decat a PDF-uri de luat. */
.nfs-edition__icon {
	flex: 0 0 auto;
	width: 40px;
	height: 40px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--nfs-bg);
	border: 1px solid var(--nfs-border);
	border-radius: 8px;
	font: 800 10px var(--nfs-font);
	letter-spacing: 0.02em;
	color: var(--nfs-text-label);
}

/* Editie nedescarcata de clientul asta — nu „publicata recent". */
.nfs-edition.is-new .nfs-edition__icon {
	border-color: var(--nfs-navy);
	background: #fff;
	color: var(--nfs-navy);
}

.nfs-edition__new {
	display: inline-block;
	margin-left: 8px;
	padding: 2px 8px;
	border-radius: 999px;
	background: var(--nfs-gold);
	font: 800 9.5px var(--nfs-font);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nfs-navy);
	vertical-align: middle;
}

.nfs-edition:last-child {
	border-bottom: 0;
	padding-bottom: 0;
}

/* Creste cat tine randul: randul e space-between cu trei elemente, iar un corp
   care nu creste lasa tot spatiul liber intre pictograma si text. */
.nfs-edition__body {
	flex: 1 1 auto;
	min-width: 0;
}

.nfs-edition__date {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--nfs-text-label);
}

.nfs-edition__title {
	margin-top: 2px;
	font: 700 15.5px var(--nfs-font-heading);
	color: var(--nfs-navy);
}

.nfs-edition__excerpt {
	margin-top: 3px;
	font-size: 13.5px;
	line-height: 1.55;
	color: var(--nfs-text-muted);
}

.nfs-edition .nfs-btn {
	flex: 0 0 auto;
}

@media (max-width: 640px) {
	.nfs-edition {
		flex-direction: column;
		align-items: stretch;
		gap: 10px;
	}

	.nfs-edition .nfs-btn {
		justify-content: center;
	}
}

/* ---------- Informarea despre plata recurentă ---------- */

.nfs-recurring-ack {
	margin-bottom: 16px;
	padding: 14px 16px;
	border: 1px solid #dbe3f0;
	border-radius: 12px;
	background: #f7f9fc;
	font-family: 'Public Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

.nfs-recurring-ack__intro {
	margin: 0 0 8px;
	font-size: 13.5px;
	line-height: 1.6;
	color: #47536b;
}

.nfs-recurring-ack__list {
	margin: 0 0 12px;
	padding-left: 18px;
	list-style: disc;
	font-size: 13.5px;
	line-height: 1.6;
	color: var(--nfs-navy);
}

.nfs-recurring-ack__list li {
	margin: 0 0 3px;
	font-weight: 600;
}

.nfs-recurring-ack__check {
	display: flex;
	align-items: flex-start;
	gap: 9px;
	padding-top: 12px;
	border-top: 1px solid #e4ebf5;
	font-size: 13.5px;
	line-height: 1.55;
	color: var(--nfs-text);
	cursor: pointer;
}

.nfs-recurring-ack__check input[type="checkbox"] {
	/* Ținta de atingere rămâne comodă pentru cititorii de 40–60 de ani. */
	width: 19px;
	height: 19px;
	margin: 1px 0 0;
	flex: 0 0 19px;
	accent-color: var(--nfs-navy);
	cursor: pointer;
}

.nfs-recurring-ack.nfs-has-error {
	border-color: #d63638;
	background: #fdf3f3;
}

.nfs-recurring-ack__error {
	margin: 10px 0 0;
	font-size: 13.5px;
	font-weight: 600;
	line-height: 1.5;
	color: #b32d2e;
}

/* ---------- Notificările native WooCommerce ---------- */

/*
 * Tema le scoate în afara containerului, ca o bandă pe toată lățimea
 * ecranului, deasupra paginii. Le aducem în lățimea conținutului și le dăm
 * forma cardurilor noastre, ca să arate ca parte din pagină, nu ca o eroare
 * de sistem lipită deasupra.
 */
.woocommerce-notices-wrapper {
	max-width: 1200px;
	margin: 18px auto 0;
	/* Fara padding lateral: notificarea isi are deja padding-ul ei, iar acesta
	   o ingusta fata de restul coloanei. */
}

.woocommerce-notices-wrapper:empty {
	margin: 0;
	padding: 0;
}

.woocommerce-notices-wrapper .woocommerce-error,
.woocommerce-notices-wrapper .woocommerce-message,
.woocommerce-notices-wrapper .woocommerce-info {
	margin: 0 0 12px;
	padding: 14px 18px;
	border: 1px solid var(--nfs-border);
	border-left: 3px solid var(--nfs-navy);
	border-radius: 10px;
	background: #f8fafc;
	color: var(--nfs-text);
	font-size: 14.5px;
	line-height: 1.6;
	list-style: none;
	box-shadow: none;
}

.woocommerce-notices-wrapper .woocommerce-error {
	border-left-color: #c0392b;
	background: #fdf4f3;
}

.woocommerce-notices-wrapper .woocommerce-message {
	border-left-color: #1f9d55;
	background: #f2faf5;
}

.woocommerce-notices-wrapper .woocommerce-error li,
.woocommerce-notices-wrapper .woocommerce-message li,
.woocommerce-notices-wrapper .woocommerce-info li {
	list-style: none;
	margin: 0;
}

.woocommerce-notices-wrapper .button {
	float: none;
	margin-left: 10px;
}

/* ---------- Mențiunile de TVA de lângă preț ---------- */

.nfs-price__vat {
	font-size: 0.62em;
	font-weight: 600;
	letter-spacing: 0.01em;
	color: var(--nfs-text-muted);
	white-space: nowrap;
}

.nfs-price__gross {
	display: block;
	margin-top: 2px;
	font-size: 0.5em;
	font-weight: 500;
	line-height: 1.4;
	color: var(--nfs-text-muted);
	white-space: nowrap;
}

/* ---------- Pachete indisponibile (downgrade sau peste următorul) ---------- */

button.nfs-btn[disabled],
.nfs-btn[disabled] {
	background: #eef1f6;
	border-color: #dbe3f0;
	color: #8a94a6;
	cursor: not-allowed;
	box-shadow: none;
}

button.nfs-btn[disabled]:hover,
.nfs-btn[disabled]:hover {
	background: #eef1f6;
	border-color: #dbe3f0;
	color: #8a94a6;
	transform: none;
}

.nfs-manage__plan.is-locked {
	opacity: 0.72;
}

/*
 * Eticheta "Plan curent" stă absolut în colțul cardului: în flux, împărțea
 * rândul cu numele planului și îl rupea pe două rânduri.
 */
.nfs-plan-card {
	position: relative;
}

.nfs-plan-card__badge {
	position: absolute;
	top: 14px;
	right: 14px;
	z-index: 1;
}

.nfs-plan-card.is-current .nfs-plan-card__name {
	/* Loc pentru etichetă, ca titlul să nu treacă pe sub ea. */
	padding-right: 96px;
}

/*
 * Iconița stă în colțul cardului, nu lângă buton: butonul rămâne astfel de
 * aceeași lățime și pe același rând cu butoanele celorlalte pachete.
 */
.nfs-plan-card__info {
	position: absolute;
	top: 14px;
	right: 14px;
	z-index: 2;
}

/* Iconița de informare, cu explicația la hover sau la focus din tastatură. */
button.nfs-info {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 26px;
	width: 26px;
	height: 26px;
	padding: 0;
	border: 1px solid #cbd5e1;
	border-radius: 50%;
	background: #fff;
	color: #64748b;
	font: 700 13px var(--nfs-font-heading);
	line-height: 1;
	cursor: help;
}

/*
 * Tema Elementor colorează orice buton la hover/focus (roz, culoarea ei de
 * accent) prin reguli de forma ".elementor-kit-N button:hover" — specificitate
 * (0,2,0). Le batem cu (0,2,1), scriind și elementul, nu doar clasele.
 * Acoperim și :focus/:active, nu doar :hover: pe atingere, tema aplică
 * aceleași culori la :focus, deci iconița rămânea roz după tap.
 */
.nfs-plan-card button.nfs-info:hover,
.nfs-plan-card button.nfs-info:focus,
.nfs-plan-card button.nfs-info:focus-visible,
.nfs-plan-card button.nfs-info:active {
	border-color: var(--nfs-navy);
	background: #fff;
	color: var(--nfs-navy);
	box-shadow: none;
	outline: none;
}

.nfs-plan-card button.nfs-info .nfs-info__bubble {
	color: #fff;
	background: var(--nfs-navy);
}

.nfs-info__bubble {
	position: absolute;
	bottom: calc(100% + 9px);
	right: -6px;
	z-index: 5;
	width: max-content;
	max-width: 220px;
	padding: 9px 11px;
	border-radius: 8px;
	background: var(--nfs-navy);
	color: #fff;
	font: 500 12.5px/1.5 var(--nfs-font);
	text-align: left;
	opacity: 0;
	visibility: hidden;
	transform: translateY(3px);
	transition: opacity .15s ease, transform .15s ease, visibility .15s;
	pointer-events: none;
}

.nfs-info__bubble::after {
	content: '';
	position: absolute;
	top: 100%;
	right: 12px;
	border: 6px solid transparent;
	border-top-color: var(--nfs-navy);
}

button.nfs-info:hover .nfs-info__bubble,
button.nfs-info:focus .nfs-info__bubble,
button.nfs-info:focus-visible .nfs-info__bubble {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

/* ---------- Durata pachetului, sub numele produsului ---------- */

/*
 * Durata e singurul lucru care deosebește două comenzi de abonament — numele
 * produsului e identic pentru toate pachetele. De aceea nu e text mărunt, ci
 * o etichetă: se vede din prima ce s-a cumpărat.
 */
.nfs-order-review__item-plan,
.nfs-cart-item__plan {
	/*
	 * "flex" (nu "inline-flex") + lățime cât conținutul: eticheta devine o
	 * cutie de tip bloc, deci coboară singură pe rândul următor, sub numele
	 * produsului și cantitate, dar rămâne strânsă pe text, nu pe toată
	 * lățimea coloanei.
	 */
	display: flex;
	width: -moz-fit-content;
	width: fit-content;
	align-items: center;
	gap: 5px;
	margin-top: 6px;
	padding: 3px 10px;
	border-radius: 999px;
	background: var(--nfs-navy);
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	line-height: 1.5;
	letter-spacing: 0.01em;
	white-space: nowrap;
}

.nfs-order-review__item-plan::before,
.nfs-cart-item__plan::before {
	content: '';
	width: 5px;
	height: 5px;
	border-radius: 50%;
	background: var(--nfs-gold);
	flex: 0 0 5px;
}

/* Formatul ales (Volum tiparit / PDF / ambele) — randat de WooCommerce ca
   <dl class="variation"><dt>Format:</dt><dd>…</dd></dl>. Il aducem la aceeasi
   eticheta navy ca planul de abonament: eticheta „Format:" iese, valoarea
   ramane, fiindca se descrie singura. */
.nfs-order-review__item-name .variation,
.nfs-cart-item__meta .variation {
	display: block;
	margin: 0;
}

.nfs-order-review__item-name .variation dt,
.nfs-cart-item__meta .variation dt {
	display: none;
}

.nfs-order-review__item-name .variation dd,
.nfs-cart-item__meta .variation dd {
	display: flex;
	width: -moz-fit-content;
	width: fit-content;
	align-items: center;
	gap: 5px;
	margin: 6px 0 0;
	padding: 3px 10px;
	border-radius: 999px;
	background: var(--nfs-navy);
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	line-height: 1.5;
	white-space: nowrap;
}

.nfs-order-review__item-name .variation dd p,
.nfs-cart-item__meta .variation dd p {
	margin: 0;
	font: inherit;
	color: inherit;
}

.nfs-order-review__item-name .variation dd::before,
.nfs-cart-item__meta .variation dd::before {
	content: '';
	width: 5px;
	height: 5px;
	border-radius: 50%;
	background: var(--nfs-gold);
	flex: 0 0 5px;
}

/* ---------- Reînnoirea automată (coș + checkout) ---------- */

/*
 * Publicul paginii are 40–60 de ani, deci textul e mai mare decât într-un
 * sumar obișnuit și contrastul mai ferm: nimic sub 14px, sumele la 18px.
 * Fonturile sunt scrise explicit — blocul trăiește în fragmentul reîncărcat
 * prin AJAX la checkout, unde nu ne putem baza pe moștenire de la temă.
 */
.nfs-renewal {
	margin-top: 18px;
	padding: 16px 18px;
	border: 1px solid #dbe3f0;
	border-radius: 12px;
	background: #f7f9fc;
	font-family: 'Public Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

.nfs-renewal__head {
	display: flex;
	align-items: center;
	gap: 9px;
	padding-bottom: 12px;
	margin-bottom: 12px;
	border-bottom: 1px solid #e4ebf5;
}

.nfs-renewal__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	flex: 0 0 30px;
	border-radius: 50%;
	background: #0d1b3e;
	color: #ffd233;
}

.nfs-renewal__title {
	font-family: 'Sora', sans-serif;
	font-size: 15px;
	font-weight: 700;
	line-height: 1.3;
	color: #0d1b3e;
}

.nfs-renewal__row {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 14px;
	padding: 5px 0;
}

.nfs-renewal__label {
	font-size: 14.5px;
	line-height: 1.45;
	color: #47536b;
}

.nfs-renewal__amount,
.nfs-renewal__date {
	font-size: 18px;
	font-weight: 700;
	color: #0d1b3e;
	white-space: nowrap;
	text-align: right;
}

.nfs-renewal__date {
	font-size: 15px;
}

.nfs-renewal__amount .amount,
.nfs-renewal__amount bdi {
	font-weight: 700;
	color: #0d1b3e;
}

.nfs-renewal__note {
	margin: 12px 0 0;
	padding-top: 12px;
	border-top: 1px solid #e4ebf5;
	font-size: 13.5px;
	line-height: 1.6;
	color: #5b6880;
}

@media (max-width: 640px) {
	.nfs-renewal__row {
		flex-direction: column;
		align-items: flex-start;
		gap: 1px;
	}

	.nfs-renewal__amount,
	.nfs-renewal__date {
		text-align: left;
	}
}

/* ---------- Fereastra de confirmare ---------- */

.nfs-modal {
	position: fixed;
	inset: 0;
	z-index: 10000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 20px;
}

.nfs-modal[hidden] {
	display: none;
}

body.nfs-modal-open {
	overflow: hidden;
}

.nfs-modal__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(13, 27, 62, 0.55);
}

.nfs-modal__dialog {
	position: relative;
	width: 100%;
	max-width: 560px;
	max-height: 90vh;
	overflow-y: auto;
	background: #fff;
	border-radius: 16px;
	padding: 26px;
	box-shadow: 0 24px 60px rgba(13, 27, 62, 0.28);
}

.nfs-modal__title {
	margin: 0 0 16px;
	font-family: 'Sora', sans-serif;
	font-size: 20px;
	font-weight: 700;
	color: #0d1b3e;
}

.nfs-modal__section + .nfs-modal__section {
	margin-top: 20px;
	padding-top: 20px;
	border-top: 1px solid #e7ebf3;
}

.nfs-modal__label {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: #64748b;
	margin-bottom: 10px;
}

.nfs-modal__list {
	margin: 0;
	padding-left: 20px;
	list-style: disc;
	color: #334155;
	font-size: 14.5px;
	line-height: 1.6;
}

.nfs-modal__rows {
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: 14.5px;
	color: #334155;
}

.nfs-modal__rows li {
	display: flex;
	justify-content: space-between;
	gap: 14px;
	padding: 8px 0;
	border-bottom: 1px solid #f1f5f9;
}

.nfs-modal__rows li span:last-child {
	white-space: nowrap;
	font-weight: 600;
}

.nfs-modal__rows-total {
	border-bottom: 0 !important;
	margin-top: 4px;
	padding-top: 12px !important;
	border-top: 2px solid #0d1b3e !important;
	font-weight: 700;
	color: #0d1b3e;
	font-size: 16px;
}

.nfs-modal__note {
	margin: 12px 0 0;
	font-size: 13px;
	line-height: 1.6;
	color: #64748b;
}

.nfs-modal__actions {
	display: flex;
	gap: 10px;
	margin-top: 22px;
}

.nfs-modal__actions .nfs-btn {
	flex: 1 1 auto;
	justify-content: center;
}

@media (max-width: 640px) {
	.nfs-modal {
		padding: 12px;
	}

	.nfs-modal__dialog {
		padding: 20px 18px;
	}

	.nfs-modal__rows li {
		flex-direction: column;
		gap: 2px;
	}

	.nfs-modal__actions {
		flex-direction: column;
	}
}

/* ==========================================================================
   Marginile laterale ale blocurilor care ies pe toată lățimea ecranului
   (coș, coș gol, checkout, confirmare, contact, produs, curs, seminar, 404).

   De ce aici, la finalul fișierului, și nu pe fiecare bloc în parte:
   majoritatea acestor containere își setează spațierea verticală cu
   shorthand — "padding: 50px 0" — care pune ZERO pe laterale. Orice regulă
   scrisă mai sus în fișier ar fi anulată de ele, la aceeași specificitate,
   prin simpla ordine. Scrise la final și pe proprietăți separate
   (padding-left/right), spațierea verticală a fiecărui bloc rămâne a lui,
   iar laterala e una singură, în tot site-ul.

   Containerele astea ies din containerul Elementor prin margin negativ, deci
   setările de spațiere din Elementor nu le mai ating — singurul loc unde se
   poate regla e aici.
   ========================================================================== */

.nfs-contact__inner,
.nfs-cart__layout,
.nfs-checkout__layout,
.nfs-confirm,
.nfs-course-page__inner,
.nfs-product-page__inner,
.nfs-seminar-buy__content,
.nfs-seminar-buy__header-inner,
.nfs-404 {
	box-sizing: border-box;
	padding-left: 24px;
	padding-right: 24px;
}

@media (max-width: 767px) {
	.nfs-contact__inner,
	.nfs-cart__layout,
	.nfs-checkout__layout,
	.nfs-confirm,
	.nfs-course-page__inner,
	.nfs-product-page__inner,
	.nfs-seminar-buy__content,
	.nfs-seminar-buy__header-inner,
	.nfs-404 {
		padding-left: 20px;
		padding-right: 20px;
	}

	/* Antetul de checkout are deja padding propriu (24px); pe telefon îl
	   aducem la aceeași valoare cu restul, fără să-l dublăm. */
	.nfs-checkout-hero {
		padding-left: 20px;
		padding-right: 20px;
	}

	/* Cardul de coș gol are 40px pe interior; pe telefon, împreună cu cei
	   20px de mai sus, textul ajungea pe trei cuvinte pe rând. */
	.nfs-cart__empty {
		padding: 44px 20px !important;
	}
}

/* ==========================================================================
   Câmpurile de formular pe telefon
   ========================================================================== */

/*
 * Safari pe iPhone mărește automat pagina când atingi un câmp cu text mai mic
 * de 16px, și nu o micșorează la loc — de aici senzația că pagina "sare" la
 * fiecare atingere. Nu e un efect de focus care se poate opri: singura cale
 * e ca textul din câmp să aibă cel puțin 16px.
 *
 * Doar pe telefon: pe desktop 14px rămâne potrivit vizual.
 */
@media (max-width: 767px) {
	.nfs-login-field,
	.nfs-contact input:not([type="checkbox"]):not([type="radio"]),
	.nfs-contact textarea,
	.nfs-contact select,
	.nfs-checkout input:not([type="checkbox"]):not([type="radio"]),
	.nfs-checkout textarea,
	.nfs-checkout select,
	.nfs-cart input:not([type="checkbox"]):not([type="radio"]),
	.nfs-account input:not([type="checkbox"]):not([type="radio"]),
	.nfs-account textarea,
	.nfs-account select,
	.nfs-manage__textarea {
		font-size: 16px !important;
	}
}

/*
 * Conturul de focus rămâne — dar doar pentru navigarea cu tastatura.
 *
 * ":focus-visible" e aprins de browser la Tab și stins la atingere sau clic,
 * deci pe telefon nu se mai vede nimic în plus, iar cine completează
 * formularul de la tastatură știe în continuare unde se află. Scoaterea
 * completă a focusului ar lăsa pe dinafară exact oamenii care au cea mai mare
 * nevoie de el.
 */
.nfs-login-field:focus-visible,
.nfs-contact input:focus-visible,
.nfs-contact textarea:focus-visible,
.nfs-contact select:focus-visible,
.nfs-checkout input:focus-visible,
.nfs-checkout textarea:focus-visible,
.nfs-checkout select:focus-visible,
.nfs-account input:focus-visible,
.nfs-account textarea:focus-visible,
.nfs-account select:focus-visible {
	outline: 2px solid var(--nfs-navy, #032657) !important;
	outline-offset: 1px;
}

/* ==========================================================================
   "Ai deja cont?" de la începutul checkout-ului
   ========================================================================== */

.nfs-checkout-login {
	margin-bottom: 22px;
}

.nfs-checkout-login__bar {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 16px 18px;
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius-sm);
	background: var(--nfs-bg);
}

.nfs-checkout-login__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 42px;
	width: 42px;
	height: 42px;
	border-radius: 50%;
	background: #fff;
	border: 1px solid var(--nfs-border);
	color: var(--nfs-navy);
}

.nfs-checkout-login__text {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
	flex: 1 1 auto;
}

.nfs-checkout-login__text strong {
	font: 700 15.5px var(--nfs-font-heading);
	color: var(--nfs-navy);
}

.nfs-checkout-login__text span {
	font-size: 13.5px;
	line-height: 1.5;
	color: var(--nfs-text-muted);
}

a.nfs-checkout-login__toggle {
	flex: 0 0 auto;
	padding: 10px 18px;
	font-size: 14px;
	white-space: nowrap;
}

/* ---------- Formularul ---------- */

.nfs-checkout-login__form {
	margin-top: 14px;
	padding: 22px;
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius-sm);
	background: #fff;
}

.nfs-checkout-login__fields {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px;
}

.nfs-checkout-login__field label {
	display: block;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: var(--nfs-text-label);
}

.nfs-checkout-login__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 10px 16px;
	margin-top: 16px;
}

.nfs-checkout-login__remember {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 14px;
	color: var(--nfs-text);
	cursor: pointer;
}

.nfs-checkout-login__remember input[type="checkbox"] {
	width: 18px;
	height: 18px;
	margin: 0;
	accent-color: var(--nfs-navy);
	cursor: pointer;
}

a.nfs-checkout-login__lost {
	font-size: 14px;
	font-weight: 600;
	color: var(--nfs-navy);
	text-decoration: underline;
	text-underline-offset: 3px;
}

button.nfs-checkout-login__submit {
	width: 100%;
	justify-content: center;
	margin-top: 18px;
	padding: 13px 20px;
}

.nfs-checkout-login__note {
	margin: 14px 0 0;
	padding-top: 14px;
	border-top: 1px solid var(--nfs-border);
	font-size: 13px;
	line-height: 1.6;
	color: var(--nfs-text-muted);
}

@media (max-width: 640px) {
	.nfs-checkout-login__bar {
		flex-wrap: wrap;
		padding: 14px;
	}

	.nfs-checkout-login__icon {
		flex-basis: 36px;
		width: 36px;
		height: 36px;
	}

	a.nfs-checkout-login__toggle {
		width: 100%;
		justify-content: center;
	}

	.nfs-checkout-login__fields {
		grid-template-columns: minmax(0, 1fr);
	}

	.nfs-checkout-login__form {
		padding: 18px 16px;
	}
}

/* ---------- Ajustări „Ai deja cont?” (după excepția de mai sus) ---------- */

/*
 * Scrise cu clasa formularului în față și cu !important pe cele două
 * proprietăți pe care le anulează reset-ul temei: altfel cardul rămâne fără
 * chenar și lipit de bară.
 */
form.nfs-checkout-login__form {
	margin-top: 14px !important;
	padding: 22px !important;
	border: 1px solid var(--nfs-border) !important;
	border-radius: var(--nfs-radius-sm) !important;
	background: #fff;
}

/* Eticheta stă lipită de câmp: câmpul are deja margin-top propriu. */
.nfs-checkout-login__field label {
	margin-bottom: 0;
}

.nfs-checkout-login__field .nfs-login-field {
	margin-top: 6px;
}

/* Bara de sus: titlul și textul respiră mai bine cu iconița puțin mai sus. */
.nfs-checkout-login__bar {
	align-items: flex-start;
}

.nfs-checkout-login__icon {
	margin-top: 1px;
}

a.nfs-checkout-login__toggle {
	align-self: center;
}

@media (max-width: 640px) {
	form.nfs-checkout-login__form {
		padding: 18px 16px !important;
	}

	a.nfs-checkout-login__toggle {
		align-self: stretch;
	}
}

/* ---------- Deschiderea formularului „Ai deja cont?” ---------- */

/*
 * Specificitate (0,3,1), ca să bată regula WooCommerce
 * ".woocommerce-no-js form.woocommerce-form-login { display: block !important }"
 * — (0,2,1) — care altfel ține formularul deschis permanent, fiindcă depinde
 * de o clasă de pe <body> scoasă dintr-un script inline.
 */
.nfs-checkout-login:not(.is-open) form.nfs-checkout-login__form {
	display: none !important;
}

.nfs-checkout-login.is-open form.nfs-checkout-login__form {
	display: block !important;
}

/* Butonul arată starea curentă. */
.nfs-checkout-login.is-open .nfs-checkout-login__toggle {
	background: var(--nfs-navy);
	border-color: var(--nfs-navy);
	color: #fff;
}

/* ---------- Poziționarea blocului „Ai deja cont?” ---------- */

/*
 * Aceleași valori ca .nfs-checkout__layout: lățime maximă, gap și flex-basis
 * pe cele două coloane. Coloana goală din dreapta ține locul sumarului, ca
 * bara să se termine exact unde începe cardul "Sumar comandă".
 */
.nfs-checkout-login-row {
	box-sizing: border-box;
	max-width: 1400px;
	margin: 0 auto;
	padding: 50px 24px 0;
	display: flex;
	align-items: flex-start;
	gap: 28px;
	flex-wrap: wrap;
}

.nfs-checkout-login-row .nfs-checkout-login {
	flex: 1 1 540px;
	min-width: 0;
	margin-bottom: 0;
}

.nfs-checkout-login-row__spacer {
	flex: 1 1 320px;
	min-width: 0;
}

/* Spațiul de sus îl dă acum rândul de login; altfel s-ar aduna cu al lui. */
.nfs-checkout-login-row + form .nfs-checkout__layout {
	padding-top: 22px;
}

@media (max-width: 640px) {
	.nfs-checkout-login-row {
		padding: 32px 20px 0;
		gap: 0;
	}

	.nfs-checkout-login-row__spacer {
		display: none;
	}

	.nfs-checkout-login-row + form .nfs-checkout__layout {
		padding-top: 20px;
	}
}

/* ---------- Marginile laterale de la checkout ---------- */

/*
 * Pe ecrane largi conținutul stă deja centrat, la 1400px, cu spațiu de ambele
 * părți — o margine în plus doar îngusta degeaba coloanele. O adăugăm abia
 * când fereastra coboară sub lățimea conținutului (1400px + 2 × 24px), adică
 * exact când altfel s-ar lipi de marginea ecranului.
 */
.nfs-checkout__layout,
.nfs-checkout-login-row {
	padding-left: 0;
	padding-right: 0;
}

@media (max-width: 1448px) {
	.nfs-checkout__layout,
	.nfs-checkout-login-row {
		padding-left: 24px;
		padding-right: 24px;
	}
}

@media (max-width: 767px) {
	.nfs-checkout__layout,
	.nfs-checkout-login-row {
		padding-left: 20px;
		padding-right: 20px;
	}
}

/* ==========================================================================
   Alegerea formatului pe pagina de produs (volum tipărit / PDF)
   ========================================================================== */

/* Cele două formate, unul lângă altul — se compară dintr-o privire. */
.nfs-format {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
	margin: 20px 0 4px;
}

@media (max-width: 560px) {
	.nfs-format {
		grid-template-columns: minmax(0, 1fr);
		gap: 10px;
	}
}

/*
 * Toată caseta e eticheta butonului radio, nu doar cerculețul: ținta de
 * atingere devine tot cardul, ceea ce contează pe telefon.
 */
.nfs-format__card {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	padding: 14px 16px;
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius-sm);
	background: #fff;
	cursor: pointer;
	transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
}

.nfs-format__card:hover {
	border-color: var(--nfs-navy);
}

.nfs-format__card.is-selected {
	border-color: var(--nfs-navy);
	background: var(--nfs-bg);
	box-shadow: inset 0 0 0 1px var(--nfs-navy);
}

/* Butonul radio nativ rămâne în pagină, pentru tastatură și formulare, dar
   desenăm noi cercul — al browserului nu se poate stiliza consecvent. */
.nfs-format__card input[type="radio"] {
	position: absolute;
	width: 1px;
	height: 1px;
	opacity: 0;
	pointer-events: none;
}

.nfs-format__mark {
	position: relative;
	flex: 0 0 22px;
	width: 22px;
	height: 22px;
	border: 2px solid var(--nfs-border);
	border-radius: 50%;
	background: #fff;
	transition: border-color .15s ease;
}

.nfs-format__card.is-selected .nfs-format__mark {
	border-color: var(--nfs-navy);
}

.nfs-format__card.is-selected .nfs-format__mark::after {
	content: "";
	position: absolute;
	inset: 3px;
	border-radius: 50%;
	background: var(--nfs-navy);
}

/* Conturul apare la navigarea cu tastatura, pe cercul desenat. */
.nfs-format__card input[type="radio"]:focus-visible + .nfs-format__mark {
	outline: 2px solid var(--nfs-navy);
	outline-offset: 2px;
}

.nfs-format__body {
	display: block;
	flex: 1 1 auto;
	min-width: 0;
}

.nfs-format__note {
	display: block;
	margin-top: 2px;
}

.nfs-format__label {
	font: 700 15.5px var(--nfs-font-heading);
	color: var(--nfs-navy);
}

.nfs-format__note {
	font-size: 13px;
	line-height: 1.45;
	color: var(--nfs-text-muted);
}

/* Prețul sub text, nu în dreapta: pe două coloane nu mai e loc pe rând. */
.nfs-format__price {
	display: block;
	margin-top: 6px;
	font: 800 17px var(--nfs-font-heading);
	color: var(--nfs-navy);
	white-space: nowrap;
}

@media (max-width: 560px) {
	.nfs-format__card {
		padding: 13px 14px;
	}

	.nfs-format__price {
		font-size: 16px;
	}
}

/* ==========================================================================
   Sub-paginile secțiunii de newsletter (taburi)
   Linkuri reale spre /newsletter/<sub-pagină>/, nu tab-uri JavaScript: fiecare
   are adresa ei. Pe ecran îngust bara se derulează pe orizontală, ca să nu se
   rupă pe trei rânduri.
   ========================================================================== */

.nfs-subtabs {
	display: flex;
	gap: 6px;
	margin-bottom: 20px;
	padding: 5px;
	background: #fff;
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius);
	overflow-x: auto;
	scrollbar-width: none;
}

.nfs-subtabs::-webkit-scrollbar {
	display: none;
}

.nfs-subtabs__item {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	flex: 0 0 auto;
	padding: 9px 14px;
	border-radius: var(--nfs-radius-sm);
	font: 700 13.5px var(--nfs-font);
	color: var(--nfs-text-muted);
	text-decoration: none;
	white-space: nowrap;
	transition: background .15s ease, color .15s ease;
}

.nfs-subtabs__item:hover {
	background: var(--nfs-bg);
	color: var(--nfs-navy);
	text-decoration: none;
}

.nfs-subtabs__item.is-current {
	background: var(--nfs-navy);
	color: #fff;
}

.nfs-subtabs__badge {
	min-width: 20px;
	padding: 1px 6px;
	border-radius: 999px;
	background: var(--nfs-bg);
	color: var(--nfs-navy);
	font: 700 11px var(--nfs-font);
	text-align: center;
}

.nfs-subtabs__item.is-current .nfs-subtabs__badge {
	background: rgba(255, 255, 255, 0.18);
	color: #fff;
}

/* Titlul secțiunii și linkul spre lista completă, pe același rând. */
.nfs-newsletter-head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	flex-wrap: wrap;
}

/* Ce are de făcut: ghidul neales, codul nefolosit. Bordură aurie pe stânga,
   ca să se deosebească de o simplă informație. */
.nfs-newsletter-todo {
	/*
	 * Distanța dintre carduri vine din ".nfs-card + .nfs-card", iar banda
	 * asta, fiind între ele, rupe regula și rămâne lipită de cardul de
	 * deasupra. Îi dăm aceeași distanță, în ambele sensuri.
	 */
	margin-top: 28px;
	margin-bottom: 28px;
	border-left: 3px solid var(--nfs-gold);
}

@media (max-width: 560px) {
	.nfs-subtabs {
		/* Marginile barei ating marginile panoului, ca derularea să se vadă
		   că are unde continua. */
		gap: 4px;
		padding: 4px;
	}

	.nfs-subtabs__item {
		padding: 8px 12px;
		font-size: 13px;
	}

	.nfs-newsletter-todo {
		flex-direction: column;
		align-items: flex-start;
		gap: 8px;
	}
}

/* ==========================================================================
   Metoda de plată a abonamentului (checkout/form-change-payment-method.php)
   O singură coloană, îngustă: omul are o singură decizie de luat aici, iar
   două coloane ar sugera că mai are ceva de completat.
   ========================================================================== */

.nfs-paypage {
	max-width: 720px;
	margin: 0 auto;
	padding: 40px 24px 60px;
	font-family: var(--nfs-font);
	color: var(--nfs-text);
}

.nfs-paypage .nfs-card + .nfs-card,
.nfs-paypage__summary + .nfs-paypage__form {
	margin-top: 24px;
}

.nfs-paypage__form {
	margin: 24px 0 0;
}

.nfs-paypage__vat {
	margin-left: 8px;
	font: 600 12px var(--nfs-font);
	color: var(--nfs-text-muted);
}

.nfs-paypage__actions {
	margin-top: 22px;
	padding: 0;
}

.nfs-paypage__note {
	margin: 14px 0 0;
	font-size: 13px;
	line-height: 1.55;
	color: var(--nfs-text-muted);
}

/* Lista de metode: fără marcatorii de listă ai temei. */
.nfs-paypage .nfs-payment-methods {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin: 16px 0 0;
	padding: 0;
	list-style: none;
}

/* Notificarea WooCommerce de deasupra formularului („Alege cardul…") ajunge
   în pagină înaintea conținutului nostru, deci o aducem la aceeași lățime. */
.woocommerce-notices-wrapper:has(+ .nfs-checkout-hero) .woocommerce-info,
.nfs-paypage ~ .woocommerce-notices-wrapper .woocommerce-info {
	max-width: 720px;
	margin-left: auto;
	margin-right: auto;
}

@media (max-width: 640px) {
	.nfs-paypage {
		padding: 28px 20px 48px;
	}
}

/* ---------- Metoda de plată: corecturi de spațiu și fundal ----------
   Fundalul gri de sub lista de metode vine din CSS-ul pluginului de plăți,
   care îl pune pe #payment și pe listă. La checkout îl anulăm sub
   .nfs-checkout__payment-card; aici facem la fel, pentru pagina noastră. */

.nfs-paypage #payment,
.nfs-paypage ul.payment_methods {
	background: transparent !important;
	border: none !important;
	box-shadow: none !important;
	padding: 0 !important;
}

/* Textul mutat din notificarea WooCommerce. */
.nfs-paypage__hint {
	margin: 6px 0 0;
	font-size: 14px;
	line-height: 1.55;
	color: var(--nfs-text-muted);
}

.nfs-paypage #payment {
	margin-top: 18px !important;
}

.nfs-paypage ul.payment_methods {
	margin: 0 !important;
}

.nfs-paypage__actions {
	margin-top: 26px;
}

.nfs-paypage__note {
	margin-top: 18px;
}

/*
 * Notificarea nativă („Alege cardul…") e scrisă de WooCommerce Subscriptions
 * direct în pagină, înaintea template-ului nostru, iar din PHP nu poate fi
 * oprită fără să rămână o casetă goală. O ascundem exact acolo unde e
 * urmată de antetul paginii noastre — adică doar aici. Textul ei trăiește
 * acum sub „Alege metoda de plată".
 */
.woocommerce-info:has(+ .nfs-checkout-hero) {
	display: none;
}

/* Butonul apărea retras din ambele margini: tema stilează `.woocommerce form
   .form-row` cu padding, iar selectorul ei bate clasa noastră. Îl anulăm pe
   rândul butonului și lăsăm butonul să umple cardul. */
.nfs-paypage .form-row.nfs-paypage__actions {
	margin: 26px 0 0 !important;
	padding: 0 !important;
}

.nfs-paypage #place_order {
	width: 100%;
	margin: 0 !important;
}

.nfs-paypage__note {
	margin-top: 22px;
}

/* Mărimile relative (0.62em / 0.5em) sunt gândite pentru prețul mare de pe
   pagina de produs. Aici prețul stă într-un rând de listă, deci procentele
   acelea l-ar face ilizibil — fixăm dimensiuni potrivite contextului. */
.nfs-paypage .nfs-price__vat {
	font-size: 14px;
}

.nfs-paypage .nfs-price__gross {
	margin-top: 4px;
	font-size: 13.5px;
}

/* ==========================================================================
   Pagina „verifică-ți e-mailul", după înregistrare
   Un singur lucru de făcut, deci un singur card, centrat.
   ========================================================================== */

.nfs-verify {
	display: flex;
	justify-content: center;
	padding: 20px 0 40px;
	font-family: var(--nfs-font);
}

.nfs-verify__card {
	width: 100%;
	max-width: 560px;
	padding: 38px 36px 32px;
	text-align: center;
	background: #fff;
	border: 1px solid var(--nfs-border);
	border-radius: var(--nfs-radius);
	box-shadow: var(--nfs-shadow);
}

.nfs-verify__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 62px;
	height: 62px;
	margin-bottom: 18px;
	border-radius: 50%;
	background: var(--nfs-bg);
	color: var(--nfs-navy);
}

.nfs-verify__icon svg {
	width: 30px;
	height: 30px;
}

.nfs-verify__title {
	margin: 0 0 10px;
	font: 800 24px/1.3 var(--nfs-font-heading);
	color: var(--nfs-navy);
}

.nfs-verify__lead {
	margin: 0 0 22px;
	font-size: 15.5px;
	line-height: 1.65;
	color: var(--nfs-text-muted);
	text-wrap: pretty;
}

/* Pașii se citesc, nu se bifează: numerotare discretă, aliniată la stânga,
   fiindcă un text centrat pe trei rânduri se urmărește greu. */
.nfs-verify__steps {
	margin: 0 0 24px;
	padding: 18px 20px 18px 38px;
	text-align: left;
	background: var(--nfs-bg);
	border-radius: var(--nfs-radius-sm);
}

.nfs-verify__steps li {
	margin: 0 0 8px;
	font-size: 14.5px;
	line-height: 1.6;
	color: var(--nfs-text);
}

.nfs-verify__steps li:last-child {
	margin-bottom: 0;
}

.nfs-verify__actions {
	display: flex;
	justify-content: center;
	flex-wrap: wrap;
	gap: 10px;
}

.nfs-verify__actions form {
	margin: 0;
}

.nfs-verify__note {
	margin: 22px 0 0;
	padding-top: 18px;
	border-top: 1px solid var(--nfs-border);
	font-size: 13px;
	line-height: 1.6;
	color: var(--nfs-text-muted);
}

@media (max-width: 560px) {
	.nfs-verify__card {
		padding: 28px 20px 24px;
	}

	.nfs-verify__actions .nfs-btn,
	.nfs-verify__actions form {
		width: 100%;
	}

	.nfs-verify__actions .nfs-btn {
		justify-content: center;
	}
}

/* Mesajul de la înregistrare, venit prin adresă (vezi
   NFS_Account_Verification::url_notice). Stă deasupra celor două formulare,
   ca să nu depindă de care dintre ele a fost trimis. */
.nfs-reg-notice {
	max-width: 1180px;
	margin: 0 auto 22px;
	padding: 14px 18px;
	border-radius: var(--nfs-radius-sm);
	border-left: 3px solid;
	font-size: 14.5px;
	line-height: 1.6;
	font-family: var(--nfs-font);
}

.nfs-reg-notice--error {
	background: #fdf1f1;
	border-color: #b3261e;
	color: #7a1c17;
}

.nfs-reg-notice--success {
	background: #eef7f1;
	border-color: #1f7a44;
	color: #155c33;
}

.nfs-reg-notice--notice {
	background: var(--nfs-bg);
	border-color: var(--nfs-navy);
	color: var(--nfs-text);
}

.nfs-reg-notice a {
	color: inherit;
	font-weight: 700;
	text-decoration: underline;
}
