/* PhD Hero Widgets v1.0.0 — hero-widgets.css
 *
 * ONE rule family: reserve the Cloudflare Turnstile slot inside
 * WPForms forms so a form does not grow when the widget renders.
 *
 * Measured geometry (2026-11-10/11): WPForms prints
 *   <div class="wpforms-recaptcha-container wpforms-is-turnstile">
 *     <div class="wpforms-turnstile" data-sitekey="..." data-action="FormID-XX"></div>
 *     <input ... class="wpforms-recaptcha-hidden">
 *   </div>
 * immediately before the form's submit container. The .wpforms-turnstile
 * div is empty (height 0) until WPForms' JS calls turnstile.render()
 * (the API is loaded with render=explicit). The rendered widget is
 * Cloudflare's standard-size iframe: 65px tall. WPForms' own
 * stylesheet gives .wpforms-turnstile padding:10px 0 0. A form
 * therefore grows by 10 + 65 = 75px at render — mid-read, if the
 * form is on screen (the Nov 10 measurement watched the homepage
 * contact form grow exactly this way).
 *
 * Reserving the container's min-height at 75px makes the form's
 * final height correct from first paint; when the widget renders
 * it fills its own slot and nothing moves. Turnstile itself is
 * never deferred, lazy-loaded, restyled or otherwise handled —
 * only the empty space it will occupy is pre-sized. The
 * :not() guard leaves WPForms' invisible-Turnstile variant
 * (which WPForms deliberately sizes to height:0) untouched; the
 * live forms use the visible variant, verified in the served HTML.
 */
.wpforms-container .wpforms-recaptcha-container.wpforms-is-turnstile:not(.wpforms-is-turnstile-invisible) {
    min-height: 75px;
}
