/**
 * Lux Domus forms: Book a Consultation and Contact.
 *
 * Builds on the theme's form styles (.form-panel, .field, .field__input, .check, .bk-choice,
 * .btn); this file adds what real inputs need: choice cards outside the Book page, the photo
 * picker, the error summary, the thank-you panel, the compact footer form and the honeypot.
 */

/* The honeypot: off screen for people and assistive technology (aria-hidden), present for bots. */
.ld-hp { position: absolute !important; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }

.ld-form { position: relative; }
.ld-form-wrap { scroll-margin-top: 96px; }

/* The theme draws a pretend box on .check for its placeholder forms; these have real inputs. */
.ld-form .check::before { content: none; display: none; }
.ld-form .check a { color: var(--brass-text); text-underline-offset: .2em; }
.ld-form .check input:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.ld-form .field.is-error .field__label, .ld-form .ld-group.is-error > legend { color: var(--error); }
.ld-form select.field__input { background: transparent; }
.ld-form textarea.field__input { min-height: 0; }

/* Choice cards (radio groups); the Book page's own .bk- rules give the same look. */
:where(.ld-form) .ld-group { margin: 0; padding: 0; border: 0; min-width: 0; }
:where(.ld-form) .ld-group > legend { float: left; width: 100%; margin: 0 0 14px; padding: 0; }
:where(.ld-form) .ld-group > legend + * { clear: both; }
:where(.ld-form) .ld-group:focus-within > legend { color: var(--brass-text); }
:where(.ld-form) .ld-choices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px clamp(10px, 1.4vw, 16px); }
:where(.ld-form) .ld-choices.bk-choices--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
:where(.ld-form) .ld-choice { padding: 13px 16px; border: 1px solid var(--line); transition: border-color .6s var(--ease), background-color .6s var(--ease); }
:where(.ld-form) .ld-choice:hover { border-color: var(--muted); }
:where(.ld-form) .ld-choice:has(input:checked) { border-color: var(--brass-text); background: var(--bg); }
.ld-form .ld-choice:has(input:focus-visible) { outline: 2px solid var(--focus); outline-offset: 2px; }
.ld-form .ld-choice input:focus-visible { outline: none; }
.ld-form .ld-group.is-error .ld-choice { border-color: color-mix(in srgb, var(--error) 55%, var(--line)); }
.ld-form .ld-group .field__hint { clear: both; margin: -6px 0 12px; }

/* Date and time, after the script splits the single list into two. */
.ld-slot { margin: 0; padding: 0; border: 0; min-width: 0; }
.ld-slot > legend { float: left; width: 100%; margin: 0 0 6px; padding: 0; }
.ld-slot > legend + * { clear: both; }
.ld-slot:focus-within > legend { color: var(--brass-text); }
.ld-slot__pair { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 0 clamp(20px, 2.4vw, 32px); }
.ld-slot__pair .field__label { font-size: .6rem; letter-spacing: .22em; color: var(--muted); }
.ld-slot.is-error > legend { color: var(--error); }
.ld-slot.is-error .field__input { border-bottom-color: var(--error); box-shadow: 0 1px 0 0 var(--error); }

/* Photo picker: the real file input covers the face, so it stays keyboard and screen-reader native. */
.ld-file { position: relative; display: flex; }
.ld-file__input { position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.ld-file__face { display: flex; align-items: center; gap: 16px; width: 100%; min-width: 0; padding: .55rem 0 .7rem; border-bottom: 1px solid var(--muted); transition: border-color .6s var(--ease), box-shadow .6s var(--ease); }
.ld-file__btn { flex: none; padding: .6rem .95rem; border: 1px solid var(--line-strong); font: 500 .62rem/1.2 var(--sans); letter-spacing: .18em; text-transform: uppercase; color: var(--ink); transition: border-color .4s var(--ease); }
.ld-file__names { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .95rem; color: var(--muted); }
.ld-file:hover .ld-file__btn { border-color: var(--brass); }
.ld-file:focus-within .ld-file__face { border-bottom-color: var(--focus); box-shadow: 0 1px 0 0 var(--focus); }
.ld-file:focus-within .ld-file__btn { outline: 2px solid var(--focus); outline-offset: 2px; }
.field.is-error .ld-file__face { border-bottom-color: var(--error); box-shadow: 0 1px 0 0 var(--error); }

/* Error summary. */
.ld-form__summary { padding: 18px 22px 16px; border: 1px solid color-mix(in srgb, var(--error) 50%, var(--line)); border-left: 3px solid var(--error); background: color-mix(in srgb, var(--error) 5%, var(--surface)); }
.ld-form__summary:focus { outline: none; }
.ld-form__summary:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
.ld-form__summary-title { margin: 0; font: 500 .66rem/1.6 var(--sans); letter-spacing: .22em; text-transform: uppercase; color: var(--error); }
.ld-form__summary ul { margin: 8px 0 0; padding-left: 1.1em; }
.ld-form__summary ul:empty { display: none; }
.ld-form__summary li { font-size: .94rem; line-height: 1.6; color: var(--text); }
.ld-form__summary a { color: inherit; text-decoration-color: var(--error); text-underline-offset: .2em; }
.ld-form__reattach { margin: 0; }

/* Sending. */
.ld-form.is-busy .btn { opacity: .72; cursor: progress; }
.ld-form .form-status.is-error { color: var(--error); }

/* Thank-you panel, in the form panel's shape. */
.ld-form__done {
	--r: clamp(64px, 7vw, 112px);
	position: relative;
	padding: clamp(32px, 4vw, 60px) clamp(24px, 4vw, 60px) clamp(40px, 5vw, 72px);
	background: var(--surface); border: 1px solid var(--line); border-radius: 0 0 var(--r) 0;
}
.ld-form__done::before { content: ""; position: absolute; inset: 8px; border: 1px solid var(--brass); opacity: .5; border-radius: 0 0 calc(var(--r) - 8px) 0; pointer-events: none; }
.ld-form__done:focus { outline: none; }
.ld-form__done:focus-visible { outline: 2px solid var(--focus); outline-offset: 4px; }
.ld-form__done .eyebrow { margin: 0 0 14px; }
.ld-form__done-title { margin: 0 0 14px; font: 300 clamp(1.9rem, 1.4rem + 1.4vw, 2.6rem)/1.1 var(--serif); color: var(--ink); }
.ld-form__done-text { margin: 0; max-width: 36em; font-size: 1rem; line-height: 1.65; color: var(--text); }
.ld-form--closed .ld-form__done-title { font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem); }
.ld-form--closed a { color: var(--brass-text); }

