/*
Theme Name: Nympho-WP Modern
Theme URI: https://jobs.localinfra.com.br/
Description: Modern visual layer for Nympho-WP.
Author: Localinfra
Template: nympho-wp
Version: 1.0.0
Text Domain: nympho-wp-modern
*/

:root {
	/* Single source of truth for every container's max-width (.all-body,
	   the hero, .njm-underfooter, etc. — anywhere that previously hardcoded
	   1440px) so they can only ever change together, never drift out of
	   alignment with each other. "none" — no ceiling at all — so the
	   layout keeps using whatever width the screen actually has instead
	   of plateauing past some fixed number; the hero carousel (JS sizing
	   in header-slider.php, reads the container's real width) and
	   .njm-grid (auto-fit columns) both already scale off the real
	   container width with no upper bound of their own, so removing the
	   cap here is enough to remove it everywhere at once. */
	--nj-container-max: none;
	--nj-canvas: #0b0710;
	--nj-canvas-2: #150c22;
	--nj-bg: #f6f7fb;
	--nj-surface: #ffffff;
	--nj-surface-soft: #f9fafb;
	--nj-text: #171923;
	--nj-muted: #697386;
	--nj-primary: #e8267a;
	--nj-primary-dark: #b81257;
	--nj-accent: #8b5cf6;
	--nj-gold-accent: #f2b84b;
	--nj-border: #e7e9ef;
	--nj-shadow: 0 12px 32px rgba(25, 20, 45, .09);
	--nj-shadow-hover: 0 18px 42px rgba(25, 20, 45, .16);
	--nj-radius: 18px;
	--nj-display-font: 'Plus Jakarta Sans', 'Open Sans', "Helvetica Neue", Arial, sans-serif;
}
html {
	scroll-behavior: smooth;
}

body {
	max-width: none;
	background: var(--nj-canvas);
	background-image:
		radial-gradient(60vw 40vw at 12% -10%, rgba(232, 38, 122, .16), transparent 60%),
		radial-gradient(50vw 35vw at 100% 0%, rgba(139, 92, 246, .16), transparent 55%);
	background-repeat: no-repeat;
	background-attachment: fixed;
	color: var(--nj-text);
	font-size: 16px;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
}

.contentwrapper, .sidebar-left, .sidebar-right {
	background: transparent;
}

a {
	color: var(--nj-primary);
	transition: color .2s ease, background-color .2s ease, border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}

a:hover {
	color: var(--nj-primary-dark);
}

.header-top-bar {
	min-height: 76px;
	padding: 16px clamp(20px, 4vw, 64px);
	background: rgba(20, 15, 31, .96);
	border-bottom: 1px solid rgba(255, 255, 255, .08);
	box-shadow: 0 8px 30px rgba(0, 0, 0, .18);
}

.all .logo h1 {
	line-height: 1.15;
}

.all .logo h1 a {
	font-size: clamp(1.2em, 2vw, 1.55em);
	font-weight: 800;
	letter-spacing: -.04em;
}

