/* Generated (phase-5 PR3): one class per distinct inline style formerly on contact.html. Content-addressed (tl-<sha1[:8]>). */
.tl-1444c6ea.tl-1444c6ea{font-size:16px}
.tl-31c2edbb.tl-31c2edbb{font-size:16px;line-height:1.5}
.tl-3faaa9f4.tl-3faaa9f4{background:linear-gradient(135deg,#C0392B,#E74C3C);color:white;padding:1rem;border-radius:8px;font-size:18px;text-align:center}
.tl-64775154.tl-64775154{font-size:10px;font-weight:700;letter-spacing:0.16em;text-transform:uppercase;color:#C0392B;margin-bottom:1rem;margin-top:1rem}
.tl-6b99de8b.tl-6b99de8b{display:none}
.tl-810550aa.tl-810550aa{border:1px solid var(--border)}
.tl-9c2c2c56.tl-9c2c2c56{font-size:10px;font-weight:700;letter-spacing:0.16em;text-transform:uppercase;color:#C0392B;margin-bottom:1rem;margin-top:2rem}
.tl-bc9eeb42.tl-bc9eeb42{background:transparent !important;border:1.5px solid currentColor;color:#FFFFFF !important}
.tl-e08c15b5.tl-e08c15b5{background:#C0392B !important;color:white !important;margin-right:0.5rem}
.tl-fc511f0c.tl-fc511f0c{margin-top:1.5rem}

/* ── P2: validation error UI ─────────────────────────────────────────────────────────────
   assets/js/form-validation-a11y.js creates one empty role="alert" per field on demand and
   fills it when that field fails, so an error is announced, visible and tied to its control
   by aria-describedby. Measured before this: aria-describedby, aria-invalid, aria-errormessage,
   role="alert" and aria-live were absent from every collecting form, so the only feedback was
   the browser's own transient bubble on the first invalid control.
   The empty state must occupy no space, or a long form carries a column of blank paragraphs. */
.tl-field-error{font-size:14px;line-height:1.4;font-weight:600;color:#A5291D;margin-top:.35rem}
.tl-field-error:empty{display:none}
/* Colour is not the only signal — the message sits below the field and is announced — but the
   failing control is marked so it can be found without reading every label. */
[aria-invalid="true"]{box-shadow:inset 0 -2px 0 0 #A5291D}
