/* ==========================================================================
   Cupidera — override layer
   Loaded AFTER the child theme's redesign.css (enqueue priority 10000), so it
   is the last word. Keep this file small and reasoned: every rule here should
   say why it exists.
   ========================================================================== */

/* --------------------------------------------------------------------------
   FOOTER GRID — brand, quick links, company, payments.

   The fourth column was built for a newsletter widget the site does not use.
   Hiding it left the row short and the card marks homeless; they now fill it
   (see themes/wpdating-lovematch/footer.php), so all four columns carry
   content and start on the same heading baseline.
   -------------------------------------------------------------------------- */

body:not(.wp-admin) .site-footer .content-wrap {
	grid-template-columns: 1.7fr 1fr 1.3fr 0.8fr !important;
	align-items: start !important;
}

@media (max-width: 1100px) {
	body:not(.wp-admin) .site-footer .content-wrap {
		grid-template-columns: 1.5fr 1fr 1.3fr !important;
	}
	/* Below four columns the marks read better beside the company details
	   than alone on a row of their own. */
	body:not(.wp-admin) .site-footer .content-wrap > #footer-4 {
		grid-column: 3;
	}
}

@media (max-width: 992px) {
	body:not(.wp-admin) .site-footer .content-wrap {
		grid-template-columns: 1fr 1fr !important;
	}
	body:not(.wp-admin) .site-footer .content-wrap > #footer-4 {
		grid-column: auto;
	}
}

@media (max-width: 600px) {
	body:not(.wp-admin) .site-footer .content-wrap {
		grid-template-columns: 1fr !important;
	}
}

/* Company details read as an address block, not prose: keep the lines tight
   and stop the registry code from wrapping away from its label. */
body:not(.wp-admin) .site-footer #footer-3 .textwidget p {
	line-height: 1.75 !important;
	margin: 0 !important;
}

/* --------------------------------------------------------------------------
   REGISTRATION — 18+ / terms consent.
   The theme styled the old .register-terms-group; this field replaced it.
   Checkbox and label sit on one baseline, with the label wrapping cleanly
   under itself rather than under the box.
   -------------------------------------------------------------------------- */

body:not(.wp-admin) .register-consent-group {
	display: flex !important;
	align-items: flex-start;
	gap: 10px;
	margin-bottom: 18px !important;
}

