/**
 * Unity Gala Common Public Forms
 * Centralized in Core so every Gala module inherits the same accessible form UI.
 * Scoped to Unity Gala wrappers only; does not restyle unrelated WordPress forms.
 */

:root{
  --ug-form-ink:#172033;
  --ug-form-heading:#07101f;
  --ug-form-muted:#5c6674;
  --ug-form-bg:#fff;
  --ug-form-soft:#fbf8f2;
  --ug-form-border:#9aa6b5;
  --ug-form-border-hover:#6f7d8f;
  --ug-form-gold:#d7b46a;
  --ug-form-burgundy:#681c2b;
  --ug-form-success:#185d2d;
  --ug-form-error:#8a1523;
}

/* Form surfaces: force readable dark text on light cards regardless of theme inheritance. */
.ug-front .ug-card:has(form),
.ug-front form.ug-card,
.ugx-form,
.ug-partner-public .ug-card:has(form){
  color:var(--ug-form-ink)!important;
}

.ug-front .ug-card:has(form) > h1,
.ug-front .ug-card:has(form) > h2,
.ug-front .ug-card:has(form) > h3,
.ug-front form h1,
.ug-front form h2,
.ug-front form h3,
.ugx-form h1,
.ugx-form h2,
.ugx-form h3,
.ug-partner-public form h1,
.ug-partner-public form h2,
.ug-partner-public form h3{
  color:var(--ug-form-heading)!important;
}

/* Labels and helper copy */
.ug-front form label,
.ug-front .ug-field label,
.ugx-form label,
.ug-partner-public form label{
  color:var(--ug-form-ink)!important;
  font-weight:800!important;
  line-height:1.35;
}

.ug-front form small,
.ug-front form .description,
.ug-front form .ug-muted,
.ugx-form small,
.ugx-form .description,
.ug-partner-public form small,
.ug-partner-public form .description{
  color:var(--ug-form-muted)!important;
}

/* Text controls */
.ug-front form input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not([type="hidden"]),
.ug-front form select,
.ug-front form textarea,
.ugx-form input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not([type="hidden"]),
.ugx-form select,
.ugx-form textarea,
.ug-partner-public form input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not([type="hidden"]),
.ug-partner-public form select,
.ug-partner-public form textarea{
  width:100%;
  max-width:100%;
  box-sizing:border-box;
  min-height:48px;
  padding:12px 14px!important;
  border:1.5px solid var(--ug-form-border)!important;
  border-radius:10px!important;
  background:var(--ug-form-bg)!important;
  color:var(--ug-form-heading)!important;
  -webkit-text-fill-color:var(--ug-form-heading);
  caret-color:var(--ug-form-burgundy);
  font:inherit;
  font-size:16px!important;
  line-height:1.45;
  box-shadow:inset 0 1px 2px rgba(7,16,31,.04);
  color-scheme:light;
  transition:border-color .18s ease,box-shadow .18s ease,background .18s ease;
}

.ug-front form textarea,
.ugx-form textarea,
.ug-partner-public form textarea{
  min-height:120px;
  resize:vertical;
}

.ug-front form select option,
.ugx-form select option,
.ug-partner-public form select option{
  background:#fff!important;
  color:#07101f!important;
}

.ug-front form input::placeholder,
.ug-front form textarea::placeholder,
.ugx-form input::placeholder,
.ugx-form textarea::placeholder,
.ug-partner-public form input::placeholder,
.ug-partner-public form textarea::placeholder{
  color:#768190!important;
  opacity:1;
}

.ug-front form input:not([type="checkbox"]):not([type="radio"]):hover,
.ug-front form select:hover,
.ug-front form textarea:hover,
.ugx-form input:not([type="checkbox"]):not([type="radio"]):hover,
.ugx-form select:hover,
.ugx-form textarea:hover,
.ug-partner-public form input:not([type="checkbox"]):not([type="radio"]):hover,
.ug-partner-public form select:hover,
.ug-partner-public form textarea:hover{
  border-color:var(--ug-form-border-hover)!important;
}

.ug-front form input:not([type="checkbox"]):not([type="radio"]):focus,
.ug-front form select:focus,
.ug-front form textarea:focus,
.ugx-form input:not([type="checkbox"]):not([type="radio"]):focus,
.ugx-form select:focus,
.ugx-form textarea:focus,
.ug-partner-public form input:not([type="checkbox"]):not([type="radio"]):focus,
.ug-partner-public form select:focus,
.ug-partner-public form textarea:focus{
  outline:none!important;
  border-color:var(--ug-form-gold)!important;
  box-shadow:0 0 0 4px rgba(215,180,106,.22)!important;
}

