/* Live forms: iPhone waitlist (/download, /meshchat) and written-quote request (/install).
   Fields come from site.css (.field). This file adds the layout, the honeypot, the status line
   and the confirmation card. State is never colour alone: errors use .field__error's drawn mark. */
.mv-form{display:grid;gap:var(--s-4);width:100%;max-width:34rem}
.close__line + .mv-form{margin-top:var(--s-8)}
.mv-form .field{margin:0}
.mv-form .actions{margin:0}
.mv-form__row{display:grid;gap:var(--s-4)}
@media (min-width:720px){.mv-form__row--2{grid-template-columns:1fr 1fr}}
.mv-form__trap{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}
.mv-form__status{margin:0;font:600 var(--t-sm)/var(--lh-ui) var(--font-ui);color:var(--ink)}
.mv-form__status:empty{display:none}
.mv-form__fine{margin:0;font:400 var(--t-xs)/var(--lh-ui) var(--font-ui);color:var(--ink-3)}
.mv-form__status.ok{padding:var(--s-3) var(--s-4);background:var(--card);box-shadow:var(--lift-1);border-left:4px solid var(--ink)}
.mv-form[aria-busy="true"] button[type="submit"]{opacity:.6;cursor:progress}
/* The busy button stays focusable (aria-disabled, never disabled), so it keeps its ring. */
.mv-form[aria-busy="true"] button[type="submit"]:focus-visible{box-shadow:var(--focus-ring)}
.ins-step{margin:0 0 var(--s-4);font:600 var(--t-lg)/var(--lh-ui-lg) var(--font-ui);color:var(--ink)}
.mv-done{display:grid;gap:var(--s-3);max-width:34rem;padding:var(--s-5) var(--s-6);background:var(--card);box-shadow:var(--lift-1);border-radius:var(--r-card);border-left:4px solid var(--ink)}
.mv-done p{margin:0}
.mv-done__lead{font:600 var(--t-md)/var(--lh-ui-lg) var(--font-ui);color:var(--ink)}
.mv-done__more{font:400 var(--t-sm)/var(--lh-ui) var(--font-ui);color:var(--ink-2)}
.mv-done:focus-visible{outline:var(--focus-w) solid var(--ink);outline-offset:3px}
