.ppaccess-form-row { display: grid; grid-template-columns: 140px minmax(0, 1fr); gap: 12px; padding: 8px 0; align-items: center; }
.ppaccess-form-row label { font-weight: 500; }
.ppaccess-button,
button.ppaccess-button,
input[type="submit"].ppaccess-button,
input[type="button"].ppaccess-button {
	display: inline-block; padding: 10px 20px; background: #1e2747 !important; color: #fff !important; border: 0 !important;
	border-radius: 6px; font-weight: 500; text-decoration: none; cursor: pointer;
	font-family: inherit; font-size: inherit; line-height: normal; -webkit-appearance: none; appearance: none;
	box-shadow: none !important;
}
.ppaccess-button:hover,
button.ppaccess-button:hover,
input[type="submit"].ppaccess-button:hover {
	background: #2d3a6b !important; color: #fff !important;
}
.ppaccess-button:disabled { opacity: .6; cursor: not-allowed; }
@keyframes ppaccess-spin { to { transform: rotate(360deg); } }
.ppaccess-button--loading,
button.ppaccess-button--loading { pointer-events: none; opacity: 1 !important; display: inline-flex !important; align-items: center; justify-content: center; }
.ppaccess-btn-spinner {
	flex-shrink: 0; width: 14px; height: 14px; margin-right: 8px;
	border-radius: 50%; border: 2px solid rgba(255,255,255,.35); border-top-color: #fff;
	animation: ppaccess-spin .75s linear infinite;
}