/* Browser autofill must remain readable. */
.ug-front form input:-webkit-autofill,
.ug-front form input:-webkit-autofill:hover,
.ug-front form input:-webkit-autofill:focus,
.ugx-form input:-webkit-autofill,
.ug-partner-public form input:-webkit-autofill{
  -webkit-text-fill-color:var(--ug-form-heading)!important;
  -webkit-box-shadow:0 0 0 1000px #fff inset!important;
}

/* Checkbox / radio controls */
.ug-front form input[type="checkbox"],
.ug-front form input[type="radio"],
.ugx-form input[type="checkbox"],
.ugx-form input[type="radio"],
.ug-partner-public form input[type="checkbox"],
.ug-partner-public form input[type="radio"]{
  width:18px!important;
  height:18px!important;
  min-width:18px;
  margin:0 8px 0 0!important;
  vertical-align:-3px;
  accent-color:var(--ug-form-burgundy);
}

.ug-front form label:has(> input[type="checkbox"]),
.ug-front form label:has(> input[type="radio"]),
.ugx-form label:has(> input[type="checkbox"]),
.ugx-form label:has(> input[type="radio"]),
.ug-partner-public form label:has(> input[type="checkbox"]),
.ug-partner-public form label:has(> input[type="radio"]){
  display:flex!important;
  align-items:flex-start;
  gap:8px;
  color:#273241!important;
  font-weight:650!important;
  line-height:1.5;
}

/* Required markers generated by plugins or themes */
.ug-front form .required,
.ugx-form .required,
.ug-partner-public form .required{
  color:var(--ug-form-burgundy)!important;
}