.all .logo h1 a::after {
	content: "";
	display: block;
	width: 44px;
	height: 3px;
	margin-top: 7px;
	border-radius: 999px;
	background: linear-gradient(90deg, var(--nj-primary), #f472b6);
}

.header-top-bar .header-nav .header-menu li a {
	padding: 7px 14px;
	border-radius: 10px;
	font-size: .93rem;
	line-height: 1.4;
}

.header-top-bar .header-nav .header-menu li a:hover,
.header-top-bar .header-nav .header-menu li.current_page_item a {
	background: rgba(255, 255, 255, .1);
}

.header-top-bar .subnav-menu li.subnav-menu-btn a,
header .hamburger-menu {
	padding: 7px 15px;
	border-radius: 12px;
	background: var(--nj-primary);
	line-height: 1.45;
	box-shadow: 0 7px 18px rgba(216, 27, 96, .24);
}

.header-top-bar .subnav-menu li.login-btn a,
.header-top-bar .subnav-menu li.logout-btn a {
	background: rgba(255, 255, 255, .1);
	box-shadow: none;
}

.header-top-bar .subnav-menu li.subnav-menu-icon a {
	background: rgba(255, 255, 255, .07);
}

.sliderall {
	padding: 18px clamp(8px, 2vw, 30px);
	background:
		radial-gradient(circle at 18% 20%, rgba(216, 27, 96, .32), transparent 32%),
		radial-gradient(circle at 80% 15%, rgba(124, 58, 237, .3), transparent 34%),
		#17101f;
}

.slider {
	border-radius: var(--nj-radius);
}

.slider .slide {
	padding: 0 5px;
}

.slider .slide .girlimg {
	overflow: hidden;
	border-radius: 16px;
	background: #211a29;
	box-shadow: 0 10px 26px rgba(0, 0, 0, .28);
}

.slider .slide .girlimg img {
	transition: transform .45s ease, filter .45s ease;
}

.slider .slide .girlimg:hover img {
	transform: scale(1.04);
	filter: saturate(1.08);
}

.slider .slide .girlinfo .modelinfo {
	padding: 14px 12px 11px;
	background: linear-gradient(0deg, rgba(12, 9, 18, .92), rgba(12, 9, 18, .08));
}

.slider .slide .girlimg:hover .girlinfo .modelinfo {
	background: linear-gradient(0deg, rgba(12, 9, 18, .96), rgba(12, 9, 18, .12));
}

/* The legacy 3-column layout (.contentwrapper > .body, with .sidebar-left/
   .sidebar-right pulled into its gutters via negative margins) lives inside
   .all-body, which has never had a width cap — it just stretches edge to
   edge. Every column in that system (.body's 250px gutters, the sidebars'
   -100% pulls) is sized relative to that ancestor, so on any screen wider
   than ~1000px the whole block sits flush against the viewport edges while
   the hero and .njm-section grids (each independently capped at 1440px and
   centered with the same clamp() padding) end up 200px+ further in. Capping
   and centering .all-body itself with that same max-width + padding brings
   every column of the old layout back into alignment with the new one,
   without having to touch the float/negative-margin mechanics themselves. */
.all-body {
	max-width: var(--nj-container-max);
	margin: 0 auto;
	padding: 0 clamp(16px, 4vw, 40px);
}

.body {
	margin: 0 250px;
	border: 0;
	background: transparent;
}

.bodybox {
	margin: 18px 12px;
	padding: clamp(18px, 3vw, 32px);
	overflow: hidden;
	border: 1px solid var(--nj-border);
	border-radius: var(--nj-radius);
	background: var(--nj-surface);
	box-shadow: var(--nj-shadow);
}

.bodybox h3,
.bodybox h4,
.bodybox-homepage h3,
.bodybox .settingspagetitle {
	color: var(--nj-text);
	font-weight: 750;
	letter-spacing: -.025em;
}

.bodybox-homepage h3 {
	font-size: clamp(1.35rem, 2.2vw, 1.8rem);
	text-align: left;
}

.pinkbutton,
.pinkdegrade,
.greenbutton,
.greendegrade,
.blueishbutton,
.orangebutton,
.redbutton,
.graybutton {
	border: 0;
	border-radius: 11px !important;
	background: var(--nj-primary);
	color: #fff;
	text-shadow: none;
	box-shadow: 0 7px 18px rgba(216, 27, 96, .2);
}

.pinkbutton:hover,
.greenbutton:hover,
.blueishbutton:hover,
.orangebutton:hover,
.redbutton:hover,
.graybutton:hover {
	background: var(--nj-primary-dark);
	color: #fff;
	transform: translateY(-1px);
}

.bodybox-homepage .see-all-top,
.bodybox-homepage .see-all-bottom,
.bodybox-homepage .see-more-button {
	padding: 8px 16px;
}

.girl {
	padding: 8px;
	padding-bottom: 16px;
}

.girl .thumb {
	overflow: hidden;
	border: 1px solid var(--nj-border);
	border-radius: 16px !important;
	background: var(--nj-surface);
	box-shadow: 0 8px 22px rgba(25, 20, 45, .1);
	transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}

.girl .thumb:hover,
.girl .thumb.girlpremium:hover {
	border-color: rgba(216, 27, 96, .35);
	box-shadow: var(--nj-shadow-hover);
	transform: translateY(-5px);
}

.girl .thumb .thumbwrapper a img {
	aspect-ratio: 4 / 5;
	object-fit: cover;
	transition: transform .4s ease;
}

.girl .thumb:hover .thumbwrapper a img {
	transform: scale(1.035);
}

.girl .desc,
.girl a:hover .desc {
	padding: 18px 10px 10px;
	background: linear-gradient(0deg, rgba(15, 12, 22, .94), rgba(15, 12, 22, 0));
}

.girl a .desc .girl-name {
	font-size: 1.08rem;
	font-weight: 750;
	text-shadow: none;
}

.girl .desc .girl-desc-location {
	padding: 3px 0;
	color: rgba(255, 255, 255, .8);
	font-size: .82rem;
}

.girl .thumb .thumbwrapper .label,
.slider .slide .labels .label {
	border-radius: 7px !important;
	font-size: .72rem;
	letter-spacing: .03em;
}

.girl .thumb.girlpremium {
	border-color: #f3c96b;
}

input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"],
input[type="tel"],
input[type="url"],
input[type="search"],
textarea,
select {
	min-height: 44px;
	border: 1px solid #d9dce5;
	border-radius: 10px;
	background: #fff;
	color: var(--nj-text);
	box-shadow: 0 1px 2px rgba(20, 15, 31, .03);
	transition: border-color .2s ease, box-shadow .2s ease;
}

input:focus,
textarea:focus,
select:focus {
	outline: none;
	border-color: var(--nj-primary);
	box-shadow: 0 0 0 3px rgba(216, 27, 96, .12);
}

.sidebar-left .widgetbox,
.sidebar-right .widgetbox,
.njm-footer .widgetbox {
	border: 1px solid var(--nj-border);
	border-radius: 14px;
	background: var(--nj-surface);
	box-shadow: 0 7px 20px rgba(25, 20, 45, .06);
}

.sidebar-left {
	background: transparent;
}

.sidebar-left .countries,
.widgetbox-wrapper {
	margin: 12px;
	padding: 16px;
	border: 1px solid var(--nj-border);
	border-radius: 14px;
	background: var(--nj-surface);
	box-shadow: 0 7px 20px rgba(25, 20, 45, .06);
}

.sidebar-left .countries h4,
.widgetbox h4 {
	color: var(--nj-text);
	font-weight: 700;
	margin-bottom: 10px;
}

/* Cascading country > state > city picker (sidebar-left.php) — replaces
   what used to be the entire location taxonomy dumped as one nested list,
   unusable once it was seeded with hundreds of real cities. */
.njm-location-field {
	margin-bottom: 8px;
}
.njm-location-field:last-child {
	margin-bottom: 0;
}
.njm-location-field select {
	width: 100%;
}
.njm-location-placeholder {
	display: block;
	padding: 8px 2px;
	color: var(--nj-muted);
	font-size: .86rem;
}
.njm-location-picker .select2-container {
	width: 100% !important;
}

.sidebar-right {
	padding-top: 12px;
	background: transparent;
}

/* Matches .sidebar-left .countries — same white card floating on the dark
   canvas, instead of the old dark-purple card that made the two sidebar
   widgets look like they belonged to different sites. */
.sidebar-right .quicksearch {
	margin: 0 12px 12px;
	padding: 18px;
	border: 1px solid var(--nj-border);
	border-radius: 14px;
	background: var(--nj-surface);
	color: var(--nj-text);
	box-shadow: 0 7px 20px rgba(25, 20, 45, .06);
}

.sidebar-right .quicksearch h4 {
	color: var(--nj-text);
	font-weight: 700;
	margin-bottom: 10px;
}

.sidebar-right .quicksearch .adv {
	color: var(--nj-primary);
}

.sidebar-right .quicksearch .form-input select {
	padding: 8px 10px;
	color: var(--nj-text);
}

/* Text search complements the original structured filters instead of
   replacing country/state/city, gender and profile-status options. */
.njm-quicksearch-text-form {
	margin-bottom: 14px;
	padding-bottom: 14px;
	border-bottom: 1px solid var(--nj-border);
}
.njm-quicksearch-input {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid var(--nj-border);
	border-radius: 10px;
	font-size: .9rem;
	color: var(--nj-text);
	background: var(--nj-surface-soft);
}
.njm-quicksearch-submit {
	width: 100%;
	margin-top: 10px;
	justify-content: center;
}
.njm-quicksearch-filter-form .form-input {
	margin-bottom: 8px;
}
.njm-quicksearch-filter-form label {
	display: flex;
	align-items: center;
	gap: 8px;
	color: var(--nj-text);
	font-size: .84rem;
}
.njm-quicksearch-filter-form input[type="checkbox"] {
	accent-color: var(--nj-primary);
}

.footer {
	margin-top: 24px;
	padding: 24px clamp(16px, 4vw, 60px);
	border-top: 1px solid var(--nj-border);
	background: #fff;
}

.underfooter {
	padding: 16px;
	background: #17101f;
	color: rgba(255, 255, 255, .72);
}

@media (max-width: 1250px) {
	.body {
		margin: 0 220px;
	}
}

@media (max-width: 1000px) {
	.header-top-bar {
		padding: 14px 18px;
	}

	.body {
		margin: 0;
	}

	.bodybox {
		margin: 14px;
	}
}

@media (max-width: 768px) {
	body {
		font-size: 15px;
	}

	.header-top-bar {
		min-height: 68px;
	}

	.bodybox {
		margin: 10px;
		padding: 18px 14px;
		border-radius: 15px;
	}

	.sidebar-left .countries,
	.sidebar-right .quicksearch,
	.widgetbox-wrapper {
		margin: 10px;
	}

	.sidebar-right {
		padding-top: 0;
	}

	.bodybox-homepage h3 {
		width: 100%;
		margin-bottom: 8px;
	}

	.bodybox-homepage .see-all-top {
		float: left;
		margin-bottom: 12px;
	}

	.girl {
		width: 50%;
		padding: 6px;
	}

	.sliderall {
		padding: 10px 6px;
	}
}

@media (max-width: 420px) {
	.girl {
		width: 100%;
		max-width: 320px;
		margin-left: auto;
		margin-right: auto;
		float: none;
	}
}

/* ==========================================================================
   NIMPHOJOBS MODERN — extended design system
   Everything below restyles the existing EscortWP class vocabulary in place.
   No PHP/markup changes: every selector below targets classes the parent
   theme already emits, so all AJAX/JS behaviour keeps working untouched.
   ========================================================================== */

:root {
	--nj-success: #16a34a;
	--nj-success-dark: #0f7a37;
	--nj-danger: #e11d48;
	--nj-danger-dark: #b0123a;
	--nj-warning: #d97706;
	--nj-info: #0ea5e9;
	--nj-info-dark: #0876ab;
	--nj-gold: #f3c96b;
	--nj-dark: #17101f;
	--nj-dark-surface: #1d1527;
	--nj-dark-surface-2: #241a30;
	--nj-dark-border: rgba(255, 255, 255, .1);
	--nj-dark-text: rgba(255, 255, 255, .92);
	--nj-dark-muted: rgba(255, 255, 255, .62);
}

h1, h2, h3, h4, h5, h6 {
	font-family: inherit;
	letter-spacing: -.02em;
}

/* ---- semantic buttons: recolor the theme's fixed button classes ---- */
.greenbutton, .greendegrade {
	background: var(--nj-success);
	box-shadow: 0 7px 18px rgba(22, 163, 74, .22);
}
.greenbutton:hover { background: var(--nj-success-dark); }

.redbutton, .reddegrade {
	background: var(--nj-danger);
	box-shadow: 0 7px 18px rgba(225, 29, 72, .22);
}
.redbutton:hover { background: var(--nj-danger-dark); }

.orangebutton {
	background: var(--nj-warning);
	box-shadow: 0 7px 18px rgba(217, 119, 6, .22);
}
.orangebutton:hover { background: #b45f04; }

.blueishbutton {
	background: var(--nj-info);
	box-shadow: 0 7px 18px rgba(14, 165, 233, .22);
}
.blueishbutton:hover { background: var(--nj-info-dark); }

.whitebutton {
	border: 1px solid var(--nj-border) !important;
	border-radius: 11px !important;
	background: #fff;
	color: var(--nj-text);
	box-shadow: 0 1px 2px rgba(20, 15, 31, .04);
}
.whitebutton:hover {
	border-color: var(--nj-primary) !important;
	color: var(--nj-primary);
}

.graybutton {
	background: #6b7280;
	box-shadow: none;
}
.graybutton:hover { background: #4b5563; }

/* ---- badges / labels (get_escort_labels, girlsinglelabels) ---- */
.label, .girlsinglelabels span, .verified, .new {
	border-radius: 999px !important;
	padding: 3px 10px !important;
	font-size: .72rem !important;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
	box-shadow: none !important;
}
.label-new, .new { background: var(--nj-accent) !important; }
.label-private { background: #52525b !important; }
.label-verified, .verified { background: var(--nj-success) !important; }
.label-featured { background: var(--nj-primary) !important; }
.girl .thumb .labels { display: flex; flex-direction: column; gap: 4px; align-items: flex-start; }
.girl .thumb .labels .clear { display: none; }
.slider .slide .labels { display: flex; gap: 4px; }

/* ==========================================================================
   PROFILE / AGENCY / AD / BLACKLIST SINGLE PAGES  (.girlsingle)
   ========================================================================== */

.girlsingle .profile-title,
.girlsingle.agency-profile .profile-header .profile-title {
	color: var(--nj-text);
	font-weight: 800;
	letter-spacing: -.03em;
}

.girlsingle .profile-header .profile-header-name-info {
	background: transparent;
	padding: 6px 0;
}
.girlsingle .profile-header .profile-header-name-info .section-box {
	padding: 10px 16px;
	margin-left: 8px;
	border: 1px solid var(--nj-border);
	border-radius: 14px;
	background: var(--nj-surface-soft);
	box-shadow: 0 4px 12px rgba(25, 20, 45, .05);
}
.girlsingle .profile-header .profile-header-name-info .section-box .valuecolumn {
	color: var(--nj-primary);
	letter-spacing: -.03em;
}
.girlsingle .profile-header .profile-header-name-info .section-box b {
	color: var(--nj-muted);
	font-weight: 600;
}
.girlsingle .profile-header .phone-box a,
.girlsingle .profile-header .available-on a {
	color: var(--nj-primary);
	font-weight: 700;
}
.girlsingle .profile-header .phone-box a:hover { color: var(--nj-primary-dark); }
.girlsingle .profile-header .phone-box .icon-phone { color: var(--nj-primary); opacity: .55; }

.girlsingle .profile-page-no-media {
	border: 2px dashed var(--nj-border);
	border-radius: 16px;
	color: var(--nj-muted);
	background: var(--nj-surface-soft);
	transition: border-color .2s ease, background-color .2s ease;
}
.girlsingle .profile-page-no-media:hover {
	border-color: var(--nj-primary);
	background: #fff;
}
.girlsingle .profile-page-no-media .icon,
.girlsingle .profile-page-no-media p u { color: var(--nj-primary); }
.girlsingle .max-photos b, .girlsingle .max-videos b {
	background: var(--nj-primary);
	border-radius: 999px;
}

.girlsingle .bigimage,
.girlsingle .thumbs {
	border-radius: var(--nj-radius);
	overflow: hidden;
}
.girlsingle .bigimage img { border-radius: 16px; }
.girlsingle .thumbs img {
	border-radius: 10px;
	box-shadow: 0 4px 10px rgba(25, 20, 45, .08);
}
.girlsingle .profile-img-thumb, .girlsingle .profile-video-thumb {
	border-radius: 10px;
	overflow: hidden;
}

.girlsingle .lockedsection {
	border-radius: var(--nj-radius);
	background: linear-gradient(135deg, var(--nj-primary), var(--nj-accent));
	box-shadow: var(--nj-shadow);
}
.girlsingle .lockedsection a { text-decoration: none; border-bottom: 1px dashed rgba(255,255,255,.6); }

.girlsingle .rates-table {
	border-collapse: separate;
	border-spacing: 0 6px;
}
.girlsingle .rates-table th {
	background: var(--nj-dark);
	color: #fff;
	border-radius: 10px 10px 0 0;
	padding: 8px 0;
	font-weight: 600;
	font-size: .85rem;
}
.girlsingle .rates-table th.hide-incall, .girlsingle .rates-table th.hide-outcall {
	background: var(--nj-primary);
}
.girlsingle .rates-table td {
	background: var(--nj-surface-soft);
	text-align: center;
	border-radius: 10px;
}

.girlsingle .girlinfo .girlinfo-section {
	border: 1px solid var(--nj-border);
	border-radius: var(--nj-radius);
	box-shadow: 0 6px 18px rgba(25, 20, 45, .05);
}
.girlsingle .aboutme {
	border: 1px solid var(--nj-border);
	border-radius: var(--nj-radius);
	box-shadow: 0 6px 18px rgba(25, 20, 45, .05);
}
.girlsingle .aboutme .currently-on-tour-in,
.girlsingle .contact .currently-on-tour-in {
	border: 2px solid var(--nj-accent);
	border-radius: 12px;
	color: var(--nj-accent);
}
.girlsingle h4, .girlsingle .aboutme h4, .clientreviewtext h4,
.agency-reviews-bodybox h4 {
	color: var(--nj-text);
	border-left: 3px solid var(--nj-primary);
	text-transform: none;
	letter-spacing: -.01em;
}
.girlinfo .section-box b {
	color: var(--nj-primary);
	font-weight: 700;
}
.girlsingle .girlinfo .services .icon-ok { color: var(--nj-success); }
.girlsingle .girlinfo .services .icon-cancel { color: var(--nj-danger); }

.girlsingle .review-wrapper, .agency-reviews-bodybox .review-wrapper {
	border: 1px solid var(--nj-border);
	border-radius: var(--nj-radius);
	box-shadow: 0 6px 18px rgba(25, 20, 45, .05);
}
.review .addedby {
	background: var(--nj-dark);
	border-radius: 999px;
	padding: 3px 10px;
}

.girlsingle .escortcontact {
	border: 1px solid var(--nj-border);
	border-radius: 14px;
	background: var(--nj-surface-soft);
}

/* tours table on the profile page */
.addedtours {
	border-radius: var(--nj-radius);
	overflow: hidden;
	border: 1px solid var(--nj-border);
}
.addedtours .tour {
	background: var(--nj-surface);
	border-bottom: 1px solid var(--nj-border);
}
.addedtours .tour:hover { background: var(--nj-surface-soft); }

/* ---- star ratings: replace the pixel-sprite fill with a scalable one ---- */
.starrating, .profilestarrating-wrapper .starrating {
	background: none;
	position: relative;
	display: inline-block;
	font-size: 17px;
	line-height: 1;
	letter-spacing: 1px;
	font-family: Arial, sans-serif;
}
.starrating::before {
	content: "\2605\2605\2605\2605\2605";
	color: var(--nj-border);
	display: block;
}
.starrating .starrating_stars {
	background: none;
	position: absolute;
	top: 0;
	left: 0;
	overflow: hidden;
	white-space: nowrap;
}
.starrating .starrating_stars::before {
	content: "\2605\2605\2605\2605\2605";
	color: var(--nj-primary);
	display: block;
}
.profilestarrating-wrapper .starrating {
	font-size: 38px;
	letter-spacing: 2px;
}

/* ==========================================================================
   AGENCY SINGLE PAGE
   ========================================================================== */
.agencydetails a { color: var(--nj-primary); }
.agencydetails b { color: var(--nj-muted); font-weight: 600; }
.girlsingle.agency-profile .bigimage img {
	border-radius: 16px;
	box-shadow: 0 8px 22px rgba(25, 20, 45, .1);
}

/* ==========================================================================
   SIDEBAR RIGHT — role dashboard (upsells, my-account menu, quick search)
   ========================================================================== */

.sidebar-right .sidebar-expire-notice {
	border-radius: 14px;
	margin: 0 12px 10px;
	width: auto;
	background: var(--nj-dark);
}
.sidebar-right .sidebar-expire-notice .payment-button,
.sidebar-right .sidebar-expire-notice .activation-button {
	border-radius: 999px !important;
}

.sidebar-right .buyfeatured, .sidebar-right .buypremium {
	margin: 0 12px 10px;
}
.sidebar-right .buyfeatured .greendegrade,
.sidebar-right .buypremium .greendegrade,
.sidebar-right .buyfeatured > a,
.sidebar-right .buypremium > a {
	border-radius: 14px !important;
}
.sidebar-right .buyfeatured_details, .sidebar-right .buypremium_details {
	border: 1px solid var(--nj-border);
	border-radius: 14px;
	background: var(--nj-surface);
}

.sidebar-right .upgradeescortbox {
	border-radius: 14px;
	background: var(--nj-primary);
}

.sidebar-right .dropdownlinks {
	margin: 0 12px 10px;
	border: 1px solid var(--nj-border);
	border-radius: 14px;
	background: var(--nj-dark);
	background-image: none;
	filter: none;
	box-shadow: 0 8px 20px rgba(25, 20, 45, .12);
}
.sidebar-right .dropdownlinks h4 { color: #fff; }
.sidebar-right .dropdownlinks ul {
	background: transparent;
	border-radius: 0;
	margin-top: 4px;
	padding: 4px 0 0;
}
.sidebar-right .dropdownlinks ul a { color: var(--nj-dark-muted); }
.sidebar-right .dropdownlinks ul a:hover { color: #fff; }
.sidebar-right .dropdownlinks ul li a .icon {
	background: rgba(255, 255, 255, .08);
	color: #fff;
}
.sidebar-right .dropdownlinks a:hover .icon {
	background: var(--nj-primary);
	color: #fff;
}
.sidebar-right .dropdownlinks.dropdownlinks-userid { color: var(--nj-dark-text); }
.sidebar-right .dropdownlinks.dropdownlinks-userid a.edit-user { color: var(--nj-gold); }

/* Account, user details and administration links use the same light card
   language as the country picker and Quick Search. */
.sidebar-right .dropdownlinks:is(.njm-admin-links, .dropdownlinks-profile, .dropdownlinks-userid, .njm-profile-management) {
	margin: 0 12px 12px;
	padding: 18px;
	border: 1px solid var(--nj-border);
	border-radius: 14px;
	background: var(--nj-surface);
	color: var(--nj-text);
	box-shadow: 0 7px 20px rgba(25, 20, 45, .06);
}
.sidebar-right .dropdownlinks:is(.njm-admin-links, .dropdownlinks-profile, .dropdownlinks-userid, .njm-profile-management) h4 {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 10px;
	padding: 0;
	color: var(--nj-text);
	font-weight: 700;
}
.sidebar-right .dropdownlinks:is(.njm-admin-links, .dropdownlinks-profile, .dropdownlinks-userid, .njm-profile-management) h4 .icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	margin: 0;
	border-radius: 9px;
	background: rgba(232, 38, 122, .1);
	color: var(--nj-primary);
}
.sidebar-right .dropdownlinks:is(.njm-admin-links, .dropdownlinks-profile, .dropdownlinks-userid, .njm-profile-management) ul {
	margin: 0;
	padding: 0;
	border-top: 1px solid var(--nj-border);
	background: transparent;
}
.sidebar-right .dropdownlinks:is(.njm-admin-links, .dropdownlinks-profile, .dropdownlinks-userid, .njm-profile-management) ul li {
	margin: 0;
	padding: 0;
	border-bottom: 1px solid var(--nj-border);
}
.sidebar-right .dropdownlinks:is(.njm-admin-links, .dropdownlinks-profile, .dropdownlinks-userid, .njm-profile-management) ul li:last-child {
	border-bottom: 0;
}
.sidebar-right .dropdownlinks:is(.njm-admin-links, .dropdownlinks-profile, .dropdownlinks-userid, .njm-profile-management) ul li a {
	display: flex;
	align-items: center;
	gap: 9px;
	padding: 10px 2px;
	color: var(--nj-text);
	font-size: .88rem;
	line-height: 1.25;
}
.sidebar-right .dropdownlinks:is(.njm-admin-links, .dropdownlinks-profile, .dropdownlinks-userid, .njm-profile-management) ul li a:hover {
	color: var(--nj-primary);
	background: transparent;
}
.sidebar-right .dropdownlinks:is(.njm-admin-links, .dropdownlinks-profile, .dropdownlinks-userid, .njm-profile-management) ul li a .icon {
	display: inline-flex;
	flex: 0 0 28px;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	margin: 0;
	border-radius: 8px;
	background: var(--nj-surface-soft);
	color: var(--nj-primary);
}
.sidebar-right .dropdownlinks:is(.njm-admin-links, .dropdownlinks-profile, .dropdownlinks-userid, .njm-profile-management) a:hover .icon {
	background: rgba(232, 38, 122, .12);
	color: var(--nj-primary);
}
.sidebar-right .dropdownlinks.dropdownlinks-userid small {
	color: var(--nj-muted);
	font-weight: 600;
}
.sidebar-right .dropdownlinks.dropdownlinks-userid b {
	color: var(--nj-text);
	overflow-wrap: anywhere;
}
.sidebar-right .dropdownlinks.dropdownlinks-userid a.edit-user {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	margin-top: 8px;
	padding: 9px 16px;
	border-radius: 999px;
	background: var(--nj-primary);
	color: #fff;
	font-weight: 700;
}
.sidebar-right .dropdownlinks.dropdownlinks-userid a.edit-user:hover {
	background: var(--nj-primary-dark);
	color: #fff;
}
.sidebar-right .dropdownlinks.njm-profile-management .upgradeescortparent {
	margin: 8px 0;
	padding: 10px;
	border: 1px solid var(--nj-border);
	border-radius: 12px;
	background: var(--nj-surface-soft);
}
.sidebar-right .dropdownlinks.njm-profile-management .upgradebuttons {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
}
.sidebar-right .dropdownlinks.njm-profile-management .upgradebutton {
	float: none;
	margin: 0;
}
.sidebar-right .dropdownlinks.njm-profile-management .upgradeescortbox {
	margin-top: 10px;
	border: 1px solid var(--nj-border);
	background: var(--nj-surface);
	color: var(--nj-text);
	box-shadow: 0 7px 18px rgba(25, 20, 45, .08);
}
.sidebar-right .dropdownlinks.njm-profile-management select {
	width: 100%;
	max-width: 190px;
	border: 1px solid var(--nj-border);
	border-radius: 9px;
	background: var(--nj-surface);
	color: var(--nj-text);
}
.sidebar-right .dropdownlinks.njm-profile-management .admin-delete-profile {
	display: inline-flex;
	justify-content: center;
	margin-top: 10px;
	padding: 9px 18px;
}

.sidebar-right .blog-categories {
	margin: 0 12px 10px;
	padding: 12px;
	border: 1px solid var(--nj-border);
	border-radius: 14px;
	background: var(--nj-surface);
}

/* ==========================================================================
   FORMS — shared across every registration / dashboard / settings screen
   ========================================================================== */

.form-styling .form-label label { color: var(--nj-text); font-weight: 600; }
.form-styling .form-label small, .form-styling .form-input small { color: var(--nj-muted); }
.form-styling .form-input .input,
.form-styling .form-input .textarea,
.form-styling .form-input select {
	border-radius: 10px;
	border-color: #d9dce5;
}
.form-styling .form-input .input:focus,
.form-styling .form-input .textarea:focus {
	border-color: var(--nj-primary);
	box-shadow: 0 0 0 3px rgba(216, 27, 96, .12);
}
.form-styling input[type=submit] {
	border-radius: 999px !important;
	background: var(--nj-primary);
	border: 0;
	box-shadow: 0 7px 18px rgba(216, 27, 96, .2);
}
.form-styling input[type=submit]:hover { background: var(--nj-primary-dark); }
.form-styling .fieldset {
	background: var(--nj-accent);
	border-radius: 14px;
}
.form-styling .fieldset legend {
	border-color: var(--nj-accent);
	color: var(--nj-accent);
	border-radius: 999px;
}
.form-styling .form-input-accept-tos-err label {
	border-color: var(--nj-danger);
	border-radius: 8px;
}
.err, .err.rad25 {
	background: #fdecef !important;
	color: var(--nj-danger-dark) !important;
	border: 1px solid rgba(225, 29, 72, .25) !important;
	border-radius: 12px !important;
}
.ok, .ok.rad25 {
	background: #ecfdf3 !important;
	color: var(--nj-success-dark) !important;
	border: 1px solid rgba(22, 163, 74, .25) !important;
	border-radius: 12px !important;
}

/* checkator (checkbox/radio skin used site-wide) */
.checkator_element {
	border-radius: 6px !important;
	border-color: #d9dce5 !important;
}
.checkator_element.radio, .checkator_element.radio:after { border-radius: 50% !important; }
.checkator_source:checked + .checkator_element {
	border-color: var(--nj-primary) !important;
}
.checkator_source:checked + .checkator_element:after {
	background-color: var(--nj-primary) !important;
}
.checkator_source:hover + .checkator_element {
	border-color: var(--nj-primary) !important;
	background-color: #fdf1f6 !important;
}
.checkator_source:focus + .checkator_element {
	border-color: var(--nj-primary) !important;
}

/* slide-toggle owner-toolbar panels (agency_options_dropdowns and siblings) */
[class*="agency_options_"],
.searchescortform, .addnewescortform,
.addtourform, .addtourform2 {
	border: 1px solid var(--nj-border);
	border-radius: var(--nj-radius);
	background: var(--nj-surface-soft);
}

/* tabs (edit-user-types and similar admin screens) */
.tabs .tab {
	border-radius: 10px 10px 0 0 !important;
	background: var(--nj-surface-soft) !important;
	color: var(--nj-muted) !important;
	border-top-color: transparent !important;
}
.tabs .tab-active, .tabs .tab-active:hover {
	background: #fff !important;
	color: var(--nj-primary) !important;
	border-top-color: var(--nj-primary) !important;
}

/* generic data tables: classified ads, reviews, blacklists, user lists */
.listagencies, .see-all-users-table {
	border-radius: 14px;
	overflow: hidden;
	border-collapse: separate;
	border-spacing: 0;
	box-shadow: 0 6px 18px rgba(25, 20, 45, .05);
}
.listagencies .trhead th, .see-all-users-table th {
	background: var(--nj-dark) !important;
	border-bottom: none !important;
}
.listagencies .whiterow, .listagencies .agencytr {
	background: var(--nj-surface);
	border-bottom: 1px solid var(--nj-border) !important;
}
.listagencies .agencytr td a { color: var(--nj-primary); }

/* register/pricing plan cards on register-main-page.php */
.registerpage .usertype {
	border-radius: var(--nj-radius);
	box-shadow: var(--nj-shadow);
	overflow: hidden;
}
.registerpage .usertype .usertype-title {
	background: linear-gradient(135deg, var(--nj-primary), var(--nj-accent));
}
.registerpage .usertype .userlist .icon { color: var(--nj-success); }
.registerpage .usertype .userlist .showprice {
	background: var(--nj-dark);
	border-radius: 6px;
}
.registerpage .usertype .usertype-bottom .registerbutton {
	border-radius: 999px !important;
}

/* pagination */
.escort-pagination {
	display: flex;
	justify-content: center;
	margin: 20px 0;
}
.escort-pagination ul.page-numbers {
	display: flex;
	gap: 6px;
	list-style: none;
	padding: 0;
}
.escort-pagination .page-numbers {
	display: flex;
	align-items: center;
	justify-content: center;
	min-width: 38px;
	height: 38px;
	padding: 0 10px;
	border-radius: 10px;
	background: var(--nj-surface);
	border: 1px solid var(--nj-border);
	color: var(--nj-text);
	font-weight: 600;
}
.escort-pagination a.page-numbers:hover {
	border-color: var(--nj-primary);
	color: var(--nj-primary);
}
.escort-pagination .page-numbers.current {
	background: var(--nj-primary);
	border-color: var(--nj-primary);
	color: #fff;
}

/* 404 */
.page404 { color: var(--nj-text); text-align: center; padding: 40px 0; }
.page404 h2 {
	background: linear-gradient(135deg, var(--nj-primary), var(--nj-accent));
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

/* blog */
.theblog .post_title a { color: var(--nj-text); }
.theblog .post_title a:hover { color: var(--nj-primary); }
.theblog .under_the_title { border-color: var(--nj-border); }

/* select2 restyle to match the new inputs */
.select2 .select2-selection.select2-selection--single {
	border-radius: 10px !important;
	border-color: #d9dce5 !important;
}
.select2-dropdown { border-color: var(--nj-primary) !important; border-radius: 10px !important; overflow: hidden; }
.select2-container--default .select2-results__option--highlighted[aria-selected] {
	background: var(--nj-primary) !important;
}

@media (max-width: 960px) {
	.girlsingle .girlinfo { width: 100%; }
	.girlsingle .girlinfo.l, .girlsingle .girlinfo.r { padding: 0; }
}

/* ==========================================================================
   HEADER dropdown submenu + mobile toggle + AGE-GATE overlay
   ========================================================================== */

.header-top-bar .header-nav .header-menu ul {
	margin-top: 6px;
	padding: 6px;
	border-radius: 14px;
	box-shadow: var(--nj-shadow-hover);
}
.header-top-bar .header-nav .header-menu ul li {
	min-width: 190px;
	border-radius: 9px;
	overflow: hidden;
}
.header-top-bar .header-nav .header-menu ul li a,
.header-top-bar .header-nav .header-menu .current_page_item ul li a {
	border-radius: 9px;
	color: var(--nj-text);
}
.header-top-bar .header-nav .header-menu ul li a:hover {
	background: var(--nj-primary);
}

.header-top-bar .subnav-menu .header-language-switcher select {
	background: rgba(255, 255, 255, .1);
	border-radius: 999px;
}
.header-top-bar .subnav-menu .header-language-switcher select:hover {
	background: rgba(255, 255, 255, .18);
}

.tosdisclaimer-overlay {
	position: fixed;
	inset: 0;
	z-index: 9998;
	background: rgba(10, 6, 16, .85);
	backdrop-filter: blur(3px);
}
.tosdisclaimer-wrapper {
	position: fixed;
	z-index: 9999;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 92%;
	max-width: 440px;
	padding: 0;
	border-radius: 22px;
	overflow: hidden;
	box-shadow: 0 30px 80px rgba(0, 0, 0, .5);
}
.tosdisclaimer {
	padding: 36px 28px;
	background: var(--nj-surface);
	text-align: center;
}
.tosdisclaimer h4 {
	margin-bottom: 14px;
	font-size: 1.3rem;
	font-weight: 800;
	letter-spacing: -.02em;
	color: var(--nj-text);
}
.tosdisclaimer .disclaimer-logo {
	margin-bottom: 16px;
}
.tosdisclaimer .disclaimer-logo img {
	max-height: 56px;
}
.tosdisclaimer p {
	color: var(--nj-muted);
	line-height: 1.55;
	margin-bottom: 8px;
}
.tosdisclaimerbuttons {
	display: flex;
	gap: 10px;
	justify-content: center;
}
.tosdisclaimerbuttons > div {
	border-radius: 999px !important;
	padding: 10px 22px;
	font-weight: 700;
	cursor: pointer;
}

/* ==========================================================================
   V2 FRONT REBUILD — brand new header, hero, cards, grid, footer, age-gate.
   None of this reuses the legacy .header-top-bar/.girl/.footer markup:
   header.php, header-slider.php, footer.php, index.php, taxonomy.php and
   all-profiles.php were all forked in the child theme with fresh HTML.
   ========================================================================== */

.njm-logo-mark {
	display: inline-block;
	width: 34px;
	height: 34px;
	border-radius: 10px;
	background: linear-gradient(135deg, var(--nj-primary), var(--nj-accent));
	flex-shrink: 0;
}

.njm-btn {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 9px 18px;
	border-radius: 999px;
	border: 0;
	font-weight: 700;
	font-size: .88rem;
	text-decoration: none;
	cursor: pointer;
	white-space: nowrap;
	line-height: 1.3;
}
.njm-btn-solid {
	background: linear-gradient(135deg, var(--nj-primary), var(--nj-accent));
	color: #fff;
	box-shadow: 0 8px 22px rgba(232, 38, 122, .32);
}
.njm-btn-solid:hover { filter: brightness(1.08); color: #fff; transform: translateY(-1px); }
.njm-btn-ghost { background: rgba(255, 255, 255, .09); color: #fff; }
.njm-btn-ghost:hover { background: rgba(255, 255, 255, .17); color: #fff; }
.njm-btn-ghost-light { background: transparent; color: #fff; border: 1px solid rgba(255, 255, 255, .35); }
.njm-btn-ghost-light:hover { background: rgba(255, 255, 255, .1); color: #fff; }
.njm-btn-lg { padding: 13px 26px; font-size: .98rem; }

/* ---- header ---- */
.njm-header {
	position: fixed;
	top: 0;
	right: 0;
	left: 0;
	width: 100%;
	z-index: 500;
	background: rgba(11, 7, 16, .78);
	backdrop-filter: blur(18px) saturate(150%);
	-webkit-backdrop-filter: blur(18px) saturate(150%);
	border-bottom: 1px solid rgba(255, 255, 255, .08);
}
.njm-body {
	padding-top: 75px;
}
.admin-bar .njm-header {
	top: 32px;
}
.njm-header-bar {
	max-width: var(--nj-container-max);
	margin: 0 auto;
	display: flex;
	align-items: center;
	gap: 20px;
	padding: 13px clamp(16px, 3vw, 40px);
}
.njm-logo {
	display: flex;
	align-items: center;
	gap: 10px;
	text-decoration: none;
	flex-shrink: 0;
}
.njm-logo img { height: 48px; display: block; }
.njm-logo-word {
	font-family: var(--nj-display-font);
	font-weight: 800;
	font-size: 1.2rem;
	color: #fff;
	letter-spacing: -.03em;
}
.njm-nav { flex: 1; display: flex; justify-content: center; min-width: 0; }
.njm-nav-list { display: flex; align-items: center; gap: 2px; list-style: none; margin: 0; padding: 0; }
.njm-nav-list > li { position: relative; }
.njm-nav-list > li > a {
	display: block;
	padding: 9px 15px;
	border-radius: 999px;
	color: rgba(255, 255, 255, .78);
	font-weight: 600;
	font-size: .89rem;
	text-decoration: none;
	white-space: nowrap;
}
.njm-nav-list > li > a:hover,
.njm-nav-list > li.current_page_item > a {
	background: rgba(255, 255, 255, .09);
	color: #fff;
}
.njm-subnav {
	position: absolute;
	top: calc(100% + 10px);
	left: 0;
	min-width: 210px;
	list-style: none;
	margin: 0;
	padding: 6px;
	background: #170e22;
	border: 1px solid rgba(255, 255, 255, .09);
	border-radius: 14px;
	box-shadow: 0 24px 55px rgba(0, 0, 0, .5);
	opacity: 0;
	visibility: hidden;
	transform: translateY(4px);
	transition: opacity .15s ease, transform .15s ease, visibility .15s ease;
}
.njm-has-sub:hover .njm-subnav,
.njm-has-sub:focus-within .njm-subnav {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}
.njm-subnav li a {
	display: block;
	padding: 9px 12px;
	border-radius: 9px;
	color: rgba(255, 255, 255, .75);
	font-size: .86rem;
	text-decoration: none;
}
.njm-subnav li a:hover { background: var(--nj-primary); color: #fff; }

.njm-header-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.njm-icon-btn {
	width: 40px;
	height: 40px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	background: rgba(255, 255, 255, .09);
	color: #fff;
	text-decoration: none;
	flex-shrink: 0;
}
.njm-icon-btn:hover { background: var(--nj-primary); color: #fff; }
.njm-lang-switch select {
	background: rgba(255, 255, 255, .09);
	border: 0;
	border-radius: 999px;
	color: #fff;
	padding: 8px 14px;
	font-weight: 600;
	font-size: .85rem;
	cursor: pointer;
}
.njm-lang-switch select option { color: #000; }

.njm-nav-toggle {
	display: none;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	gap: 5px;
	width: 40px;
	height: 40px;
	border: 0;
	background: rgba(255, 255, 255, .09);
	border-radius: 12px;
	cursor: pointer;
	flex-shrink: 0;
}
.njm-nav-toggle span {
	display: block;
	width: 18px;
	height: 2px;
	background: #fff;
	border-radius: 2px;
	transition: transform .2s ease, opacity .2s ease;
}
.njm-nav-open .njm-nav-toggle span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.njm-nav-open .njm-nav-toggle span:nth-child(2) { opacity: 0; }
.njm-nav-open .njm-nav-toggle span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

@media (max-width: 980px) {
	.njm-nav-toggle { display: flex; }
	.njm-nav {
		position: fixed;
		inset: 0;
		z-index: 60;
		display: flex;
		flex-direction: column;
		align-items: stretch;
		justify-content: flex-start;
		padding: 96px 26px calc(40px + env(safe-area-inset-bottom, 0px));
		background: #0a0610;
		overflow-y: auto;
		overscroll-behavior: contain;
		opacity: 0;
		visibility: hidden;
		transform: translateY(-10px);
		pointer-events: none;
		transition: opacity .22s ease, transform .22s ease, visibility .22s ease;
	}
	.njm-nav-open .njm-nav {
		opacity: 1;
		visibility: visible;
		transform: none;
		pointer-events: auto;
	}
	/* .njm-header has backdrop-filter, which makes it the containing block
	   for any position:fixed descendant (same rule as `filter`/`transform`).
	   That trapped .njm-nav's inset:0 inside the ~62px header bar instead of
	   the viewport, clipping the open menu down to just its first item.
	   Dropping the filter while the menu is open restores the viewport as
	   the containing block; the solid background on .njm-nav itself already
	   covers the header bar, so there's nothing left for it to blur anyway. */
	.njm-header.njm-nav-open {
		backdrop-filter: none;
		-webkit-backdrop-filter: none;
	}
	/* .njm-header-bar has no z-index of its own, so the full-screen .njm-nav
	   panel (z-index: 60) paints over it once open — logo, search and the
	   toggle button all vanish, taking the only way to close the menu with
	   them. Lifting the bar above the panel keeps branding visible for
	   orientation and keeps the toggle (which animates into an X) reachable
	   as the close control, with search/login still one tap away too. */
	.njm-nav-open .njm-header-bar {
		position: relative;
		z-index: 70;
	}
	.njm-nav-list { flex-direction: column; align-items: stretch; gap: 4px; width: 100%; }
	.njm-nav-list > li > a { font-size: 1.1rem; padding: 14px 8px; }
	.njm-subnav {
		position: static;
		opacity: 1;
		visibility: visible;
		transform: none;
		display: block;
		background: transparent;
		border: 0;
		border-left: 2px solid rgba(255, 255, 255, .12);
		box-shadow: none;
		padding-left: 16px;
		margin: 2px 0 10px 10px;
	}
	.njm-subnav li a { font-size: .85rem; color: rgba(255, 255, 255, .62); }
	.njm-header-actions .njm-btn span:not(.icon) { display: none; }
	.njm-header-actions .njm-lang-switch { display: none; }
}

@media (max-width: 782px) {
	.admin-bar .njm-header {
		top: 46px;
	}
}
@media (max-width: 560px) {
	.njm-header-actions .njm-btn { padding: 9px 12px; }
}

/* ---- hero ---- */
.njm-hero {
	position: relative;
	overflow: hidden;
	/* Horizontal inset lives on .njm-hero-featured-label/-slider-wrap below,
	   not here — .njm-hero itself stays full-bleed so .njm-hero-glow keeps
	   spanning near the full viewport. Padding both here AND on those
	   children was stacking two clamp() insets, landing the cards ~80px
	   further in than the sidebars/sections next to them, which share only
	   one layer of that same inset via .all-body. */
	/* Bottom padding needs enough room for a page's first section heading
	   (and on all-profiles.php, the filter chips beside it), absolutely
	   positioned into this gap on desktop instead of sitting in normal
	   flow above the card grid — see .njm-section-head/-topbar under
	   .body > .njm-section:first-child. 64px covers a single heading
	   line (home/taxonomy/search); the wider allowance kicks in only on
	   desktop widths, where all-profiles.php's chips might wrap under
	   the heading onto a second line. */
	padding: 32px 0 64px;
}
.njm-hero-glow {
	position: absolute;
	inset: -25% -10% auto -10%;
	height: 150%;
	background:
		radial-gradient(45% 55% at 25% 20%, rgba(232, 38, 122, .35), transparent 65%),
		radial-gradient(40% 50% at 85% 10%, rgba(139, 92, 246, .32), transparent 65%);
	pointer-events: none;
	z-index: 0;
}

.njm-hero-slider-wrap {
	position: relative;
	z-index: 1;
	max-width: var(--nj-container-max);
	margin: 0 auto;
	padding: 0 clamp(16px, 4vw, 40px);
	/* Defensive cap: whatever ends up inside this strip, it can never blow
	   past a reasonable hero height and bury the rest of the page — worst
	   case is a clipped/scrollable strip, never a multi-thousand-px hero. */
	max-height: 520px;
}
.njm-hero-slider {
	display: flex;
	gap: 16px;
	overflow-x: auto;
	overflow-y: hidden;
	/* mandatory (not proximity): a scroll/nudge always settles on a card
	   boundary, so a card can never end up resting half-visible after
	   interacting with the strip either — only ever at load, which the
	   JS sizing in header-slider.php now prevents by making N cards fill
	   the strip exactly. */
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	/* overflow-x:auto clips at this element's own padding edge, and
	   .njm-card's box-shadow needs ~34-36px of clearance to render
	   uncropped (premium/featured go up to 0 14px 34px). A plain padding
	   here would supply that room but would also be indistinguishable
	   from real layout spacing, pushing the first card in by the same
	   amount. So the padding is split into two parts, using negative
	   margin to keep them separate:
	     - 36px of it is pure shadow-bleed clearance, cancelled out by an
	       equal negative margin (net zero) so it contributes no visible
	       offset at all — see the shadow-bleed technique.
	     - the extra 16px on top of that (= this element's own `gap`
	       value, kept in sync at each breakpoint below) is real, visible
	       spacing, so the strip reads as gap · card · gap · card · gap
	       instead of card · gap · card · gap · <flush edge>. */
	margin: 0 -36px;
	padding: 4px calc(36px + 16px);
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
}
.njm-hero-slider::-webkit-scrollbar { display: none; }
.njm-hero-slide {
	flex: 0 0 260px;
	scroll-snap-align: start;
}
.njm-hero-slider .njm-card { height: 100%; }

/* Prev/next float centered over the strip's left/right edge, on top of
   the first/last card — intentional, matches a standard carousel arrow
   layout. */
.njm-hero-nav {
	position: absolute;
	top: 50%;
	z-index: 2;
	transform: translateY(-50%);
	width: 44px;
	height: 44px;
	border-radius: 50%;
	background: rgba(11, 7, 16, .7);
	border: 1px solid rgba(255, 255, 255, .16);
	color: #fff;
	font-size: 1.1rem;
	backdrop-filter: blur(6px);
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
}
.njm-hero-nav:hover { background: var(--nj-primary); }
.njm-hero-nav-prev { left: 4px; }
.njm-hero-nav-next { right: 4px; }

@media (max-width: 768px) {
	/* Fixed 260px cards only left room for ~1.5 slides on phones. Size
	   relative to the visible strip instead so exactly 2 full cards fill
	   it — no partial third card peeking past the edge. */
	/* padding's second term tracks this breakpoint's own gap (see the base
	   .njm-hero-slider rule above), so the leading/trailing space stays
	   equal to the gap between cards at every screen size, not just desktop. */
	.njm-hero-slider { gap: 12px; padding: 4px calc(36px + 12px); }
	.njm-hero-slide { flex: 0 0 calc((100% - 12px) / 2); }
}
@media (max-width: 640px) {
	.njm-hero { padding-top: 40px; }
	.njm-hero-nav { display: none; }
}
@media (max-width: 420px) {
	.njm-hero-slider { gap: 10px; padding: 4px calc(36px + 10px); }
	.njm-hero-slide { flex: 0 0 calc((100% - 10px) / 2); }
}

/* ---- profile card (njm_profile_card()) ---- */
.njm-card {
	position: relative;
	display: block;
	border-radius: 22px;
	overflow: hidden;
	text-decoration: none;
	background: #15101f;
	box-shadow: 0 10px 28px rgba(0, 0, 0, .32);
	transition: transform .3s ease, box-shadow .3s ease;
}
.njm-card:hover { transform: translateY(-5px); box-shadow: 0 20px 42px rgba(0, 0, 0, .48); }
/* Premium/Featured are paid upgrades — they need to visibly outrank a
   plain listing at a glance, not just carry a small badge. */
.njm-card--premium {
	box-shadow: 0 0 0 2px var(--nj-gold-accent), 0 14px 34px rgba(242, 184, 75, .22);
}
.njm-card--premium:hover {
	box-shadow: 0 0 0 2px var(--nj-gold-accent), 0 20px 44px rgba(242, 184, 75, .32);
}
.njm-card--featured:not(.njm-card--premium) {
	box-shadow: 0 0 0 2px var(--nj-primary), 0 14px 34px rgba(232, 38, 122, .22);
}
.njm-card-media { position: relative; display: block; aspect-ratio: 3 / 4; overflow: hidden; background: #1b1526; }
.njm-card-media img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 14%; display: block; transition: transform .5s ease; }
.njm-card:hover .njm-card-media img { transform: scale(1.06); }
.njm-card-gradient {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(0, 0, 0, 0) 42%, rgba(6, 3, 10, .92) 100%);
}
.njm-card-badges {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	align-content: flex-start;
	gap: 3px;
	height: 28px;
	margin-top: 3px;
	overflow: hidden;
}
.njm-badge {
	display: inline-flex;
	align-items: center;
	flex: 0 0 auto;
	gap: 2px;
	min-height: 12px;
	padding: 2px 5px;
	border-radius: 999px;
	font-size: .46rem;
	line-height: 1;
	font-weight: 800;
	letter-spacing: .01em;
	text-transform: uppercase;
	color: #fff;
	box-shadow: 0 2px 6px rgba(0, 0, 0, .25);
}
.njm-badge--featured { background: linear-gradient(135deg, var(--nj-primary), var(--nj-accent)); }
.njm-badge--premium { background: linear-gradient(135deg, var(--nj-gold-accent), #c98a1d); color: #1a1206; }
.njm-badge--verified { background: #16a34a; }
.njm-badge--new { background: var(--nj-accent); }
.njm-badge--private { background: #52525b; }
.njm-badge--tour { background: linear-gradient(135deg, #2563eb, #0891b2); }
.njm-card-name-row { display: flex; align-items: center; gap: 6px; }
.njm-online-dot {
	flex-shrink: 0;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: #4ade80;
	box-shadow: 0 0 0 3px rgba(74, 222, 128, .3);
}
.njm-video-badge {
	position: absolute;
	bottom: 94px;
	right: 10px;
	z-index: 2;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: rgba(6, 3, 10, .65);
	display: flex;
	align-items: center;
	justify-content: center;
	color: #fff;
	font-size: .8rem;
}
.njm-card-info {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 2;
	display: grid;
	grid-template-rows: 22px 31px 18px;
	box-sizing: border-box;
	height: 92px;
	padding: 10px 12px 11px;
}
.njm-card-name-row {
	min-width: 0;
	overflow: hidden;
}
.njm-card-name {
	display: block;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	font-family: var(--nj-display-font);
	font-weight: 700;
	font-size: 1.02rem;
	color: #fff;
	letter-spacing: -.01em;
}
.njm-card-location {
	display: flex;
	align-items: center;
	gap: 4px;
	min-width: 0;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
	margin-top: 0;
	color: rgba(255, 255, 255, .68);
	font-size: .64rem;
}
.njm-card-location .icon { flex: 0 0 auto; font-size: .9em; }
.njm-card-location-text {
	display: block;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	min-width: 0;
}

/* ---- sections / grid (home, taxonomy, all-profiles) ---- */
/* Always nested inside .contentwrapper > .body, which (via .all-body) now
   does its own max-width/centering/horizontal padding — adding a second
   layer of the same here just stacked on top of it, pushing every section's
   cards further right than the hero (the one thing on the page NOT nested
   inside .body) and further right than the sidebars sitting next to .body.
   Vertical padding still belongs here; horizontal containment doesn't. */
.njm-section { padding: 30px 0; }
/* Same treatment on every page (home, taxonomy location pages,
   all-profiles listings): the first section in .body had 30px+ of top
   padding plus a heading/chips row sitting *inside* it, above the grid
   — pushing the actual card photos well below where the sidebar cards
   (country list / quick search) start, so the two never lined up.
   Taking that row out of flow and anchoring it to the section's own top
   edge (bottom: 100%) puts it in the empty gap under the hero instead,
   so the section's padding-top alone determines where the grid starts —
   same 12px as the sidebar cards, with nothing above it pushing it
   further down. On taxonomy pages, a location description (real content,
   not decorative) still sits in-flow above the grid when present.
   Desktop-only (≥961px, matching the breakpoint where the sidebars
   actually sit beside the content instead of stacking above it in the
   mobile layout — see escortwp/css/responsive.css) since there's nothing
   to align with on mobile, and the filter-chips row reliably wraps to
   2-3 lines there, needing more headroom than is worth reserving under
   the hero on every single page just for this. */
@media (min-width: 961px) {
	.njm-hero { padding-bottom: 96px; }
	.body > .njm-section:first-child {
		position: relative;
		padding-top: 12px;
	}
	.body > .njm-section:first-child > .njm-section-head {
		position: absolute;
		left: 0;
		right: 0;
		bottom: 100%;
		margin-bottom: 4px;
	}
	/* all-profiles.php only: heading + filter chips share one wrapper so
	   they can sit side by side (wrapping under the heading if the
	   viewport's too narrow for both) and get pulled into the gap as a
	   single unit — the wrapper's own height is whatever it needs to be,
	   nothing here has to guess it up front. */
	.body > .njm-section:first-child > .njm-section-topbar {
		position: absolute;
		left: 0;
		right: 0;
		bottom: 100%;
		margin-bottom: 4px;
		display: flex;
		align-items: center;
		flex-wrap: wrap;
		gap: 8px 16px;
	}
	.njm-section-topbar .njm-section-head {
		margin-bottom: 0;
		flex-shrink: 0;
	}
	.njm-section-topbar .njm-filter-chips {
		margin: 0;
		flex: 1 1 auto;
	}
}
.njm-section-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	margin-bottom: 18px;
	flex-wrap: wrap;
}
.njm-section-head-spaced { margin-top: 36px; }
.njm-section-head h2 {
	font-family: var(--nj-display-font);
	font-size: 1.4rem;
	font-weight: 800;
	letter-spacing: -.02em;
	color: #fff;
	margin: 0;
}
.njm-grid {
	display: grid;
	/* Fluid column count instead of a handful of fixed breakpoints: the
	   number of ~240px-minimum columns that actually fit just falls out
	   of the container's real width, so a wider monitor (which, since
	   .all-body's max-width now scales up past 1440px too — see the
	   --nj-container-max media queries near the top of this file — has
	   more room to give) genuinely shows more columns instead of
	   plateauing. A short last row (non-multiple of the column count) is
	   the accepted trade-off; auto-fit collapses empty leftover *tracks*
	   so it never stretches into a giant blank gap either. */
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 20px;
}
.njm-grid .girl { width: auto !important; float: none !important; padding: 0 !important; }
.njm-grid .show-separator { display: none !important; }

@media (max-width: 640px) {
	.njm-grid { grid-template-columns: repeat(2, 1fr); gap: 12px; }
}

.njm-taxonomy-desc, .njm-page-intro { color: rgba(255, 255, 255, .68); line-height: 1.6; margin-bottom: 20px; }
.njm-taxonomy-desc a, .njm-page-intro a { color: var(--nj-gold-accent); }

/* Compact pills, tight wrap, small bottom margin — this row sits directly
   under the (now gap-anchored) heading, so it needs to read as one light
   navigation strip, not a second block of content holding the photos
   further down the page than the homepage's grid. */
.njm-filter-chips { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; margin: 0 0 14px; padding: 0; }
.njm-filter-chips li a {
	display: inline-flex;
	align-items: center;
	padding: 6px 12px;
	border-radius: 999px;
	background: rgba(255, 255, 255, .07);
	border: 1px solid rgba(255, 255, 255, .12);
	color: rgba(255, 255, 255, .85);
	font-size: .78rem;
	font-weight: 600;
	text-decoration: none;
}
.njm-filter-chips li a:hover { background: var(--nj-primary); border-color: var(--nj-primary); color: #fff; }

.njm-review-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; }
.njm-review-card { background: var(--nj-surface); border-radius: 16px; padding: 18px; box-shadow: 0 10px 26px rgba(0, 0, 0, .22); }
.njm-review-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; gap: 10px; }
.njm-review-author { font-weight: 700; color: var(--nj-text); }
.njm-review-text { color: var(--nj-muted); font-size: .92rem; line-height: 1.6; margin: 0 0 10px; }
.njm-review-link { font-weight: 700; font-size: .84rem; }

/* ---- global professional footer ---- */
.njm-footer {
	margin-top: 42px;
	padding: 48px clamp(18px, 4vw, 40px) 22px;
	border: 1px solid rgba(255, 255, 255, .08);
	border-bottom: 0;
	border-radius: 24px 24px 0 0;
	background:
		radial-gradient(circle at 8% 15%, rgba(232, 38, 122, .14), transparent 27%),
		linear-gradient(145deg, #17101f, #0e0a14);
	box-shadow: 0 -16px 40px rgba(0, 0, 0, .14);
}
.njm-footer-inner {
	max-width: var(--nj-container-max);
	margin: 0 auto;
	display: grid;
	grid-template-columns: minmax(240px, 1.6fr) repeat(3, minmax(145px, 1fr));
	align-items: flex-start;
	gap: clamp(28px, 4vw, 58px);
}
.njm-footer-brand { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; }
.njm-footer-brand img { display: block; width: auto; max-width: 170px; height: 44px; object-fit: contain; }
.njm-footer-brand .njm-logo-word { font-family: var(--nj-display-font); font-weight: 800; color: #fff; font-size: 1.1rem; }
.njm-footer-brand-column p { max-width: 360px; margin: 14px 0 0; color: rgba(255, 255, 255, .68); line-height: 1.65; }
.njm-footer-brand-column .njm-footer-disclaimer { color: rgba(255, 255, 255, .42); font-size: .8rem; }
.njm-footer-column h3 { margin: 2px 0 16px; color: #fff; font-size: .88rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.njm-footer-column ul { margin: 0; padding: 0; list-style: none; }
.njm-footer-column li + li { margin-top: 10px; }
.njm-footer-column a { color: rgba(255, 255, 255, .62); font-size: .88rem; text-decoration: none; transition: color .2s ease, padding-left .2s ease; }
.njm-footer-column a:hover { padding-left: 3px; color: #fff; }
.njm-footer-age { display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; margin-top: 20px; border: 1px solid rgba(255, 255, 255, .2); border-radius: 50%; color: #fff; font-weight: 800; }
.njm-footer-widget-row { max-width: var(--nj-container-max); margin: 34px auto 0; padding-top: 24px; border-top: 1px solid rgba(255, 255, 255, .08); color: rgba(255, 255, 255, .62); }
.njm-footer-widget-row a { color: var(--nj-gold-accent); }
.njm-underfooter {
	max-width: var(--nj-container-max);
	margin: 34px auto 0;
	padding-top: 20px;
	display: flex;
	justify-content: space-between;
	gap: 16px;
	border-top: 1px solid rgba(255, 255, 255, .08);
	color: rgba(255, 255, 255, .4);
	font-size: .78rem;
}
@media (max-width: 900px) {
	.njm-footer-inner { grid-template-columns: 1.5fr 1fr 1fr; }
	.njm-footer-brand-column { grid-column: 1 / -1; }
}
@media (max-width: 600px) {
	.njm-footer { padding-top: 36px; border-radius: 18px 18px 0 0; }
	.njm-footer-inner { grid-template-columns: 1fr 1fr; gap: 30px 22px; }
	.njm-footer-brand-column { grid-column: 1 / -1; }
	.njm-underfooter { flex-direction: column; }
}

/* ---- age gate ---- */
.njm-agegate {
	position: fixed;
	inset: 0;
	z-index: 9999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 20px;
	background: rgba(5, 3, 8, .88);
	backdrop-filter: blur(6px);
}
.njm-agegate-card {
	max-width: 440px;
	width: 100%;
	background: var(--nj-surface);
	border-radius: 24px;
	padding: 40px 32px;
	text-align: center;
	box-shadow: 0 30px 80px rgba(0, 0, 0, .5);
}
.njm-agegate-logo { max-height: 52px; margin: 0 auto 18px; display: block; }
.njm-agegate-mark { margin: 0 auto 18px; }
.njm-agegate-card h2 { font-family: var(--nj-display-font); font-size: 1.35rem; font-weight: 800; margin: 0 0 14px; color: var(--nj-text); }
.njm-agegate-card p { color: var(--nj-muted); line-height: 1.55; margin: 0 0 8px; }
.njm-agegate-bold { font-weight: 700; color: var(--nj-text) !important; }
.njm-agegate-gender-label { font-size: .8rem; font-weight: 700; margin-top: 18px !important; }
.njm-agegate-gender-options { display: flex; gap: 6px; justify-content: center; flex-wrap: wrap; margin-top: 8px; }
.njm-agegate-gender-option {
	padding: 6px 14px;
	border-radius: 999px;
	border: 1px solid var(--nj-border);
	background: var(--nj-surface-soft);
	color: var(--nj-text);
	font-size: .8rem;
	font-weight: 600;
	cursor: pointer;
}
.njm-agegate-gender-option-active { background: var(--nj-primary); border-color: var(--nj-primary); color: #fff; }
.njm-agegate-actions { display: flex; gap: 10px; justify-content: center; margin-top: 22px; flex-wrap: wrap; }
.njm-agegate-actions .njm-btn-ghost { background: var(--nj-surface-soft); color: var(--nj-text); border: 1px solid var(--nj-border); }
.njm-agegate-actions .njm-btn-ghost:hover { background: #f1f2f6; color: var(--nj-text); }
.njm-agegate-fineprint { font-size: .72rem !important; color: var(--nj-muted); margin-top: 14px !important; }

/* Cookie/privacy notice — bottom banner, same shape as the geolocation
   consent prompt but always-on-scroll (not auto-timed) since accepting it
   is closer to a legal formality than an optional feature prompt. */
.njm-cookie-notice {
	position: fixed;
	left: 16px;
	right: 16px;
	bottom: 16px;
	z-index: 399;
	display: flex;
	justify-content: center;
}
.njm-cookie-notice-card {
	display: flex;
	align-items: center;
	gap: 14px;
	max-width: 560px;
	width: 100%;
	background: var(--nj-surface);
	border-radius: 16px;
	padding: 14px 16px;
	box-shadow: 0 18px 44px rgba(0, 0, 0, .35);
}
.njm-cookie-notice-card p { flex: 1; margin: 0; color: var(--nj-text); font-size: .82rem; line-height: 1.45; }
.njm-cookie-notice-card a { color: var(--nj-primary); font-weight: 600; }
.njm-cookie-notice-accept { flex-shrink: 0; padding: 8px 16px; font-size: .82rem; white-space: nowrap; }

@media (max-width: 480px) {
	.njm-cookie-notice-card { flex-direction: column; align-items: stretch; text-align: center; }
}

@media (max-width: 480px) {
	.njm-agegate-card { padding: 32px 22px; }
}

/* Browser-geolocation consent — a small dismissible corner toast, not a
   blocking modal like the age gate above. Fine either way, so it never
   forces a decision before someone's even seen the site. */
.njm-geo-prompt {
	position: fixed;
	left: 16px;
	right: 16px;
	bottom: 16px;
	z-index: 400;
	display: flex;
	justify-content: center;
	pointer-events: none;
	opacity: 0;
	transform: translateY(12px);
	transition: opacity .25s ease, transform .25s ease;
}
.njm-geo-prompt-visible { opacity: 1; transform: none; }
.njm-geo-prompt-card {
	pointer-events: auto;
	display: flex;
	align-items: center;
	gap: 12px;
	max-width: 420px;
	width: 100%;
	background: var(--nj-surface);
	border-radius: 16px;
	padding: 14px 16px;
	box-shadow: 0 18px 44px rgba(0, 0, 0, .35);
}
.njm-geo-prompt-card .icon {
	flex-shrink: 0;
	width: 34px;
	height: 34px;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	background: rgba(232, 38, 122, .12);
	color: var(--nj-primary);
	font-size: 1rem;
}
.njm-geo-prompt-card p { flex: 1; margin: 0; color: var(--nj-text); font-size: .86rem; line-height: 1.4; }
.njm-geo-prompt-actions { display: flex; flex-direction: column; gap: 6px; flex-shrink: 0; }
.njm-geo-prompt-actions .njm-btn { padding: 7px 14px; font-size: .8rem; white-space: nowrap; }
.njm-geo-prompt-actions .njm-btn-ghost { background: var(--nj-surface-soft); color: var(--nj-text); border: 1px solid var(--nj-border); }
.njm-geo-prompt-actions .njm-btn-ghost:hover { background: #f1f2f6; color: var(--nj-text); }

@media (max-width: 480px) {
	.njm-geo-prompt-card { flex-wrap: wrap; }
	.njm-geo-prompt-actions { flex-direction: row; width: 100%; }
	.njm-geo-prompt-actions .njm-btn { flex: 1; }
}

/* Map picker (registration/edit-profile form) and read-only profile map —
   Leaflet needs an explicit height on its container to render at all. */
.njm-map-picker-field { margin: 14px 0; }
.njm-map-picker-label {
	display: block;
	margin-bottom: 8px;
	font-size: .88rem;
	font-weight: 600;
}
.njm-map-picker-hint {
	padding: 10px 14px;
	border-radius: 10px;
	background: rgba(255, 255, 255, .06);
	color: var(--nj-muted, #8a8a99);
	font-size: .82rem;
}
.njm-map-picker-hint-error { color: var(--nj-primary, #e8267a); }
.njm-map-picker {
	height: 320px;
	border-radius: 14px;
	overflow: hidden;
	border: 1px solid var(--nj-border, rgba(255, 255, 255, .12));
}
.njm-profile-map {
	height: 260px;
	margin-top: 14px;
	border-radius: 14px;
	overflow: hidden;
}

/* "Perto de mim" proximity search block, appended into the quicksearch
   card (footer.php). */
.njm-near-me { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--nj-border, rgba(255, 255, 255, .12)); }
.njm-near-me-label { display: block; margin-bottom: 8px; font-size: .8rem; color: var(--nj-muted, #8a8a99); }
.njm-near-me-form { display: flex; flex-direction: column; gap: 8px; }
.njm-near-me-form select { width: 100%; padding: 8px 10px; border-radius: 10px; border: 1px solid var(--nj-border, rgba(255, 255, 255, .12)); }
.njm-near-me-locate { justify-content: center; }

/* Distance badge overlaid on proximity-search result cards (search.php). */
.njm-distance-card { position: relative; }
.njm-distance-badge {
	position: absolute;
	top: 10px;
	right: 10px;
	z-index: 2;
	padding: 4px 10px;
	border-radius: 999px;
	background: rgba(11, 7, 16, .75);
	color: #fff;
	font-size: .74rem;
	font-weight: 700;
	backdrop-filter: blur(4px);
}

/* Languages spoken + profile map, side by side (footer.php injection). */
.njm-languages-map-row { display: flex; gap: 20px; flex-wrap: wrap; align-items: flex-start; }
.njm-languages-map-row-item { flex: 1 1 260px; min-width: 0; }
.njm-languages-map-row .njm-profile-map { margin-top: 0; }

/* Site language: fixed at the lower-right edge, above consent/location UI. */
.njm-language-switcher {
	position: fixed;
	right: 18px;
	bottom: 18px;
	z-index: 100000;
	filter: drop-shadow(0 10px 24px rgba(0, 0, 0, .28));
}
.njm-lang-toggle {
	display: flex;
	align-items: center;
	gap: 7px;
	width: 82px;
	padding: 8px 10px;
	border: none;
	border-radius: 14px;
	background: var(--nj-surface, #fff);
	color: var(--nj-text, #171923);
	font-weight: 800;
	letter-spacing: .04em;
	font-size: 13px;
	cursor: pointer;
}
.njm-lang-flag { width: 20px; height: 14px; flex-shrink: 0; border-radius: 2px; }
.njm-lang-caret { margin-left: auto; font-size: 10px; opacity: .6; }
.njm-lang-menu {
	position: absolute;
	right: 0;
	bottom: 100%;
	margin: 0 0 8px;
	padding: 6px;
	list-style: none;
	width: 224px;
	max-height: 60vh;
	overflow-y: auto;
	border-radius: 14px 14px 0 0;
	background: var(--nj-surface, #fff);
}
.njm-lang-menu[hidden] { display: none; }
.njm-lang-menu li { margin: 0; }
.njm-lang-menu a {
	display: flex;
	align-items: center;
	gap: 8px;
	width: 100%;
	padding: 7px 8px;
	border: none;
	background: none;
	border-radius: 8px;
	font-size: 13px;
	line-height: 1.3;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	color: var(--nj-text, #171923);
	text-decoration: none;
	cursor: pointer;
	text-align: left;
}
.njm-lang-menu a:hover,
.njm-lang-menu li[aria-selected="true"] a { background: var(--nj-surface-soft, #f1f2f6); }
.njm-lang-menu .njm-lang-flag { width: 22px; height: 15px; }
@media (max-width: 600px) {
	.njm-language-switcher { right: 12px; bottom: 12px; transform: scale(.88); transform-origin: right bottom; }
}
