/*
 * JDN Guest Manager — public forms.
 * Customize per wedding by overriding these variables in the theme, e.g.:
 * .jdn-gm { --jdn-gm-accent: #5a1e2b; --jdn-gm-font: 'Cormorant Garamond', serif; }
 * Selectors are doubled (.jdn-gm .jdn-gm-x) to beat theme input styles (Salient).
 */
.jdn-gm {
	--jdn-gm-font: inherit;
	--jdn-gm-label-font: inherit;
	--jdn-gm-text: inherit;
	--jdn-gm-muted: #6b6b6b;
	--jdn-gm-border: #cfcac3;
	--jdn-gm-field-bg: transparent;
	--jdn-gm-accent: #1a1a1a;
	--jdn-gm-accent-text: #ffffff;
	--jdn-gm-error: #a1281f;
	--jdn-gm-radius: 0;
	--jdn-gm-gap: 18px;
	--jdn-gm-max-width: 560px;

	max-width: var(--jdn-gm-max-width);
	margin: 0 auto;
	font-family: var(--jdn-gm-font);
	color: var(--jdn-gm-text);
}

.jdn-gm .jdn-gm-form { display: flex; flex-direction: column; gap: var(--jdn-gm-gap); margin: 0; }
.jdn-gm .jdn-gm-row--half { display: grid; grid-template-columns: 1fr 1fr; gap: var(--jdn-gm-gap); }
@media (max-width: 600px) { .jdn-gm .jdn-gm-row--half { grid-template-columns: 1fr; } }

.jdn-gm .jdn-gm-field { display: flex; flex-direction: column; gap: 6px; }
.jdn-gm .jdn-gm-field label {
	font-family: var(--jdn-gm-label-font);
	font-size: 0.8em;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--jdn-gm-muted);
	margin: 0;
}

.jdn-gm input.jdn-gm-input,
.jdn-gm select.jdn-gm-input {
	width: 100%;
	box-sizing: border-box;
	padding: 12px 14px;
	margin: 0;
	font: inherit;
	font-size: 16px; /* prevents iOS zoom on focus */
	color: inherit;
	background: var(--jdn-gm-field-bg);
	border: 1px solid var(--jdn-gm-border);
	border-radius: var(--jdn-gm-radius);
	box-shadow: none;
	appearance: auto;
}
.jdn-gm input.jdn-gm-input:focus,
.jdn-gm select.jdn-gm-input:focus { outline: 2px solid var(--jdn-gm-accent); outline-offset: 1px; border-color: var(--jdn-gm-accent); }

.jdn-gm .jdn-gm-consent label { display: flex; gap: 10px; align-items: flex-start; font-size: 0.9em; line-height: 1.5; cursor: pointer; }
.jdn-gm .jdn-gm-consent input[type="checkbox"] { flex: 0 0 auto; width: 18px; height: 18px; margin: 3px 0 0; accent-color: var(--jdn-gm-accent); }
.jdn-gm .jdn-gm-consent a { color: inherit; text-decoration: underline; }

.jdn-gm .jdn-gm-submit {
	box-sizing: border-box;
	align-self: stretch;
	width: 100%;
	padding: 16px 32px;
	margin: 0;
	font: inherit;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--jdn-gm-accent-text);
	background: var(--jdn-gm-accent);
	border: 1px solid var(--jdn-gm-accent);
	border-radius: var(--jdn-gm-radius);
	cursor: pointer;
	transition: opacity 0.2s ease;
}
.jdn-gm .jdn-gm-submit:hover { opacity: 0.85; }
.jdn-gm .jdn-gm-submit:disabled { opacity: 0.5; cursor: wait; }

.jdn-gm .jdn-gm-message:empty { display: none; }
.jdn-gm .jdn-gm-message.is-error { color: var(--jdn-gm-error); }
.jdn-gm .jdn-gm-success,
.jdn-gm.jdn-gm-closed { text-align: center; font-size: 1.1em; line-height: 1.6; padding: 24px 0; }

