/* Visible field labels, per the design: bold note-size labels above each input instead of the
   framework float-label pattern; input placeholders hidden ("Select" options stay visible). */

fieldset .input-text label.abs {
	position: static;
	opacity: 1;
	pointer-events: auto;
	transform: none;
	margin-block-end: .35em;
	font-size: var(--fnt-t-nt-s);
	font-weight: var(--fnt-t-4-w);
}

fieldset .input-text :is(input, textarea)::placeholder {
	color: transparent;
}

/* Solid white fields on every palette, per the design (labels carry the contrast).
   The fill is always --lt-bg, so on a DARK surface the field reads on its own and the
   border stays out of the way; on a LIGHT surface (a light section, a .bg-bx tint, or a
   .flp-bg panel that flipped light) white-on-white has no edge and the field needs one.
   --frm-fld-bdr carries that decision: every light palette block in color-structure.css
   sets a hairline, every dark block sets `transparent`. A token, not a selector, because
   .flp-bg sets no data-colors attribute — the flipped lightness is only visible in the
   cascade. Fallback keeps the borderless look if a form renders outside any palette. */
fieldset .input-text :is(input, select, textarea) {
	background: var(--lt-bg);
	color: var(--lt-txt);
	border-color: var(--frm-fld-bdr, transparent);
}

fieldset .input-text > svg {
	bottom: 1.2em;
	color: var(--lt-lnk);
}

/* Required marker after the visible label, as drawn in the design. */
fieldset .input-text label.abs:has(+ :required)::after {
	content: " *";
}

/* Two-step (tabbable) fieldset — step progress indicator + step controls.
   Only applies in the multi-step state; the default single-step form is unaffected. */

.fs-prog {
	list-style: none;
	padding: 0;
	margin-block-start: 0;
	pointer-events: none; /* visual progress only — navigation is via Next/Previous */
}

.fs-prog-step {
	padding-block-end: .5rem;
	border-block-end: 2px solid var(--bdr-clr);
}

.fs-prog-step.active {
	border-block-end-color: var(--buttons);
}
