/* --- Grove Shared Form Styles (H125 spec) --- */
    .grove-hp { position: absolute !important; left: -9999px !important; top: -9999px !important;
      width: 1px !important; height: 1px !important; overflow: hidden !important;
      opacity: 0 !important; pointer-events: none !important; }
    .grove-form-status { padding: 0.85rem 1.1rem; border-radius: 6px; margin-top: 0.75rem;
      font-size: 1rem; line-height: 1.5; display: none; }
    .grove-form-status[data-state="success"] { display: block; background: #e8f5e9; color: #2e7d32; border: 1px solid #c8e6c9; }
    .grove-form-status[data-state="error"] { display: block; background: #ffebee; color: #c62828; border: 1px solid #ffcdd2; }
    .grove-form-status[data-state="loading"] { display: block; background: #fff3e0; color: #6d4c41; border: 1px solid #ffe0b2; }
    .grove-sr-only { position: absolute; width: 1px; height: 1px; padding: 0;
      margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

    /* Inputs scoped under .grove-form — applies to every shared-forms form
       automatically. Legacy forms without the class stay untouched. */
    .grove-form input[type="text"],
    .grove-form input[type="email"],
    .grove-form input[type="tel"],
    .grove-form input[type="url"],
    .grove-form input[type="number"],
    .grove-form input[type="search"],
    .grove-form textarea,
    .grove-form select {
      width: 100%;
      font-size: 16px;                   /* prevents iOS zoom on focus */
      padding: 0.85rem 1rem;             /* ~14px vertical = ~46px tall */
      border: 1.5px solid rgba(0,0,0,0.18);
      border-radius: 6px;
      font-family: inherit;
      line-height: 1.4;
      box-sizing: border-box;
      background: #fff;
      color: inherit;
      margin-bottom: 0.85rem;            /* spacing between fields */
      transition: border-color 0.15s, box-shadow 0.15s;
    }
    .grove-form input:focus,
    .grove-form textarea:focus,
    .grove-form select:focus {
      outline: none;
      border-color: var(--brand-accent, #8B2942);
      box-shadow: 0 0 0 3px var(--brand-accent-alpha, rgba(139, 41, 66, 0.18));
    }
    .grove-form textarea {
      min-height: 96px;
      resize: vertical;
    }
    /* H393: placeholder uses currentColor so it adapts to the form's text color
       (was rgba(0,0,0,0.42) which became invisible on dark-background forms like
       Fuega/Alex/Rentals/Home/Sharecraft/RIG admin/Strip on 7th).
       0.62 opacity keeps WCAG AA contrast (~4.5:1) on both cream-on-navy AND
       navy-on-cream form variants. */
    .grove-form input::placeholder,
    .grove-form textarea::placeholder {
      color: currentColor;
      opacity: 0.62;
    }
    .grove-form input[aria-invalid="true"],
    .grove-form textarea[aria-invalid="true"] {
      border-color: #c62828;
    }
    /* Visible labels (non sr-only) inside grove-form */
    .grove-form > label:not(.grove-sr-only),
    .grove-form > div > label:not(.grove-sr-only) {
      display: block;
      font-size: 0.95rem;
      font-weight: 500;
      margin-bottom: 0.4rem;
      color: inherit;
    }

    /* Primary submit button used by Fuega/ShareCraft/contact via grove-btn-primary */
    .grove-form button[type="submit"],
    .grove-form input[type="submit"],
    .grove-form .grove-btn-primary,
    .grove-form-submit {
      width: 100%;
      font-size: 1.05rem;                /* 17px */
      font-weight: 600;
      padding: 0.95rem 1.5rem;
      border-radius: 6px;
      border: none;
      cursor: pointer;
      background: var(--brand-accent, #8B2942);
      color: var(--brand-on-accent, #fff);
      letter-spacing: 0.02em;
      min-height: 48px;                  /* WCAG touch target */
      transition: opacity 0.15s, transform 0.05s;
      font-family: inherit;
      box-sizing: border-box;
    }
    /* Secondary button (used on Fuega May 1 "Ask to come") */
    .grove-form .grove-btn-secondary {
      width: 100%;
      font-size: 1.05rem;
      font-weight: 600;
      padding: 0.95rem 1.5rem;
      border-radius: 6px;
      border: 1.5px solid var(--brand-accent, #8B2942);
      cursor: pointer;
      background: transparent;
      color: var(--brand-accent, #8B2942);
      min-height: 48px;
      transition: opacity 0.15s, transform 0.05s;
      font-family: inherit;
      box-sizing: border-box;
    }
    .grove-form button[type="submit"]:hover:not([disabled]),
    .grove-form .grove-btn-primary:hover:not([disabled]),
    .grove-form .grove-btn-secondary:hover:not([disabled]),
    .grove-form-submit:hover:not([disabled]) { opacity: 0.92; }
    .grove-form button[type="submit"]:active:not([disabled]),
    .grove-form .grove-btn-primary:active:not([disabled]),
    .grove-form .grove-btn-secondary:active:not([disabled]),
    .grove-form-submit:active:not([disabled]) { transform: translateY(1px); }
    .grove-form button[disabled],
    .grove-form button[aria-busy="true"],
    .grove-form-submit[disabled],
    .grove-form-submit[aria-busy="true"] {
      opacity: 0.6;
      cursor: wait;
    }
    @media (min-width: 600px) and (max-width: 767px) {
      .grove-form button[type="submit"],
      .grove-form .grove-btn-primary,
      .grove-form .grove-btn-secondary,
      .grove-form-submit { width: 85%; max-width: 320px; }
    }
    @media (min-width: 768px) {
      .grove-form button[type="submit"],
      .grove-form .grove-btn-primary,
      .grove-form .grove-btn-secondary,
      .grove-form-submit { width: auto; min-width: 220px; }
    }