/* Honeypot: hidden from people, visible to bots. */
.jdn-gm .jdn-gm-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

/* Personal link request box and private content */
.jdn-gm.jdn-gm-access { text-align: left; }
.jdn-gm .jdn-gm-access__intro { margin: 0 0 var(--jdn-gm-gap); line-height: 1.6; }
.jdn-gm .jdn-gm-form--inline { gap: 12px; }
.jdn-gm .jdn-gm-access .jdn-gm-message.is-error { margin: 0 0 var(--jdn-gm-gap); }
.jdn-gm.jdn-gm-denied { font-style: italic; color: var(--jdn-gm-muted); }

/* ---------- RSVP form ---------- */
.jdn-gm.jdn-gm-rsvp { --jdn-gm-max-width: 720px; --jdn-gm-card-bg: transparent; --jdn-gm-card-border: var(--jdn-gm-border); }
.jdn-gm .jdn-gm-rsvp__note { margin: 0 0 var(--jdn-gm-gap); padding: 12px 16px; border-left: 2px solid var(--jdn-gm-accent); line-height: 1.5; }
.jdn-gm .jdn-gm-rsvp__form { display: flex; flex-direction: column; gap: var(--jdn-gm-gap); margin: 0; }
.jdn-gm .jdn-gm-rsvp__form fieldset { border: 0; margin: 0; padding: 0; min-width: 0; display: flex; flex-direction: column; gap: var(--jdn-gm-gap); }
.jdn-gm .jdn-gm-person { padding: 22px 22px 6px; border: 1px solid var(--jdn-gm-card-border); border-radius: var(--jdn-gm-radius); background: var(--jdn-gm-card-bg); }
.jdn-gm .jdn-gm-person--plus { margin-top: calc(var(--jdn-gm-gap) * -0.5); border-style: dashed; }
.jdn-gm .jdn-gm-person__name { margin: 0 0 14px; font-size: 1.25em; line-height: 1.3; font-weight: 400; }
.jdn-gm .jdn-gm-tag { display: inline-block; margin-left: 6px; padding: 1px 8px; font-size: 0.6em; letter-spacing: 0.08em; text-transform: uppercase; vertical-align: middle; border: 1px solid var(--jdn-gm-border); border-radius: 20px; color: var(--jdn-gm-muted); }
.jdn-gm .jdn-gm-hint { margin: 4px 0 0; font-size: 0.85em; color: var(--jdn-gm-muted); }
.jdn-gm .jdn-gm-person--plus > .jdn-gm-hint { margin: -8px 0 14px; }

.jdn-gm .jdn-gm-attend { margin: 0 0 18px; }
.jdn-gm .jdn-gm-attend__q,
.jdn-gm .jdn-gm-q__label { margin: 0 0 8px; font-size: 0.8em; letter-spacing: 0.08em; text-transform: uppercase; color: var(--jdn-gm-muted); }
.jdn-gm .jdn-gm-attend__row { display: grid; grid-template-columns: 1fr auto; gap: 8px 16px; align-items: center; padding: 10px 0; border-top: 1px solid var(--jdn-gm-border); }
.jdn-gm .jdn-gm-attend__event strong { display: block; font-weight: 600; }
.jdn-gm .jdn-gm-attend__event span { font-size: 0.85em; color: var(--jdn-gm-muted); }
@media (max-width: 600px) { .jdn-gm .jdn-gm-attend__row { grid-template-columns: 1fr; } }

.jdn-gm .jdn-gm-q { margin: 0 0 18px; }
.jdn-gm .jdn-gm-q textarea.jdn-gm-input { width: 100%; box-sizing: border-box; padding: 12px 14px; font: inherit; font-size: 16px; color: inherit; background: var(--jdn-gm-field-bg); border: 1px solid var(--jdn-gm-border); border-radius: var(--jdn-gm-radius); resize: vertical; }
.jdn-gm .jdn-gm-q input.jdn-gm-input[type="date"],
.jdn-gm .jdn-gm-q input.jdn-gm-input[type="number"] { max-width: 220px; }
.jdn-gm .jdn-gm-other { margin-top: 8px !important; }

