/* ============================================================
   JL Planners — planner-shell.css
   Foundation styles for the planner suite. Polish romantic-luxury,
   elevated: warm paper, champagne & soft gold, deep ink, editorial
   spacing, quiet micro-motion. Mobile-first. Scoped under .jlp so it
   never collides with the theme. Loaded only on planner routes.
   ============================================================ */

/* ---------- Design tokens ---------- *
 * Refreshed palette ("Atelier"): warm ivory paper, espresso ink as the primary
 * action colour, refined metallic gold reserved for hairlines & small detail,
 * a soft bordeaux for premium emphasis. All text pairs meet WCAG AA. See
 * /design-system/MASTER.md. Variable names are intentionally unchanged. */
.jlp {
	/* Surfaces & paper */
	--jlp-bg:          #FAF6EE;
	--jlp-bg-deep:     #F3EBDC;
	--jlp-surface:     #FFFFFF;
	--jlp-surface-2:   #FCF8F1;
	--jlp-veil:        #FFFCF7;

	/* Romantic accents */
	--jlp-blush:       #FBEEEC;
	--jlp-blush-deep:  #F3DDD9;
	--jlp-cream:       #F3EBDC;
	--jlp-rose:        #E4BFBE;
	--jlp-rose-deep:   #9C4452;   /* now a deep bordeaux — used for emphasis & required marks */
	--jlp-champagne:   #E6D4AE;
	--jlp-gold:        #A98C52;   /* metallic detail: hairlines, dividers, small icon accents */
	--jlp-gold-deep:   #7A5C28;   /* gold used as text/links inside .jlp (AA on white) */
	--jlp-gold-glow:   rgba(169,140,82,0.20);

	/* Ink */
	--jlp-ink:         #241C15;   /* primary text + primary CTA background */
	--jlp-ink-soft:    #564A40;
	--jlp-ink-mute:    #85786B;
	--jlp-ink-faint:   #B3A799;

	/* Lines (neutral taupe hairlines — cleaner than gold-tinted) */
	--jlp-line:        rgba(36,28,21,0.10);
	--jlp-line-soft:   rgba(36,28,21,0.055);
	--jlp-line-strong: rgba(36,28,21,0.20);

	/* States */
	--jlp-ok:          #2E7D33;
	--jlp-ok-bg:       #EDF6ED;
	--jlp-ok-line:     #C3E0C4;
	--jlp-warn:        #8A5A0E;
	--jlp-warn-bg:     #FAF1DF;
	--jlp-warn-line:   #E8D2A1;
	--jlp-error:       #B3261E;
	--jlp-error-bg:    #FBEAE8;
	--jlp-error-line:  #EFC1BD;

	/* Radii */
	--jlp-r-xs:        6px;
	--jlp-r-sm:        9px;
	--jlp-r:           13px;
	--jlp-r-lg:        18px;
	--jlp-r-xl:        24px;
	--jlp-r-pill:      999px;

	/* Shadows (soft, layered) */
	--jlp-sh-1: 0 1px 2px rgba(43,32,26,0.05), 0 2px 6px -2px rgba(43,32,26,0.07);
	--jlp-sh-2: 0 2px 4px rgba(43,32,26,0.05), 0 10px 24px -12px rgba(43,32,26,0.16);
	--jlp-sh-3: 0 4px 10px rgba(43,32,26,0.06), 0 24px 50px -22px rgba(43,32,26,0.24);
	--jlp-sh-4: 0 8px 18px rgba(43,32,26,0.08), 0 40px 80px -28px rgba(43,32,26,0.30);
	--jlp-sh-ring: 0 0 0 2px var(--jlp-surface), 0 0 0 4px var(--jlp-gold), 0 0 0 7px var(--jlp-gold-glow);

	/* Type */
	--jlp-ff-display: "Cormorant Garamond","EB Garamond",Georgia,"Times New Roman",serif;
	--jlp-ff-body:    "Manrope",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,Helvetica,Arial,sans-serif;

	/* Motion */
	--jlp-ease:       cubic-bezier(.22,.61,.36,1);
	--jlp-ease-out:   cubic-bezier(.16,1,.3,1);
	--jlp-dur:        .24s;
	--jlp-dur-slow:   .42s;

	/* Layout */
	--jlp-max:        1200px;
	--jlp-gutter:     clamp(16px, 4vw, 40px);

	max-width: var(--jlp-max);
	margin: 0 auto;
	padding: clamp(20px, 3.4vw, 44px) var(--jlp-gutter) clamp(56px, 8vw, 104px);
	font-family: var(--jlp-ff-body);
	color: var(--jlp-ink);
	font-size: 16px;
	line-height: 1.62;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}
.jlp *, .jlp *::before, .jlp *::after { box-sizing: border-box; }
.jlp img, .jlp svg { max-width: 100%; }
.jlp img { height: auto; display: block; }
.jlp ::selection { background: var(--jlp-blush-deep); color: var(--jlp-ink); }

/* Atmospheric backdrop on the planner pages — a warm wash + faint paper grain.
   Painted on the <body> wrapper added by the theme; harmless if absent. */