/* ---------- Compact form (footer band) ---------- */
.ld-form-wrap--compact {
	--text: var(--band-ink); --ink: var(--band-ink); --muted: var(--band-muted); --brass-text: var(--band-brass);
	--line: var(--band-line); --line-strong: color-mix(in srgb, var(--band-ink) 45%, transparent);
	--focus: var(--band-focus); --surface: transparent;
	--error: #F0A595; /* the error tone for dark grounds (every palette's band is dark) */
	padding: clamp(36px, 4vw, 56px) 0 clamp(80px, 8vw, 104px); border-top: 1px solid var(--band-line); /* room below for the footer's brass skyline */
}
.ld-form-wrap--compact .ld-form__heading { margin: 0 0 22px; font: 500 .62rem/1.4 var(--sans); letter-spacing: .26em; text-transform: uppercase; color: var(--band-ink); }
.ld-form__inline { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.7fr) auto; gap: 22px clamp(20px, 2.4vw, 32px); align-items: start; }
.ld-form--compact .field__input { color: var(--band-ink); border-bottom-color: color-mix(in srgb, var(--band-ink) 45%, transparent); }
.ld-form--compact .field__input::placeholder { color: var(--band-muted); }
.ld-form--compact .field__label { color: var(--band-ink); }
.ld-form--compact textarea.field__input { line-height: 1.5; min-height: calc(1.0625rem * 1.5 + 1.45rem + 1px); max-height: 10rem; resize: none; field-sizing: content; overflow-y: auto; }
.ld-form--compact .form-actions { padding-top: calc(.66rem * 1.4 + 6px); }
.ld-form__note { margin: 16px 0 0; font-size: .84rem; line-height: 1.6; color: var(--band-muted); }
.ld-form__note a { color: var(--band-brass); text-underline-offset: .2em; }
.ld-form--compact .form-status:empty { display: none; }
.ld-form--compact .form-status { margin-top: 10px; color: var(--band-muted); }
.ld-form--compact .ld-form__summary { margin-bottom: 18px; background: transparent; border-color: color-mix(in srgb, var(--error) 50%, transparent); border-left-color: var(--error); }
.ld-form-wrap--compact .ld-form__done { padding: 0; background: transparent; border: 0; }
.ld-form-wrap--compact .ld-form__done::before { content: none; }
.ld-form-wrap--compact .ld-form__done-title { font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem); }
.ld-form-wrap--compact .ld-form__done .eyebrow { color: var(--band-muted); }

@media (max-width: 1024px) {
	.ld-form__inline { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ld-form__inline .ld-field--textarea, .ld-form__inline .form-actions { grid-column: 1 / -1; }
	.ld-form--compact .form-actions { padding-top: 0; }
}
@media (max-width: 760px) {
	:where(.ld-form) .ld-choices, :where(.ld-form) .ld-choices.bk-choices--3 { grid-template-columns: minmax(0, 1fr); }
	.ld-slot__pair { grid-template-columns: minmax(0, 1fr); gap: 22px; }
}
@media (max-width: 600px) {
	.ld-form__inline { grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) {
	.ld-form *, .ld-form-wrap * { transition: none !important; }
}