body:not(.wp-admin) .register-consent-group input[type="checkbox"] {
	flex: none;
	width: 18px;
	height: 18px;
	margin: 2px 0 0 !important;
	accent-color: var(--sh-accent-500, #e4519e);
	cursor: pointer;
}

body:not(.wp-admin) .register-consent-group label {
	margin: 0 !important;
	font-size: 13.5px;
	line-height: 1.55;
	color: var(--sh-text-2, #4a4a5e);
	cursor: pointer;
	font-weight: 400;
}

body:not(.wp-admin) .register-consent-group a {
	color: var(--sh-accent-600, #c9408a);
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 2px;
}

body:not(.wp-admin) .register-consent-group a:hover {
	color: var(--sh-accent-500, #e4519e);
}

/* The plugin appends .input-error inline; keep it on its own line so it does
   not squeeze between the checkbox and the label text. */
body:not(.wp-admin) .register-consent-group .input-error {
	flex: 1 0 100%;
	margin-top: 4px;
}

body:not(.wp-admin) .register-consent-group.form-group-error input[type="checkbox"] {
	outline: 2px solid var(--sh-danger, #ef4444);
	outline-offset: 2px;
	border-radius: 3px;
}

/* ==========================================================================
   ACCESSIBILITY FIXES
   ==========================================================================
   White on the brand pink #e4519e is 3.52:1 — below the 4.5:1 WCAG AA needs
   for normal text. #c9408a (already --sh-accent-600 in the palette) is 4.58:1
   and reads as the same colour. Applied to the surfaces that carry text, not
   to decorative pink, so the brand is unchanged everywhere it does not matter.
   ========================================================================== */

body:not(.wp-admin) .header-register-btn,
body:not(.wp-admin) a.header-register-btn,
body:not(.wp-admin) .cupidera-pack.is-featured .cupidera-pack__buy,
body:not(.wp-admin) .cupidera-pack__buy:hover,
body:not(.wp-admin) .cupidera-checkout__btn--primary:not(:disabled),
body:not(.wp-admin) .cupidera-consent__btn--primary {
	background-color: var(--sh-accent-600, #c9408a) !important;
}

/* The outlined pack buttons carry their text in the same pink, so they need
   the background left alone — see the packs section below. */
body:not(.wp-admin) .cupidera-pack:not(.is-featured) .cupidera-pack__buy:not(:hover) {
	background-color: #fff !important;
}

/* Notification counters render at 10-11px, where the shortfall is worst. */
body:not(.wp-admin) .wpee-count-num {
	background-color: var(--sh-accent-700, #a6336f) !important;
	color: #fff !important;
}

/* Focus ring was --sh-accent-100 (#fdebf4) — 1.14:1 on white, i.e. present in
   the DOM and invisible on screen. Keyboard users had no position indicator
   anywhere on the site. */
body:not(.wp-admin) *:focus-visible {
	outline: 3px solid var(--sh-accent-600, #c9408a) !important;
	outline-offset: 2px !important;
}

/* Field borders were #ececf2 — 1.18:1, below the 3:1 that WCAG 2.2 requires
   for control boundaries. Inputs had no perceivable edge. */
body:not(.wp-admin) input[type="text"],
body:not(.wp-admin) input[type="email"],
body:not(.wp-admin) input[type="password"],
body:not(.wp-admin) input[type="search"],
body:not(.wp-admin) input[type="number"],
body:not(.wp-admin) textarea,
body:not(.wp-admin) select {
	border-color: #a9a9b8 !important;
}

/* Muted text is 3.40:1 on white and 2.92:1 on the pink section background. */
body:not(.wp-admin) {
	--sh-text-muted: #6b6b7d;
}

/* --------------------------------------------------------------------------
   CREDIT GATE MESSAGE — the plugin printed these as bare #FF0000 text on a
   blank background, so hitting a paid feature looked like an error rather than
   a prompt. Present it as a card instead.
   -------------------------------------------------------------------------- */

body:not(.wp-admin) .wpee-search-error.wpee-error {
	max-width: 520px;
	margin: 24px auto !important;
	padding: 22px 24px !important;
	background: var(--sh-accent-50, #fef4f9) !important;
	border: 1px solid var(--sh-accent-200, #f3b0d2) !important;
	border-radius: var(--sh-radius-lg, 20px) !important;
	text-align: center;
	gap: 12px;
}

body:not(.wp-admin) .cupidera-gate-msg {
	display: block;
	font-family: var(--sh-font-head, "Sora", sans-serif);
	font-size: 15px;
	font-weight: 600;
	line-height: 1.5;
	color: var(--sh-text, #1a1a2e) !important;
}

body:not(.wp-admin) .wpee-search-error.wpee-error a {
	display: inline-block;
	margin-top: 4px;
	padding: 10px 22px;
	background: var(--sh-accent-600, #c9408a);
	color: #fff !important;
	border-radius: var(--sh-radius-pill, 999px);
	font-size: 13.5px;
	font-weight: 600;
	text-decoration: none !important;
	box-shadow: 0 6px 18px rgba(228, 81, 158, .26);
}

body:not(.wp-admin) .wpee-search-error.wpee-error a:hover {
	background: var(--sh-accent-700, #a6336f);
}

/* --------------------------------------------------------------------------
   TYPOGRAPHY — the child theme forces 'Lexend' on card titles and member
   usernames, but Lexend is never loaded and the stack has no fallback, so
   those headings render in the browser's default serif.
   Lexend was the CS Framework's stock body font; the theme options were later
   switched to Sora/Work Sans and these two rules were left behind.
   -------------------------------------------------------------------------- */

body:not(.wp-admin) h4.post-title,
body:not(.wp-admin) h4.post-title a,
body:not(.wp-admin) .member-user-name,
body:not(.wp-admin) .member-user-name a {
	font-family: "Sora", system-ui, -apple-system, sans-serif !important;
}

/* --------------------------------------------------------------------------
   GIFTS — Approve/Delete were raw Bootstrap green/red, the only two colours on
   the site outside the palette.
   -------------------------------------------------------------------------- */

body:not(.wp-admin) .gift-list-wrapper .dspdp-btn-success,
body:not(.wp-admin) .wpee-gifts-received-wrapper .dspdp-btn-success {
	background-color: #157347 !important;
	border-color: #157347 !important;
	color: #fff !important;
	border-radius: var(--sh-radius-pill, 999px) !important;
}

body:not(.wp-admin) .gift-list-wrapper .dspdp-btn-danger,
body:not(.wp-admin) .wpee-gifts-received-wrapper .dspdp-btn-danger {
	background-color: #b91c1c !important;
	border-color: #b91c1c !important;
	color: #fff !important;
	border-radius: var(--sh-radius-pill, 999px) !important;
}

/* --------------------------------------------------------------------------
   PROFILE TABS — ZONE Z71 builds a single scrollable pill strip with
   `flex-wrap: nowrap`; ZONE Z72, written only to undo the plugin's
   `flex-direction: column`, sets `flex-wrap: wrap !important` at the same
   breakpoint and being later, wins. The strip has been stacking into rows on
   every profile tab below 720px ever since.
   -------------------------------------------------------------------------- */

@media (max-width: 720px) {
	body:not(.wp-admin) .profile-section-tab {
		flex-wrap: nowrap !important;
		overflow-x: auto !important;
		-webkit-overflow-scrolling: touch;
	}

	body:not(.wp-admin) .profile-section-tab > li {
		flex: 0 0 auto !important;
	}
}

/* The child theme's style.css adds margin-right:30px to tab items below 575px,
   on top of the 4px gap set below 720px — spacing jumped to 34px mid-range. */
@media (max-width: 575px) {
	body:not(.wp-admin) .profile-section-tab > li {
		margin-right: 0 !important;
	}
}

/* --------------------------------------------------------------------------
   SEARCH — working "Clear" next to Apply. The theme removes the container that
   held the plugin's own Clear Filter, so this replaces it.
   -------------------------------------------------------------------------- */

body:not(.wp-admin) .sh-filter-clear {
	display: block;
	width: 100%;
	margin-top: 8px;
	appearance: none;
	background: transparent;
	border: 1px solid var(--sh-border-strong, #d8d8e0);
	border-radius: var(--sh-radius-pill, 999px);
	padding: 10px 16px;
	font-family: var(--sh-font-body, "Work Sans", sans-serif);
	font-size: 13px;
	font-weight: 600;
	color: var(--sh-text-2, #4a4a5e);
	cursor: pointer;
	transition: border-color 200ms ease, color 200ms ease, background-color 200ms ease;
}

body:not(.wp-admin) .sh-filter-clear:hover {
	border-color: var(--sh-primary-500, #5c63b7);
	color: var(--sh-primary-500, #5c63b7);
	background: var(--sh-primary-100, #eef0fa);
}

body:not(.wp-admin) .sh-filter-clear:focus-visible {
	outline: 3px solid var(--sh-accent-100, #fdebf4);
	outline-offset: 2px;
}

/* Honeypot. Positioned off-screen rather than display:none — some bots skip
   fields that are explicitly hidden, but happily fill an off-screen one. */
body:not(.wp-admin) .cupidera-hp {
	position: absolute !important;
	left: -9999px !important;
	top: auto !important;
	width: 1px !important;
	height: 1px !important;
	overflow: hidden !important;
}

/* --------------------------------------------------------------------------
   MESSAGING — credit cost shown above the Send button.
   -------------------------------------------------------------------------- */

body:not(.wp-admin) .cupidera-msg-cost {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 8px 16px;
	margin: 0 0 16px;
	padding: 12px 16px;
	background: var(--sh-accent-50, #fef4f9);
	border: 1px solid var(--sh-accent-200, #f3b0d2);
	border-radius: var(--sh-radius-md, 14px);
	font-size: 13.5px;
	line-height: 1.5;
}

body:not(.wp-admin) .cupidera-msg-cost__price {
	color: var(--sh-text, #1a1a2e);
}

body:not(.wp-admin) .cupidera-msg-cost__price strong {
	color: var(--sh-accent-600, #c9408a);
	font-weight: 700;
}

body:not(.wp-admin) .cupidera-msg-cost__balance {
	color: #6b6b7d;
	white-space: nowrap;
}

/* Not enough credits to cover this send. */
body:not(.wp-admin) .cupidera-msg-cost.is-short {
	background: var(--sh-danger-bg, #fee2e2);
	border-color: #f5b5b5;
}

body:not(.wp-admin) .cupidera-msg-cost.is-short .cupidera-msg-cost__price strong {
	color: var(--sh-danger, #ef4444);
}

/* --------------------------------------------------------------------------
   CREDIT PACKS
   -------------------------------------------------------------------------- */

body:not(.wp-admin) .cupidera-credits {
	padding: 4px 0 8px;
}

/* ---- balance + what credits cost ---- */

body:not(.wp-admin) .cupidera-credits__head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 16px 24px;
	padding: 20px 24px;
	margin-bottom: 20px;
	border-radius: var(--sh-radius-lg, 20px);
	background: linear-gradient(135deg, var(--sh-primary-100, #eef0fa) 0%, var(--sh-accent-100, #fdebf4) 100%);
}

body:not(.wp-admin) .cupidera-credits__balance {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

body:not(.wp-admin) .cupidera-credits__balance-label {
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--sh-primary-600, #4d52a3);
}

body:not(.wp-admin) .cupidera-credits__balance-value {
	font-family: var(--sh-font-head, "Sora", sans-serif);
	font-size: 30px;
	font-weight: 700;
	line-height: 1.1;
	color: var(--sh-primary-500, #5c63b7);
}

body:not(.wp-admin) .cupidera-credits__balance-value small {
	font-size: 14px;
	font-weight: 500;
	color: var(--sh-text-2, #4a4a5e);
}

body:not(.wp-admin) .cupidera-credits__costs {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0 !important;
	padding: 0 !important;
	list-style: none !important;
}

body:not(.wp-admin) .cupidera-credits__costs li {
	background: rgba(255, 255, 255, .75);
	border-radius: var(--sh-radius-pill, 999px);
	padding: 7px 14px;
	font-size: 12.5px;
	color: var(--sh-text-2, #4a4a5e);
	list-style: none !important;
}

body:not(.wp-admin) .cupidera-credits__costs strong {
	color: var(--sh-accent-600, #c9408a);
	font-weight: 700;
}

body:not(.wp-admin) .cupidera-credits__intro {
	margin: 0 0 20px;
	font-size: 14px;
	line-height: 1.65;
	color: var(--sh-text-2, #4a4a5e);
	max-width: 70ch;
}

body:not(.wp-admin) .cupidera-credits__notice {
	margin: 0 0 20px;
	padding: 14px 18px;
	border-radius: var(--sh-radius-md, 14px);
	background: var(--sh-warning-bg, #fef3c7);
	border: 1px solid #f0d68a;
	font-size: 13.5px;
	line-height: 1.6;
	color: #6b5310;
}

body:not(.wp-admin) .cupidera-credits__notice strong { display: block; margin-bottom: 2px; }
body:not(.wp-admin) .cupidera-credits__notice a { color: #7a4b0a; font-weight: 600; text-decoration: underline; }

body:not(.wp-admin) .cupidera-credits__empty {
	padding: 40px 20px;
	text-align: center;
	color: #6b6b7d;
	background: var(--sh-bg-soft, #fafafb);
	border-radius: var(--sh-radius-lg, 20px);
}

/* ---- the packs ----------------------------------------------------------

   Five packs. An auto-fit grid wrapped them 4 + 1, which reads as a mistake,
   and the bonus badge only exists on four of them, so every card started its
   content at a different height and nothing lined up across the row.

   Fixed here by pinning the column count per breakpoint and giving each card
   the same internal rows: the badge always occupies its slot, empty or not, so
   names, figures, prices and buttons sit on the same lines all the way across.
   ------------------------------------------------------------------------ */

/* The shelf sits inside the profile column, not the full page, so the number
   of packs per row has to follow the container's width — at 1280px of browser
   that column is only ~640px wide, and five across would be 120px each.
   Five packs divide badly into two, three or four columns, so the row is
   centred: whatever is left over reads as deliberate rather than orphaned. */
body:not(.wp-admin) .cupidera-credits {
	container-type: inline-size;
}

body:not(.wp-admin) .cupidera-credits__grid {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: stretch;
	gap: 14px;
	margin-top: 26px;
}

body:not(.wp-admin) .cupidera-pack {
	flex: 0 0 100%;
}

@container (min-width: 430px) {
	body:not(.wp-admin) .cupidera-pack { flex-basis: calc(50% - 7px); }
}

@container (min-width: 660px) {
	body:not(.wp-admin) .cupidera-pack { flex-basis: calc(33.333% - 10px); }
}

@container (min-width: 1040px) {
	body:not(.wp-admin) .cupidera-pack { flex-basis: calc(20% - 12px); }
}

/* Browsers without container queries fall back to the viewport, which is close
   enough on the pages where this shelf appears. */
@supports not (container-type: inline-size) {
	body:not(.wp-admin) .cupidera-pack { flex-basis: calc(33.333% - 10px); }

	@media (max-width: 820px) {
		body:not(.wp-admin) .cupidera-pack { flex-basis: calc(50% - 7px); }
	}

	@media (max-width: 460px) {
		body:not(.wp-admin) .cupidera-pack { flex-basis: 100%; }
	}
}

body:not(.wp-admin) .cupidera-pack {
	position: relative;
	display: grid;
	/* badge · name · figure · price · equivalence · button */
	grid-template-rows: auto auto auto auto 1fr auto;
	justify-items: center;
	text-align: center;
	padding: 22px 16px 18px;
	background: #fff;
	border: 1px solid var(--sh-border, #ececf2);
	border-radius: var(--sh-radius-lg, 20px);
	transition: transform 220ms var(--sh-ease-out, cubic-bezier(.16,1,.3,1)),
	            box-shadow 220ms var(--sh-ease-out, cubic-bezier(.16,1,.3,1)),
	            border-color 220ms var(--sh-ease-out, cubic-bezier(.16,1,.3,1));
}

body:not(.wp-admin) .cupidera-pack:hover {
	transform: translateY(-3px);
	border-color: var(--sh-accent-200, #f3b0d2);
	box-shadow: 0 14px 34px rgba(92, 99, 183, .12);
}

/* The featured card is lifted with a ring and a shadow rather than a scale:
   scaling it would knock its rows out of line with the others. */
body:not(.wp-admin) .cupidera-pack.is-featured {
	border-color: var(--sh-accent-500, #e4519e);
	box-shadow: 0 0 0 1px var(--sh-accent-500, #e4519e),
	            0 16px 38px rgba(228, 81, 158, .18);
	background: linear-gradient(180deg, var(--sh-accent-50, #fef4f9) 0%, #fff 46%);
}

body:not(.wp-admin) .cupidera-pack__flag {
	position: absolute;
	top: -10px;
	left: 50%;
	transform: translateX(-50%);
	background: var(--sh-accent-500, #e4519e);
	color: #fff;
	font-size: 10.5px;
	font-weight: 700;
	letter-spacing: .05em;
	text-transform: uppercase;
	padding: 5px 12px;
	border-radius: var(--sh-radius-pill, 999px);
	white-space: nowrap;
	box-shadow: 0 4px 12px rgba(228, 81, 158, .3);
}

/* Row 1. Always present, so the four cards that earn a bonus badge and the one
   that does not still start their names on the same line. */
body:not(.wp-admin) .cupidera-pack__bonus {
	display: flex;
	align-items: center;
	min-height: 22px;
	margin-bottom: 12px;
	padding: 0 10px;
	background: var(--sh-success-bg, #dcfce7);
	color: #157347;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .01em;
	border-radius: var(--sh-radius-pill, 999px);
	white-space: nowrap;
}

body:not(.wp-admin) .cupidera-pack__bonus.is-empty {
	background: none;
	padding: 0;
}

body:not(.wp-admin) .cupidera-pack__name {
	margin: 0 0 14px !important;
	font-size: 12px !important;
	line-height: 1.2 !important;
	font-weight: 700;
	letter-spacing: .09em;
	text-transform: uppercase;
	color: var(--sh-text-muted, #8a8a9a);
}

body:not(.wp-admin) .cupidera-pack__credits {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 2px;
	margin-bottom: 12px;
}

body:not(.wp-admin) .cupidera-pack__credits-value {
	font-size: clamp(26px, 2.4vw, 32px);
	font-weight: 700;
	line-height: 1;
	letter-spacing: -0.02em;
	color: var(--sh-primary-600, #4d52a3);
}

body:not(.wp-admin) .cupidera-pack__credits-label {
	font-size: 10.5px;
	font-weight: 600;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--sh-text-muted, #8a8a9a);
}

body:not(.wp-admin) .cupidera-pack__price {
	margin-bottom: 6px;
	padding-top: 12px;
	border-top: 1px solid var(--sh-divider, #f1f1f6);
	width: 100%;
	font-size: 21px;
	font-weight: 700;
	line-height: 1.1;
	color: var(--sh-text, #1a1a2e);
}

body:not(.wp-admin) .cupidera-pack__equiv {
	margin: 0 0 16px !important;
	font-size: 12px;
	line-height: 1.45;
	color: var(--sh-text-muted, #8a8a9a);
}

body:not(.wp-admin) .cupidera-pack__actions {
	align-self: end;
	width: 100%;
}

body:not(.wp-admin) .cupidera-pack__form { margin: 0; }

body:not(.wp-admin) .cupidera-pack__buy {
	display: block;
	width: 100%;
	appearance: none;
	border: 1px solid var(--sh-accent-500, #e4519e);
	border-radius: var(--sh-radius-pill, 999px);
	padding: 10px 14px;
	background: #fff;
	color: var(--sh-accent-600, #c9408a);
	font-size: 13.5px;
	font-weight: 600;
	cursor: pointer;
	transition: background-color 200ms ease, color 200ms ease, box-shadow 200ms ease;
}

/* Only the recommended pack gets a filled button, so the row has one clear
   primary action instead of five competing ones. */
body:not(.wp-admin) .cupidera-pack.is-featured .cupidera-pack__buy {
	background: var(--sh-accent-500, #e4519e);
	color: #fff;
	box-shadow: 0 6px 18px rgba(228, 81, 158, .26);
}

body:not(.wp-admin) .cupidera-pack__buy:hover {
	background: var(--sh-accent-500, #e4519e);
	color: #fff;
	box-shadow: 0 8px 22px rgba(228, 81, 158, .28);
}

body:not(.wp-admin) .cupidera-pack__buy:focus-visible {
	outline: 3px solid var(--sh-accent-100, #fdebf4);
	outline-offset: 2px;
}

/* Purchase consent — required before the buy button can be used. */
body:not(.wp-admin) .cupidera-buy-consent {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	margin: 0 0 10px;
	text-align: left;
	font-size: 11.5px;
	line-height: 1.5;
	color: #6b6b7d;
	cursor: pointer;
}

body:not(.wp-admin) .cupidera-buy-consent input[type="checkbox"] {
	flex: none;
	width: 15px;
	height: 15px;
	margin: 1px 0 0 !important;
	accent-color: var(--sh-accent-500, #e4519e);
	cursor: pointer;
}

body:not(.wp-admin) .cupidera-buy-consent a {
	color: var(--sh-accent-600, #c9408a);
	font-weight: 600;
	text-decoration: underline;
}

/* Contact form consent row. */
body:not(.wp-admin) .cupidera-consent-row .wpcf7-acceptance .wpcf7-list-item {
	margin: 0 !important;
}

body:not(.wp-admin) .cupidera-consent-row label {
	display: flex;
	align-items: flex-start;
	gap: 9px;
	font-size: 13px;
	line-height: 1.55;
	color: var(--sh-text-2, #4a4a5e);
	font-weight: 400;
	cursor: pointer;
}

body:not(.wp-admin) .cupidera-consent-row input[type="checkbox"] {
	flex: none;
	width: 17px;
	height: 17px;
	margin: 2px 0 0 !important;
	accent-color: var(--sh-accent-500, #e4519e);
}

body:not(.wp-admin) .cupidera-consent-row a {
	color: var(--sh-accent-600, #c9408a);
	font-weight: 600;
	text-decoration: underline;
}

body:not(.wp-admin) .cupidera-credits__fineprint {
	margin: 20px 0 0;
	font-size: 12px;
	color: #8a8a9a;
}

@media (max-width: 640px) {
	body:not(.wp-admin) .cupidera-credits__head { flex-direction: column; align-items: flex-start; }
	body:not(.wp-admin) .cupidera-pack { padding: 20px 14px 16px; }
}

/* --------------------------------------------------------------------------
   REGISTRATION — the age/terms confirmation is the one thing on this form with
   legal weight, so it gets a card of its own rather than sitting in the run of
   ordinary fields.
   -------------------------------------------------------------------------- */

body:not(.wp-admin) .cupidera-consent-card {
	align-items: flex-start !important;
	gap: 12px !important;
	padding: 16px 18px !important;
	margin: 4px 0 20px !important;
	background: var(--sh-accent-50, #fef4f9) !important;
	border: 1px solid var(--sh-accent-200, #f3b0d2) !important;
	border-radius: var(--sh-radius-md, 14px) !important;
}

body:not(.wp-admin) .cupidera-consent-card input[type="checkbox"] {
	width: 20px !important;
	height: 20px !important;
	margin: 0 !important;
}

body:not(.wp-admin) .cupidera-consent-card label {
	font-size: 14px !important;
	line-height: 1.55 !important;
	color: var(--sh-text, #1a1a2e) !important;
}

body:not(.wp-admin) .cupidera-consent-card.form-group-error {
	background: var(--sh-danger-bg, #fee2e2) !important;
	border-color: #f5b5b5 !important;
}

/* --------------------------------------------------------------------------
   SPARK PACKS — real-money equivalent next to each action price, and the
   explanation shown when a pack is bought while no gateway is switched on.
   -------------------------------------------------------------------------- */

body:not(.wp-admin) .cupidera-credits__costs em {
	font-style: normal;
	color: #8a8a9a;
	margin-left: 4px;
}

body:not(.wp-admin) .cupidera-pack__unavailable {
	margin: 8px 0 0 !important;
	padding: 9px 12px;
	background: var(--sh-warning-bg, #fef3c7);
	border: 1px solid #f0d68a;
	border-radius: var(--sh-radius-sm, 10px);
	font-size: 12.5px;
	line-height: 1.45;
	color: #6b5310;
	text-align: center;
}

body:not(.wp-admin) .cupidera-pack__unavailable[hidden] { display: none !important; }

/* ==========================================================================
   GRIDS — no ragged last row
   ========================================================================== */

/* --------------------------------------------------------------------------
   MEMBER SEARCH RESULTS
   The page returns exactly 12 members. Several ZONE rules size this grid with
   `repeat(auto-fill, minmax(...))`, so the column count follows the container
   width and can land on 5 or 7 — numbers that do not divide 12, leaving a
   half-empty final row. Pinning the count to divisors of 12 (4 / 3 / 2) means
   the last row is always full at every width.
   -------------------------------------------------------------------------- */

body:not(.wp-admin) .wpee-member-list-content .main-member-list-wrap,
body:not(.wp-admin) .main-member-list-wrap {
	grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
}

@media (max-width: 1180px) {
	body:not(.wp-admin) .wpee-member-list-content .main-member-list-wrap,
	body:not(.wp-admin) .main-member-list-wrap {
		grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
	}
}

@media (max-width: 820px) {
	body:not(.wp-admin) .wpee-member-list-content .main-member-list-wrap,
	body:not(.wp-admin) .main-member-list-wrap {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	}
}

/* --------------------------------------------------------------------------
   FOOTER — accepted-payment badges above the copyright bar.
   -------------------------------------------------------------------------- */

/* --------------------------------------------------------------------------
   ACCEPTED-PAYMENT MARKS — fourth footer column, under their own heading.

   The height is forced because the theme sizes footer images by its own rules;
   without it the SVG renders at its natural 520x224 and swamps the column.
   -------------------------------------------------------------------------- */

/* The theme's own footer widgets are <li> elements, and it gives footer <li>
   a smaller font-size than the surrounding column. The heading is an
   inline-block, so it sits on that line box — a plain <div> wrapper inherits
   the larger size and drops the "Payments" heading a few pixels below its
   neighbours. Matching the type context lines all four headings up. */
body:not(.wp-admin) .site-footer .cupidera-payments {
	list-style: none;
	margin: 0;
	padding: 0;
	font-size: var(--sh-fs-sm);
	line-height: var(--sh-lh-relaxed);
}

body:not(.wp-admin) .site-footer .cupidera-payments__logos {
	display: block !important;
	width: auto !important;
	height: 56px !important;
	max-width: 100% !important;
	opacity: .92;
}

/* The copyright bar is down to two things again — the line itself and the
   legal menu. Eight links are wider than the space beside the copyright, so
   the menu gets its own full-width row rather than a layout that depends on
   how long the link labels happen to be. */
body:not(.wp-admin) .copyright-wrap {
	flex-wrap: wrap;
	gap: 16px 24px;
}

body:not(.wp-admin) .copyright-wrap > .right-content {
	flex: 1 0 100%;
	order: 3;
}

@media (max-width: 767px) {
	body:not(.wp-admin) .site-footer .cupidera-payments__logos { height: 46px !important; }
	body:not(.wp-admin) .copyright-wrap { justify-content: center; text-align: center; }
}

/* --------------------------------------------------------------------------
   COOKIE BANNER — the imported Elementor kit paints every .elementor-button
   purple (#A765FC, a leftover from the template kit) and it was bleeding onto
   the consent buttons, so "Customise", "Reject all" and "Accept all" all read
   as primary actions in three different colours.
   Reject and Accept must look equally weighted; Customise must not compete.
   -------------------------------------------------------------------------- */

body:not(.wp-admin) .cupidera-consent__btn--primary {
	background-color: var(--sh-accent-600, #c9408a) !important;
	color: #fff !important;
	border-color: transparent !important;
}

body:not(.wp-admin) .cupidera-consent__btn--secondary {
	background-color: #fff !important;
	color: var(--sh-text, #1a1a2e) !important;
	border-color: #b9b9c6 !important;
}

body:not(.wp-admin) .cupidera-consent__btn--secondary:hover {
	background-color: var(--sh-primary-100, #eef0fa) !important;
	border-color: var(--sh-primary-500, #5c63b7) !important;
	color: var(--sh-primary-500, #5c63b7) !important;
}

body:not(.wp-admin) .cupidera-consent__btn--ghost {
	background-color: transparent !important;
	color: #6b6b7d !important;
	border-color: transparent !important;
}

body:not(.wp-admin) .cupidera-consent__btn--ghost:hover {
	background-color: var(--sh-primary-100, #eef0fa) !important;
	color: var(--sh-primary-500, #5c63b7) !important;
}

body:not(.wp-admin) .cupidera-consent__btn--ghost-strong {
	background-color: var(--sh-primary-100, #eef0fa) !important;
	color: var(--sh-primary-500, #5c63b7) !important;
	border-color: transparent !important;
}

/* --------------------------------------------------------------------------
   404 PAGE — the child theme answers missing URLs in place with a real 404
   instead of the parent theme's 302 to /404-2/. See themes/…/404.php.
   -------------------------------------------------------------------------- */

body:not(.wp-admin) .cupidera-404 {
	padding: 72px 20px 96px;
}

body:not(.wp-admin) .cupidera-404__inner {
	max-width: 560px;
	margin: 0 auto;
	text-align: center;
}

body:not(.wp-admin) .cupidera-404__code {
	font-size: clamp(64px, 14vw, 120px);
	font-weight: 700;
	line-height: 1;
	margin: 0 0 4px;
	color: var(--sh-accent-600, #c9408a);
	opacity: .28;
}

body:not(.wp-admin) .cupidera-404__title {
	font-size: clamp(24px, 4vw, 34px);
	margin: 0 0 12px;
}

body:not(.wp-admin) .cupidera-404__text {
	margin: 0 0 28px;
	color: var(--sh-text-muted, #5b5b70);
}

body:not(.wp-admin) .cupidera-404__links {
	list-style: none;
	margin: 0 0 28px;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px 22px;
}

body:not(.wp-admin) .cupidera-404__links a {
	font-weight: 600;
	color: var(--sh-accent-600, #c9408a);
	text-decoration: none;
	border-bottom: 1px solid transparent;
}

body:not(.wp-admin) .cupidera-404__links a:hover,
body:not(.wp-admin) .cupidera-404__links a:focus-visible {
	border-bottom-color: currentColor;
}

body:not(.wp-admin) .cupidera-404__search {
	display: flex;
	gap: 8px;
	justify-content: center;
	flex-wrap: wrap;
}

body:not(.wp-admin) .cupidera-404__search input[type="search"] {
	flex: 1 1 240px;
	max-width: 320px;
	padding: 11px 14px;
	border: 1px solid #d5d5df;
	border-radius: 8px;
	font-size: 15px;
}

body:not(.wp-admin) .cupidera-404__search button {
	padding: 11px 22px;
	border: 0;
	border-radius: 8px;
	background: var(--sh-accent-600, #c9408a);
	color: #fff;
	font-weight: 600;
	cursor: pointer;
}

body:not(.wp-admin) .cupidera-404__search button:hover {
	filter: brightness(1.06);
}

/* ==========================================================================
   LEGAL DOCUMENTS
   The policy pages are plain WordPress pages. The theme only lays out
   Elementor content, so these rendered edge to edge at the browser's default
   width: no measure, no vertical rhythm, 40px section headings and tables with
   neither borders nor cell padding. Everything below is the document layout
   they never had. Scoped to body.cupidera-legal (see class-cupidera-legal-pages.php)
   so nothing else on the site is touched.
   ========================================================================== */

body.cupidera-legal {
	--doc-measure: 44rem;      /* ~70 characters at the body size below */
	--doc-gutter: clamp(20px, 5vw, 40px);
}

/* ---- title band ---------------------------------------------------------- */

body.cupidera-legal .site-main .entry-header {
	background: var(--sh-gradient-soft, linear-gradient(135deg, #eef0fa 0%, #fee8f3 100%));
	border-bottom: 1px solid var(--sh-border, #ececf2);
	margin: 0 0 clamp(32px, 5vw, 56px);
	padding: clamp(40px, 7vw, 72px) var(--doc-gutter) clamp(32px, 5vw, 52px);
}

body.cupidera-legal .site-main .entry-title {
	max-width: var(--doc-measure);
	margin: 0 auto;
	font-size: clamp(30px, 5vw, 44px) !important;
	line-height: 1.15 !important;
	letter-spacing: -0.01em;
	color: var(--sh-primary-700, #3e4290);
}

/* ---- reading column ------------------------------------------------------ */

body.cupidera-legal .site-main .entry-content {
	max-width: var(--doc-measure);
	margin: 0 auto;
	padding: 0 var(--doc-gutter) clamp(56px, 9vw, 96px);
	font-size: 17px;
	line-height: 1.75;
	color: var(--sh-text-2, #4a4a5e);
}

body.cupidera-legal .site-main .entry-content > *:first-child {
	margin-top: 0;
}

body.cupidera-legal .entry-content p {
	margin: 0 0 1.15em;
	font-size: inherit;
	line-height: inherit;
	color: inherit;
}

body.cupidera-legal .entry-content strong {
	color: var(--sh-text, #1a1a2e);
	font-weight: 600;
}

body.cupidera-legal .entry-content a {
	color: var(--sh-accent-600, #c9408a);
	text-decoration: underline;
	text-underline-offset: 3px;
	text-decoration-thickness: 1px;
	/* Policies carry long email addresses and URLs; let them break rather than
	   push the column sideways. */
	overflow-wrap: anywhere;
}

body.cupidera-legal .entry-content a:hover,
body.cupidera-legal .entry-content a:focus-visible {
	color: var(--sh-primary-600, #4d52a3);
}

/* ---- headings ------------------------------------------------------------ */

body.cupidera-legal .entry-content h2 {
	margin: 2.6em 0 0.6em;
	font-size: clamp(21px, 2.4vw, 26px) !important;
	line-height: 1.3 !important;
	font-weight: 600;
	color: var(--sh-primary-600, #4d52a3);
	scroll-margin-top: 96px;   /* clears the sticky header when jumping to an anchor */
}

body.cupidera-legal .entry-content h3 {
	margin: 2em 0 0.5em;
	font-size: clamp(17px, 2vw, 19px) !important;
	line-height: 1.4 !important;
	font-weight: 600;
	color: var(--sh-text, #1a1a2e);
	scroll-margin-top: 96px;
}

body.cupidera-legal .entry-content h4 {
	margin: 1.7em 0 0.4em;
	font-size: 17px !important;
	font-weight: 600;
	color: var(--sh-text, #1a1a2e);
}

/* ---- lists --------------------------------------------------------------- */

body.cupidera-legal .entry-content ul,
body.cupidera-legal .entry-content ol {
	margin: 0 0 1.3em;
	padding-left: 1.5em;
	list-style-position: outside;
}

body.cupidera-legal .entry-content ul { list-style: disc; }
body.cupidera-legal .entry-content ol { list-style: decimal; }

body.cupidera-legal .entry-content li {
	margin-bottom: 0.55em;
	padding: 0;
	font-size: inherit;
	line-height: inherit;
	color: inherit;
}

body.cupidera-legal .entry-content li::marker {
	color: var(--sh-accent-400, #ea75b2);
}

body.cupidera-legal .entry-content li > ul,
body.cupidera-legal .entry-content li > ol {
	margin: 0.55em 0 0;
}

/* ---- tables -------------------------------------------------------------- */

body.cupidera-legal .entry-content table {
	width: 100%;
	margin: 0 0 1.6em;
	border-collapse: separate;
	border-spacing: 0;
	border: 1px solid var(--sh-border, #ececf2);
	border-radius: var(--sh-radius-md, 14px);
	overflow: hidden;
	font-size: 15.5px;
	line-height: 1.6;
}

body.cupidera-legal .entry-content thead th {
	background: var(--sh-primary-50, #f5f6fc);
	color: var(--sh-text, #1a1a2e);
	font-weight: 600;
	text-align: left;
	white-space: nowrap;
}

body.cupidera-legal .entry-content th,
body.cupidera-legal .entry-content td {
	padding: 13px 18px;
	text-align: left;
	vertical-align: top;
	border-bottom: 1px solid var(--sh-divider, #f1f1f6);
}

body.cupidera-legal .entry-content tbody tr:last-child th,
body.cupidera-legal .entry-content tbody tr:last-child td {
	border-bottom: 0;
}

body.cupidera-legal .entry-content tbody tr:nth-child(even) {
	background: var(--sh-bg-soft, #fafafb);
}

/* A price table has more columns than a phone can show. Scroll the table, not
   the page — a body that scrolls sideways breaks every other page too. */
@media (max-width: 640px) {
	body.cupidera-legal .entry-content table {
		display: block;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
	}
}

/* ---- document meta -------------------------------------------------------- */

body.cupidera-legal .entry-content p.cupidera-doc__meta {
	margin: 0 0 1.6em;
	padding-bottom: 1.1em;
	border-bottom: 1px solid var(--sh-border, #ececf2);
	font-size: 14px;
	color: var(--sh-text-muted, #8a8a9a);
}

body.cupidera-legal .entry-content p.cupidera-doc__meta strong {
	font-weight: 500;
	color: inherit;
}

/* ---- contents list ------------------------------------------------------- */

body.cupidera-legal .cupidera-doc__toc {
	margin: 0 0 2.6em;
	padding: 22px 26px 24px;
	background: var(--sh-primary-50, #f5f6fc);
	border: 1px solid var(--sh-border, #ececf2);
	border-radius: var(--sh-radius-md, 14px);
}

body.cupidera-legal .entry-content .cupidera-doc__toc .cupidera-doc__toc-title {
	margin: 0 0 12px !important;
	font-size: 12.5px !important;
	line-height: 1.2 !important;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--sh-text-muted, #8a8a9a);
}

body.cupidera-legal .entry-content .cupidera-doc__toc ol {
	margin: 0;
	padding: 0;
	list-style: none;
	columns: 2;
	column-gap: 32px;
}

body.cupidera-legal .entry-content .cupidera-doc__toc li {
	margin: 0 0 7px;
	break-inside: avoid;
}

body.cupidera-legal .entry-content .cupidera-doc__toc a {
	font-size: 15px;
	line-height: 1.45;
	color: var(--sh-primary-600, #4d52a3);
	text-decoration: none;
}

body.cupidera-legal .cupidera-doc__toc a:hover,
body.cupidera-legal .cupidera-doc__toc a:focus-visible {
	color: var(--sh-accent-600, #c9408a);
	text-decoration: underline;
	text-underline-offset: 3px;
}

@media (max-width: 640px) {
	body.cupidera-legal .entry-content .cupidera-doc__toc ol { columns: 1; }
}

/* ---- odds and ends ------------------------------------------------------- */

body.cupidera-legal .entry-content hr {
	margin: 2.4em 0;
	border: 0;
	border-top: 1px solid var(--sh-border, #ececf2);
}

body.cupidera-legal .entry-content blockquote {
	margin: 0 0 1.4em;
	padding: 4px 0 4px 20px;
	border-left: 3px solid var(--sh-accent-200, #f3b0d2);
	color: var(--sh-text-2, #4a4a5e);
}

body.cupidera-legal .entry-content code {
	padding: 2px 6px;
	background: var(--sh-primary-50, #f5f6fc);
	border-radius: var(--sh-radius-xs, 6px);
	font-size: 0.92em;
}

/* These are documents people save and print. */
@media print {
	body.cupidera-legal .site-header,
	body.cupidera-legal .site-footer,
	body.cupidera-legal .cupidera-doc__toc,
	body.cupidera-legal #cupidera-consent { display: none !important; }

	body.cupidera-legal .site-main .entry-header {
		background: none !important;
		padding: 0 0 18px !important;
	}

	body.cupidera-legal .site-main .entry-content {
		max-width: none;
		padding: 0;
		font-size: 11pt;
	}

	body.cupidera-legal .entry-content h2,
	body.cupidera-legal .entry-content h3 { break-after: avoid; }
	body.cupidera-legal .entry-content table,
	body.cupidera-legal .entry-content li { break-inside: avoid; }
}

/* ==========================================================================
   PURCHASE CONFIRMATION
   Card acquirers require the Terms and the Refund / Cancellation Policy to be
   shown and confirmed before card details are entered, and a policy link must
   not take the buyer off to another domain. This dialog does both: the consents
   gate the payment button, and either policy is fetched from this site and
   rendered inside the dialog.
   ========================================================================== */

html.cupidera-checkout-open,
html.cupidera-checkout-open body { overflow: hidden; }

body:not(.wp-admin) .cupidera-checkout {
	position: fixed;
	inset: 0;
	z-index: 100000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 20px;
}

body:not(.wp-admin) .cupidera-checkout[hidden] { display: none; }

body:not(.wp-admin) .cupidera-checkout__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(26, 26, 46, 0.55);
}

body:not(.wp-admin) .cupidera-checkout__dialog {
	position: relative;
	display: flex;
	flex-direction: column;
	width: 100%;
	max-width: 560px;
	max-height: min(86vh, 760px);
	background: #fff;
	border-radius: var(--sh-radius-lg, 20px);
	box-shadow: var(--sh-shadow-4, 0 32px 80px rgba(92, 99, 183, .18));
	overflow: hidden;
}

body:not(.wp-admin) .cupidera-checkout__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 20px 24px;
	border-bottom: 1px solid var(--sh-border, #ececf2);
}

body:not(.wp-admin) .cupidera-checkout__title {
	margin: 0 !important;
	font-size: 19px !important;
	line-height: 1.3 !important;
	font-weight: 600;
	color: var(--sh-text, #1a1a2e);
}

body:not(.wp-admin) .cupidera-checkout__close {
	flex: 0 0 auto;
	width: 34px;
	height: 34px;
	padding: 0;
	border: 0;
	border-radius: var(--sh-radius-circle, 50%);
	background: transparent;
	font-size: 24px;
	line-height: 1;
	color: var(--sh-text-muted, #8a8a9a);
	cursor: pointer;
}

body:not(.wp-admin) .cupidera-checkout__close:hover {
	background: var(--sh-primary-50, #f5f6fc);
	color: var(--sh-text, #1a1a2e);
}

body:not(.wp-admin) .cupidera-checkout__body {
	padding: 22px 24px 24px;
	overflow-y: auto;
}

/* ---- order summary ---- */

body:not(.wp-admin) .cupidera-checkout__summary {
	margin-bottom: 20px;
	padding: 16px 18px;
	background: var(--sh-primary-50, #f5f6fc);
	border-radius: var(--sh-radius-md, 14px);
}

body:not(.wp-admin) .cupidera-checkout__row {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
}

body:not(.wp-admin) .cupidera-checkout__label {
	font-size: 16px;
	font-weight: 600;
	color: var(--sh-text, #1a1a2e);
}

body:not(.wp-admin) .cupidera-checkout__price {
	font-size: 20px;
	font-weight: 700;
	color: var(--sh-primary-600, #4d52a3);
}

body:not(.wp-admin) .cupidera-checkout__row--muted {
	margin-top: 4px;
	font-size: 14px;
	color: var(--sh-text-muted, #8a8a9a);
}

/* ---- consents ---- */

body:not(.wp-admin) .cupidera-checkout__consent {
	display: flex;
	align-items: flex-start;
	gap: 11px;
	margin-bottom: 14px;
	font-size: 14.5px;
	line-height: 1.6;
	color: var(--sh-text-2, #4a4a5e);
	cursor: pointer;
}

body:not(.wp-admin) .cupidera-checkout__consent input[type="checkbox"] {
	flex: 0 0 auto;
	width: 18px;
	height: 18px;
	margin: 3px 0 0;
	accent-color: var(--sh-accent-600, #c9408a);
	cursor: pointer;
}

body:not(.wp-admin) .cupidera-checkout__consent a {
	color: var(--sh-accent-600, #c9408a);
	text-decoration: underline;
	text-underline-offset: 3px;
}

body:not(.wp-admin) .cupidera-checkout__note {
	margin: 0 0 20px;
	font-size: 13px;
	line-height: 1.6;
	color: var(--sh-text-muted, #8a8a9a);
}

/* ---- actions ---- */

body:not(.wp-admin) .cupidera-checkout__actions {
	display: flex;
	gap: 10px;
	justify-content: flex-end;
	flex-wrap: wrap;
}

body:not(.wp-admin) .cupidera-checkout__btn {
	padding: 11px 22px;
	border: 1px solid transparent;
	border-radius: var(--sh-radius-pill, 999px);
	font-size: 15px;
	font-weight: 600;
	cursor: pointer;
}

body:not(.wp-admin) .cupidera-checkout__btn--primary {
	background: var(--sh-accent-600, #c9408a);
	color: #fff;
}

body:not(.wp-admin) .cupidera-checkout__btn--primary:hover:not(:disabled) {
	filter: brightness(1.06);
}

/* Disabled has to look disabled: it is the whole point of the consent gate. */
body:not(.wp-admin) .cupidera-checkout__btn--primary:disabled {
	background: var(--sh-border-strong, #d8d8e0);
	color: #fff;
	cursor: not-allowed;
}

body:not(.wp-admin) .cupidera-checkout__btn--ghost {
	background: transparent;
	border-color: var(--sh-border-strong, #d8d8e0);
	color: var(--sh-text-2, #4a4a5e);
}

body:not(.wp-admin) .cupidera-checkout__btn--ghost:hover {
	background: var(--sh-primary-50, #f5f6fc);
}

body:not(.wp-admin) .cupidera-checkout__unavailable {
	margin: 14px 0 0;
	padding: 11px 14px;
	background: var(--sh-warning-bg, #fef3c7);
	border-radius: var(--sh-radius-sm, 10px);
	font-size: 14px;
	color: #7a5b00;
}

/* ---- policy shown inside the dialog ---- */

body:not(.wp-admin) .cupidera-checkout__back {
	margin-bottom: 14px;
	padding: 0;
	border: 0;
	background: none;
	font-size: 14px;
	font-weight: 600;
	color: var(--sh-primary-600, #4d52a3);
	cursor: pointer;
}

body:not(.wp-admin) .cupidera-checkout__policy-title {
	margin: 0 0 12px !important;
	font-size: 17px !important;
	font-weight: 600;
	color: var(--sh-text, #1a1a2e);
}

body:not(.wp-admin) .cupidera-checkout__policy {
	max-height: 52vh;
	overflow-y: auto;
	padding-right: 8px;
	font-size: 14.5px;
	line-height: 1.7;
	color: var(--sh-text-2, #4a4a5e);
}

body:not(.wp-admin) .cupidera-checkout__policy h2 {
	margin: 1.6em 0 .5em !important;
	font-size: 16px !important;
	line-height: 1.35 !important;
	font-weight: 600;
	color: var(--sh-primary-600, #4d52a3);
}

body:not(.wp-admin) .cupidera-checkout__policy h3 {
	margin: 1.3em 0 .4em !important;
	font-size: 15px !important;
	font-weight: 600;
	color: var(--sh-text, #1a1a2e);
}

body:not(.wp-admin) .cupidera-checkout__policy p { margin: 0 0 1em; }
body:not(.wp-admin) .cupidera-checkout__policy ul,
body:not(.wp-admin) .cupidera-checkout__policy ol { margin: 0 0 1em; padding-left: 1.4em; }
body:not(.wp-admin) .cupidera-checkout__policy li { margin-bottom: .4em; padding: 0; }
body:not(.wp-admin) .cupidera-checkout__policy a { color: var(--sh-accent-600, #c9408a); }

body:not(.wp-admin) .cupidera-checkout__policy table {
	width: 100%;
	margin: 0 0 1em;
	border: 1px solid var(--sh-border, #ececf2);
	border-radius: var(--sh-radius-sm, 10px);
	border-collapse: separate;
	border-spacing: 0;
	overflow: hidden;
	font-size: 13.5px;
}

body:not(.wp-admin) .cupidera-checkout__policy th,
body:not(.wp-admin) .cupidera-checkout__policy td {
	padding: 9px 12px;
	text-align: left;
	vertical-align: top;
	border-bottom: 1px solid var(--sh-divider, #f1f1f6);
}

body:not(.wp-admin) .cupidera-checkout__policy thead th {
	background: var(--sh-primary-50, #f5f6fc);
	font-weight: 600;
	color: var(--sh-text, #1a1a2e);
}

@media (max-width: 560px) {
	body:not(.wp-admin) .cupidera-checkout { padding: 0; align-items: flex-end; }
	body:not(.wp-admin) .cupidera-checkout__dialog {
		max-width: none;
		max-height: 92vh;
		border-radius: var(--sh-radius-lg, 20px) var(--sh-radius-lg, 20px) 0 0;
	}
	body:not(.wp-admin) .cupidera-checkout__actions .cupidera-checkout__btn { flex: 1 1 auto; }
}

/* --------------------------------------------------------------------------
   CUSTOM TOP-UP
   A sixth card where the buyer types their own amount. It sits on the same
   grid rows as the packs, so the input takes the place the price occupies in
   the others and everything still lines up across the shelf.
   -------------------------------------------------------------------------- */

body:not(.wp-admin) .cupidera-pack--custom {
	border-style: dashed;
	border-color: var(--sh-primary-200, #c5c8e6);
	background: var(--sh-primary-50, #f5f6fc);
}

body:not(.wp-admin) .cupidera-pack--custom:hover {
	border-style: solid;
}

body:not(.wp-admin) .cupidera-pack__price--input {
	display: flex;
	align-items: baseline;
	justify-content: center;
	gap: 2px;
}

body:not(.wp-admin) .cupidera-custom__symbol {
	font-size: 19px;
	font-weight: 700;
	color: var(--sh-text, #1a1a2e);
}

body:not(.wp-admin) .cupidera-pack--custom input[type="number"] {
	width: 4.2em;
	padding: 2px 4px;
	border: 0;
	border-bottom: 2px solid var(--sh-primary-200, #c5c8e6);
	border-radius: 0;
	background: transparent;
	font-family: inherit;
	font-size: 21px;
	font-weight: 700;
	line-height: 1.1;
	color: var(--sh-text, #1a1a2e);
	text-align: center;
	-moz-appearance: textfield;
}

body:not(.wp-admin) .cupidera-pack--custom input[type="number"]::-webkit-outer-spin-button,
body:not(.wp-admin) .cupidera-pack--custom input[type="number"]::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

body:not(.wp-admin) .cupidera-pack--custom input[type="number"]:focus {
	outline: none;
	border-bottom-color: var(--sh-accent-500, #e4519e);
}

/* Out of range: say so on the card rather than only disabling the button. */
body:not(.wp-admin) .cupidera-pack--custom.is-invalid input[type="number"] {
	border-bottom-color: var(--sh-danger, #ef4444);
}

body:not(.wp-admin) .cupidera-pack--custom.is-invalid .cupidera-pack__equiv {
	color: var(--sh-danger, #ef4444);
}

body:not(.wp-admin) .cupidera-pack--custom .cupidera-pack__buy:disabled {
	border-color: var(--sh-border-strong, #d8d8e0);
	color: var(--sh-text-muted, #8a8a9a);
	cursor: not-allowed;
}

body:not(.wp-admin) .cupidera-pack--custom .cupidera-pack__buy:disabled:hover {
	background: #fff;
	color: var(--sh-text-muted, #8a8a9a);
	box-shadow: none;
}