body.jlp-route {
	background-color: var(--jlp-bg, #FAF6EE);
	background-image:
		radial-gradient(58rem 40rem at 10% -10%, rgba(228,191,190,0.14), transparent 62%),
		radial-gradient(50rem 38rem at 100% -4%, rgba(230,212,174,0.16), transparent 58%);
	background-attachment: fixed;
}

/* ---------- Typography ---------- */
.jlp-display {
	font-family: var(--jlp-ff-display);
	font-weight: 500;
	line-height: 1.04;
	letter-spacing: -0.012em;
	font-size: clamp(2.1rem, 4.6vw, 3.5rem);
	margin: 0 0 0.38em;
	color: var(--jlp-ink);
}
.jlp-display--sm { font-size: clamp(1.55rem, 3vw, 2.25rem); }
.jlp-display--xs { font-size: clamp(1.3rem, 2.4vw, 1.7rem); }
.jlp-display em { font-style: italic; color: var(--jlp-gold-deep); }
.jlp-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.55em;
	font-family: var(--jlp-ff-body);
	font-weight: 600;
	font-size: 0.7rem;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--jlp-gold-deep);
	margin: 0 0 0.85em;
}
.jlp-eyebrow::before {
	content: "";
	width: 1.6em; height: 1px;
	background: currentColor;
	opacity: .6;
}
.jlp-eyebrow--plain::before { display: none; }
.jlp-eyebrow a { color: inherit; text-decoration: none; }
.jlp-lead { font-size: clamp(1rem, 1.4vw, 1.12rem); color: var(--jlp-ink-soft); max-width: 62ch; margin: 0; }
.jlp-muted { color: var(--jlp-ink-mute); }
.jlp-small { font-size: 0.86rem; }
.jlp a { color: var(--jlp-gold-deep); text-underline-offset: 2px; transition: color var(--jlp-dur) var(--jlp-ease); }
.jlp a:hover { color: var(--jlp-ink); }
.jlp hr { border: 0; border-top: 1px solid var(--jlp-line); margin: clamp(20px,3vw,32px) 0; }
.jlp h2, .jlp h3, .jlp h4 { color: var(--jlp-ink); }
.screen-reader-text {
	position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

/* ---------- Buttons ---------- */
.jlp-btn {
	--btn-bg: var(--jlp-surface);
	--btn-fg: var(--jlp-ink);
	--btn-bd: var(--jlp-line-strong);
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5em;
	font-family: var(--jlp-ff-body);
	font-weight: 600;
	font-size: 0.95rem;
	line-height: 1.1;
	padding: 0.82em 1.4em;
	min-height: 44px;
	border-radius: var(--jlp-r-sm);
	border: 1px solid var(--btn-bd);
	background: var(--btn-bg);
	color: var(--btn-fg);
	cursor: pointer;
	text-decoration: none;
	white-space: nowrap;
	transition: transform var(--jlp-dur) var(--jlp-ease), box-shadow var(--jlp-dur) var(--jlp-ease),
		background-color var(--jlp-dur) var(--jlp-ease), color var(--jlp-dur) var(--jlp-ease), border-color var(--jlp-dur) var(--jlp-ease), filter var(--jlp-dur) var(--jlp-ease);
	overflow: hidden;
	isolation: isolate;
}
.jlp-btn:hover { transform: translateY(-1px); }
.jlp-btn:active { transform: translateY(0); }
.jlp-btn:focus-visible { outline: none; box-shadow: var(--jlp-sh-ring); }
.jlp-btn:disabled, .jlp-btn[disabled], .jlp-btn.is-disabled { opacity: .55; cursor: not-allowed; transform: none !important; box-shadow: none !important; }

/* Primary = solid espresso ink. One per view. High contrast, modern, "expensive". */
.jlp-btn--primary {
	--btn-bg: var(--jlp-ink);
	--btn-fg: #FBF6EE;
	--btn-bd: transparent;
	box-shadow: var(--jlp-sh-1);
}
.jlp-btn--primary:hover { box-shadow: var(--jlp-sh-2); filter: brightness(1.18); }
.jlp-btn--primary:active { filter: brightness(1.05); }
/* Secondary = outlined gold on surface. */
.jlp-btn--secondary {
	--btn-bg: var(--jlp-surface);
	--btn-fg: var(--jlp-gold-deep);
	--btn-bd: var(--jlp-gold);
	box-shadow: var(--jlp-sh-1);
}
.jlp-btn--secondary:hover { --btn-bg: var(--jlp-blush); box-shadow: var(--jlp-sh-2); }
.jlp-btn--ghost { --btn-bg: transparent; --btn-fg: var(--jlp-ink); --btn-bd: var(--jlp-line-strong); }
.jlp-btn--ghost:hover { --btn-bg: var(--jlp-surface-2); border-color: var(--jlp-gold); }
.jlp-btn--soft { --btn-bg: var(--jlp-blush); --btn-fg: var(--jlp-gold-deep); --btn-bd: transparent; }
.jlp-btn--soft:hover { --btn-bg: var(--jlp-blush-deep); }
.jlp-btn--link { --btn-bg: transparent; --btn-bd: transparent; --btn-fg: var(--jlp-gold-deep); min-height: 0; padding: 0.2em 0; text-decoration: underline; }
.jlp-btn--link:hover { --btn-fg: var(--jlp-ink); transform: none; }
.jlp-btn--danger { --btn-bg: transparent; --btn-fg: var(--jlp-error); --btn-bd: var(--jlp-error-line); }
.jlp-btn--danger:hover { --btn-bg: var(--jlp-error-bg); }

.jlp-btn--sm { font-size: 0.85rem; padding: 0.6em 1em; min-height: 38px; border-radius: var(--jlp-r-xs); }
.jlp-btn--lg { font-size: 1.02rem; padding: 0.95em 1.7em; min-height: 50px; }
.jlp-btn--block { width: 100%; }
.jlp-btn__icon { display: inline-flex; }
.jlp-btn__icon svg { width: 1.05em; height: 1.05em; display: block; }

/* Loading state: hides label, shows a centred spinner. */
.jlp-btn.is-loading { color: transparent !important; pointer-events: none; }
.jlp-btn.is-loading::before {
	content: ""; position: absolute; inset: 0; margin: auto;
	width: 1.05em; height: 1.05em; border-radius: 50%;
	border: 2px solid currentColor; border-top-color: transparent;
	color: var(--btn-fg, #fff);
	animation: jlp-spin .6s linear infinite;
}
.jlp-btn--primary.is-loading::before { color: #FBF6EE; }
.jlp-btn--secondary.is-loading::before { color: var(--jlp-gold-deep); }
@keyframes jlp-spin { to { transform: rotate(360deg); } }

.jlp-btn-row { display: flex; flex-wrap: wrap; gap: 10px; }
.jlp-btn-row--end { justify-content: flex-end; }

/* ---------- Breadcrumbs ---------- */
.jlp-breadcrumbs { margin: 0 0 clamp(14px, 2vw, 22px); }
.jlp-breadcrumbs__list { list-style: none; display: flex; flex-wrap: wrap; align-items: center; gap: 0; margin: 0; padding: 0; font-size: 0.8rem; }
.jlp-breadcrumbs__item { display: inline-flex; align-items: center; color: var(--jlp-ink-mute); }
.jlp-breadcrumbs__link { color: var(--jlp-ink-mute); text-decoration: none; padding: 4px 0; }
.jlp-breadcrumbs__link:hover { color: var(--jlp-gold-deep); text-decoration: underline; }
.jlp-breadcrumbs__sep { margin: 0 0.55em; color: var(--jlp-ink-faint); }
.jlp-breadcrumbs__current { color: var(--jlp-ink-soft); font-weight: 600; padding: 4px 0; }

/* ---------- Trust strip ---------- */
.jlp-trust { margin-top: clamp(16px, 2.4vw, 24px); }
.jlp-trust__list {
	list-style: none; margin: 0; padding: 12px clamp(14px,2vw,20px);
	display: flex; flex-wrap: wrap; gap: 8px clamp(14px,2.4vw,28px);
	background: var(--jlp-surface);
	border: 1px solid var(--jlp-line);
	border-radius: var(--jlp-r);
	box-shadow: var(--jlp-sh-1);
}
.jlp-trust__item { display: inline-flex; align-items: center; gap: 0.5em; font-size: 0.86rem; font-weight: 600; color: var(--jlp-ink-soft); }
.jlp-trust__check {
	display: inline-flex; align-items: center; justify-content: center;
	width: 1.35em; height: 1.35em; border-radius: 50%;
	background: var(--jlp-blush); color: var(--jlp-gold-deep);
}
.jlp-trust__note { margin: 8px 2px 0; font-size: 0.78rem; color: var(--jlp-ink-mute); }

/* ---------- Section frame (used by editors + content) ---------- */
.jlp-section {
	background: var(--jlp-surface);
	border: 1px solid var(--jlp-line);
	border-radius: var(--jlp-r-lg);
	box-shadow: var(--jlp-sh-1);
	padding: clamp(18px, 2.6vw, 28px);
	margin: 0 0 clamp(16px, 2.4vw, 24px);
}
.jlp-section--flush { box-shadow: none; }
.jlp-section__head { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: baseline; justify-content: space-between; margin-bottom: 14px; }
.jlp-section__title { font-family: var(--jlp-ff-display); font-weight: 500; font-size: clamp(1.25rem,2vw,1.6rem); margin: 0; }
.jlp-section__hint { font-size: 0.86rem; color: var(--jlp-ink-mute); margin: 4px 0 0; }
.jlp-section__num {
	display: inline-flex; align-items: center; justify-content: center;
	width: 1.7em; height: 1.7em; margin-right: 0.55em; border-radius: 50%;
	background: var(--jlp-blush); color: var(--jlp-gold-deep);
	font-family: var(--jlp-ff-body); font-weight: 700; font-size: 0.78rem;
}

/* Onboarding card at the top of editors */
.jlp-onboard {
	display: flex; gap: clamp(14px,2vw,20px); align-items: flex-start;
	background: linear-gradient(135deg, var(--jlp-blush) 0%, var(--jlp-veil) 70%);
	border: 1px solid var(--jlp-line);
	border-radius: var(--jlp-r-lg);
	padding: clamp(16px,2.4vw,24px);
	margin: 0 0 clamp(18px,2.6vw,26px);
	box-shadow: var(--jlp-sh-1);
}
.jlp-onboard__icon { flex: 0 0 auto; width: 2.6em; height: 2.6em; border-radius: 50%; background: var(--jlp-surface); color: var(--jlp-gold-deep); display: grid; place-items: center; box-shadow: var(--jlp-sh-1); }
.jlp-onboard__icon svg { width: 1.3em; height: 1.3em; }
.jlp-onboard__body { min-width: 0; }
.jlp-onboard__title { font-family: var(--jlp-ff-display); font-weight: 500; font-size: clamp(1.2rem,2vw,1.55rem); margin: 0 0 4px; }
.jlp-onboard__text { color: var(--jlp-ink-soft); font-size: 0.95rem; margin: 0 0 10px; }
.jlp-onboard__steps { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 0.85rem; color: var(--jlp-ink-mute); counter-reset: jlp-step; }
.jlp-onboard__steps li { counter-increment: jlp-step; display: inline-flex; align-items: center; gap: 0.45em; }
.jlp-onboard__steps li::before { content: counter(jlp-step); display: inline-grid; place-items: center; width: 1.5em; height: 1.5em; border-radius: 50%; background: var(--jlp-blush-deep); color: var(--jlp-gold-deep); font-weight: 700; font-size: 0.72rem; }

/* ---------- Grids & cards ---------- */
.jlp-grid { list-style: none; margin: 0; padding: 0; display: grid; gap: clamp(14px, 2.2vw, 24px); grid-template-columns: 1fr; }
@media (min-width: 560px) { .jlp-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 920px) { .jlp-grid { grid-template-columns: repeat(3, 1fr); } }
.jlp-grid--2 { grid-template-columns: 1fr; }
@media (min-width: 720px) { .jlp-grid--2 { grid-template-columns: repeat(2, 1fr); } }

.jlp-card {
	position: relative;
	background: var(--jlp-surface);
	border: 1px solid var(--jlp-line);
	border-radius: var(--jlp-r-lg);
	box-shadow: var(--jlp-sh-1);
	overflow: hidden;
	transition: transform var(--jlp-dur) var(--jlp-ease), box-shadow var(--jlp-dur) var(--jlp-ease), border-color var(--jlp-dur) var(--jlp-ease);
}
.jlp-card::before {
	/* hairline gold border-glow on hover */
	content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
	box-shadow: inset 0 0 0 1px transparent;
	transition: box-shadow var(--jlp-dur) var(--jlp-ease);
}
.jlp-card:hover { transform: translateY(-3px); box-shadow: var(--jlp-sh-3); }
.jlp-card:hover::before { box-shadow: inset 0 0 0 1px var(--jlp-line-strong); }
.jlp-card:focus-within { box-shadow: var(--jlp-sh-2), var(--jlp-sh-ring); }
.jlp-card.is-archived { opacity: .72; }

.jlp-card__link { display: block; padding: clamp(18px, 2.4vw, 26px); color: inherit; text-decoration: none; outline: none; }
.jlp-card__link:focus-visible { box-shadow: inset 0 0 0 2px var(--jlp-gold); }
.jlp-card__body { display: block; }
.jlp-card__icon {
	display: grid; place-items: center;
	width: 52px; height: 52px; margin-bottom: 16px; padding: 12px;
	color: var(--jlp-gold-deep);
	background: radial-gradient(circle at 30% 25%, var(--jlp-veil), var(--jlp-blush));
	border: 1px solid var(--jlp-line-soft);
	border-radius: 50%;
	transition: transform var(--jlp-dur) var(--jlp-ease), background var(--jlp-dur) var(--jlp-ease);
}
.jlp-card:hover .jlp-card__icon { transform: scale(1.06) rotate(-2deg); }
.jlp-card__icon svg { width: 100%; height: 100%; display: block; }
.jlp-card__icon .dashicons { width: 26px; height: 26px; font-size: 26px; }
.jlp-card__cat { display: block; font-size: 0.68rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--jlp-ink-mute); margin-bottom: 4px; }
.jlp-card__title { font-family: var(--jlp-ff-display); font-weight: 500; font-size: 1.4rem; margin: 0 0 8px; line-height: 1.16; color: var(--jlp-ink); }
.jlp-card__title a { color: inherit; text-decoration: none; }
.jlp-card__desc { display: block; color: var(--jlp-ink-soft); font-size: 0.94rem; margin: 0 0 16px; }
.jlp-card__meta { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.jlp-card__price { font-family: var(--jlp-ff-display); font-size: 1.2rem; color: var(--jlp-gold-deep); }
.jlp-card__cta { font-size: 0.84rem; font-weight: 700; color: var(--jlp-gold-deep); transition: gap var(--jlp-dur) var(--jlp-ease); }
.jlp-card:hover .jlp-card__cta span[aria-hidden] { display: inline-block; transform: translateX(3px); transition: transform var(--jlp-dur) var(--jlp-ease); }

/* Mini cards (related strip) */
.jlp-card--mini .jlp-card__link { display: flex; gap: 14px; align-items: flex-start; padding: 16px 18px; }
.jlp-card--mini .jlp-card__icon { flex: 0 0 40px; width: 40px; height: 40px; margin: 2px 0 0; padding: 9px; }
.jlp-card--mini .jlp-card__title { font-size: 1.1rem; margin: 0 0 3px; }
.jlp-card--mini .jlp-card__desc { font-size: 0.85rem; margin: 0; }

/* Menu cards (theme mega menu / mobile menu) */
.jlp-card--menu { box-shadow: none; border-radius: var(--jlp-r); }
.jlp-card--menu .jlp-card__link { display: flex; gap: 12px; align-items: center; padding: 10px 12px; }
.jlp-card--menu .jlp-card__icon { flex: 0 0 36px; width: 36px; height: 36px; margin: 0; padding: 8px; }
.jlp-card--menu .jlp-card__title { font-family: var(--jlp-ff-body); font-size: 0.95rem; font-weight: 600; margin: 0; }
.jlp-card--menu .jlp-card__desc { font-size: 0.78rem; margin: 2px 0 0; color: var(--jlp-ink-mute); }

/* ---------- Archive ---------- */
.jlp-archive__intro { max-width: 60ch; margin-bottom: clamp(22px, 4vw, 36px); }
.jlp-archive__controls { margin-bottom: clamp(22px, 3vw, 32px); position: relative; }
.jlp-archive__controls .jlp-input { padding-left: 2.6em; }
.jlp-archive__controls::before {
	content: ""; position: absolute; left: 0.95em; top: 50%; width: 16px; height: 16px; margin-top: -8px;
	background: no-repeat center / contain;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%2394857A' stroke-width='1.5'%3E%3Ccircle cx='7' cy='7' r='4.5'/%3E%3Cpath d='m11 11 3.5 3.5'/%3E%3C/svg%3E");
	pointer-events: none;
}
.jlp-archive__groups { display: flex; flex-direction: column; gap: clamp(34px, 6vw, 58px); }
.jlp-archive__group[hidden] { display: none; }
.jlp-archive__group-title {
	font-family: var(--jlp-ff-display); font-weight: 500; font-style: italic;
	font-size: clamp(1.5rem, 3vw, 2rem); color: var(--jlp-ink);
	margin: 0 0 clamp(16px, 2.4vw, 22px); padding-bottom: 0.35em;
	border-bottom: 1px solid var(--jlp-line); display: flex; align-items: baseline; gap: 0.6em;
}
.jlp-archive__group-title small { font-family: var(--jlp-ff-body); font-style: normal; font-size: 0.62em; color: var(--jlp-ink-mute); letter-spacing: 0.04em; }
.jlp-archive__noresults { color: var(--jlp-ink-mute); font-style: italic; margin: 8px 0 0; }

/* ---------- Forms ---------- */
.jlp-field { display: block; margin: 0 0 16px; }
.jlp-field--inline { display: flex; align-items: baseline; gap: 12px; }
.jlp-field--inline > .jlp-input, .jlp-field--inline > .jlp-input-group { flex: 1; }
.jlp-field__label { display: block; font-size: 0.82rem; font-weight: 700; letter-spacing: 0.02em; color: var(--jlp-ink-soft); margin-bottom: 6px; }
.jlp-field__label .jlp-field__req, .jlp-field__req { color: var(--jlp-rose-deep); }
.jlp-field__help { display: block; font-size: 0.8rem; color: var(--jlp-ink-mute); margin: -2px 0 8px; line-height: 1.45; }
.jlp-field__error { display: block; font-size: 0.8rem; font-weight: 600; color: var(--jlp-error); margin-top: 6px; }
.jlp-field__error[hidden] { display: none; }

.jlp-input,
.jlp input[type="text"].jlp-input, .jlp input[type="email"].jlp-input, .jlp input[type="password"].jlp-input,
.jlp input[type="search"].jlp-input, .jlp input[type="number"].jlp-input, .jlp input[type="tel"].jlp-input,
.jlp input[type="url"].jlp-input, .jlp input[type="date"].jlp-input, .jlp input[type="time"].jlp-input,
.jlp textarea.jlp-input, .jlp select.jlp-input {
	width: 100%;
	font-family: var(--jlp-ff-body);
	font-size: 1rem;
	line-height: 1.4;
	padding: 0.72em 0.85em;
	min-height: 44px;
	border: 1px solid var(--jlp-line-strong);
	border-radius: var(--jlp-r-sm);
	background: var(--jlp-surface);
	color: var(--jlp-ink);
	transition: border-color var(--jlp-dur) var(--jlp-ease), box-shadow var(--jlp-dur) var(--jlp-ease), background-color var(--jlp-dur) var(--jlp-ease);
	-webkit-appearance: none; appearance: none;
}
.jlp-input::placeholder { color: var(--jlp-ink-faint); }
.jlp-input:hover { border-color: var(--jlp-gold); }
.jlp-input:focus { outline: none; border-color: var(--jlp-gold); box-shadow: var(--jlp-sh-ring); }
.jlp-input:disabled, .jlp-input[disabled], .jlp-input[readonly] { background: var(--jlp-surface-2); color: var(--jlp-ink-mute); cursor: not-allowed; }
.jlp textarea.jlp-input { min-height: 96px; resize: vertical; line-height: 1.55; }
.jlp select.jlp-input {
	padding-right: 2.2em;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='none' stroke='%238A6C39' stroke-width='1.6'%3E%3Cpath d='m1 1 5 5 5-5'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: right 0.85em center; background-size: 11px;
}
.jlp input[type="date"].jlp-input, .jlp input[type="time"].jlp-input { min-height: 44px; }

/* Validity */
.jlp-field--invalid .jlp-input, .jlp-input.is-invalid { border-color: var(--jlp-error); }
.jlp-field--invalid .jlp-input:focus, .jlp-input.is-invalid:focus { box-shadow: 0 0 0 4px rgba(178,42,34,0.14); }
.jlp-field--valid .jlp-input, .jlp-input.is-valid { border-color: var(--jlp-ok); }

/* Input group (prefix/suffix, e.g. currency) */
.jlp-input-group { display: flex; align-items: stretch; }
.jlp-input-group > .jlp-input { border-radius: 0; }
.jlp-input-group > .jlp-input:first-child { border-top-left-radius: var(--jlp-r-sm); border-bottom-left-radius: var(--jlp-r-sm); }
.jlp-input-group > .jlp-input:last-child { border-top-right-radius: var(--jlp-r-sm); border-bottom-right-radius: var(--jlp-r-sm); }
.jlp-input-group > .jlp-input + .jlp-input, .jlp-input-group > .jlp-input + .jlp-input-group__addon { border-left: 0; }
.jlp-input-group__addon {
	display: inline-flex; align-items: center; padding: 0 0.8em; font-size: 0.9rem; font-weight: 600;
	color: var(--jlp-ink-mute); background: var(--jlp-surface-2);
	border: 1px solid var(--jlp-line-strong);
}
.jlp-input-group__addon:first-child { border-top-left-radius: var(--jlp-r-sm); border-bottom-left-radius: var(--jlp-r-sm); border-right: 0; }
.jlp-input-group__addon:last-child { border-top-right-radius: var(--jlp-r-sm); border-bottom-right-radius: var(--jlp-r-sm); border-left: 0; }

/* Number stepper */
.jlp-stepper { display: inline-flex; align-items: stretch; border: 1px solid var(--jlp-line-strong); border-radius: var(--jlp-r-sm); overflow: hidden; background: var(--jlp-surface); }
.jlp-stepper__btn { width: 40px; min-height: 44px; border: 0; background: var(--jlp-surface-2); color: var(--jlp-gold-deep); font-size: 1.15rem; line-height: 1; cursor: pointer; transition: background-color var(--jlp-dur) var(--jlp-ease); }
.jlp-stepper__btn:hover { background: var(--jlp-blush); }
.jlp-stepper__btn:disabled { color: var(--jlp-ink-faint); cursor: not-allowed; }
.jlp-stepper .jlp-input { border: 0; border-radius: 0; text-align: center; width: 4em; min-width: 0; padding-left: 0.3em; padding-right: 0.3em; -moz-appearance: textfield; }
.jlp-stepper .jlp-input::-webkit-outer-spin-button, .jlp-stepper .jlp-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.jlp-stepper .jlp-input:focus { box-shadow: none; }

/* Checkbox / radio rows */
.jlp-check { display: flex; align-items: flex-start; gap: 0.6em; font-size: 0.92rem; margin: 6px 0 14px; color: var(--jlp-ink-soft); cursor: pointer; }
.jlp-check input[type="checkbox"], .jlp-check input[type="radio"] { margin-top: 0.18em; width: 1.05em; height: 1.05em; accent-color: var(--jlp-gold-deep); flex: 0 0 auto; }
.jlp-check__hint { display: block; font-size: 0.8rem; color: var(--jlp-ink-mute); }

/* Toggle switch */
.jlp-switch { display: inline-flex; align-items: center; gap: 0.6em; cursor: pointer; font-size: 0.92rem; color: var(--jlp-ink-soft); }
.jlp-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.jlp-switch__track { position: relative; width: 40px; height: 22px; border-radius: var(--jlp-r-pill); background: var(--jlp-blush-deep); border: 1px solid var(--jlp-line-strong); transition: background-color var(--jlp-dur) var(--jlp-ease); flex: 0 0 auto; }
.jlp-switch__track::after { content: ""; position: absolute; top: 1px; left: 1px; width: 18px; height: 18px; border-radius: 50%; background: #fff; box-shadow: var(--jlp-sh-1); transition: transform var(--jlp-dur) var(--jlp-ease-out); }
.jlp-switch input:checked + .jlp-switch__track { background: var(--jlp-gold); border-color: transparent; }
.jlp-switch input:checked + .jlp-switch__track::after { transform: translateX(18px); }
.jlp-switch input:focus-visible + .jlp-switch__track { box-shadow: var(--jlp-sh-ring); }

/* Segmented control */
.jlp-segmented { display: inline-flex; padding: 3px; gap: 3px; background: var(--jlp-surface-2); border: 1px solid var(--jlp-line); border-radius: var(--jlp-r-sm); flex-wrap: wrap; }
.jlp-segmented__opt { position: relative; }
.jlp-segmented__opt input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.jlp-segmented__label { display: inline-flex; align-items: center; gap: 0.4em; padding: 0.5em 0.9em; min-height: 36px; border-radius: var(--jlp-r-xs); font-size: 0.86rem; font-weight: 600; color: var(--jlp-ink-mute); cursor: pointer; transition: background-color var(--jlp-dur) var(--jlp-ease), color var(--jlp-dur) var(--jlp-ease), box-shadow var(--jlp-dur) var(--jlp-ease); white-space: nowrap; }
.jlp-segmented__opt input:hover + .jlp-segmented__label { color: var(--jlp-ink); }
.jlp-segmented__opt input:checked + .jlp-segmented__label { background: var(--jlp-surface); color: var(--jlp-ink); box-shadow: var(--jlp-sh-1); }
.jlp-segmented__opt input:focus-visible + .jlp-segmented__label { box-shadow: var(--jlp-sh-ring); }

/* Range slider */
.jlp input[type="range"].jlp-range { -webkit-appearance: none; appearance: none; width: 100%; height: 6px; border-radius: var(--jlp-r-pill); background: linear-gradient(90deg, var(--jlp-gold) var(--jlp-range,50%), var(--jlp-blush-deep) var(--jlp-range,50%)); outline: none; margin: 10px 0; }
.jlp input[type="range"].jlp-range::-webkit-slider-thumb { -webkit-appearance: none; width: 22px; height: 22px; border-radius: 50%; background: #fff; border: 1px solid var(--jlp-line-strong); box-shadow: var(--jlp-sh-1); cursor: pointer; transition: transform var(--jlp-dur) var(--jlp-ease); }
.jlp input[type="range"].jlp-range::-webkit-slider-thumb:hover { transform: scale(1.08); }
.jlp input[type="range"].jlp-range::-moz-range-thumb { width: 20px; height: 20px; border-radius: 50%; background: #fff; border: 1px solid var(--jlp-line-strong); box-shadow: var(--jlp-sh-1); cursor: pointer; }

.jlp fieldset { border: 0; padding: 0; margin: 0; }
.jlp legend { padding: 0; font-size: 0.82rem; font-weight: 700; color: var(--jlp-ink-soft); margin-bottom: 8px; }

/* ---------- Repeater (draggable cards) ---------- */
.jlp-repeater { margin: 12px 0; display: flex; flex-direction: column; gap: 10px; }
.jlp-repeater__row {
	position: relative; display: grid; gap: 10px; padding: 14px 14px 14px 38px;
	border: 1px solid var(--jlp-line); border-radius: var(--jlp-r); background: var(--jlp-surface-2);
	box-shadow: var(--jlp-sh-1);
	transition: box-shadow var(--jlp-dur) var(--jlp-ease), border-color var(--jlp-dur) var(--jlp-ease), transform var(--jlp-dur) var(--jlp-ease), opacity var(--jlp-dur) var(--jlp-ease);
	animation: jlp-row-in var(--jlp-dur) var(--jlp-ease-out);
}
.jlp-repeater__row:hover { border-color: var(--jlp-line-strong); box-shadow: var(--jlp-sh-2); }
.jlp-repeater__row.is-dragging { opacity: .6; box-shadow: var(--jlp-sh-3); cursor: grabbing; }
.jlp-repeater__row.is-drop-target { border-color: var(--jlp-gold); box-shadow: 0 0 0 2px var(--jlp-gold-glow); }
.jlp-repeater__row.is-removing { animation: jlp-row-out var(--jlp-dur) var(--jlp-ease) forwards; }
.jlp-repeater__handle, [data-jlp-handle] {
	position: absolute; left: 8px; top: 50%; transform: translateY(-50%);
	width: 22px; height: 28px; display: grid; place-items: center;
	color: var(--jlp-ink-faint); cursor: grab; border: 0; background: transparent; touch-action: none;
}
.jlp-repeater__handle:hover, [data-jlp-handle]:hover { color: var(--jlp-gold-deep); }
.jlp-repeater__handle::before, [data-jlp-handle]::before {
	content: "⋮⋮"; letter-spacing: -2px; font-size: 0.9rem; line-height: 1;
}
.jlp-repeater__remove, [data-jlp-remove] {
	position: absolute; top: 8px; right: 8px; width: 28px; height: 28px; border-radius: 50%;
	display: grid; place-items: center; background: transparent; border: 0; color: var(--jlp-ink-mute);
	cursor: pointer; font-size: 1.1rem; line-height: 1; transition: background-color var(--jlp-dur) var(--jlp-ease), color var(--jlp-dur) var(--jlp-ease);
}
.jlp-repeater__remove:hover, [data-jlp-remove]:hover { background: var(--jlp-error-bg); color: var(--jlp-error); }
.jlp-repeater__row--readonly { padding-left: 14px; }
.jlp-repeater__row--readonly .jlp-repeater__handle, .jlp-repeater__row--readonly [data-jlp-remove] { display: none; }
.jlp-repeater__add { align-self: flex-start; }
.jlp-reorder-btns { display: inline-flex; flex-direction: column; gap: 2px; }
.jlp-reorder-btns button { width: 24px; height: 18px; border: 1px solid var(--jlp-line); background: var(--jlp-surface); color: var(--jlp-ink-mute); cursor: pointer; border-radius: 4px; line-height: 1; font-size: 0.7rem; }
.jlp-reorder-btns button:hover { color: var(--jlp-gold-deep); border-color: var(--jlp-gold); }
@keyframes jlp-row-in { from { opacity: 0; transform: translateY(-6px) scale(.99); } to { opacity: 1; transform: none; } }
@keyframes jlp-row-out { to { opacity: 0; transform: translateX(12px) scale(.98); height: 0; padding-top: 0; padding-bottom: 0; margin: 0; } }
.jlp-sortable.is-dragging-active { cursor: grabbing; }

/* ---------- Notices / badges / progress ---------- */
.jlp-notice { border-radius: var(--jlp-r-sm); padding: 12px 14px 12px 40px; margin: 0 0 16px; font-size: 0.92rem; position: relative; border: 1px solid; }
.jlp-notice p { margin: 0; }
.jlp-notice::before { content: ""; position: absolute; left: 13px; top: 13px; width: 16px; height: 16px; background: no-repeat center / contain; }
.jlp-notice--ok { background: var(--jlp-ok-bg); border-color: var(--jlp-ok-line); color: var(--jlp-ok); }
.jlp-notice--ok::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232F7D33'%3E%3Cpath d='M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0Zm-1 11.4L3.6 8 5 6.6l2 2 4-4L12.4 6 7 11.4Z'/%3E%3C/svg%3E"); }
.jlp-notice--warn { background: var(--jlp-warn-bg); border-color: var(--jlp-warn-line); color: var(--jlp-warn); }
.jlp-notice--warn::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%239A6B12'%3E%3Cpath d='M8 1 0 15h16L8 1Zm-.9 5h1.8v4H7.1V6Zm0 5h1.8v1.8H7.1V11Z'/%3E%3C/svg%3E"); }
.jlp-notice--error { background: var(--jlp-error-bg); border-color: var(--jlp-error-line); color: var(--jlp-error); }
.jlp-notice--error::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23B22A22'%3E%3Cpath d='M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0Zm1 12H7v-2h2v2Zm0-3H7V4h2v5Z'/%3E%3C/svg%3E"); }
.jlp-notice--info { background: var(--jlp-blush); border-color: var(--jlp-line); color: var(--jlp-gold-deep); padding-left: 14px; }
.jlp-notice--info::before { display: none; }

.jlp-badge { display: inline-flex; align-items: center; gap: 0.35em; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; padding: 4px 10px; border-radius: var(--jlp-r-pill); }
.jlp-badge--muted { background: var(--jlp-surface-2); color: var(--jlp-ink-mute); }
.jlp-badge--gold { background: var(--jlp-blush); color: var(--jlp-gold-deep); }
.jlp-badge--wine { background: var(--jlp-surface); color: var(--jlp-rose-deep); border: 1px solid var(--jlp-line); box-shadow: var(--jlp-sh-1); }
.jlp-badge--wine svg { width: 0.95em; height: 0.95em; }
.jlp-badge--ink { background: var(--jlp-ink); color: #FBF6EE; }
.jlp-badge--ok { background: var(--jlp-ok-bg); color: var(--jlp-ok); }
.jlp-badge--warn { background: var(--jlp-warn-bg); color: var(--jlp-warn); }

/* ---------- Step progress (shared) ---------- */
.jlp-steps { list-style: none; margin: 0 0 clamp(18px,2.6vw,26px); padding: 0; display: flex; flex-direction: column; gap: 6px; counter-reset: jlp-steps; }
@media (min-width: 640px) { .jlp-steps { flex-direction: row; gap: 0; } }
.jlp-steps__step { display: flex; align-items: center; gap: 0.6em; font-size: 0.86rem; font-weight: 600; color: var(--jlp-ink-mute); counter-increment: jlp-steps; padding: 6px 0; }
@media (min-width: 640px) { .jlp-steps__step { flex: 1; min-width: 0; } .jlp-steps__step + .jlp-steps__step::before { content: ""; flex: 0 0 auto; width: clamp(10px,3vw,32px); height: 1px; background: var(--jlp-line-strong); margin: 0 0.7em; } }
.jlp-steps__num { flex: 0 0 auto; display: inline-grid; place-items: center; width: 1.85em; height: 1.85em; border-radius: 50%; background: var(--jlp-surface); border: 1px solid var(--jlp-line-strong); color: var(--jlp-ink-mute); font-family: var(--jlp-ff-body); font-weight: 700; font-size: 0.78rem; }
.jlp-steps__num::before { content: counter(jlp-steps); }
.jlp-steps__label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jlp-steps__step.is-current { color: var(--jlp-ink); }
.jlp-steps__step.is-current .jlp-steps__num { background: var(--jlp-ink); border-color: var(--jlp-ink); color: #FBF6EE; box-shadow: var(--jlp-sh-1); }
.jlp-steps__step.is-done { color: var(--jlp-ink-soft); }
.jlp-steps__step.is-done .jlp-steps__num { background: var(--jlp-blush-deep); border-color: transparent; color: var(--jlp-gold-deep); }
.jlp-steps__step.is-done .jlp-steps__num::before { content: ""; width: 0.7em; height: 0.7em; background: var(--jlp-gold-deep); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M4.7 8.5 2 5.8l1-1 1.7 1.7L9 2.2l1 1L4.7 8.5Z'/%3E%3C/svg%3E") no-repeat center / contain; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M4.7 8.5 2 5.8l1-1 1.7 1.7L9 2.2l1 1L4.7 8.5Z'/%3E%3C/svg%3E") no-repeat center / contain; }

/* ---------- Guided multi-step editor ("wizard") — progressive enhancement ----------
   No JS: every [data-jlp-wizard-step] is a plain visible block (today's long form).
   With JS, planner-shell.js adds .is-wizardized, shows one step, injects the rail+nav. */
.jlp-wizard__step { display: block; scroll-margin-top: 88px; }
/* Only direct children of the wizardized editor root are managed — a mis-nested
   step (shouldn't happen) then simply stays visible instead of disappearing. */
.is-wizardized > .jlp-wizard__step:not(.is-active) { display: none; }
.is-wizardized.is-all-steps > .jlp-wizard__step { display: block; }
.is-wizardized > .jlp-wizard__step.is-active { animation: jlp-step-in var(--jlp-dur) var(--jlp-ease-out); }
@keyframes jlp-step-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.is-wizardized.is-all-steps > .jlp-wizard__step { animation: none; }
.is-wizardized.is-all-steps > .jlp-wizard__step + .jlp-wizard__step { margin-top: clamp(28px, 4vw, 44px); padding-top: clamp(24px, 3.4vw, 36px); border-top: 1px solid var(--jlp-line); }

/* Rail (the clickable step navigator) */
.jlp-wizard__rail { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; justify-content: space-between; margin: 0 0 clamp(18px, 2.8vw, 28px); }
.jlp-wizard__rail .jlp-steps { margin: 0; flex: 1 1 auto; min-width: min(100%, 320px); }
.jlp-wizard__rail .jlp-steps__step { /* button reset */ background: transparent; border: 0; cursor: pointer; font: inherit; text-align: left; padding: 7px 8px; border-radius: var(--jlp-r-xs); min-height: 40px; transition: background-color var(--jlp-dur) var(--jlp-ease), color var(--jlp-dur) var(--jlp-ease); }
.jlp-wizard__rail .jlp-steps__step:hover { background: var(--jlp-surface-2); color: var(--jlp-ink); }
.jlp-wizard__rail .jlp-steps__step:focus-visible { outline: none; box-shadow: var(--jlp-sh-ring); }
@media (min-width: 640px) { .jlp-wizard__rail .jlp-steps__step + .jlp-steps__step::before { margin: 0 0.5em; } }
.jlp-wizard__showall { flex: 0 0 auto; align-self: center; white-space: nowrap; }

/* Nav (Wstecz / meta / Dalej) at the bottom of the active step */
.jlp-wizard__nav { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: clamp(22px, 3.4vw, 32px) 0 0; padding-top: clamp(16px, 2.4vw, 22px); border-top: 1px solid var(--jlp-line); }
.jlp-wizard__nav[hidden] { display: none; }
.jlp-wizard__nav [data-jlp-wiz-prev] { margin-right: auto; }
.jlp-wizard__nav [data-jlp-wiz-prev][hidden] { display: none; }
.jlp-wizard__nav [data-jlp-wiz-next] { margin-left: auto; min-width: 140px; }
.jlp-wizard__nav [data-jlp-wiz-next][hidden] { display: none; }
.jlp-wizard__nav-meta { font-size: 0.78rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--jlp-ink-mute); order: 0; }
@media (max-width: 560px) {
	.jlp-wizard__nav { gap: 10px; }
	.jlp-wizard__nav-meta { order: -1; width: 100%; text-align: center; }
	.jlp-wizard__nav [data-jlp-wiz-prev], .jlp-wizard__nav [data-jlp-wiz-next] { flex: 1; margin: 0; }
}

.jlp-progress { height: 8px; border-radius: var(--jlp-r-pill); background: var(--jlp-blush-deep); overflow: hidden; }
.jlp-progress__bar { height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--jlp-champagne), var(--jlp-gold)); transition: width var(--jlp-dur-slow) var(--jlp-ease); }
.jlp-progress__bar--over { background: linear-gradient(90deg, #E4A87C, var(--jlp-error)); }
.jlp-meter-mini { height: 4px; border-radius: var(--jlp-r-pill); background: var(--jlp-blush-deep); overflow: hidden; }
.jlp-meter-mini__fill { height: 100%; background: var(--jlp-gold); transition: width var(--jlp-dur-slow) var(--jlp-ease); }

/* ---------- Toasts ---------- */
.jlp-toasts { position: fixed; right: 16px; bottom: 16px; display: flex; flex-direction: column; gap: 10px; z-index: 100001; pointer-events: none; max-width: min(380px, calc(100vw - 32px)); }
.jlp-toast { pointer-events: auto; background: var(--jlp-ink); color: #fff; padding: 12px 16px 12px 14px; border-radius: var(--jlp-r-sm); font-size: 0.9rem; box-shadow: var(--jlp-sh-3); opacity: 0; transform: translateY(10px) scale(.98); transition: opacity var(--jlp-dur) var(--jlp-ease), transform var(--jlp-dur) var(--jlp-ease-out); display: flex; align-items: center; gap: 0.6em; }
.jlp-toast.is-visible { opacity: 1; transform: none; }
.jlp-toast::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--jlp-champagne); flex: 0 0 auto; }
.jlp-toast--ok { background: linear-gradient(120deg, #2F7D33, #276b2a); }
.jlp-toast--ok::before { background: #fff; }
.jlp-toast--error { background: linear-gradient(120deg, #B22A22, #962219); }
.jlp-toast--error::before { background: #fff; }

/* ---------- Skeleton / overlay / busy ---------- */
.jlp-skeleton { display: flex; flex-direction: column; gap: 12px; }
.jlp-skeleton__bar { height: 14px; border-radius: var(--jlp-r-pill); background: linear-gradient(100deg, var(--jlp-bg-deep) 30%, var(--jlp-veil) 50%, var(--jlp-bg-deep) 70%); background-size: 200% 100%; animation: jlp-shimmer 1.4s linear infinite; }
.jlp-skeleton__bar--title { height: 28px; width: 55%; }
.jlp-skeleton__bar--short { width: 60%; }
.jlp-skeleton__bar--icon { width: 44px; height: 44px; border-radius: 50%; }
.jlp-skeleton__cards { display: grid; gap: 14px; grid-template-columns: 1fr; }
@media (min-width: 560px) { .jlp-skeleton__cards { grid-template-columns: repeat(3, 1fr); } }
.jlp-skeleton__card { display: flex; flex-direction: column; gap: 10px; padding: 18px; border: 1px solid var(--jlp-line); border-radius: var(--jlp-r-lg); background: var(--jlp-surface); }
@keyframes jlp-shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }

.jlp-busy-host { position: relative; }
.jlp-overlay { position: absolute; inset: 0; display: grid; place-items: center; background: rgba(255,253,250,0.7); backdrop-filter: blur(1.5px); border-radius: inherit; z-index: 5; }
.jlp-overlay::before { content: ""; width: 28px; height: 28px; border-radius: 50%; border: 3px solid var(--jlp-gold); border-top-color: transparent; animation: jlp-spin .65s linear infinite; }
.jlp-busy-host[hidden] { display: none; }

/* ---------- Empty state ---------- */
.jlp-empty { text-align: center; padding: clamp(36px, 7vw, 72px) 20px; background: var(--jlp-surface); border: 1px dashed var(--jlp-line-strong); border-radius: var(--jlp-r-lg); }
.jlp-empty__art { font-size: 2.2rem; color: var(--jlp-champagne); margin-bottom: 12px; line-height: 1; }
.jlp-empty__title { font-family: var(--jlp-ff-display); font-weight: 500; font-size: 1.7rem; margin: 0 0 8px; }
.jlp-empty__text { color: var(--jlp-ink-soft); max-width: 50ch; margin: 0 auto 20px; }

/* ---------- Planner detail ---------- */
.jlp-planner__hero { margin-bottom: clamp(20px, 3.4vw, 32px); }
.jlp-planner__hero--compact { max-width: 70ch; }
.jlp-planner__back { display: inline-flex; align-items: center; gap: 0.4em; font-size: 0.82rem; font-weight: 600; letter-spacing: 0.02em; color: var(--jlp-gold-deep); text-decoration: none; margin-bottom: 14px; }
.jlp-planner__back:hover { color: var(--jlp-ink); text-decoration: underline; }
.jlp-planner__hero-head { display: flex; gap: clamp(14px,2vw,20px); align-items: center; margin-bottom: 12px; }
.jlp-planner__hero-icon { flex: 0 0 auto; width: 62px; height: 62px; padding: 14px; color: var(--jlp-gold-deep); background: radial-gradient(circle at 30% 25%, var(--jlp-veil), var(--jlp-blush)); border: 1px solid var(--jlp-line-soft); border-radius: 50%; display: grid; place-items: center; box-shadow: var(--jlp-sh-1); }
.jlp-planner__hero-icon svg { width: 100%; height: 100%; }
.jlp-planner__hero-icon .dashicons { width: 30px; height: 30px; font-size: 30px; }
.jlp-planner__hero-titles { min-width: 0; }
.jlp-planner__hero-titles .jlp-eyebrow { margin-bottom: 0.3em; }
.jlp-planner__hero-titles .jlp-display { margin: 0; }
.jlp-planner__hero .jlp-lead { margin-top: 10px; }
@media (max-width: 560px) {
	.jlp-planner__hero-head { gap: 14px; }
	.jlp-planner__hero-icon { width: 52px; height: 52px; padding: 12px; }
}

.jlp-planner__editor { display: grid; gap: clamp(18px, 2.8vw, 32px); grid-template-columns: 1fr; margin-top: clamp(20px,3vw,28px); align-items: start; }
@media (min-width: 980px) { .jlp-planner__editor { grid-template-columns: minmax(0,1fr) 330px; } }
.jlp-planner__editor-pane { background: var(--jlp-surface); border: 1px solid var(--jlp-line); border-radius: var(--jlp-r-xl); padding: clamp(18px, 3vw, 32px); box-shadow: var(--jlp-sh-2); }
.jlp-planner__rail { display: flex; flex-direction: column; gap: 16px; }
@media (min-width: 980px) { .jlp-planner__rail { position: sticky; top: 24px; } }

/* Value section (former render_public) — now below the fold */
.jlp-planner__value { margin-top: clamp(40px, 7vw, 72px); padding-top: clamp(28px, 5vw, 40px); border-top: 1px solid var(--jlp-line); }
.jlp-planner__value > h2:first-child, .jlp-planner__value .jlp-display { margin-top: 0; }
.jlp-planner__seo { margin-top: clamp(36px, 6vw, 56px); }
.jlp-planner__faq { margin-top: clamp(36px, 6vw, 56px); }

/* ---------- Paywall membership card ---------- */
.jlp-paywall-card {
	position: relative; overflow: hidden;
	background: linear-gradient(168deg, var(--jlp-blush) 0%, var(--jlp-veil) 48%, var(--jlp-surface) 100%);
	border: 1px solid var(--jlp-line-strong); border-radius: var(--jlp-r-xl);
	padding: clamp(20px, 2.6vw, 26px); box-shadow: var(--jlp-sh-2);
}
.jlp-paywall-card::before {
	content: ""; position: absolute; top: -40%; right: -30%; width: 70%; height: 70%;
	background: radial-gradient(circle, var(--jlp-gold-glow), transparent 70%); pointer-events: none;
}
.jlp-paywall-card__badge { display: inline-flex; align-items: center; gap: 0.4em; font-size: 0.66rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--jlp-rose-deep); background: var(--jlp-surface); border: 1px solid var(--jlp-line); padding: 5px 11px; border-radius: var(--jlp-r-pill); margin-bottom: 12px; box-shadow: var(--jlp-sh-1); }
.jlp-paywall-card__badge svg { width: 0.95em; height: 0.95em; }
.jlp-paywall-card__lock { display: inline-grid; place-items: center; }
.jlp-paywall-card__eyebrow { font-size: 0.68rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--jlp-ink-mute); margin: 0 0 2px; }
.jlp-paywall-card__step { font-size: 0.78rem; color: var(--jlp-ink-mute); margin: 0 0 10px; display: flex; align-items: center; gap: 0.45em; }
.jlp-paywall-card__step::before { content: ""; flex: 0 0 auto; width: 0.5em; height: 0.5em; border-radius: 50%; background: var(--jlp-gold); }
.jlp-paywall-card__price { font-family: var(--jlp-ff-display); font-size: clamp(1.9rem, 3vw, 2.3rem); color: var(--jlp-gold-deep); margin: 0 0 4px; line-height: 1.05; font-variant-numeric: tabular-nums; }
.jlp-paywall-card__price small { display: block; margin-top: 4px; font-family: var(--jlp-ff-body); font-size: 0.78rem; font-weight: 600; color: var(--jlp-ink-mute); letter-spacing: 0.02em; }
.jlp-modal__perks { margin-top: 0; }
.jlp-paywall-card__copy { color: var(--jlp-ink-soft); font-size: 0.92rem; margin: 10px 0 14px; }
.jlp-paywall-card__list { list-style: none; padding: 0; margin: 0 0 18px; font-size: 0.9rem; display: flex; flex-direction: column; gap: 8px; }
.jlp-paywall-card__list li { padding-left: 1.7em; position: relative; color: var(--jlp-ink-soft); }
.jlp-paywall-card__list li::before {
	content: ""; position: absolute; left: 0; top: 0.15em; width: 1.15em; height: 1.15em; border-radius: 50%;
	background: var(--jlp-blush-deep) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='%238A6C39'%3E%3Cpath d='M4.7 8.5 2 5.8l1-1 1.7 1.7L9 2.2l1 1L4.7 8.5Z'/%3E%3C/svg%3E") no-repeat center / 64%;
}
.jlp-paywall-card__cta { margin: 0; }
.jlp-paywall-card .jlp-btn--primary .jlp-btn__icon svg { width: 1em; height: 1em; }
.jlp-paywall-card__login { font-size: 0.82rem; color: var(--jlp-ink-mute); margin: 12px 0 0; text-align: center; }
.jlp-paywall-card__trust { display: flex; align-items: center; justify-content: center; gap: 0.4em; font-size: 0.74rem; color: var(--jlp-ink-mute); margin: 12px 0 0; }
.jlp-paywall-card__trust svg { width: 0.95em; height: 0.95em; }
.jlp-paywall-card.is-owned { background: linear-gradient(168deg, var(--jlp-ok-bg), var(--jlp-veil)); border-color: var(--jlp-ok-line); }

/* ---------- Unlocked state (user has access or admin) ---------- */
.jlp-planner--unlocked .jlp-planner__editor { grid-template-columns: 1fr !important; }
.jlp-planner--unlocked .jlp-planner__rail { display: none; }

.jlp-owner-banner {
	display: flex; align-items: center; gap: 14px;
	padding: 12px 16px; margin: clamp(12px,2vw,20px) 0 0;
	background: var(--jlp-ok-bg); border: 1px solid var(--jlp-ok-line);
	border-radius: var(--jlp-r-md); color: var(--jlp-ink);
	font-size: 0.92rem;
}
.jlp-owner-banner__icon {
	display: inline-grid; place-items: center;
	width: 22px; height: 22px; border-radius: 50%;
	background: var(--jlp-ok-line); color: #fff; font-weight: 700;
	flex: 0 0 auto;
}
.jlp-owner-banner__body { flex: 1 1 auto; display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.jlp-owner-banner__text { line-height: 1.4; }
.jlp-owner-banner .jlp-btn { flex: 0 0 auto; }
.jlp-owner-banner__note { margin: 0; font-size: 0.85rem; color: var(--jlp-ink-mute); }
.jlp-owner-downloads { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; }
.jlp-owner-downloads__label { font-size: 0.82rem; color: var(--jlp-ink-mute); margin-right: 2px; }

/* Modal fineprint inline next to lead text. */
.jlp-modal__fineprint-inline { display: block; margin-top: 6px; font-size: 0.85rem; color: var(--jlp-ink-mute); }

/* ---------- Sticky CTA (mobile + desktop fallback) ---------- */
.jlp-sticky-cta {
	position: fixed; left: 0; right: 0; bottom: 0; z-index: 99990;
	padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
	background: rgba(255,253,250,0.92); backdrop-filter: blur(8px);
	border-top: 1px solid var(--jlp-line);
	box-shadow: 0 -10px 30px -16px rgba(43,32,26,0.3);
	transform: translateY(110%); transition: transform var(--jlp-dur) var(--jlp-ease-out);
}
.jlp-sticky-cta.is-visible { transform: none; }
.jlp-sticky-cta[hidden] { display: none; }
.jlp-sticky-cta__inner { display: flex; align-items: center; justify-content: space-between; gap: 12px; max-width: var(--jlp-max); margin: 0 auto; }
.jlp-sticky-cta__meta { display: flex; flex-direction: column; line-height: 1.2; min-width: 0; }
.jlp-sticky-cta__label { font-size: 0.68rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--jlp-ink-mute); }
.jlp-sticky-cta__price { font-family: var(--jlp-ff-display); font-size: 1.25rem; color: var(--jlp-gold-deep); }
@media (min-width: 980px) {
	.jlp-sticky-cta { padding: 12px clamp(16px,4vw,32px) calc(12px + env(safe-area-inset-bottom)); }
	.jlp-sticky-cta__inner { max-width: var(--jlp-max); padding: 0; }
}
body.jlp-route-planner.jlp-has-sticky-cta { padding-bottom: 0; }

/* ---------- Preview watermark ---------- */
.jlp-preview-wrap { position: relative; }
.jlp-preview-banner { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center; justify-content: space-between; background: var(--jlp-blush); border: 1px solid var(--jlp-line); border-radius: var(--jlp-r-sm); padding: 9px 12px; margin-bottom: 14px; font-size: 0.82rem; color: var(--jlp-gold-deep); font-weight: 600; }
.jlp-preview-banner__hint { color: var(--jlp-ink-mute); font-weight: 400; }
.jlp-watermark { position: absolute; inset: 0; pointer-events: none; display: flex; align-items: center; justify-content: center; overflow: hidden; z-index: 2; }
.jlp-watermark span { font-family: var(--jlp-ff-display); font-size: clamp(1.6rem, 5vw, 3rem); color: rgba(138,108,57,0.10); transform: rotate(-22deg); letter-spacing: 0.2em; text-transform: uppercase; white-space: nowrap; user-select: none; }
.jlp-preview-body { filter: saturate(.95); }

/* ---------- FAQ accordion ---------- */
.jlp-faq__title { font-family: var(--jlp-ff-display); font-weight: 500; font-size: clamp(1.5rem, 3vw, 2.1rem); margin: 0 0 clamp(14px,2vw,20px); }
.jlp-faq__list { display: flex; flex-direction: column; gap: 0; border: 1px solid var(--jlp-line); border-radius: var(--jlp-r-lg); overflow: hidden; background: var(--jlp-surface); box-shadow: var(--jlp-sh-1); }
.jlp-faq__item { border-bottom: 1px solid var(--jlp-line-soft); }
.jlp-faq__item:last-child { border-bottom: 0; }
.jlp-faq__item[open] { background: var(--jlp-surface-2); }
.jlp-faq__q { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: clamp(14px,2vw,18px) clamp(14px,2.4vw,22px); cursor: pointer; list-style: none; font-family: var(--jlp-ff-display); font-size: clamp(1.05rem, 1.7vw, 1.25rem); font-weight: 500; color: var(--jlp-ink); transition: color var(--jlp-dur) var(--jlp-ease); }
.jlp-faq__q::-webkit-details-marker { display: none; }
.jlp-faq__q:hover { color: var(--jlp-gold-deep); }
.jlp-faq__q:focus-visible { outline: none; box-shadow: inset 0 0 0 2px var(--jlp-gold); }
.jlp-faq__icon { flex: 0 0 auto; width: 22px; height: 22px; position: relative; }
.jlp-faq__icon::before, .jlp-faq__icon::after { content: ""; position: absolute; background: var(--jlp-gold-deep); border-radius: 2px; transition: transform var(--jlp-dur) var(--jlp-ease); }
.jlp-faq__icon::before { left: 4px; right: 4px; top: 10px; height: 2px; }
.jlp-faq__icon::after { top: 4px; bottom: 4px; left: 10px; width: 2px; }
.jlp-faq__item[open] .jlp-faq__icon::after { transform: rotate(90deg); opacity: 0; }
.jlp-faq__a { padding: 0 clamp(14px,2.4vw,22px) clamp(16px,2.2vw,20px); color: var(--jlp-ink-soft); font-size: 0.96rem; line-height: 1.65; animation: jlp-fade-in var(--jlp-dur) var(--jlp-ease); }
.jlp-faq__a p { margin: 0 0 0.7em; }
.jlp-faq__a p:last-child { margin-bottom: 0; }
.jlp-faq__a ul, .jlp-faq__a ol { margin: 0.4em 0 0.7em; padding-left: 1.3em; }
@keyframes jlp-fade-in { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }

/* ---------- Prose (SEO sections) ---------- */
.jlp-prose { max-width: 72ch; }
.jlp-prose__intro { font-size: clamp(1.02rem, 1.4vw, 1.12rem); color: var(--jlp-ink-soft); }
.jlp-prose__intro p { margin: 0 0 1em; }
.jlp-prose__block { margin-top: clamp(24px, 4vw, 36px); }
.jlp-prose__heading { font-family: var(--jlp-ff-display); font-weight: 500; font-size: clamp(1.35rem, 2.4vw, 1.8rem); margin: 0 0 0.5em; color: var(--jlp-ink); }
.jlp-prose__body { color: var(--jlp-ink-soft); }
.jlp-prose__body p { margin: 0 0 1em; }
.jlp-prose__body p:last-child { margin-bottom: 0; }
.jlp-prose__body ul, .jlp-prose__body ol { margin: 0.6em 0 1.1em; padding-left: 1.4em; }
.jlp-prose__body li { margin-bottom: 0.4em; }
.jlp-prose__body ol { counter-reset: jlp-prose; list-style: none; padding-left: 0; }
.jlp-prose__body ol > li { position: relative; padding-left: 2.2em; counter-increment: jlp-prose; }
.jlp-prose__body ol > li::before { content: counter(jlp-prose); position: absolute; left: 0; top: 0.05em; width: 1.5em; height: 1.5em; display: grid; place-items: center; border-radius: 50%; background: var(--jlp-blush); color: var(--jlp-gold-deep); font-size: 0.74rem; font-weight: 700; }
.jlp-prose__body strong { color: var(--jlp-ink); }
.jlp-prose__body a { font-weight: 600; }

/* ---------- Related strip ---------- */
.jlp-related { margin-top: clamp(44px, 8vw, 76px); padding-top: clamp(26px, 4vw, 38px); border-top: 1px solid var(--jlp-line); }
.jlp-related__title { margin-bottom: clamp(16px, 2.6vw, 24px); }
.jlp-related__grid { gap: clamp(12px, 1.8vw, 18px); }

/* ---------- Dashboard ---------- */
.jlp-dashboard__head { display: flex; flex-wrap: wrap; gap: 18px; justify-content: space-between; align-items: flex-end; margin-bottom: clamp(22px, 4vw, 36px); }
.jlp-dashboard__head-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.jlp-card--plan .jlp-card__head { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px 0; }
.jlp-card--plan .jlp-card__title { padding: 0 20px; margin: 6px 0 0; }
.jlp-card__status { font-size: 0.66rem; letter-spacing: 0.1em; text-transform: uppercase; padding: 3px 9px; border-radius: var(--jlp-r-pill); font-weight: 700; }
.jlp-card__status--active { background: var(--jlp-ok-bg); color: var(--jlp-ok); }
.jlp-card__status--archived { background: var(--jlp-surface-2); color: var(--jlp-ink-mute); }
.jlp-card__meta-list { display: flex; flex-wrap: wrap; gap: 14px; padding: 12px 20px 0; margin: 0; font-size: 0.82rem; color: var(--jlp-ink-soft); }
.jlp-card__meta-list dt { font-size: 0.64rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--jlp-ink-mute); }
.jlp-card__meta-list dd { margin: 2px 0 0; }
.jlp-card__actions { display: flex; flex-wrap: wrap; gap: 8px; padding: 16px 20px 20px; }
.jlp-card__actions .jlp-btn { min-height: 38px; padding: 0.55em 1em; font-size: 0.84rem; }

/* ---------- Editor page (paid plan) ---------- */
.jlp-editor-page__head { display: flex; flex-wrap: wrap; gap: 14px; justify-content: space-between; align-items: flex-end; margin-bottom: 20px; }
.jlp-editor-page__layout { display: grid; gap: clamp(18px, 2.8vw, 32px); grid-template-columns: 1fr; align-items: start; }
@media (min-width: 980px) { .jlp-editor-page__layout { grid-template-columns: minmax(0,1fr) 300px; } }
.jlp-editor-page__pane { background: var(--jlp-surface); border: 1px solid var(--jlp-line); border-radius: var(--jlp-r-xl); padding: clamp(18px, 3vw, 32px); box-shadow: var(--jlp-sh-2); }
.jlp-editor-page__rail { display: flex; flex-direction: column; gap: 16px; }
@media (min-width: 980px) { .jlp-editor-page__rail { position: sticky; top: 24px; } }
.jlp-rail-box { background: var(--jlp-surface); border: 1px solid var(--jlp-line); border-radius: var(--jlp-r-lg); padding: 18px; box-shadow: var(--jlp-sh-1); }
.jlp-rail-box__title { font-family: var(--jlp-ff-display); font-weight: 500; font-size: 1.12rem; margin: 0 0 12px; }
.jlp-rail-box__list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; font-size: 0.88rem; color: var(--jlp-ink-soft); }
.jlp-rail-box .jlp-btn { margin-bottom: 8px; }
.jlp-rail-box .jlp-btn:last-child { margin-bottom: 0; }
.jlp-autosave { display: inline-flex; align-items: center; gap: 0.5em; font-size: 0.82rem; color: var(--jlp-ink-mute); }
.jlp-autosave::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--jlp-ink-faint); transition: background-color var(--jlp-dur) var(--jlp-ease); }
.jlp-autosave.is-dirty { color: var(--jlp-warn); }
.jlp-autosave.is-dirty::before { background: var(--jlp-warn); }
.jlp-autosave.is-saving { color: var(--jlp-gold-deep); }
.jlp-autosave.is-saving::before { background: var(--jlp-gold); animation: jlp-pulse 1s ease-in-out infinite; }
.jlp-autosave.is-saved { color: var(--jlp-ok); }
.jlp-autosave.is-saved::before { background: var(--jlp-ok); }
@keyframes jlp-pulse { 0%,100% { opacity: 1; } 50% { opacity: .35; } }

/* ---------- Auth (login + registration) ---------- */
.jlp-auth { display: flex; justify-content: center; }
.jlp-auth__panel { width: 100%; max-width: 480px; background: var(--jlp-surface); border: 1px solid var(--jlp-line); border-radius: var(--jlp-r-xl); padding: clamp(22px, 4vw, 38px); box-shadow: var(--jlp-sh-2); }
.jlp-auth__tabs { display: flex; gap: 4px; margin: 14px 0 22px; padding: 4px; background: var(--jlp-surface-2); border: 1px solid var(--jlp-line); border-radius: var(--jlp-r-pill); }
.jlp-auth__tab { flex: 1; appearance: none; border: 0; background: transparent; font: inherit; font-weight: 600; font-size: 0.92rem; color: var(--jlp-ink-mute); padding: 0.6em 0.9em; border-radius: var(--jlp-r-pill); cursor: pointer; transition: background-color var(--jlp-dur) var(--jlp-ease), color var(--jlp-dur) var(--jlp-ease), box-shadow var(--jlp-dur) var(--jlp-ease); }
.jlp-auth__tab:hover { color: var(--jlp-ink); }
.jlp-auth__tab[aria-selected="true"] { background: var(--jlp-surface); color: var(--jlp-ink); box-shadow: var(--jlp-sh-1); }
.jlp-auth__tab:focus-visible { outline: none; box-shadow: var(--jlp-sh-ring); }
.jlp-auth__pane[hidden] { display: none; }
.jlp-auth__form { margin-top: 18px; }
.jlp-auth__reset { margin-top: 20px; border-top: 1px solid var(--jlp-line); padding-top: 14px; }
.jlp-auth__reset summary { cursor: pointer; font-size: 0.9rem; color: var(--jlp-gold-deep); }
.jlp-auth__reset[open] summary { margin-bottom: 12px; }
.jlp-auth__alt { margin-top: 22px; font-size: 0.85rem; color: var(--jlp-ink-mute); }
.jlp-auth__alt .jlp-btn--link { font-size: inherit; }
.jlp-field-row { display: grid; gap: 0 16px; grid-template-columns: 1fr; }
@media (min-width: 480px) { .jlp-field-row { grid-template-columns: 1fr 1fr; } }
/* Honeypot — present in the DOM, invisible to humans & assistive tech. */
.jlp-hp { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* ---------- Section heading (dashboard / order detail) ---------- */
.jlp-section-title { font-family: var(--jlp-ff-display); font-weight: 500; font-size: clamp(1.4rem, 2.4vw, 1.85rem); line-height: 1.12; margin: 0 0 clamp(14px, 2.2vw, 20px); color: var(--jlp-ink); }

/* ---------- Account dashboard ---------- */
.jlp-account-nav { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 clamp(26px, 5vw, 44px); padding-bottom: clamp(16px, 2.6vw, 22px); border-bottom: 1px solid var(--jlp-line); }
.jlp-account-nav__link { display: inline-flex; align-items: center; gap: 8px; padding: 0.5em 1em; border-radius: var(--jlp-r-pill); background: var(--jlp-surface-2); border: 1px solid var(--jlp-line); color: var(--jlp-ink-soft); font-size: 0.86rem; font-weight: 600; text-decoration: none; transition: background-color var(--jlp-dur) var(--jlp-ease), color var(--jlp-dur) var(--jlp-ease), border-color var(--jlp-dur) var(--jlp-ease); }
.jlp-account-nav__link:hover { background: var(--jlp-blush); color: var(--jlp-ink); border-color: var(--jlp-line-strong); }
.jlp-account-nav__count { display: inline-grid; place-items: center; min-width: 1.5em; height: 1.5em; padding: 0 0.35em; border-radius: var(--jlp-r-pill); background: var(--jlp-surface); border: 1px solid var(--jlp-line); font-size: 0.72rem; color: var(--jlp-ink-mute); }
.jlp-dashboard__section { scroll-margin-top: clamp(16px, 6vw, 80px); margin-bottom: clamp(40px, 7vw, 72px); }
.jlp-dashboard__section:last-child { margin-bottom: 0; }
.jlp-account-box { padding: clamp(18px, 2.6vw, 26px); display: flex; flex-wrap: wrap; gap: 18px; justify-content: space-between; align-items: flex-start; }
.jlp-account-box__list { display: grid; gap: 14px; margin: 0; }
.jlp-account-box__list div { display: grid; gap: 2px; }
.jlp-account-box__list dt { font-size: 0.64rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--jlp-ink-mute); }
.jlp-account-box__list dd { margin: 0; color: var(--jlp-ink); font-size: 0.95rem; }
.jlp-account-box__actions { display: flex; flex-wrap: wrap; gap: 8px; }

/* ---------- Status pill ---------- */
.jlp-status { display: inline-flex; align-items: center; gap: 0.4em; font-size: 0.66rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; padding: 4px 10px; border-radius: var(--jlp-r-pill); background: var(--jlp-surface-2); color: var(--jlp-ink-mute); border: 1px solid var(--jlp-line); }
.jlp-status--completed { background: var(--jlp-ok-bg); color: var(--jlp-ok); border-color: var(--jlp-ok-line); }
.jlp-status--processing, .jlp-status--on-hold { background: var(--jlp-warn-bg); color: var(--jlp-warn); border-color: var(--jlp-warn-line); }
.jlp-status--cancelled, .jlp-status--failed, .jlp-status--refunded { background: var(--jlp-error-bg); color: var(--jlp-error); border-color: var(--jlp-error-line); }

/* ---------- Orders list ---------- */
.jlp-orders { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: clamp(12px, 1.8vw, 18px); }
.jlp-order-row { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; justify-content: space-between; padding: clamp(16px, 2.4vw, 22px); }
.jlp-order-row__main { flex: 1 1 280px; min-width: 0; }
.jlp-order-row__head { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.jlp-order-row__num { font-family: var(--jlp-ff-display); font-size: 1.2rem; color: var(--jlp-ink); }
.jlp-order-row__items { margin: 6px 0 0; color: var(--jlp-ink-soft); font-size: 0.92rem; }
.jlp-order-row__meta { display: flex; flex-wrap: wrap; gap: 16px; margin: 12px 0 0; }
.jlp-order-row__meta div { display: grid; gap: 2px; }
.jlp-order-row__meta dt { font-size: 0.62rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--jlp-ink-mute); }
.jlp-order-row__meta dd { margin: 0; font-size: 0.86rem; color: var(--jlp-ink-soft); font-variant-numeric: tabular-nums; }
.jlp-order-row__actions { display: flex; flex-wrap: wrap; gap: 8px; flex: 0 0 auto; }

/* ---------- Order detail ---------- */
.jlp-order-detail__date { color: var(--jlp-ink-mute); font-size: 0.92rem; margin-left: 10px; }
.jlp-order-detail__grid { display: grid; gap: clamp(18px, 2.8vw, 28px); grid-template-columns: 1fr; align-items: start; }
@media (min-width: 920px) { .jlp-order-detail__grid { grid-template-columns: minmax(0,1fr) 320px; } }
.jlp-order-detail__items { padding: clamp(18px, 2.6vw, 28px); }
.jlp-order-detail__aside { display: flex; flex-direction: column; gap: 16px; }
.jlp-order-table { width: 100%; border-collapse: collapse; font-size: 0.92rem; }
.jlp-order-table th, .jlp-order-table td { padding: 12px 8px; text-align: left; border-bottom: 1px solid var(--jlp-line); vertical-align: top; }
.jlp-order-table thead th { font-size: 0.64rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--jlp-ink-mute); border-bottom-color: var(--jlp-line-strong); }
.jlp-order-table__qty, .jlp-order-table__price { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.jlp-order-table__product { display: flex; gap: 12px; align-items: flex-start; }
.jlp-order-table__thumb img { width: 48px; height: 48px; border-radius: var(--jlp-r-xs); object-fit: cover; display: block; }
.jlp-order-table__name { display: grid; gap: 3px; }
.jlp-order-table__name a { color: var(--jlp-ink); text-decoration: none; font-weight: 600; }
.jlp-order-table__name a:hover { color: var(--jlp-gold-deep); }
.jlp-order-table__meta { font-size: 0.78rem; color: var(--jlp-ink-mute); }
.jlp-order-table__meta p { margin: 0; }
.jlp-order-table tfoot th { text-align: right; font-weight: 600; color: var(--jlp-ink-soft); text-transform: none; letter-spacing: 0; font-size: 0.9rem; border-bottom: 0; padding-top: 14px; }
.jlp-order-table tfoot td { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; border-bottom: 0; padding-top: 14px; }
.jlp-order-table__total--order_total th, .jlp-order-table__total--order_total td { font-family: var(--jlp-ff-display); font-size: 1.15rem; color: var(--jlp-ink); border-top: 1px solid var(--jlp-line-strong); }
.jlp-order-detail__note, .jlp-order-detail__downloads { margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--jlp-line); }
.jlp-order-detail__note p { margin: 6px 0 0; color: var(--jlp-ink-soft); }
.jlp-order-detail__downloads-list { list-style: none; margin: 10px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.jlp-order-detail__address { font-style: normal; color: var(--jlp-ink-soft); font-size: 0.92rem; line-height: 1.6; }
.jlp-order-detail__address-extra { margin: 6px 0 0; font-size: 0.86rem; color: var(--jlp-ink-mute); }

/* ---------- Modal ---------- */
.jlp-modal { position: fixed; inset: 0; z-index: 100000; display: flex; align-items: center; justify-content: center; padding: 20px; }
.jlp-modal[hidden] { display: none; }
.jlp-modal__backdrop { position: absolute; inset: 0; background: rgba(43,32,26,0.5); backdrop-filter: blur(3px); animation: jlp-fade-in var(--jlp-dur) ease; }
.jlp-modal__panel { position: relative; width: 100%; max-width: 460px; background: var(--jlp-surface); border-radius: var(--jlp-r-xl); padding: clamp(22px, 4vw, 36px); box-shadow: var(--jlp-sh-4); animation: jlp-pop var(--jlp-dur) var(--jlp-ease-out); max-height: calc(100vh - 40px); overflow-y: auto; }
@keyframes jlp-pop { from { opacity: 0; transform: translateY(12px) scale(.97); } to { opacity: 1; transform: none; } }
.jlp-modal__close { position: absolute; top: 12px; right: 14px; width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; background: transparent; border: 0; font-size: 1.5rem; line-height: 1; color: var(--jlp-ink-mute); cursor: pointer; transition: background-color var(--jlp-dur) var(--jlp-ease); }
.jlp-modal__close:hover { background: var(--jlp-surface-2); color: var(--jlp-ink); }
.jlp-modal__eyebrow { font-size: 0.68rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--jlp-gold-deep); margin: 0 0 4px; }
.jlp-modal__title { font-family: var(--jlp-ff-display); font-weight: 500; font-size: clamp(1.5rem, 2.6vw, 1.85rem); margin: 0 0 8px; }
.jlp-modal__lead { color: var(--jlp-ink-soft); font-size: 0.95rem; margin: 0 0 18px; }
.jlp-modal__fineprint { font-size: 0.76rem; color: var(--jlp-ink-mute); margin: 12px 0 0; line-height: 1.5; }
.jlp-paywall-form__error { background: var(--jlp-error-bg); border: 1px solid var(--jlp-error-line); color: var(--jlp-error); padding: 10px 12px; border-radius: var(--jlp-r-sm); font-size: 0.86rem; margin: 0 0 12px; }
.jlp-paywall-form__error[hidden] { display: none; }

/* ---------- Page-load reveal ----------
   Content is only hidden once JS has marked the root with [data-jlp-reveal];
   if JS never runs, .jlp-rise stays fully visible (no FOUC of a blank page). */
.jlp[data-jlp-reveal] .jlp-rise { opacity: 0; transform: translateY(14px); }
.jlp[data-jlp-reveal] .jlp-rise.is-in { animation: jlp-rise var(--jlp-dur-slow) var(--jlp-ease-out) forwards; }
@keyframes jlp-rise { to { opacity: 1; transform: none; } }

/* ---------- Print (export pages: ?print=1) ---------- */
@media print {
	body.jlp-route { background: #fff !important; }
	.jlp { max-width: none; padding: 0; }
	.jlp-paywall-card, .jlp-planner__rail, .jlp-sticky-cta, .jlp-related, .jlp-faq, .jlp-prose,
	.jlp-planner__value, .jlp-breadcrumbs, .jlp-trust, .jlp-onboard, .jlp-toasts, .jlp-modal,
	.jlp-wizard__rail, .jlp-wizard__nav,
	[data-jlp-handle], [data-jlp-remove], .jlp-btn, .jlp-watermark, .jlp-preview-banner { display: none !important; }
	.jlp-wizard__step { display: block !important; animation: none !important; }
	.is-wizardized.is-all-steps .jlp-wizard__step + .jlp-wizard__step, .jlp-wizard__step + .jlp-wizard__step { border-top: 1px solid #ccc; margin-top: 18px; padding-top: 14px; }
	.jlp-card, .jlp-section, .jlp-planner__editor-pane, .jlp-editor-page__pane { box-shadow: none !important; border-color: #ccc !important; }
	.jlp-display, .jlp-section__title, .jlp-faq__title { color: #000 !important; }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
	.jlp *, .jlp *::before, .jlp *::after,
	.jlp-rise, .jlp-toast, .jlp-modal__panel, .jlp-modal__backdrop, .jlp-repeater__row, .jlp-sticky-cta, .jlp-wizard__step {
		animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important;
	}
	.jlp-rise { opacity: 1 !important; transform: none !important; }
}

/* ---------- Misc helpers used by modules ---------- */
.jlp-tool-icon { display: block; width: 100%; height: 100%; }
.jlp-divider { border: 0; border-top: 1px solid var(--jlp-line); margin: clamp(18px,3vw,28px) 0; }
.jlp-stack { display: flex; flex-direction: column; gap: clamp(14px,2.2vw,22px); }
.jlp-cluster { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.jlp-spread { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; justify-content: space-between; }
.jlp-kpi { display: grid; gap: 4px; }
.jlp-kpi__label { font-size: 0.7rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--jlp-ink-mute); }
.jlp-kpi__value { font-family: var(--jlp-ff-display); font-size: clamp(1.4rem,2.4vw,2rem); color: var(--jlp-ink); line-height: 1; }
.jlp-kpi__sub { font-size: 0.8rem; color: var(--jlp-ink-mute); }
.jlp-kpi-grid { display: grid; gap: clamp(12px,2vw,20px); grid-template-columns: repeat(2, 1fr); }
@media (min-width: 640px) { .jlp-kpi-grid { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); } }
.jlp-tag { display: inline-flex; align-items: center; gap: 0.35em; font-size: 0.78rem; padding: 3px 9px; border-radius: var(--jlp-r-pill); background: var(--jlp-blush); color: var(--jlp-gold-deep); border: 1px solid var(--jlp-line-soft); }