.jdn-gm .jdn-gm-choice-group { display: flex; flex-wrap: wrap; gap: 8px; }
.jdn-gm .jdn-gm-pill { position: relative; margin: 0; cursor: pointer; }
.jdn-gm .jdn-gm-pill input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.jdn-gm .jdn-gm-pill span { display: inline-block; padding: 9px 16px; font-size: 0.95em; line-height: 1.2; border: 1px solid var(--jdn-gm-border); border-radius: 30px; transition: background .15s ease, color .15s ease, border-color .15s ease; }
.jdn-gm .jdn-gm-pill input:checked + span { background: var(--jdn-gm-accent); border-color: var(--jdn-gm-accent); color: var(--jdn-gm-accent-text); }
.jdn-gm .jdn-gm-pill input:focus-visible + span { outline: 2px solid var(--jdn-gm-accent); outline-offset: 2px; }
.jdn-gm .jdn-gm-pill input:disabled + span { opacity: .6; cursor: default; }

.jdn-gm .is-invalid .jdn-gm-pill span,
.jdn-gm .is-invalid .jdn-gm-input { border-color: var(--jdn-gm-error); }
.jdn-gm .is-invalid .jdn-gm-q__label,
.jdn-gm .jdn-gm-attend__row.is-invalid .jdn-gm-attend__event,
.jdn-gm .jdn-gm-consent.is-invalid span { color: var(--jdn-gm-error); }
.jdn-gm .jdn-gm-rsvp__form.is-loading { opacity: .6; pointer-events: none; }
.jdn-gm.jdn-gm-rsvp.is-closed .jdn-gm-person { opacity: .85; }

/* ---------- Welcome pop-up ---------- */
html.jdn-gm-noscroll { overflow: hidden; }
.jdn-gm.jdn-gm-popup { position: fixed; inset: 0; z-index: 100000; max-width: none; display: flex; align-items: center; justify-content: center; padding: 16px; }
.jdn-gm.jdn-gm-popup[hidden] { display: none; }
.jdn-gm .jdn-gm-popup__backdrop { position: absolute; inset: 0; background: rgba(20, 20, 20, .55); }
.jdn-gm .jdn-gm-popup__box { position: relative; width: 100%; max-width: 460px; max-height: calc(100vh - 32px); overflow: auto; padding: 36px 32px 28px; text-align: center; color: var(--jdn-gm-popup-text, #222); background: var(--jdn-gm-popup-bg, #fff); border-radius: var(--jdn-gm-radius); box-shadow: 0 20px 60px rgba(0, 0, 0, .25); }
.jdn-gm .jdn-gm-popup__x { position: absolute; top: 8px; right: 12px; padding: 4px 8px; font-size: 26px; line-height: 1; color: inherit; background: none; border: 0; cursor: pointer; opacity: .6; }
.jdn-gm .jdn-gm-popup__img { display: block; max-width: 100%; max-height: 220px; margin: -8px auto 20px; object-fit: contain; }
.jdn-gm .jdn-gm-popup__title { margin: 0 0 12px; font-size: 1.7em; line-height: 1.2; font-weight: 400; }
.jdn-gm .jdn-gm-popup__body { margin: 0 0 24px; line-height: 1.6; }
.jdn-gm .jdn-gm-popup__actions { display: flex; flex-direction: column; gap: 10px; align-items: stretch; }
.jdn-gm .jdn-gm-popup__actions .jdn-gm-submit { display: block; text-align: center; text-decoration: none; }
.jdn-gm .jdn-gm-link-btn { padding: 8px; font: inherit; color: inherit; background: none; border: 0; text-decoration: underline; cursor: pointer; }
.jdn-gm .jdn-gm-popup .jdn-gm-access { text-align: left; }
.jdn-gm .jdn-gm-popup__group { margin: -4px 0 14px; padding: 10px 14px; font-size: 0.92em; line-height: 1.5; border: 1px solid var(--jdn-gm-border); border-radius: var(--jdn-gm-radius); }