/* Shared public action buttons, while preserving module-specific layouts. */
.ug-front form .ug-button,
.ug-front form button.ug-button,
.ugx-form .ugx-button,
.ug-partner-public form .ug-button{
  border:1px solid var(--ug-form-gold)!important;
  background:linear-gradient(135deg,#d7b46a,#bd9349)!important;
  color:#07101f!important;
  font-weight:900!important;
  box-shadow:0 8px 22px rgba(7,16,31,.12);
  transition:transform .16s ease,filter .16s ease,box-shadow .16s ease;
}

.ug-front form .ug-button:hover,
.ug-front form button.ug-button:hover,
.ugx-form .ugx-button:hover,
.ug-partner-public form .ug-button:hover{
  filter:brightness(1.045);
  transform:translateY(-1px);
  box-shadow:0 11px 28px rgba(7,16,31,.17);
}

.ug-front form .ug-button.secondary{
  background:#26344a!important;
  border-color:#26344a!important;
  color:#fff!important;
}

/* Disabled controls */
.ug-front form :disabled,
.ugx-form :disabled,
.ug-partner-public form :disabled{
  opacity:.58;
  cursor:not-allowed;
}

/* Notices */
.ug-front .ug-notice,
.ugx-notice,
.ug-partner-public .ug-notice{
  color:var(--ug-form-ink)!important;
  border:1px solid rgba(7,16,31,.12);
}
.ug-front .ug-error,
.ugx-notice.error,
.ug-partner-public .ug-error{color:var(--ug-form-error)!important}
.ug-front .ug-success,
.ugx-notice.success,
.ug-partner-public .ug-success{color:var(--ug-form-success)!important}

/* File inputs */
.ug-front form input[type="file"],
.ugx-form input[type="file"],
.ug-partner-public form input[type="file"]{
  padding:8px!important;
  background:#fff!important;
  color:var(--ug-form-heading)!important;
}
.ug-front form input[type="file"]::file-selector-button,
.ugx-form input[type="file"]::file-selector-button,
.ug-partner-public form input[type="file"]::file-selector-button{
  margin-right:10px;
  border:0;
  border-radius:7px;
  padding:8px 11px;
  background:#07101f;
  color:#fff;
  font-weight:800;
  cursor:pointer;
}

/* Keep dense payment choices compact and readable. */
.ug-front .ug-payment-options > label{
  color:var(--ug-form-ink)!important;
  background:#fff!important;
}

/* Mobile ergonomics */
@media(max-width:700px){
  .ug-front form input:not([type="checkbox"]):not([type="radio"]),
  .ug-front form select,
  .ug-front form textarea,
  .ugx-form input:not([type="checkbox"]):not([type="radio"]),
  .ugx-form select,
  .ugx-form textarea,
  .ug-partner-public form input:not([type="checkbox"]):not([type="radio"]),
  .ug-partner-public form select,
  .ug-partner-public form textarea{
    font-size:16px!important;
  }
}

@media(prefers-reduced-motion:reduce){
  .ug-front form *,
  .ugx-form *,
  .ug-partner-public form *{
    transition:none!important;
    scroll-behavior:auto!important;
  }
}

/* -------------------------------------------------------------------------
 * Embedded / inside-field labels
 * Core JS moves standard field labels into the control wrapper. The real
 * label remains visible and associated with the field, so unlike placeholders
 * the field name does not disappear after someone starts typing.
 * ---------------------------------------------------------------------- */
.ug-front form .ug-embedded-label-field,
.ugx-form .ug-embedded-label-field,
.ug-partner-public form .ug-embedded-label-field{
  position:relative;
  display:block;
  width:100%;
  min-width:0;
  box-sizing:border-box;
}

.ug-front form .ug-embedded-label-field > .ug-embedded-label,
.ugx-form .ug-embedded-label-field > .ug-embedded-label,
.ug-partner-public form .ug-embedded-label-field > .ug-embedded-label{
  position:absolute!important;
  z-index:3;
  top:7px;
  left:14px;
  right:14px;
  display:block!important;
  width:auto!important;
  margin:0!important;
  padding:0!important;
  color:#647083!important;
  background:transparent!important;
  font-size:10.5px!important;
  font-weight:850!important;
  line-height:1.2!important;
  letter-spacing:.045em;
  text-transform:uppercase;
  pointer-events:none;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  transition:color .16s ease;
}

.ug-front form .ug-embedded-label-field:focus-within > .ug-embedded-label,
.ugx-form .ug-embedded-label-field:focus-within > .ug-embedded-label,
.ug-partner-public form .ug-embedded-label-field:focus-within > .ug-embedded-label{
  color:var(--ug-form-burgundy)!important;
}

.ug-front form .ug-embedded-label-field > input:not([type="checkbox"]):not([type="radio"]),
.ug-front form .ug-embedded-label-field > select,
.ug-front form .ug-embedded-label-field > textarea,
.ugx-form .ug-embedded-label-field > input:not([type="checkbox"]):not([type="radio"]),
.ugx-form .ug-embedded-label-field > select,
.ugx-form .ug-embedded-label-field > textarea,
.ug-partner-public form .ug-embedded-label-field > input:not([type="checkbox"]):not([type="radio"]),
.ug-partner-public form .ug-embedded-label-field > select,
.ug-partner-public form .ug-embedded-label-field > textarea{
  margin:0!important;
  min-height:58px;
  padding-top:25px!important;
  padding-bottom:8px!important;
}

.ug-front form .ug-embedded-label-field > textarea,
.ugx-form .ug-embedded-label-field > textarea,
.ug-partner-public form .ug-embedded-label-field > textarea{
  min-height:132px;
  padding-top:27px!important;
}

.ug-front form .ug-embedded-select > select,
.ugx-form .ug-embedded-select > select,
.ug-partner-public form .ug-embedded-select > select{
  padding-top:22px!important;
}

.ug-front form .ug-embedded-file > input[type="file"],
.ugx-form .ug-embedded-file > input[type="file"],
.ug-partner-public form .ug-embedded-file > input[type="file"]{
  min-height:64px;
  padding-top:25px!important;
}

/* Preserve compact composite rows such as Promo Code + Apply. */
.ug-front form .ug-promo-control > .ug-embedded-label-field,
.ugx-form .ug-promo-control > .ug-embedded-label-field,
.ug-partner-public form .ug-promo-control > .ug-embedded-label-field{
  flex:1 1 auto;
}

/* Section/group labels (payment method, checkbox/radio groups) stay outside. */
.ug-front form .ug-payment-methods > label:not(.ug-embedded-label),
.ug-front form fieldset > legend,
.ugx-form fieldset > legend,
.ug-partner-public form fieldset > legend{
  color:var(--ug-form-heading)!important;
  font-weight:850!important;
}

@media(max-width:700px){
  .ug-front form .ug-embedded-label-field > .ug-embedded-label,
  .ugx-form .ug-embedded-label-field > .ug-embedded-label,
  .ug-partner-public form .ug-embedded-label-field > .ug-embedded-label{
    font-size:10px!important;
  }
}
