/* Shared form primitives for every page (home contact + checkout, proposal, booking manage). */
.field { display: grid; gap: var(--sp-2); }
.field > label, .field > .label { font: 500 var(--fs-xs)/1 var(--font-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.input {
  min-height: var(--tap); padding: 0 var(--sp-4); border-radius: var(--radius-sm);
  background: var(--bg); border: 1px solid var(--border-strong); color: var(--fg); width: 100%;
}
textarea.input { padding: var(--sp-3) var(--sp-4); min-height: 120px; resize: vertical; }
.input:hover { border-color: var(--muted); }
.input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.form { display: grid; gap: var(--sp-4); padding: var(--sp-6); border-radius: var(--radius-lg); border: 1px solid var(--border); background: var(--surface); }
.form .row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-4); }
.err { color: var(--error); font-size: var(--fs-sm); min-height: 1.2em; }
.input[aria-invalid="true"] { border-color: var(--error); }
.form-ok { color: var(--success); font-size: var(--fs-sm); }
.hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.form-ok.is-error { color: var(--error); }
