/* The Observe account form (lib/public-site/observe-form.ts), on /start (#open),
   its one page since the site panel's C2. A plain form: every state
   is drawn on the server. */
.ob-card { background: var(--kf-panel-solid); border-radius: 24px; box-shadow: var(--kf-shadow-card); padding: clamp(18px, 2.6vw, 30px); scroll-margin-top: calc(var(--site-header-h) + 16px); }
.ob-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 18px; }
.ob-fields .full { grid-column: 1 / -1; }
@media (max-width: 620px) { .ob-fields { grid-template-columns: minmax(0, 1fr); } }
.ob-card .field { display: grid; gap: 6px; align-content: start; }
.ob-card .field label { font: 600 var(--kf-fs-small)/1.3 var(--kf-sans); color: var(--kf-ink); }
.ob-card .field .opt { font-weight: 400; color: var(--kf-muted); }
.ob-card .field .hint { margin: -2px 0 2px; font-size: var(--kf-fs-meta); line-height: 1.45; color: var(--kf-muted); }
.ob-card .field input, .ob-card .field textarea {
  width: 100%; min-height: 48px; padding: 11px 14px; border-radius: 12px; border: 1.5px solid rgba(60, 44, 24, 0.28);
  background: #fffdf8; color: var(--kf-ink); font: 400 var(--kf-fs-body)/1.4 var(--kf-sans); }
.ob-card .field textarea { min-height: 96px; resize: vertical; }
.ob-card .field input:focus-visible, .ob-card .field textarea:focus-visible { outline: 2px solid var(--kf-sienna); outline-offset: 2px; border-color: var(--kf-sienna); }
.ob-card .field [aria-invalid="true"] { border-color: var(--kf-red); background: #fffaf6; }
.ob-card .field .err { margin: 0; font: 600 var(--kf-fs-small)/1.4 var(--kf-sans); color: var(--kf-red); }
/* Hidden from people and from autofill (display: none); a script that fills every field fills it. */
.ob-hp { display: none; }
.ob-alert { margin: 0 0 16px; padding: 12px 14px; border-radius: 12px; background: #fbeee6; box-shadow: inset 0 0 0 1.5px rgba(168, 50, 31, 0.35); color: var(--kf-red); font: 600 var(--kf-fs-small)/1.45 var(--kf-sans); }
.ob-alert a { color: inherit; }
.ob-turnaround { margin: 18px 0 0; font-size: var(--kf-fs-small); color: var(--kf-muted); }
/* Cloudflare draws the widget at 300px or wider. Its height is held so the page
   does not jump as it loads, and a phone narrower than that never scrolls sideways. */
.ob-turnstile { margin-top: 14px; min-height: 65px; max-width: 100%; overflow: hidden; }
.ob-submit { margin-top: 10px; }
.ob-submit .ob-send { justify-content: center; min-width: 220px; min-height: 48px; font-size: var(--kf-fs-body); }
.ob-fallback { margin: 18px 0 0; font-size: var(--kf-fs-body); }
.ob-fallback a, .ob-consent a { color: var(--kf-sienna-text); font-weight: 600; }
.ob-consent { margin: 8px 0 0; font-size: var(--kf-fs-small); color: var(--kf-muted); }
/* Sent: the form gives way to one line, with a receipt in clay. */
.ob-done { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 18px 22px; align-items: center; }
@media (max-width: 520px) { .ob-done { grid-template-columns: minmax(0, 1fr); justify-items: start; } }
/* The status card takes the focus as the sent page appears (site panel T1),
   so a screen reader reads it; it is no control, so it shows no focus ring. */
.ob-done:focus { outline: none; }
.ob-done-fig { position: relative; width: 140px; height: 130px; }
.ob-done-fig > * { position: absolute; }
.ob-done-fig .dglow { left: -40px; top: -20px; width: 220px; height: 180px; border-radius: 50%; background: radial-gradient(closest-side, rgba(247, 178, 90, 0.6), rgba(247, 178, 90, 0.18) 55%, rgba(247, 178, 90, 0) 100%); }
.ob-done-fig img { left: 50%; bottom: 10px; translate: -50% 0; max-width: none; }
.ob-done-copy p:last-child { margin: 0; font-size: var(--kf-fs-body); }
.ob-done-copy a { color: var(--kf-sienna-text); font-weight: 600; }