.ppaccess-fullpage-main { max-width: 760px; margin: 40px auto; padding: 0 20px; }
.ppaccess-fullpage-header { text-align: center; margin-bottom: 24px; }
.ppaccess-fullpage-meta { color: #64748b; font-size: 14px; margin: 0 0 8px; text-transform: uppercase; letter-spacing: .04em; }
.ppaccess-fullpage-title {
	font-size: clamp(28px, 4vw, 42px);
	line-height: 1.15;
	font-weight: 700;
	color: #0f172a;
	margin: 0 0 24px;
}
.ppaccess-fullpage-thumb { margin: 0 0 24px; }
.ppaccess-fullpage-thumb img { width: 100%; height: auto; border-radius: 12px; box-shadow: 0 12px 24px -16px rgba(15, 23, 42, .35); }
.ppaccess-fullpage-thumb figcaption { color: #64748b; font-size: 13px; margin-top: 8px; text-align: center; }
.ppaccess-fullpage-excerpt {
	font-size: 18px; line-height: 1.55; color: #334155;
	margin: 0 0 12px; text-align: left;
}
.ppaccess-fullpage-leadin {
	font-size: 17px; line-height: 1.7; color: #1f2937;
	max-width: 100%; margin: 0 0 8px;
}
.ppaccess-fullpage-leadin > p { margin: 0 0 16px; }
.ppaccess-fullpage-leadin h2,
.ppaccess-fullpage-leadin h3 { margin: 24px 0 12px; }
.ppaccess-fullpage-leadin img { max-width: 100%; height: auto; border-radius: 8px; }

.ppaccess-paywall {
	position: relative;
	z-index: 3; /* stack above .ppaccess-paywall-leadin::after's fade gradient (z-index: 2) so a preceding lead-in's negative margin doesn't pull the card under the gradient and hide its top border */
	margin: 32px auto;
	max-width: 720px;
	padding: 0;
	border: 0;
	background: transparent;
	text-align: center;
}
.ppaccess-paywall-card {
	background: #fff;
	border: 1px solid #e5e7eb;
	border-radius: 14px;
	padding: 40px 32px;
	box-shadow: 0 18px 40px -28px rgba(15, 23, 42, .35);
}
.ppaccess-paywall-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 56px; height: 56px;
	margin: 0 auto 16px;
	border-radius: 50%;
	background: #eef2ff;
	color: #1e2747;
}
.ppaccess-paywall-heading {
	margin: 0 0 8px;
	font-size: 26px;
	line-height: 1.2;
	font-weight: 700;
	color: #0f172a;
}
.ppaccess-paywall-subhead,
.ppaccess-paywall .ppaccess-paywall-subhead {
	margin: 0 0 22px;
	color: #475569;
	font-size: 15px;
	line-height: 1.55;
	max-width: 480px;
	margin-left: auto;
	margin-right: auto;
	text-align: center !important;
}
.ppaccess-paywall-actions { display: flex; flex-direction: column; align-items: center; gap: 10px; }
.ppaccess-paywall-register-actions { display: none; }
.ppaccess-paywall-cta {
	display: inline-block; padding: 12px 28px; background: #1e2747; color: #fff;
	border-radius: 999px; text-decoration: none; font-weight: 600; font-size: 15px;
	box-shadow: 0 6px 16px -8px rgba(30, 39, 71, .55);
}
.ppaccess-paywall-cta:hover { background: #2d3a6b; color: #fff; }
.ppaccess-paywall-secondary { margin: 0; color: #64748b; font-size: 14px; }
.ppaccess-paywall-secondary a { color: #1e2747; font-weight: 500; }

html.ppaccess-slideup-open,
body.ppaccess-slideup-open {
	overflow: hidden;
}
.ppaccess-slideup-root {
	--ppaccess-slideup-top: 350px;
	position: fixed;
	inset: 0;
	z-index: 9998;
	visibility: hidden;
	pointer-events: none;
}
.ppaccess-slideup-root.is-visible {
	visibility: visible;
	pointer-events: auto;
}
.ppaccess-slideup-mask {
	position: fixed;
	inset: 0;
	z-index: 0;
	/* NYT-style: no dark scrim. The article stays visible at the top and fades
	 * into the panel color right where the form panel begins, so the two blend
	 * seamlessly. --ppaccess-slideup-bg is set by JS from the panel's actual
	 * background (white, a preset color, or a custom Box background), so the
	 * fade always matches. The fade completes at --ppaccess-slideup-top. */
	background: linear-gradient(
		to bottom,
		transparent 0,
		var(--ppaccess-slideup-bg, #fff) var(--ppaccess-slideup-top, 350px)
	);
	opacity: 0;
	transition: opacity .2s ease;
	will-change: opacity;
}
.ppaccess-slideup-root.is-active .ppaccess-slideup-mask {
	opacity: 1;
}
.ppaccess-slideup-portal {
	position: fixed;
	inset: 0;
	z-index: 1;
	pointer-events: none;
}
.ppaccess-slideup-root.is-visible .ppaccess-slideup-portal {
	pointer-events: auto;
}
.ppaccess-paywall--slideup {
	width: 100%;
	max-width: none;
	min-height: calc(100vh - var(--ppaccess-slideup-top, 350px));
	margin: 0;
	padding: 105px 24px 80px;
	background: #fff;
	color: #111827;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
}
.ppaccess-slideup-root .ppaccess-paywall--slideup {
	position: fixed;
	top: var(--ppaccess-slideup-top, 350px);
	right: 0;
	left: 0;
	z-index: 2;
	height: 100vh;
	transform: translateY(calc(100vh - var(--ppaccess-slideup-top, 350px)));
	transition: transform .3s ease-out;
	will-change: transform;
	/* Keep the full-screen white takeover regardless of the active preset.
	 * Presets style the inline card; some (e.g. ft-classic) set the panel
	 * background transparent / padding 0, which breaks the slide-up. These
	 * scoped rules outrank single-class preset selectors. Cascade: a custom Box
	 * background (--ppaccess-box-bg) wins; else a preset panel color
	 * (--ppaccess-slideup-panel, e.g. the ft-classic cream); else white. The JS
	 * reads whatever this resolves to and drives the fade to match. */
	background: var(--ppaccess-box-bg, var(--ppaccess-slideup-panel, #fff));
	padding: 105px 24px 80px;
}
.ppaccess-slideup-root .ppaccess-paywall--slideup .ppaccess-paywall-card {
	background: transparent;
	padding: 0;
}
.ppaccess-slideup-root.is-active .ppaccess-paywall--slideup {
	transform: translateY(0);
}
.ppaccess-paywall--slideup .ppaccess-paywall-card {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
	width: 100%;
	max-width: 800px;
	margin: 0 auto;
	padding: 0;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	background: transparent;
}
.ppaccess-paywall--slideup .ppaccess-paywall-icon,
.ppaccess-paywall--slideup .ppaccess-paywall-actions,
.ppaccess-paywall--slideup .ppaccess-paywall-plans {
	display: none;
}
.ppaccess-paywall--slideup .ppaccess-paywall-heading {
	width: 100%;
	max-width: 640px;
	margin: 0;
	color: #111827;
	font-size: 24px;
	font-weight: 600;
	letter-spacing: .1px;
	line-height: 28px;
	text-align: center;
}
.ppaccess-paywall--slideup .ppaccess-paywall-subhead {
	width: min(100%, 523px);
	max-width: none;
	margin: 0 0 15px;
	color: #111827;
	font-size: 16px;
	font-weight: 400;
	letter-spacing: .1px;
	line-height: 22px;
	text-align: center;
}
.ppaccess-paywall--slideup .ppaccess-paywall-register-actions {
	display: block;
	width: 100%;
}
.ppaccess-paywall--slideup .ppaccess-paywall-register-form {
	width: 100%;
	max-width: 420px;
	margin: 0 auto;
	gap: 0;
	align-items: stretch;
}
.ppaccess-paywall--slideup .ppaccess-paywall-register-field {
	display: block;
	margin-bottom: 20px;
	text-align: left;
}
.ppaccess-paywall--slideup .ppaccess-paywall-register-field label {
	display: block;
	margin-bottom: 8px;
	color: #111827;
	font-size: 14px;
	font-weight: 500;
}
.ppaccess-paywall--slideup .ppaccess-paywall-register-field input[type="email"] {
	width: 100%;
	box-sizing: border-box;
	/* !important so the theme's own input styling can't shrink the box.
	 * Themes often set a fixed input height, which absorbs the padding — force
	 * height auto + a min-height so the box is reliably the NYT size. */
	height: auto !important;
	min-height: 56px !important;
	padding: 16px !important;
	border: 1px solid #ccc !important;
	border-radius: 6px !important;
	outline: 0;
	background: #fff;
	color: #1d2327;
	font-size: 16px !important;
	line-height: 1.4 !important;
	transition: border-color .15s ease, box-shadow .15s ease;
	-webkit-appearance: none;
}
.ppaccess-paywall--slideup .ppaccess-paywall-register-field input[type="email"]:focus {
	border-color: #174a92;
	box-shadow: 0 0 0 2px rgba(23, 74, 146, .15);
}
.ppaccess-paywall--slideup .ppaccess-paywall-register-field input[type="email"]::placeholder {
	color: #999;
}
.ppaccess-paywall--slideup .ppaccess-paywall-register-form .ppaccess-paywall-cta {
	display: block;
	width: 100%;
	margin: 0 0 24px;
	padding: 14px 32px;
	border: 0;
	border-radius: 6px;
	box-shadow: none;
	cursor: pointer;
	font-size: 16px;
	font-weight: 600;
	letter-spacing: .5px;
	line-height: 1.2;
	text-align: center;
	transition: opacity .15s ease;
	/* Colour comes from the active preset (or the default rule below / custom
	 * colors), so switching presets restyles the slide-up button too. */
}
/* Default preset keeps the original NYT-style blue button. */
.ppaccess-paywall--slideup.ppaccess-paywall--preset-default .ppaccess-paywall-register-form .ppaccess-paywall-cta {
	background: #174a92 !important;
	color: #fff !important;
}
.ppaccess-paywall--slideup .ppaccess-paywall-register-form .ppaccess-paywall-cta:hover {
	opacity: .9;
}
.ppaccess-paywall--slideup .ppaccess-paywall-terms {
	margin: 0;
	color: #111827;
	font-size: 13px;
	line-height: 1.4;
	opacity: .6;
	text-align: center;
}
.ppaccess-paywall--slideup .ppaccess-form-result {
	min-height: 24px;
	text-align: center;
	font-style: italic;
}
/* "or" divider above the subscription-options callout. */
.ppaccess-paywall-or {
	display: flex;
	align-items: center;
	gap: 14px;
	width: 100%;
	max-width: 420px;
	margin: 22px auto 0;
	color: #9ca3af;
	font-size: 13px;
}
.ppaccess-paywall-or::before,
.ppaccess-paywall-or::after {
	content: "";
	flex: 1;
	height: 1px;
	background: #e5e7eb;
}
/* Subscription-options callout below the free-registration form. */
.ppaccess-paywall-register-footer {
	margin: 18px 0 0;
	font-size: 13px;
	line-height: 1.5;
	text-align: center;
	color: #6b7280;
}
.ppaccess-paywall-register-footer-note { margin-right: 4px; }
.ppaccess-paywall-register-footer a {
	color: inherit;
	font-weight: 600;
	text-decoration: underline;
}
.ppaccess-paywall--slideup .ppaccess-paywall-register-footer {
	width: 100%;
	max-width: 420px;
	margin: 20px auto 0;
}
@media (prefers-reduced-motion: reduce) {
	.ppaccess-slideup-root .ppaccess-paywall--slideup,
	.ppaccess-slideup-mask {
		transition: none;
	}
}
@media (max-width: 600px) {
	.ppaccess-paywall-card { padding: 28px 20px; }
	.ppaccess-paywall-heading { font-size: 22px; }
	.ppaccess-slideup-root {
		--ppaccess-slideup-top: 38vh;
	}
	.ppaccess-paywall--slideup {
		padding: 60px 20px 80px;
	}
	.ppaccess-paywall--slideup .ppaccess-paywall-card { padding: 0; }
	.ppaccess-paywall--slideup .ppaccess-paywall-heading { font-size: 24px; }
}

.ppaccess-levels-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 20px;
	margin: 16px 0;
}
@media (max-width: 768px) {
	.ppaccess-levels-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}
@media (max-width: 480px) {
	.ppaccess-levels-grid {
		grid-template-columns: 1fr;
	}
}
.ppaccess-level-card {
	display: flex;
	flex-direction: column;
	position: relative;
	padding: 28px 24px 24px;
	background: #fff;
	border: 1px solid #e5e7eb;
	border-radius: 10px;
	box-shadow: 0 1px 4px rgba(0,0,0,.06);
}
.ppaccess-level-card--current {
	border-color: #1e2747;
	box-shadow: 0 0 0 1px #1e2747, 0 10px 28px -20px rgba(30, 39, 71, .7);
}
.ppaccess-level-card__badge {
	display: inline-flex;
	align-items: center;
	margin: 0 auto 10px;
	padding: 4px 10px;
	border-radius: 999px;
	background: #e8edf4;
	color: #1e2747;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .06em;
	line-height: 1.2;
	text-transform: uppercase;
}
.ppaccess-level-card__header {
	margin-bottom: 18px;
	padding-bottom: 18px;
	border-bottom: 1px solid #f0f0f0;
	text-align: center;
}
.ppaccess-level-card__header h3 {
	margin: 0 0 10px;
	font-size: 20px;
	color: #1e2747;
}
.ppaccess-level-price {
	margin: 0;
	font-size: 30px;
	font-weight: 700;
	color: #1e2747;
	line-height: 1;
}
.ppaccess-level-interval { font-size: 14px; color: #6b7280; font-weight: 400; }
.ppaccess-level-card .ppaccess-level-description {
	color: #2f2f2f;
	font-size: 14px;
	font-weight: 400;
	line-height: 1.4;
	margin: 0 0 12px;
	padding: 0;
}
.ppaccess-level-features {
	flex: 1;
	display: grid;
	gap: 10px;
	margin: 0 0 20px;
	padding: 0;
	list-style: none !important;
}
.ppaccess-level-features li {
	list-style: none !important;
}
.ppaccess-level-features li {
	position: relative;
	padding-left: 22px;
	color: #2f2f2f;
	font-size: 14px;
	line-height: 1.4;
}
.ppaccess-level-features li::before {
	content: "";
	position: absolute;
	left: 0;
	top: .45em;
	width: 10px;
	height: 6px;
	border-left: 2px solid #d71920;
	border-bottom: 2px solid #d71920;
	transform: rotate(-45deg);
}
.ppaccess-level-card__cta {
	display: block;
	text-align: center;
	margin-top: auto;
}
.ppaccess-level-card__current {
	padding: 10px 16px;
	border: 1px solid #cbd2de;
	border-radius: 6px;
	background: #f4f6fa;
	color: #475569;
	font-size: 14px;
	font-weight: 600;
}

.ppaccess-form { display: flex; flex-direction: column; gap: 8px; max-width: 400px; }
.ppaccess-form input[type="email"], .ppaccess-form input[type="password"], .ppaccess-form input[type="text"] {
	padding: 10px 12px; border: 1px solid #d1d5db; border-radius: 6px; width: 100%;
}
.ppaccess-form-result { min-height: 24px; font-size: 14px; }
.ppaccess-form-result.success { color: #15803d; }
.ppaccess-form-result.error { color: #b91c1c; }
.ppaccess-subscribe [hidden] { display: none !important; }

/* ===================== My Account page ===================== */
.ppaccess-account {
	max-width: 640px;
	margin: 0 auto;
	color: #0f172a;
	font-size: 15px;
	line-height: 1.55;
}

.ppaccess-account-header { margin: 0 0 22px; }
.ppaccess-account-header h2 {
	margin: 0;
	font-size: clamp(26px, 3.4vw, 33px);
	font-weight: 700;
	line-height: 1.15;
	color: #0f172a;
}
.ppaccess-account-sub { margin: 6px 0 0; color: #64748b; font-size: 15px; }

/* Signed-out account page: login card (reuses the account card + field styles). */
.ppaccess-login-form { margin: 0; }
.ppaccess-login-actions { margin-top: 20px; display: flex; flex-direction: column; align-items: center; gap: 14px; }
.ppaccess-login-submit { width: 100%; box-sizing: border-box; text-align: center; }
.ppaccess-login-forgot { font-size: 14px; font-weight: 500; color: #475569; text-decoration: none; transition: color .15s ease; }
.ppaccess-login-forgot:hover { color: #0f172a; text-decoration: underline; }
.ppaccess-login-form .ppaccess-form-result { margin: 14px 0 0; text-align: center; }
.ppaccess-auth-notice {
	margin: 0 0 16px; padding: 10px 14px; border-radius: 8px;
	background: #dcfce7; border: 1px solid #bbf7d0; color: #166534;
	font-size: 14px; line-height: 1.5;
}
.ppaccess-auth-text { margin: 0 0 18px; color: #475569; font-size: 14.5px; line-height: 1.55; }

/* Auth-form result message: render as a banner matching .ppaccess-auth-notice. */
.ppaccess-login-form .ppaccess-form-result.success,
.ppaccess-login-form .ppaccess-form-result.error {
	margin-top: 16px; padding: 10px 14px; border-radius: 8px;
	font-size: 14px; line-height: 1.5; text-align: left;
}
.ppaccess-login-form .ppaccess-form-result.success { background: #dcfce7; border: 1px solid #bbf7d0; color: #166534; }
.ppaccess-login-form .ppaccess-form-result.error { background: #fef2f2; border: 1px solid #fecaca; color: #b91c1c; }

.ppaccess-account-card {
	background: #fff;
	border: 1px solid #e7eaf0;
	border-radius: 16px;
	padding: 22px 24px;
	margin: 0 0 18px;
	box-shadow: 0 1px 2px rgba(15, 23, 42, .05);
}
.ppaccess-account-card-title {
	margin: 0 0 16px;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .07em;
	text-transform: uppercase;
	color: #64748b;
}

/* Group section reuses .ppaccess-account but should read as a card. */
.ppaccess-account--card {
	background: #fff;
	border: 1px solid #e7eaf0;
	border-radius: 16px;
	padding: 22px 24px;
	box-shadow: 0 1px 2px rgba(15, 23, 42, .05);
	margin-top: 24px;
}

/* Subscription summary hero */
.ppaccess-sub-card {
	background: radial-gradient(130% 150% at 100% 0, #33417a 0%, #1e2747 58%);
	border: 0;
	color: #fff;
	box-shadow: 0 16px 32px -20px rgba(30, 39, 71, .9);
}
.ppaccess-sub-card--inactive {
	background: radial-gradient(130% 150% at 100% 0, #6b7486 0%, #464f60 58%);
	box-shadow: 0 16px 32px -22px rgba(71, 80, 96, .75);
}
.ppaccess-sub-card-head {
	display: flex; align-items: center; justify-content: space-between; gap: 12px;
	margin-bottom: 14px;
}
.ppaccess-sub-card-eyebrow {
	font-size: 12px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase;
	color: rgba(255, 255, 255, .6);
}
.ppaccess-sub-plan { margin: 0; font-size: 26px; font-weight: 700; line-height: 1.15; }
.ppaccess-sub-plan-billing {
	display: flex; align-items: center; flex-wrap: wrap; gap: 7px;
	margin: 8px 0 0;
	font-size: 13.5px; font-weight: 500; line-height: 1.4;
	color: rgba(255, 255, 255, .72);
}
.ppaccess-sub-plan-billing-separator { color: rgba(255, 255, 255, .38); }
.ppaccess-sub-card-footer {
	display: flex; align-items: center; justify-content: space-between;
	gap: 16px 24px; flex-wrap: wrap;
	margin-top: 20px; padding-top: 18px;
	border-top: 1px solid rgba(255, 255, 255, .15);
}
.ppaccess-sub-meta {
	display: flex; flex-wrap: wrap; gap: 14px 36px;
}
.ppaccess-sub-meta-item { display: flex; flex-direction: column; gap: 4px; }
.ppaccess-sub-meta-label {
	font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase;
	color: rgba(255, 255, 255, .55);
}
.ppaccess-sub-meta-value { font-size: 15px; font-weight: 600; color: #fff; }
.ppaccess-sub-note { margin: 16px 0 0; font-size: 13.5px; line-height: 1.5; color: rgba(255, 255, 255, .78); }
.ppaccess-sub-note--warn { color: #fecaca; font-weight: 500; }

.ppaccess-sub-card-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 20px; }
.ppaccess-sub-card-footer .ppaccess-sub-card-actions { margin-top: 0; }
/* Primary action: solid white so it reads on the dark hero. */
.ppaccess-sub-card-actions .ppaccess-button,
.ppaccess-sub-card-actions a.ppaccess-button {
	background: #fff !important; color: #1e2747 !important; border: 1px solid #fff !important;
}
.ppaccess-sub-card-actions .ppaccess-button:hover,
.ppaccess-sub-card-actions a.ppaccess-button:hover {
	background: #e8edf4 !important; color: #1e2747 !important; border-color: #e8edf4 !important;
}
/* Secondary action (e.g. Update payment method beside Resume): translucent ghost. */
.ppaccess-sub-card-actions .ppaccess-button:not(:first-child) {
	background: rgba(255, 255, 255, .10) !important; color: #fff !important; border: 1px solid rgba(255, 255, 255, .38) !important;
}
.ppaccess-sub-card-actions .ppaccess-button:not(:first-child):hover {
	background: rgba(255, 255, 255, .18) !important; color: #fff !important; border-color: rgba(255, 255, 255, .6) !important;
}
.ppaccess-profile-actions { margin-top: 18px; }
.ppaccess-field-hint { margin: 12px 0 0; font-size: 13px; line-height: 1.5; color: #64748b; }

.ppaccess-status-badge {
	display: inline-block; padding: 4px 11px; border-radius: 999px;
	font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
	white-space: nowrap;
}
.ppaccess-status-active { background: #dcfce7; color: #166534; }
.ppaccess-status-expired, .ppaccess-status-canceled { background: #e5e7eb; color: #374151; }
.ppaccess-status-pending_cancel, .ppaccess-status-past_due { background: #fde68a; color: #92400e; }

.ppaccess-account .ppaccess-form-result { min-height: 0; margin: 0 0 18px; }
.ppaccess-account .ppaccess-form-result:empty { margin: 0; }

.ppaccess-account-footer {
	display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px 24px;
	background: #fff; border: 1px solid #e7eaf0; border-radius: 16px;
	padding: 15px 22px; box-shadow: 0 1px 2px rgba(15, 23, 42, .05);
}
.ppaccess-account-footer-link {
	display: inline-flex; align-items: center; gap: 9px;
	font-size: 14.5px; font-weight: 500; color: #334155; text-decoration: none;
	transition: color .15s ease;
}
.ppaccess-account-footer-link svg { width: 18px; height: 18px; flex-shrink: 0; color: #64748b; }
.ppaccess-account-footer-link:hover { color: #0f172a; text-decoration: none; }
.ppaccess-account-footer-link--danger { color: #b91c1c; }
.ppaccess-account-footer-link--danger svg { color: #b91c1c; }
.ppaccess-account-footer-link--danger:hover { color: #991b1b; }

/* Filled danger button (modal confirm). */
.ppaccess-button--danger,
button.ppaccess-button--danger {
	background: #dc2626 !important; color: #fff !important; border: 1px solid #dc2626 !important;
}
.ppaccess-button--danger:hover,
button.ppaccess-button--danger:hover {
	background: #b91c1c !important; color: #fff !important; border-color: #b91c1c !important;
}

/* Confirmation modal. */
.ppaccess-modal[hidden] { display: none; }
.ppaccess-modal {
	position: fixed; inset: 0; z-index: 100000;
	display: flex; align-items: center; justify-content: center; padding: 20px;
}
.ppaccess-modal__backdrop {
	position: absolute; inset: 0; background: rgba(15, 23, 42, .55);
	animation: ppaccess-modal-fade .15s ease;
}
.ppaccess-modal__dialog {
	position: relative; z-index: 1; width: 100%; max-width: 420px;
	background: #fff; border-radius: 16px; padding: 28px 26px 24px;
	box-shadow: 0 24px 60px -12px rgba(15, 23, 42, .4);
	text-align: center;
	animation: ppaccess-modal-pop .16s cubic-bezier(.2, .8, .3, 1);
}
.ppaccess-modal__icon {
	width: 48px; height: 48px; margin: 0 auto 16px;
	display: flex; align-items: center; justify-content: center;
	border-radius: 50%; background: #fef2f2; color: #dc2626;
}
.ppaccess-modal__icon svg { width: 24px; height: 24px; }
.ppaccess-modal__title { margin: 0 0 8px; font-size: 19px; font-weight: 700; line-height: 1.25; color: #0f172a; }
.ppaccess-modal__body { margin: 0 0 22px; font-size: 14px; line-height: 1.55; color: #475569; }
.ppaccess-modal__actions { display: flex; gap: 10px; }
.ppaccess-modal__actions .ppaccess-button { flex: 1; text-align: center; justify-content: center; }
@keyframes ppaccess-modal-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes ppaccess-modal-pop { from { opacity: 0; transform: translateY(8px) scale(.98); } to { opacity: 1; transform: none; } }

/* Outlined secondary button (overrides the navy primary base). */
.ppaccess-button--secondary,
button.ppaccess-button--secondary,
a.ppaccess-button--secondary {
	background: #fff !important; color: #1e2747 !important; border: 1px solid #cbd2de !important;
}
.ppaccess-button--secondary:hover,
button.ppaccess-button--secondary:hover,
a.ppaccess-button--secondary:hover {
	background: #f4f6fa !important; color: #1e2747 !important; border-color: #1e2747 !important;
}

/* Dark spinner for the light secondary button (the white-on-white default is invisible). */
.ppaccess-button--secondary .ppaccess-btn-spinner { border-color: rgba(30, 39, 71, .25); border-top-color: #1e2747; }

/* Transient "Done." confirmation shown on the button after a successful save. */
.ppaccess-button--done,
button.ppaccess-button--done { opacity: 1 !important; cursor: default; color: #15803d !important; border-color: #15803d !important; background: #fff !important; }

@media (max-width: 560px) {
	.ppaccess-account-card { padding: 20px 18px; }
	.ppaccess-sub-plan { font-size: 23px; }
	.ppaccess-sub-card-actions { width: 100%; }
	.ppaccess-sub-card-actions .ppaccess-button,
	.ppaccess-sub-card-actions a.ppaccess-button { flex: 1 1 100%; text-align: center; }
	.ppaccess-account .ppaccess-form-grid { grid-template-columns: 1fr; }
}

.ppaccess-payment-element {
	margin: 16px 0; padding: 16px; border: 1px solid #e5e7eb; border-radius: 8px; background: #fff;
	min-height: 60px;
}
.ppaccess-subscribe {
	max-width: 720px;
	margin-left: auto;
	margin-right: auto;
}
.ppaccess-subscribe form {
	max-width: 720px;
	margin-left: auto;
	margin-right: auto;
}

.ppaccess-form-section {
	font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase;
	color: #6b7280; margin: 24px 0 12px;
}
.ppaccess-form-section:first-of-type { margin-top: 0; }
.ppaccess-form-grid {
	display: grid; grid-template-columns: 1fr 1fr; gap: 16px;
}
.ppaccess-form-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.ppaccess-form-field.ppaccess-full { grid-column: 1 / -1; }
.ppaccess-account-forgot { margin: 8px 0 0; }
.ppaccess-link-button {
	background: none; border: 0; padding: 0; color: #1e2747;
	font: inherit; font-size: 13px; text-decoration: underline; cursor: pointer;
}
.ppaccess-link-button:hover { opacity: .8; }
.ppaccess-form-field label { font-size: 13px; font-weight: 500; color: #1f2937; }
.ppaccess-form-field input[type=text],
.ppaccess-form-field input[type=email],
.ppaccess-form-field input[type=tel],
.ppaccess-form-field input[type=number],
.ppaccess-form-field input[type=password] {
	padding: 10px 12px; border: 1px solid #d1d5db; border-radius: 6px;
	font-size: 14px; background: #fff; color: #1f2937;
	transition: border-color .15s ease, box-shadow .15s ease;
	width: 100%;
}
.ppaccess-form-field input:focus {
	outline: 0; border-color: #1e2747; box-shadow: 0 0 0 3px rgba(30, 39, 71, .12);
}
/* Render the custom-amount number field like a plain text field (no spinners). */
.ppaccess-form-field input[type=number]::-webkit-outer-spin-button,
.ppaccess-form-field input[type=number]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.ppaccess-form-field input[type=number] { -moz-appearance: textfield; appearance: textfield; }
/* iOS Safari auto-zooms into inputs with a font size below 16px. */
@media (max-width: 640px) {
	.ppaccess-form-field input[type=text],
	.ppaccess-form-field input[type=email],
	.ppaccess-form-field input[type=tel],
	.ppaccess-form-field input[type=number],
	.ppaccess-form-field input[type=password],
	.ppaccess-form input[type="email"],
	.ppaccess-form input[type="password"],
	.ppaccess-form input[type="text"] {
		font-size: 16px;
	}
}

.ppaccess-card-element {
	padding: 12px 14px; border: 1px solid #d1d5db; border-radius: 6px; background: #fff;
}
.ppaccess-card-element.StripeElement--focus {
	border-color: #1e2747; box-shadow: 0 0 0 3px rgba(30, 39, 71, .12);
}
.ppaccess-card-element.StripeElement--invalid { border-color: #b91c1c; }
.ppaccess-card-errors { color: #b91c1c; font-size: 13px; min-height: 18px; }
.ppaccess-payment-element { min-height: 48px; }

.ppaccess-coupon-status {
	min-height: 18px;
	margin: 2px 0 0;
	color: #15803d;
	font-size: 13px;
	line-height: 1.35;
}
.ppaccess-coupon-status.is-pending { color: #555; }
.ppaccess-coupon-status.is-error { color: #b91c1c; }

.ppaccess-order-total {
	display: flex; align-items: center; justify-content: space-between;
	margin-top: 24px; padding: 14px 16px; background: #f3f4f6; border-radius: 6px;
}
.ppaccess-order-total span { font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: #6b7280; }
.ppaccess-order-total strong { font-size: 18px; color: #1f2937; }

.ppaccess-subscribe-button { width: 100%; padding: 14px; margin-top: 16px; font-size: 15px; }

.ppaccess-standalone-site-title { display: none; }
.ppaccess-recaptcha-legal { font-size: 11px; color: #6b7280; margin: 8px 0 0; line-height: 1.4; }
.ppaccess-recaptcha-legal a { color: #6b7280; text-decoration: underline; }
.ppaccess-recaptcha-legal a:hover { color: #374151; }
.grecaptcha-badge { visibility: hidden !important; }

.ppaccess-subscribe--layout-stepped {
	max-width: 560px;
}
.ppaccess-subscribe--layout-stepped form { max-width: 560px; }

.ppaccess-subscribe--template-full_page {
	width: 100vw;
	max-width: none;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	margin-top: 0;
	margin-bottom: 0;
	box-shadow: 0 0 0 100vmax #fff;
	clip-path: inset(0 -100vmax);
}
.ppaccess-subscribe--template-full_page form {
	max-width: 100%;
}
.ppaccess-checkout-fullpage {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(320px, 32vw);
	min-height: clamp(680px, 72vh, 980px);
	background: #fff;
	color: #151515;
}
.ppaccess-checkout-main {
	padding: clamp(48px, 6vw, 80px) clamp(24px, 7vw, 112px);
}
.ppaccess-checkout-form-wrap {
	width: min(560px, 100%);
	margin: 0 auto;
}
.ppaccess-subscribe--template-full_page.ppaccess-subscribe--layout-default .ppaccess-checkout-form-wrap {
	width: min(640px, 100%);
}
.ppaccess-checkout-title {
	margin: 0 0 clamp(32px, 5vw, 56px);
	color: #151515;
	font-size: clamp(34px, 4vw, 48px);
	font-weight: 700;
	line-height: 1.12;
	letter-spacing: 0;
}
.ppaccess-checkout-summary {
	display: flex;
	align-items: center;
	background: #f5f4ef;
	border-left: 1px solid #e2ded6;
	box-shadow: 100vmax 0 0 100vmax #f5f4ef;
	clip-path: inset(0 -100vmax 0 0);
	padding: clamp(40px, 6vw, 84px) clamp(28px, 5vw, 64px);
}
.ppaccess-order-summary-panel {
	width: min(360px, 100%);
	margin: 0 auto;
}
.ppaccess-order-summary-kicker {
	margin: 0 0 12px;
	color: #151515;
	font-size: 12px;
	font-weight: 800;
	line-height: 1.2;
	text-transform: uppercase;
}
.ppaccess-order-summary-panel h2 {
	margin: 0 0 18px;
	color: #151515;
	font-size: 18px;
	font-weight: 700;
	line-height: 1.3;
}
.ppaccess-order-summary-line {
	display: flex;
	justify-content: space-between;
	gap: 20px;
	margin-top: 8px;
	color: #4b5563;
	font-size: 14px;
	line-height: 1.35;
}
.ppaccess-order-summary-line strong {
	color: #151515;
	font-size: 14px;
	text-align: right;
}
.ppaccess-order-summary-includes {
	margin-top: 22px;
}
.ppaccess-order-summary-includes p {
	margin: 0 0 10px;
	color: #151515;
	font-size: 14px;
	font-weight: 700;
}
.ppaccess-order-summary-plain {
	font-weight: 400 !important;
	color: #2f2f2f !important;
}
.ppaccess-order-summary-includes ul {
	display: grid;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.ppaccess-order-summary-includes li {
	position: relative;
	margin: 0;
	padding-left: 22px;
	color: #2f2f2f;
	font-size: 14px;
	line-height: 1.4;
}
.ppaccess-order-summary-includes li::before {
	content: "";
	position: absolute;
	left: 0;
	top: .45em;
	width: 10px;
	height: 6px;
	border-left: 2px solid #d71920;
	border-bottom: 2px solid #d71920;
	transform: rotate(-45deg);
}
.ppaccess-order-summary-secure {
	margin: 24px 0 0;
	color: #555;
	font-size: 13px;
}
.ppaccess-subscribe--template-full_page .ppaccess-order-total {
	display: none;
}

.ppaccess-checkout-standalone-body {
	margin: 0;
	background: #fff;
	color: #151515;
}
.ppaccess-checkout-standalone-body * {
	box-sizing: border-box;
}
.ppaccess-standalone-page {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(320px, 28vw);
	min-height: 100vh;
	background: #fff;
}
.ppaccess-standalone-page--full {
	grid-template-columns: minmax(0, 1fr);
	background: #f7f7f5;
}
.ppaccess-standalone-left {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr) auto;
	min-height: 100vh;
}
.ppaccess-standalone-header {
	padding: clamp(24px, 4vw, 48px) clamp(24px, 4vw, 56px) 0;
}
.ppaccess-standalone-page--full .ppaccess-standalone-header {
	display: flex;
	justify-content: center;
	text-align: center;
}
.ppaccess-standalone-brand {
	display: inline-flex;
	align-items: center;
}
.ppaccess-standalone-page--full .ppaccess-standalone-brand {
	justify-content: center;
	text-align: center;
}
.ppaccess-standalone-brand-link {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	max-width: min(420px, 72vw);
	color: #151515;
	text-decoration: none;
}
.ppaccess-standalone-logo {
	display: inline-flex;
	align-items: center;
	flex: 0 0 auto;
}
.ppaccess-standalone-logo-img {
	display: block;
	width: auto;
	max-width: 148px;
	max-height: 56px;
}
.ppaccess-standalone-site-title {
	display: block;
	color: #151515;
	font-size: 20px;
	font-weight: 800;
	line-height: 1.1;
	overflow-wrap: anywhere;
}
.ppaccess-standalone-main {
	display: flex;
	align-items: flex-start;
	justify-content: center;
	padding: clamp(56px, 9vh, 108px) clamp(24px, 6vw, 88px) clamp(56px, 8vh, 96px);
}
.ppaccess-standalone-page--full .ppaccess-standalone-main {
	padding-top: clamp(36px, 6vh, 72px);
}
.ppaccess-standalone-single-column {
	width: min(680px, 100%);
}
.ppaccess-standalone-inline-summary {
	width: 100%;
	margin: 0 0 36px;
	padding: clamp(24px, 4vw, 32px);
	border: 1px solid #e6e3dc;
	border-radius: 4px;
	background: #fff;
	box-shadow: 0 14px 32px -28px rgba(15, 23, 42, .45);
}
.ppaccess-standalone-inline-summary .ppaccess-order-summary-panel {
	width: 100%;
	margin: 0;
}
.ppaccess-standalone-inline-summary .ppaccess-order-summary-includes {
	margin-top: 18px;
	padding-top: 18px;
	border-top: 1px solid #e6e3dc;
}
.ppaccess-standalone-inline-summary .ppaccess-order-summary-secure {
	display: none;
}
.ppaccess-subscribe--template-standalone {
	width: min(560px, 100%);
	max-width: none;
	margin: 0;
}
.ppaccess-subscribe--template-standalone_full {
	width: 100%;
}
.ppaccess-subscribe--template-standalone form {
	max-width: 100%;
}
.ppaccess-standalone-form-wrap {
	width: 100%;
}
.ppaccess-subscribe--template-standalone .ppaccess-checkout-title {
	margin-bottom: 24px;
	font-size: clamp(38px, 5vw, 48px);
	font-weight: 400;
}
.ppaccess-subscribe--template-standalone .ppaccess-order-total {
	display: none;
}
.ppaccess-subscribe--template-standalone_full.ppaccess-subscribe--layout-stepped,
.ppaccess-subscribe--template-standalone_full.ppaccess-subscribe--layout-stepped form {
	max-width: none;
}
.ppaccess-standalone-summary {
	display: flex;
	align-items: flex-start;
	justify-content: center;
	min-height: 100vh;
	background: #f5f4ef;
	border-left: 1px solid #e2ded6;
	padding: clamp(64px, 8vh, 96px) clamp(28px, 4vw, 56px);
}
.ppaccess-standalone-summary .ppaccess-order-summary-panel {
	width: min(360px, 100%);
	margin: 0 auto;
}
.ppaccess-standalone-footer {
	padding: 0 clamp(24px, 4vw, 56px) clamp(18px, 3vw, 28px);
	color: #555;
	font-size: 12px;
	line-height: 1.4;
}
.ppaccess-standalone-page--full .ppaccess-standalone-footer {
	text-align: center;
}
@media (max-width: 840px) {
	.ppaccess-checkout-fullpage {
		grid-template-columns: 1fr;
		min-height: 0;
	}
	.ppaccess-checkout-main {
		padding: 40px 22px;
	}
	.ppaccess-checkout-summary {
		align-items: flex-start;
		border-left: 0;
		border-top: 1px solid #e2ded6;
		padding: 32px 22px 40px;
	}
	.ppaccess-order-summary-panel {
		width: min(560px, 100%);
	}
	.ppaccess-checkout-title {
		font-size: 34px;
	}
	.ppaccess-standalone-page {
		grid-template-columns: 1fr;
	}
	.ppaccess-standalone-left {
		min-height: auto;
	}
	.ppaccess-standalone-main {
		padding: 42px 22px 56px;
	}
	.ppaccess-standalone-page--full .ppaccess-standalone-main {
		padding-top: 34px;
	}
	.ppaccess-standalone-inline-summary {
		margin-bottom: 28px;
		padding: 22px;
	}
	.ppaccess-standalone-summary {
		min-height: 0;
		border-left: 0;
		border-top: 1px solid #e2ded6;
		padding: 32px 22px 40px;
	}
	.ppaccess-standalone-footer {
		padding: 0 22px 24px;
	}
}
@media (max-width: 540px) {
	.ppaccess-standalone-header {
		padding: 22px 20px 0;
	}
	.ppaccess-standalone-brand {
		align-items: flex-start;
		max-width: 100%;
	}
	.ppaccess-standalone-brand-link {
		gap: 10px;
		max-width: 100%;
	}
	.ppaccess-standalone-logo-img {
		max-width: 132px;
		max-height: 48px;
	}
	.ppaccess-subscribe--template-standalone .ppaccess-checkout-title {
		font-size: 34px;
	}
}
.ppaccess-checkout-steps {
	display: flex;
	flex-direction: column;
	border-top: 1px solid #d6d6d6;
}
.ppaccess-checkout-step {
	border-bottom: 1px solid #d6d6d6;
	padding: 0;
}
.ppaccess-checkout-step-header {
	display: grid;
	grid-template-columns: 24px minmax(0, 1fr) auto;
	gap: 10px;
	align-items: start;
	padding: 18px 0;
}
.ppaccess-step-marker {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 22px;
	height: 22px;
	border: 1.5px solid #2454c6;
	border-radius: 999px;
	color: #2454c6;
	font-size: 13px;
	font-weight: 700;
	line-height: 1;
}
.ppaccess-checkout-step.is-active .ppaccess-step-marker {
	background: #2454c6;
	color: #fff;
}
.ppaccess-checkout-step.is-complete .ppaccess-step-marker {
	background: #fff;
	color: #2454c6;
}
.ppaccess-checkout-step.is-locked .ppaccess-step-marker {
	border-color: #2454c6;
	color: #2454c6;
	background: #fff;
}
.ppaccess-checkout-step-header h3 {
	margin: 0;
	color: #151515;
	font-size: 18px;
	line-height: 1.2;
	font-weight: 700;
}
.ppaccess-checkout-step-header p {
	margin: 4px 0 0;
	color: #555;
	font-size: 13px;
	line-height: 1.35;
}
.ppaccess-step-edit {
	padding: 0;
	border: 0;
	background: transparent;
	color: #151515;
	text-decoration: underline;
	font-size: 12px;
	font-weight: 700;
	cursor: pointer;
}
.ppaccess-checkout-step-body {
	display: none;
	padding: 0 0 24px 34px;
}
.ppaccess-checkout-step.is-active .ppaccess-checkout-step-body {
	display: block;
}
.ppaccess-step-button {
	width: 100%;
	margin-top: 18px;
	background: #151515;
	border-radius: 2px;
}
.ppaccess-step-button:hover {
	background: #333;
}
.ppaccess-account-hint {
	margin: 10px 0 0;
	font-size: 13px;
	color: #555;
}
.ppaccess-account-hint.error {
	color: #b91c1c;
}
.ppaccess-payment-choice {
	border: 1px solid #d1d5db;
	border-radius: 3px;
	background: #fff;
	overflow: hidden;
}
.ppaccess-payment-choice-top {
	display: grid;
	grid-template-columns: 22px minmax(0, 1fr) auto;
	gap: 10px;
	align-items: center;
	padding: 16px 18px;
	border-bottom: 1px solid #e5e7eb;
}
.ppaccess-payment-radio {
	width: 20px;
	height: 20px;
	border: 1px solid #151515;
	border-radius: 999px;
	background: radial-gradient(circle at center, #151515 0 4px, transparent 5px);
}
.ppaccess-card-badges {
	display: inline-flex;
	gap: 6px;
	align-items: center;
}
.ppaccess-card-badges span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 34px;
	height: 22px;
	border: 1px solid #d1d5db;
	border-radius: 3px;
	background: #f8fafc;
	color: #2454c6;
	font-size: 10px;
	font-weight: 700;
}
.ppaccess-payment-choice .ppaccess-form-field {
	padding: 16px 18px 18px;
}
.ppaccess-review-panel {
	border: 1px solid #d1d5db;
	border-radius: 3px;
	background: #fbfbfa;
}
.ppaccess-review-panel > div {
	display: flex;
	justify-content: space-between;
	gap: 16px;
	padding: 14px 16px;
	border-bottom: 1px solid #e5e7eb;
}
.ppaccess-review-panel > div:last-child {
	border-bottom: 0;
}
.ppaccess-review-panel span {
	color: #555;
	font-size: 13px;
}
.ppaccess-review-panel strong {
	color: #151515;
	font-size: 14px;
	text-align: right;
}

@media (max-width: 540px) {
	.ppaccess-form-grid { grid-template-columns: 1fr; }
	.ppaccess-checkout-step-header { grid-template-columns: 24px minmax(0, 1fr); }
	.ppaccess-step-edit { grid-column: 2; justify-self: start; }
	.ppaccess-checkout-step-body { padding-left: 0; }
	.ppaccess-payment-choice-top { grid-template-columns: 22px minmax(0, 1fr); }
	.ppaccess-card-badges { grid-column: 2; }
	.ppaccess-review-panel > div { flex-direction: column; gap: 4px; }
	.ppaccess-review-panel strong { text-align: left; }
}

/* =========================================================================
 * Plan grid (inline upsell inside the card, or as tiles inside a modal)
 * ========================================================================= */
.ppaccess-paywall-plans {
	display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 16px; margin-top: 24px;
}
.ppaccess-paywall-card > .ppaccess-paywall-plans {
	margin: 28px 0 40px;
	padding-top: 24px;
	border-top: 1px solid #e5e7eb;
}
.ppaccess-paywall-plan {
	background: #fff; border: 1px solid #e5e7eb; border-radius: 8px;
	padding: 20px; display: flex; flex-direction: column; gap: 8px;
	text-align: center;
}
.ppaccess-paywall-plan-name { margin: 0; font-size: 16px; font-weight: 700; color: #1f2937; }
.ppaccess-paywall-plan-price { margin: 0; font-size: 22px; color: #1f2937; }
.ppaccess-paywall-plan-price strong { font-weight: 700; }
.ppaccess-paywall-plan-interval { font-size: 13px; color: #6b7280; }
.ppaccess-paywall-plan-description { margin: 0; font-size: 13px; color: #4b5563; text-align: left; }
.ppaccess-paywall-plan-features {
	flex: 1;
	display: grid;
	gap: 8px;
	margin: 4px 0 0;
	padding: 0;
	list-style: none !important;
	text-align: left;
}
.ppaccess-paywall-plan-features li {
	list-style: none !important;
	position: relative;
	padding-left: 20px;
	font-size: 13px;
	line-height: 1.4;
	color: #4b5563;
}
.ppaccess-paywall-plan-features li::before {
	content: "";
	position: absolute;
	left: 0;
	top: .4em;
	width: 9px;
	height: 5px;
	border-left: 2px solid #d71920;
	border-bottom: 2px solid #d71920;
	transform: rotate(-45deg);
}
.ppaccess-paywall-plan-cta { margin-top: auto; align-self: stretch; text-align: center; }

/* =========================================================================
 * Modal layout
 * ========================================================================= */
.ppaccess-paywall-modal {
	position: fixed; inset: 0; z-index: 999999;
	display: flex; align-items: center; justify-content: center;
	padding: 20px;
}
.ppaccess-paywall-modal[hidden] { display: none; }
.ppaccess-paywall-modal-backdrop {
	position: absolute; inset: 0; background: rgba(15, 23, 42, .6);
	backdrop-filter: blur(2px);
}
.ppaccess-paywall-modal-card {
	position: relative; max-width: 520px; width: 100%; max-height: 90vh;
	overflow-y: auto; background: #fff; border-radius: 8px; padding: 32px;
	box-shadow: 0 20px 50px rgba(0, 0, 0, .35);
}
.ppaccess-paywall-modal-toplink {
	margin: 0 0 16px 0; padding-bottom: 14px; border-bottom: 1px solid #e5e7eb;
	font-size: 13px; color: #6b7280; text-align: center;
}
.ppaccess-paywall-modal-toplink a { color: #1f2937; text-decoration: underline; }
.ppaccess-paywall-modal-plans {
	display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
	gap: 8px; margin: 18px 0;
}
.ppaccess-paywall-modal-plan {
	display: flex; flex-direction: column; align-items: center; padding: 12px 8px;
	border: 2px solid #e5e7eb; border-radius: 6px; text-decoration: none; color: #1f2937;
	transition: border-color .15s;
}
.ppaccess-paywall-modal-plan:hover { border-color: #1f2937; }
.ppaccess-paywall-modal-plan-name { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: #6b7280; }
.ppaccess-paywall-modal-plan-price { font-size: 18px; font-weight: 700; margin-top: 4px; }
.ppaccess-paywall-modal-plan-interval { font-size: 11px; color: #6b7280; margin-top: 2px; }
.ppaccess-paywall-modal-checkout { margin-top: 16px; }
body.ppaccess-modal-open { overflow: hidden; }

/* =========================================================================
 * Custom color overrides — set via admin color pickers.
 * CSS variables cascade from the root paywall element down to card + button.
 * ========================================================================= */

.ppaccess-paywall[data-custom-colors],
.ppaccess-paywall[data-custom-colors] .ppaccess-paywall-card,
.ppaccess-paywall-modal[data-custom-colors] .ppaccess-paywall-modal-card { background: var(--ppaccess-box-bg, inherit); }

/* The tinted wrapper sits behind the card; without a matching radius its
 * square corners show through the card's rounded ones. Match the card radius
 * (the slideup panel is full-bleed, so leave it square). */
.ppaccess-paywall[data-custom-colors]:not(.ppaccess-paywall--slideup) { border-radius: 14px; }

.ppaccess-paywall[data-custom-colors] .ppaccess-paywall-heading,
.ppaccess-paywall[data-custom-colors] .ppaccess-paywall-subhead,
.ppaccess-paywall[data-custom-colors] .ppaccess-paywall-register-form > p,
.ppaccess-paywall[data-custom-colors] .ppaccess-paywall-register-field label,
.ppaccess-paywall[data-custom-colors] .ppaccess-paywall-register-form label,
.ppaccess-paywall-modal[data-custom-colors] .ppaccess-paywall-heading,
.ppaccess-paywall-modal[data-custom-colors] .ppaccess-paywall-subhead { color: var(--ppaccess-box-text); }

.ppaccess-paywall[data-custom-colors] .ppaccess-paywall-cta,
.ppaccess-paywall[data-custom-colors] .ppaccess-paywall-register-form .ppaccess-paywall-cta,
.ppaccess-paywall[data-custom-colors] .ppaccess-paywall-register-form .ppaccess-button,
.ppaccess-paywall-modal[data-custom-colors] .ppaccess-paywall-cta { background: var(--ppaccess-box-button-bg) !important; box-shadow: none; }

.ppaccess-paywall[data-custom-colors] .ppaccess-paywall-cta,
.ppaccess-paywall[data-custom-colors] .ppaccess-paywall-register-form .ppaccess-paywall-cta,
.ppaccess-paywall[data-custom-colors] .ppaccess-paywall-register-form .ppaccess-button,
.ppaccess-paywall-modal[data-custom-colors] .ppaccess-paywall-cta { color: var(--ppaccess-box-button-text) !important; }

.ppaccess-paywall[data-custom-colors] .ppaccess-paywall-terms { color: var(--ppaccess-box-terms-text, #111827) !important; }
.ppaccess-paywall[data-custom-colors] .ppaccess-recaptcha-legal,
.ppaccess-paywall[data-custom-colors] .ppaccess-recaptcha-legal a { color: #6b7280 !important; }
.ppaccess-paywall[data-custom-colors] .ppaccess-paywall-register-form input { color: #1d2327 !important; background: #fff !important; }
.ppaccess-paywall[data-custom-colors] .ppaccess-paywall-register-field label { color: var(--ppaccess-box-text, #111827); }
.ppaccess-paywall[data-custom-colors] .ppaccess-paywall-register-field input[type="email"] { color: #1d2327; }

/* =========================================================================
 * Style presets — typography + button accent only.
 * The base layout is shared; presets only override visual tokens.
 * ========================================================================= */

/* Economist: dark-blue button, classical serif, tight letter-spacing */
.ppaccess-paywall--preset-economist .ppaccess-paywall-heading,
.ppaccess-paywall--preset-economist .ppaccess-paywall-subhead {
	font-family: "Milo Serif", Georgia, "Times New Roman", serif;
}
.ppaccess-paywall--preset-economist .ppaccess-paywall-heading {
	font-size: 26px; font-weight: 700; letter-spacing: -0.01em; color: #121212;
}
.ppaccess-paywall--preset-economist .ppaccess-paywall-cta {
	background: #1f3a5f !important; color: #fff !important; border-radius: 0; padding: 12px 24px;
	font-weight: 600; letter-spacing: .02em;
}
.ppaccess-paywall--preset-economist .ppaccess-paywall-card { border-top: 3px solid #e3120b; padding-top: 24px; }

/* Wall Street Journal: serif headline, blue Subscribe Now button, sharp corners */
.ppaccess-paywall--preset-wsj .ppaccess-paywall-heading {
	font-family: "Escrow", "Exchange", Georgia, serif; font-size: 30px; font-weight: 700; color: #000;
}
.ppaccess-paywall--preset-wsj .ppaccess-paywall-subhead { font-family: Georgia, serif; color: #5a5a5a; }
.ppaccess-paywall--preset-wsj .ppaccess-paywall-cta {
	background: #0274be !important; color: #fff !important; border-radius: 2px; padding: 12px 32px;
	font-weight: 700; text-transform: none;
}

/* Minimal: pill button, no card border, restrained type */
.ppaccess-paywall--preset-minimal .ppaccess-paywall-card { border: 0; box-shadow: none; padding: 16px 0; }
.ppaccess-paywall--preset-minimal .ppaccess-paywall-heading { font-weight: 600; font-size: 22px; }
.ppaccess-paywall--preset-minimal .ppaccess-paywall-cta {
	background: #000 !important; color: #fff !important; border-radius: 999px; padding: 10px 28px; font-weight: 500;
}

/* FT Classic: single cream card, FT pink accent, slim button */
.ppaccess-paywall--preset-ft-classic { background: transparent; padding: 0; }
/* Hide the white fade-in pseudo-element from the base style — it conflicts
 * with the cream card background. */
.ppaccess-paywall--preset-ft-classic::before { display: none; }
.ppaccess-paywall--preset-ft-classic .ppaccess-paywall-card {
	background: #fff1e5;
	border: 0; box-shadow: none; border-radius: 0;
	padding: 40px 32px;
}
.ppaccess-paywall--preset-ft-classic .ppaccess-paywall-icon {
	background: transparent; color: #990f3d;
}
/* Slide-up: carry the ft-classic cream onto the panel (and the fade), since
 * the panel — not the inner card — is the visible surface when sliding up. */
.ppaccess-slideup-root .ppaccess-paywall--slideup.ppaccess-paywall--preset-ft-classic {
	--ppaccess-slideup-panel: #fff1e5;
}
.ppaccess-paywall--preset-ft-classic .ppaccess-paywall-heading {
	font-family: "Financier Display", "Times New Roman", Georgia, serif;
	font-size: 28px; font-weight: 600; line-height: 1.2; color: #1d1d1b;
	margin-bottom: 10px;
}
.ppaccess-paywall--preset-ft-classic .ppaccess-paywall-subhead {
	color: #66605c; font-size: 15px; line-height: 1.5; margin-bottom: 22px;
}
.ppaccess-paywall--preset-ft-classic .ppaccess-paywall-cta {
	background: #990f3d !important; color: #fff !important;
	border-radius: 0; padding: 12px 28px;
	font-weight: 600; font-size: 14px; letter-spacing: 0;
	border: 0;
}
.ppaccess-paywall--preset-ft-classic .ppaccess-paywall-cta:hover { background: #b30e3f !important; }
.ppaccess-paywall--preset-ft-classic .ppaccess-paywall-secondary {
	color: #66605c; font-size: 13px; margin-top: 14px;
}
.ppaccess-paywall--preset-ft-classic .ppaccess-paywall-secondary a {
	color: #990f3d; text-decoration: underline;
}

/* FT Classic plan tiles — sit inside the same cream card, separated only by a hairline */
.ppaccess-paywall--preset-ft-classic .ppaccess-paywall-plans {
	background: transparent; padding: 24px 0 0;
	border-top: 1px solid #ddd5cc; margin-top: 24px;
}
.ppaccess-paywall--preset-ft-classic .ppaccess-paywall-plan {
	background: #fff8f0; border: 1px solid #ddd5cc; border-radius: 0;
}
.ppaccess-paywall--preset-ft-classic .ppaccess-paywall-plan-name {
	font-family: "Financier Display", Georgia, serif; color: #1d1d1b;
}
.ppaccess-paywall--preset-ft-classic .ppaccess-paywall-plan-price { color: #1d1d1b; }
.ppaccess-paywall--preset-ft-classic .ppaccess-paywall-plan-cta {
	background: #990f3d; color: #fff; border-radius: 0;
}

/* =========================================================================
 * Lead-in fade — the WSJ/NYT-style gradient where the last paragraph fades
 * into the page background. Color comes from --ppaccess-fade-color set
 * inline by the resolver from the admin setting, so it matches the theme.
 * ========================================================================= */
.ppaccess-paywall-leadin {
	position: relative;
	margin-bottom: -32px; /* pull the paywall card up into the fade for a smooth handoff */
	/* Logical property guards against block themes (Blocksy, etc.) injecting
	 * is-layout-flow spacing on this same edge. !important is required too:
	 * block themes emit `:root :where(.wp-site-blocks) > * { margin-block-end: 0 }`
	 * in global styles at the same 0-1-0 specificity as this rule, but loaded
	 * after plugin CSS — so without it they win the tie, the pull-up is zeroed,
	 * and a dead gap is left between the fade and the card. */
	margin-block-end: -32px !important;
	padding-bottom: 32px;
}
.ppaccess-paywall-leadin::after {
	content: "";
	position: absolute;
	left: 0; right: 0; bottom: 0;
	height: 60%;
	pointer-events: none;
	z-index: 2;
	background: linear-gradient(
		to bottom,
		transparent 0%,
		var(--ppaccess-fade-color, #ffffff) 100%
	);
}
/* Zero the card's own top margin so the lead-in's negative margin actually
 * closes the gap — otherwise the card's spacing (its own, or the block theme's
 * `margin-block-start` from `:where(.wp-site-blocks) > *`) cancels the pull-up.
 * Logical + !important for the same cascade reason as the lead-in above. Scoped
 * to a card that directly follows a lead-in, so standalone cards keep spacing. */
.ppaccess-paywall-leadin + .ppaccess-paywall {
	margin-block-start: 0 !important;
}
.ppaccess-preview-frame .ppaccess-paywall--slideup {
	width: auto;
	min-height: 420px;
	margin: 0;
	padding: 64px 24px 80px;
}
.ppaccess-preview-frame .ppaccess-paywall--slideup .ppaccess-paywall-card {
	max-width: 420px;
}

.ppaccess-gift-checkout,
.ppaccess-gift-redemption {
	--ppaccess-gift-ink: #172033;
	--ppaccess-gift-muted: #667085;
	--ppaccess-gift-border: #d9e2ef;
	--ppaccess-gift-soft: #f6f8fc;
	--ppaccess-gift-surface: #ffffff;
	--ppaccess-gift-accent: #0f766e;
	--ppaccess-gift-gold: #b7791f;
	--ppaccess-gift-blue: #1d4ed8;
	box-sizing: border-box;
	padding: 48px 0;
	color: var(--ppaccess-gift-ink);
}
.ppaccess-gift-checkout {
	width: min(760px, calc(100% - 32px));
	margin: 0 auto;
}
.ppaccess-gift-redemption {
	display: grid;
	justify-items: center;
	gap: 22px;
	width: min(760px, calc(100% - 32px)) !important;
	max-width: 760px !important;
	margin: 0 auto !important;
	padding-top: clamp(36px, 7vw, 72px);
}
.ppaccess-gift-checkout *,
.ppaccess-gift-redemption * {
	box-sizing: border-box;
}
.ppaccess-gift-form {
	display: grid;
	grid-template-columns: 1fr;
	gap: 24px;
	align-items: start;
}
.ppaccess-gift-main,
.ppaccess-gift-redeem-form,
.ppaccess-gift-code-form {
	display: grid;
	gap: 16px;
}
.ppaccess-gift-hero {
	position: relative;
	overflow: hidden;
	padding: 30px;
	border: 1px solid var(--ppaccess-gift-border);
	border-radius: 18px;
	background:
		linear-gradient(135deg, #ffffff 0%, #f8fbff 48%, #eff8f4 100%);
	box-shadow: 0 20px 50px rgba(23, 32, 51, 0.08);
}
.ppaccess-gift-hero::before,
.ppaccess-gift-review::before {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	height: 5px;
	background: linear-gradient(90deg, var(--ppaccess-gift-accent), var(--ppaccess-gift-gold), var(--ppaccess-gift-blue));
}
.ppaccess-gift-eyebrow,
.ppaccess-gift-review-kicker {
	margin: 0 0 8px;
	color: var(--ppaccess-gift-accent);
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}
.ppaccess-gift-hero h2 {
	max-width: 620px;
	margin: 0;
	font-size: 34px;
	font-weight: 600;
	line-height: 1.08;
	color: var(--ppaccess-gift-ink);
}
.ppaccess-gift-section,
.ppaccess-gift-summary,
.ppaccess-gift-code-form,
.ppaccess-gift-redeem-form {
	position: relative;
	display: grid;
	gap: 16px;
	padding: 22px;
	border: 1px solid var(--ppaccess-gift-border);
	border-radius: 16px;
	background: var(--ppaccess-gift-surface);
	box-shadow: 0 14px 36px rgba(23, 32, 51, 0.06);
}
.ppaccess-gift-section::before {
	content: attr(data-step);
	position: absolute;
	top: 18px;
	right: 18px;
	display: grid;
	width: 34px;
	height: 34px;
	place-items: center;
	border: 1px solid #cfe8df;
	border-radius: 50%;
	background: #f0faf6;
	color: var(--ppaccess-gift-accent);
	font-size: 12px;
	font-weight: 800;
}
.ppaccess-section-heading {
	padding-right: 48px;
}
.ppaccess-section-heading h3,
.ppaccess-gift-summary h2,
.ppaccess-gift-review h3 {
	margin: 0;
	color: var(--ppaccess-gift-ink);
	font-size: 18px;
	font-weight: 800;
	line-height: 1.25;
}
.ppaccess-gift-checkout .ppaccess-form label,
.ppaccess-gift-redemption .ppaccess-form label {
	display: grid;
	gap: 7px;
	margin: 0;
	color: var(--ppaccess-gift-ink);
	font-weight: 750;
}
.ppaccess-gift-checkout .ppaccess-form label span,
.ppaccess-gift-redemption .ppaccess-form label span {
	font-size: 13px;
	line-height: 1.3;
}
.ppaccess-gift-checkout .ppaccess-form input,
.ppaccess-gift-checkout .ppaccess-form select,
.ppaccess-gift-checkout .ppaccess-form textarea,
.ppaccess-gift-redemption .ppaccess-form input,
.ppaccess-gift-redemption .ppaccess-form select,
.ppaccess-gift-redemption .ppaccess-form textarea {
	width: 100%;
	min-height: 48px;
	border: 1px solid #cfd9e6;
	border-radius: 12px;
	padding: 12px 14px;
	background: #fbfcff;
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.75);
	color: #111827;
	font: inherit;
	transition: border-color 160ms ease, box-shadow 160ms ease, background-color 160ms ease;
}
.ppaccess-gift-checkout .ppaccess-form textarea,
.ppaccess-gift-redemption .ppaccess-form textarea {
	min-height: 118px;
	resize: vertical;
}
.ppaccess-gift-checkout .ppaccess-form input:focus,
.ppaccess-gift-checkout .ppaccess-form select:focus,
.ppaccess-gift-checkout .ppaccess-form textarea:focus,
.ppaccess-gift-redemption .ppaccess-form input:focus,
.ppaccess-gift-redemption .ppaccess-form select:focus,
.ppaccess-gift-redemption .ppaccess-form textarea:focus {
	outline: 0;
	border-color: var(--ppaccess-gift-accent);
	background: #ffffff;
	box-shadow: 0 0 0 4px rgba(15, 118, 110, 0.12);
}
.ppaccess-gift-checkout .ppaccess-form-grid,
.ppaccess-gift-redemption .ppaccess-form-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 14px;
}
.ppaccess-gift-coupon-message {
	min-height: 18px;
	font-size: 13px;
	color: var(--ppaccess-gift-muted);
}
.ppaccess-gift-payment #ppaccess-gift-payment-element {
	min-height: 52px;
	padding: 10px;
	border: 1px dashed #cad6e4;
	border-radius: 14px;
	background: var(--ppaccess-gift-soft);
}
.ppaccess-gift-review {
	position: relative;
	top: auto;
	overflow: hidden;
	padding: 26px 22px 22px;
	border: 1px solid rgba(255, 255, 255, 0.12);
	border-radius: 18px;
	background: #172033;
	color: #ffffff;
	box-shadow: 0 28px 70px rgba(23, 32, 51, 0.22);
}
.ppaccess-gift-review-kicker {
	color: #8dd7c8;
}
.ppaccess-gift-review h3 {
	margin-bottom: 22px;
	color: #ffffff;
	font-size: 26px;
	font-weight: 600;
}
.ppaccess-gift-review dl {
	display: grid;
	gap: 0;
	margin: 0;
}
.ppaccess-gift-review dl div {
	display: grid;
	grid-template-columns: 92px minmax(0, 1fr);
	gap: 12px;
	padding: 14px 0;
	border-top: 1px solid rgba(255, 255, 255, 0.12);
}
.ppaccess-gift-review dt {
	color: #aeb8c7;
	font-size: 13px;
	font-weight: 700;
}
.ppaccess-gift-review dd {
	margin: 0;
	color: #ffffff;
	font-size: 14px;
	font-weight: 750;
	line-height: 1.35;
	text-align: right;
}
.ppaccess-gift-review-total {
	display: flex;
	justify-content: space-between;
	gap: 16px;
	margin: 18px 0;
	padding: 18px 0 0;
	border-top: 1px solid rgba(255, 255, 255, 0.18);
}
.ppaccess-gift-review-total span {
	color: #aeb8c7;
	font-size: 13px;
	font-weight: 800;
	text-transform: uppercase;
}
.ppaccess-gift-review-total strong {
	color: #ffffff;
	font-size: 24px;
	line-height: 1;
	text-align: right;
}
.ppaccess-gift-review-note {
	margin: 0 0 18px;
	color: #cbd5e1;
	font-size: 13px;
	line-height: 1.5;
}
.ppaccess-gift-review .ppaccess-button {
	width: 100%;
	min-height: 52px;
	border: 0;
	border-radius: 14px;
	background: #f6c453;
	color: #172033;
	font-weight: 900;
	box-shadow: 0 12px 28px rgba(246, 196, 83, 0.24);
}
.ppaccess-gift-review .ppaccess-button:hover,
.ppaccess-gift-review .ppaccess-button:focus {
	background: #ffd66e;
	color: #172033;
}
.ppaccess-gift-message {
	margin-bottom: 16px;
	padding: 14px 16px;
	border: 1px solid #bfdbfe;
	border-radius: 12px;
	background: #eff6ff;
	color: #1e3a8a;
	font-weight: 700;
}
.ppaccess-gift-message.is-success,
.ppaccess-gift-coupon-message.is-success {
	color: #166534;
}
.ppaccess-gift-coupon-message.is-pending {
	color: var(--ppaccess-gift-muted);
}
.ppaccess-gift-message.is-error,
.ppaccess-gift-coupon-message.is-error {
	color: #991b1b;
}
.ppaccess-gift-message.is-error {
	border-color: #fecaca;
	background: #fef2f2;
}
.ppaccess-gift-summary {
	margin-bottom: 18px;
	background:
		linear-gradient(135deg, #ffffff 0%, #f8fbff 100%);
}
.ppaccess-gift-summary p {
	margin: 0;
	color: var(--ppaccess-gift-muted);
}
.ppaccess-gift-summary blockquote {
	margin: 14px 0 0;
	padding: 12px 0 12px 16px;
	border-left: 4px solid var(--ppaccess-gift-accent);
	color: #334155;
	font-size: 18px;
	line-height: 1.45;
}
.ppaccess-gift-redemption .ppaccess-gift-message,
.ppaccess-gift-redemption .ppaccess-empty,
.ppaccess-gift-redemption .ppaccess-gift-summary,
.ppaccess-gift-redemption .ppaccess-gift-redeem-form {
	width: min(620px, 100%) !important;
	max-width: 620px !important;
	margin-right: auto !important;
	margin-left: auto !important;
}
.ppaccess-gift-redemption .ppaccess-gift-summary {
	overflow: hidden;
	gap: 12px;
	padding: 34px 34px 30px;
	border-radius: 8px;
	background:
		linear-gradient(180deg, rgba(255, 255, 255, .96), rgba(255, 255, 255, .9)),
		linear-gradient(135deg, rgba(15, 118, 110, .12), rgba(183, 121, 31, .1));
	box-shadow: 0 24px 70px rgba(23, 32, 51, .1);
	text-align: center;
}
.ppaccess-gift-redemption .ppaccess-gift-summary::before {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	height: 5px;
	background: linear-gradient(90deg, var(--ppaccess-gift-accent), var(--ppaccess-gift-gold), var(--ppaccess-gift-blue));
}
.ppaccess-gift-redemption .ppaccess-gift-summary h2 {
	max-width: 520px;
	margin: 0 auto;
	font-size: clamp(28px, 4vw, 40px);
	font-weight: 600;
	line-height: 1.1;
}
.ppaccess-gift-redemption .ppaccess-gift-summary p {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	justify-self: center;
	min-height: 32px;
	margin: 4px 0 0;
	padding: 6px 12px;
	border: 1px solid #d9e2ef;
	border-radius: 999px;
	background: #ffffff;
	color: #475569;
	font-size: 14px;
	font-weight: 700;
}
.ppaccess-gift-redemption .ppaccess-gift-summary blockquote {
	width: min(500px, 100%);
	margin: 8px auto 0;
	padding: 18px 20px;
	border: 0;
	border-radius: 8px;
	background: #f8fafc;
	color: #263241;
	font-size: 17px;
	line-height: 1.55;
	text-align: left;
	box-shadow: inset 4px 0 0 var(--ppaccess-gift-accent);
}
.ppaccess-gift-personal-note {
	width: min(500px, 100%);
	margin: 16px auto 0;
	text-align: left;
}
.ppaccess-gift-personal-note > span {
	display: block;
	color: #64748b;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: .08em;
	line-height: 1.3;
	text-transform: uppercase;
}
.ppaccess-gift-code-form {
	width: min(460px, 100%);
	margin: 0 auto;
	text-align: center;
}
.ppaccess-gift-code-form label {
	text-align: center;
}
.ppaccess-gift-code-form button[type="submit"],
.ppaccess-gift-redeem-form button[type="submit"] {
	min-height: 50px;
}
.ppaccess-gift-redemption .ppaccess-gift-redeem-form {
	gap: 18px;
	padding: 28px;
	border-radius: 8px;
	background: #ffffff;
	box-shadow: 0 20px 60px rgba(23, 32, 51, .08);
	justify-self: center;
}
.ppaccess-gift-redemption .ppaccess-gift-redeem-form button[type="submit"] {
	width: 100%;
	min-height: 54px;
	font-size: 15px;
	font-weight: 800;
}
.ppaccess-gift-code-form button[type="submit"] {
	justify-self: center;
	min-width: 180px;
}
.ppaccess-gift-code-form button[type="submit"]:disabled,
.ppaccess-gift-redeem-form button[type="submit"]:disabled {
	cursor: not-allowed;
	opacity: .6;
}
@media (max-width: 900px) {
	.ppaccess-gift-checkout,
	.ppaccess-gift-redemption {
		width: min(100% - 24px, 720px);
		padding: 32px 0;
	}
}
@media (max-width: 640px) {
	.ppaccess-gift-hero,
	.ppaccess-gift-section,
	.ppaccess-gift-summary,
	.ppaccess-gift-code-form,
	.ppaccess-gift-redeem-form,
	.ppaccess-gift-review {
		border-radius: 14px;
		padding: 18px;
	}
	.ppaccess-gift-hero h2 {
		font-size: 28px;
	}
	.ppaccess-gift-checkout .ppaccess-form-grid,
	.ppaccess-gift-redemption .ppaccess-form-grid,
	.ppaccess-gift-coupon-row {
		grid-template-columns: 1fr;
	}
	.ppaccess-gift-review dl div {
		grid-template-columns: 1fr;
		gap: 4px;
	}
	.ppaccess-gift-review dd {
		text-align: left;
	}
}

/* Gift subscriptions reuse the main checkout shell. Keep gift-specific rules
 * limited to fields and live summary content that regular checkout does not have.
 */
.ppaccess-gift-checkout.ppaccess-subscribe--template-full_page {
	width: 100vw;
	max-width: none;
	margin: 0 calc(50% - 50vw);
	padding: 0;
	color: #151515;
	font-family: inherit;
}
.ppaccess-gift-checkout .ppaccess-gift-form {
	display: block;
	max-width: 100%;
	margin: 0;
}
.ppaccess-gift-checkout .ppaccess-checkout-fullpage {
	min-height: clamp(760px, 78vh, 1080px);
}
.ppaccess-gift-checkout .ppaccess-checkout-form-wrap {
	width: min(640px, 100%);
}
.ppaccess-gift-checkout--template-default {
	max-width: 720px;
	margin: 32px auto;
	padding: 0 20px;
	color: #151515;
	font-family: inherit;
}
.ppaccess-gift-checkout--template-default .ppaccess-gift-form {
	display: block;
	max-width: 720px;
	margin: 0 auto;
}
.ppaccess-gift-checkout--template-default h2 {
	margin: 0 0 28px;
	color: #151515;
	font-size: 30px;
	font-weight: 700;
	line-height: 1.18;
}
.ppaccess-gift-inline-summary {
	margin: 0 0 28px;
	padding: 20px;
	border: 1px solid #e2ded6;
	border-radius: 4px;
	background: #f5f4ef;
}
.ppaccess-gift-inline-summary .ppaccess-order-summary-panel {
	width: 100%;
	margin: 0;
}
.ppaccess-gift-inline-summary .ppaccess-order-summary-includes {
	margin-top: 18px;
	padding-top: 18px;
	border-top: 1px solid #e2ded6;
}
.ppaccess-gift-checkout .ppaccess-form-field select,
.ppaccess-gift-checkout .ppaccess-form-field input[type=date],
.ppaccess-gift-checkout .ppaccess-form-field textarea {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid #d1d5db;
	border-radius: 6px;
	background: #fff;
	color: #1f2937;
	font-size: 14px;
	transition: border-color .15s ease, box-shadow .15s ease;
}
.ppaccess-gift-checkout .ppaccess-form-field select,
.ppaccess-gift-checkout .ppaccess-form-field input[type=date] {
	min-height: 42px;
}
.ppaccess-gift-checkout .ppaccess-form-field textarea {
	min-height: 116px;
	resize: vertical;
}
.ppaccess-gift-checkout .ppaccess-form-field select:focus,
.ppaccess-gift-checkout .ppaccess-form-field input[type=date]:focus,
.ppaccess-gift-checkout .ppaccess-form-field textarea:focus {
	outline: 0;
	border-color: #1e2747;
	box-shadow: 0 0 0 3px rgba(30, 39, 71, .12);
}
.ppaccess-gift-coupon-message {
	min-height: 18px;
	margin: 0;
	color: #555;
	font-size: 13px;
	line-height: 1.35;
}
.ppaccess-gift-coupon-message.is-success {
	color: #15803d;
}
.ppaccess-gift-coupon-message.is-pending {
	color: #64748b;
}
.ppaccess-gift-coupon-message.is-error {
	color: #b91c1c;
}
.ppaccess-gift-checkout .ppaccess-gift-card-element {
	min-height: 44px;
	margin: 0;
}
.ppaccess-gift-checkout .ppaccess-payment-choice .ppaccess-payment-element {
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0;
	border: 0;
	border-radius: 0;
	background: #fff;
	min-height: 94px;
	padding: 18px 20px;
	text-align: center;
}
.ppaccess-gift-checkout .ppaccess-payment-choice .ppaccess-payment-element.is-ready {
	display: block;
	min-height: 0;
	padding: 16px 20px 20px;
	text-align: left;
}
.ppaccess-gift-checkout .ppaccess-gift-message {
	width: min(640px, calc(100% - 44px));
	margin: 20px auto;
	padding: 14px 16px;
	border: 1px solid #bfdbfe;
	border-radius: 6px;
	background: #eff6ff;
	color: #1e3a8a;
	font-size: 14px;
	font-weight: 600;
}
.ppaccess-gift-checkout .ppaccess-gift-message.is-success {
	border-color: #bbf7d0;
	background: #f0fdf4;
	color: #166534;
}
.ppaccess-gift-checkout .ppaccess-gift-message.is-error {
	border-color: #fecaca;
	background: #fef2f2;
	color: #991b1b;
}
.ppaccess-gift-message p {
	margin: 0;
}
.ppaccess-gift-message p + p {
	margin-top: 10px;
}
.ppaccess-gift-success-detail {
	display: grid;
	gap: 4px;
}
.ppaccess-gift-success-detail span {
	color: inherit;
	font-size: 12px;
	font-weight: 700;
	text-transform: uppercase;
	opacity: .72;
}
.ppaccess-gift-success-detail code,
.ppaccess-gift-success-detail a {
	overflow-wrap: anywhere;
	font-size: 13px;
	font-weight: 700;
}
.ppaccess-gift-success-note {
	color: #92400e;
	font-size: 13px;
	font-weight: 600;
}
.ppaccess-gift-checkout .ppaccess-gift-review {
	position: static;
	overflow: visible;
	align-items: flex-start;
	padding: clamp(40px, 6vw, 84px) clamp(28px, 5vw, 64px);
	border: 0;
	border-left: 1px solid #e2ded6;
	border-radius: 0;
	background: #f5f4ef;
	box-shadow: 100vmax 0 0 100vmax #f5f4ef;
	clip-path: inset(0 -100vmax 0 0);
	color: #151515;
}
.ppaccess-gift-checkout .ppaccess-gift-review::before {
	display: none;
}
.ppaccess-gift-checkout .ppaccess-gift-review h2 {
	color: #151515;
	font-family: inherit;
	font-size: 18px;
	font-weight: 700;
	line-height: 1.3;
}
.ppaccess-gift-total {
	display: flex;
	justify-content: space-between;
	gap: 20px;
	margin-top: 24px;
	padding-top: 18px;
	border-top: 1px solid #e2ded6;
	color: #151515;
}
.ppaccess-gift-total span {
	color: #555;
	font-size: 13px;
	font-weight: 700;
}
.ppaccess-gift-total strong {
	color: #151515;
	font-size: 20px;
	text-align: right;
}
@media (max-width: 840px) {
	.ppaccess-gift-checkout .ppaccess-gift-review {
		border-left: 0;
		border-top: 1px solid #e2ded6;
		padding: 32px 22px 40px;
	}
}
@media (max-width: 540px) {
	.ppaccess-gift-checkout .ppaccess-gift-message {
		width: calc(100% - 40px);
	}
	.ppaccess-gift-total {
		flex-direction: column;
		gap: 4px;
	}
	.ppaccess-gift-total strong {
		text-align: left;
	}
}

/* TOS banner + checkbox */
.ppaccess-tos-banner {
	margin: 16px 0 12px;
	padding: 14px 16px;
	background: #fefce8;
	border: 1px solid #fde047;
	border-radius: 6px;
	font-size: 14px;
	line-height: 1.6;
}
.ppaccess-tos-banner a { color: inherit; text-decoration: underline; }
.ppaccess-tos-label {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin: 0 0 16px;
	font-size: 14px;
	line-height: 1.5;
	cursor: pointer;
}
.ppaccess-tos-checkbox {
	flex-shrink: 0;
	width: 18px;
	height: 18px;
	margin-top: 2px;
	cursor: pointer;
}

/* ---------------------------------------------------------------------------
 * Gift article links — the in-article "Gift this article" control and the
 * gift history table on the account page.
 *
 * This markup lands inside the theme's post content, where themes style bare
 * `button`, `svg`, `table` and `input` elements freely (Blocksy paints every
 * in-content button with the palette colour, for one). So the same defensive
 * pattern the plugin's own buttons use applies here: `element.class`
 * selectors, and !important on the handful of properties themes fight over.
 * ------------------------------------------------------------------------ */
.ppaccess-agift {
	/* Bottom only. The shorthand also wrote margin-left/right: 0, which beat the
	   block-theme rule that centres children of a constrained layout —
	   `.is-layout-constrained > :where(…)` carries !important too, but :where()
	   scores zero, so equal specificity fell to source order and this file
	   loads last. The card ended up flush left while the article stayed
	   centred. Leaving the inline margins alone lets the theme place it. */
	margin-bottom: 24px !important;
	padding: 16px 18px !important;
	border: 1px solid #e5e7eb !important;
	border-radius: 8px !important;
	background: #f9fafb !important;
	color: #1f2937;
	font-size: 14px;
	line-height: 1.5;
}
.ppaccess-agift-bar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px 14px;
}

/* Rides on .ppaccess-button--secondary for its colours; this only adds the
 * icon layout the base button rule doesn't cover. */
.ppaccess-agift .ppaccess-agift-trigger,
button.ppaccess-agift-trigger {
	display: inline-flex !important;
	align-items: center;
	gap: 8px;
	padding: 8px 16px;
	font-size: 14px;
	font-weight: 600;
}
.ppaccess-agift .ppaccess-agift-trigger svg {
	width: 18px !important;
	height: 18px !important;
	flex: 0 0 auto;
	margin: 0;
	vertical-align: middle;
}
.ppaccess-agift .ppaccess-agift-quota {
	font-size: 13px;
	opacity: .7;
}

.ppaccess-agift-panel {
	margin-top: 16px;
	padding-top: 16px;
	border-top: 1px solid #e5e7eb;
}
.ppaccess-agift-panel[hidden] { display: none; }
.ppaccess-agift .ppaccess-agift-help {
	margin: 0 0 14px !important;
	font-size: 13px;
	line-height: 1.55;
	opacity: .8;
}
.ppaccess-agift .ppaccess-agift-label {
	display: block;
	margin: 0 0 6px !important;
	font-size: 13px;
	font-weight: 600;
}
.ppaccess-agift-form,
.ppaccess-agift-link-row {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 10px;
}
.ppaccess-agift-form .ppaccess-agift-label { width: 100%; margin-bottom: 0 !important; }
.ppaccess-agift .ppaccess-input {
	flex: 1 1 240px;
	min-width: 0;
	margin: 0 !important;
}
.ppaccess-agift .ppaccess-button { flex: 0 0 auto; }
.ppaccess-agift-result { margin-top: 16px; }
.ppaccess-agift-result[hidden] { display: none; }
.ppaccess-agift .ppaccess-agift-message { margin: 0; font-size: 13px; }
.ppaccess-agift .ppaccess-agift-message:not(:empty) { margin-top: 12px !important; }
.ppaccess-agift .ppaccess-agift-message.is-error { color: #b91c1c; }

/* Gift history on the account page. Rendered as a list rather than a table so
 * themes have nothing to paint borders and striping onto. */
.ppaccess-agift-summary {
	display: flex;
	align-items: center;
	gap: 14px;
	margin: 0 0 14px;
}
.ppaccess-agift-count {
	display: flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 48px;
	height: 48px;
	border-radius: 12px;
	background: #eef2ff !important;
	color: #1e2747 !important;
	font-size: 21px;
	font-weight: 700;
	line-height: 1;
}
.ppaccess-agift-count--empty {
	background: #f3f4f6 !important;
	color: #6b7280 !important;
}
.ppaccess-agift-summary-text {
	display: flex;
	flex-direction: column;
	gap: 2px;
	line-height: 1.35;
}
.ppaccess-agift-summary-text strong { font-size: 15px; font-weight: 600; color: #0f172a; }
.ppaccess-agift-summary-text span { font-size: 13px; color: #64748b; }

.ppaccess-agift-empty { margin: 0 !important; font-size: 14px; color: #64748b; }

ul.ppaccess-agift-list {
	list-style: none !important;
	margin: 16px 0 0 !important;
	padding: 0 !important;
	border-top: 1px solid #eef0f4;
}
li.ppaccess-agift-item {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 16px;
	margin: 0 !important;
	padding: 12px 0 !important;
	list-style: none !important;
	border-bottom: 1px solid #eef0f4;
}
li.ppaccess-agift-item::before,
li.ppaccess-agift-item::marker { content: none; }
.ppaccess-agift-item-main { min-width: 0; }
.ppaccess-agift-item-title {
	display: block;
	font-size: 15px;
	font-weight: 600;
	line-height: 1.35;
	color: #1e2747;
	text-decoration: none;
}
.ppaccess-agift-item-title:hover { text-decoration: underline; }
.ppaccess-agift-item-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px 8px;
	margin: 6px 0 0 !important;
	font-size: 13px;
	line-height: 1.4;
}
.ppaccess-agift-item-to { color: #64748b; word-break: break-word; }

.ppaccess-agift-pill {
	display: inline-block;
	padding: 2px 9px;
	border-radius: 999px;
	background: #f1f5f9;
	color: #475569;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .01em;
	white-space: nowrap;
}
/* Unopened is the only state the subscriber can still act on, so it is the
 * only one that gets a colour. */
.ppaccess-agift-pill--active { background: #fef3c7; color: #92400e; }
.ppaccess-agift-pill--redeemed { background: #dcfce7; color: #166534; }

.ppaccess-agift-revoke,
button.ppaccess-agift-revoke {
	flex: 0 0 auto;
	margin: 2px 0 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: none !important;
	box-shadow: none !important;
	color: #dc2626 !important;
	font: inherit;
	font-size: 13px;
	line-height: 1.4;
	cursor: pointer;
	-webkit-appearance: none;
	appearance: none;
}
.ppaccess-agift-revoke:hover:not(:disabled) { text-decoration: underline; }
.ppaccess-agift-revoke:disabled { opacity: .5; cursor: default; }

@media (max-width: 560px) {
	.ppaccess-agift .ppaccess-agift-trigger,
	.ppaccess-agift .ppaccess-input,
	.ppaccess-agift-form .ppaccess-button,
	.ppaccess-agift-link-row .ppaccess-button {
		width: 100%;
		justify-content: center;
	}
	li.ppaccess-agift-item {
		flex-direction: column;
		gap: 8px;
	}
}
