/**
 * Temiz Wear Form Component System
 * 
 * Reusable form styling untuk WooCommerce checkout, account details,
 * login, dan standard form fields dengan accessible states dan
 * responsive mobile-first behavior.
 * 
 * @package Temiz Wear
 * @since 1.0.0
 */

/* ============================================
   FORM FOUNDATION
   ============================================ */

form {
  font-family: var(--tw-font-body);
  font-size: var(--tw-font-size-base);
  line-height: var(--tw-line-height-base);
}

fieldset {
  border: none;
  padding: 0;
  margin: 0 0 2rem 0;
}

legend {
  display: block;
  width: 100%;
  padding: 0;
  margin: 0 0 1.5rem 0;
  font-size: 1.25rem;
  font-weight: 500;
  color: var(--tw-color-text);
  border: none;
}

/* ============================================
   LABELS
   ============================================ */

label {
  display: block;
  margin-bottom: 0.5rem;
  color: var(--tw-color-text);
  font-weight: 500;
  font-size: 0.95rem;
}

.woocommerce-form-row label,
.form-row label {
  display: block;
  margin-bottom: 0.5rem;
  color: var(--tw-color-text);
  font-weight: 500;
}

label .required,
.required {
  color: var(--tw-color-error);
  margin-left: 0.25rem;
  font-weight: 600;
}

label .optional,
.optional {
  color: var(--tw-color-text-muted);
  font-size: 0.85rem;
  font-weight: normal;
  margin-left: 0.5rem;
}

/* ============================================
   TEXT CONTROLS (Inputs & Textareas)
   ============================================ */

input[type="text"],
input[type="email"],
input[type="password"],
input[type="tel"],
input[type="number"],
input[type="search"],
input[type="url"],
input[type="date"],
textarea,
select,
.input-text,
.woocommerce-Input {
  display: block;
  width: 100%;
  padding: 0.875rem 1rem;
  border: 1px solid var(--tw-color-border);
  border-radius: var(--tw-radius-small);
  background-color: var(--tw-color-white);
  color: var(--tw-color-text);
  font-family: var(--tw-font-body);
  font-size: var(--tw-font-size-base);
  line-height: var(--tw-line-height-base);
  transition: border-color var(--tw-transition-duration) var(--tw-transition-easing), 
              background-color var(--tw-transition-duration) var(--tw-transition-easing),
              box-shadow var(--tw-transition-duration) var(--tw-transition-easing);
  box-sizing: border-box;
}

input[type="text"],
input[type="email"],
input[type="password"],
input[type="tel"],
input[type="number"],
input[type="search"],
input[type="url"],
input[type="date"],
.input-text,
.woocommerce-Input {
  min-height: 44px;
}

textarea {
  min-height: 120px;
  resize: vertical;
}

/* ============================================
   PLACEHOLDER
   ============================================ */

::placeholder {
  color: var(--tw-color-text-muted);
  opacity: 0.85;
}

input::placeholder,
textarea::placeholder {
  color: var(--tw-color-text-muted);
  opacity: 0.85;
}

/* ============================================
   FOCUS STATE
   ============================================ */

input[type="text"]:focus-visible,
input[type="email"]:focus-visible,
input[type="password"]:focus-visible,
input[type="tel"]:focus-visible,
input[type="number"]:focus-visible,
input[type="search"]:focus-visible,
input[type="url"]:focus-visible,
input[type="date"]:focus-visible,
textarea:focus-visible,
select:focus-visible,
.input-text:focus-visible,
.woocommerce-Input:focus-visible {
  border-color: var(--tw-color-accent);
  background-color: var(--tw-color-white);
  outline: 2px solid var(--tw-color-accent);
  outline-offset: 0;
  box-shadow: 0 0 0 3px rgba(168, 130, 61, 0.1);
}

/* ============================================
   SELECT CONTROLS (Native & Select2)
   ============================================ */

select,
.select {
  appearance: none;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%231C1C1A' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3E%3C/svg%3E");
  background-position: right 1rem center;
  background-repeat: no-repeat;
  background-size: 20px;
  padding-right: 2.5rem;
  cursor: pointer;
}

/* Select2 Styling */

.select2-container {
  width: 100% !important;
}

.select2-container--default .select2-selection--single {
  display: block;
  width: 100%;
  height: 44px;
  padding: 0.875rem 1rem;
  border: 1px solid var(--tw-color-border);
  border-radius: var(--tw-radius-small);
  background-color: var(--tw-color-white);
  font-family: var(--tw-font-body);
  font-size: var(--tw-font-size-base);
  line-height: 1.5;
  transition: border-color var(--tw-transition-duration) var(--tw-transition-easing);
}

.select2-container--default .select2-selection--single:focus,
.select2-container--default.select2-container--focus .select2-selection--single {
  border-color: var(--tw-color-accent);
  outline: 2px solid var(--tw-color-accent);
  outline-offset: 0;
  box-shadow: 0 0 0 3px rgba(168, 130, 61, 0.1);
}

.select2-container--default .select2-selection--single .select2-selection__rendered {
  padding: 0;
  color: var(--tw-color-text);
  line-height: 1.5;
}

.select2-container--default .select2-selection--single .select2-selection__arrow {
  position: absolute;
  top: 50%;
  right: 0.75rem;
  width: auto;
  height: auto;
  transform: translateY(-50%);
}

.select2-container--default .select2-selection--single .select2-selection__arrow b {
  display: none;
}

.select2-dropdown {
  border: 1px solid var(--tw-color-border);
  border-radius: var(--tw-radius-small);
  margin-top: 4px;
}

.select2-dropdown .select2-search__field {
  padding: 0.5rem;
  font-size: var(--tw-font-size-base);
  border: 1px solid var(--tw-color-border);
  border-radius: var(--tw-radius-small);
}

.select2-results__option {
  padding: 0.75rem 1rem;
  color: var(--tw-color-text);
}

.select2-results__option:hover,
.select2-results__option.select2-results__option--highlighted {
  background-color: var(--tw-color-accent);
  color: var(--tw-color-base);
}

.select2-results__option.select2-results__option--selected {
  background-color: var(--tw-color-accent);
  color: var(--tw-color-base);
}

/* ============================================
   TEXTAREA
   ============================================ */

textarea,
.woocommerce-Input--textarea {
  font-family: var(--tw-font-body);
  line-height: 1.5;
  resize: vertical;
  min-height: 120px;
}

/* ============================================
   CHECKBOX & RADIO CONTROLS
   ============================================ */

input[type="checkbox"],
input[type="radio"],
.woocommerce-form__input-checkbox,
.woocommerce-form__input-radio {
  display: inline-block;
  width: 1.25rem;
  height: 1.25rem;
  margin: 0;
  margin-right: 0.75rem;
  vertical-align: middle;
  cursor: pointer;
  accent-color: var(--tw-color-accent);
}

label input[type="checkbox"],
label input[type="radio"] {
  margin-right: 0.75rem;
}

/* Checkbox/Radio label alignment */

.woocommerce-form-row input[type="checkbox"],
.woocommerce-form-row input[type="radio"],
.form-row input[type="checkbox"],
.form-row input[type="radio"] {
  margin-top: 0.35rem;
}

input[type="checkbox"]:focus-visible,
input[type="radio"]:focus-visible {
  outline: 2px solid var(--tw-color-accent);
  outline-offset: 2px;
}

/* Payment method radio controls */

.wc_payment_method input[type="radio"] {
  margin-right: 0.75rem;
  cursor: pointer;
}

.wc_payment_method label {
  display: flex;
  align-items: center;
  margin-bottom: 1rem;
  cursor: pointer;
}

/* ============================================
   FORM ROWS & GROUPING
   ============================================ */

.woocommerce-form-row,
.form-row {
  margin-bottom: 1.5rem;
  display: flex;
  flex-wrap: wrap;
}

.woocommerce-form-row--first,
.form-row-first {
  flex: 1 1 100%;
}

.woocommerce-form-row--last,
.form-row-last {
  flex: 1 1 100%;
}

.woocommerce-form-row--wide,
.form-row-wide {
  flex: 1 1 100%;
}

.clear {
  clear: both;
}

/* ============================================
   RESPONSIVE: TABLET & DESKTOP (48rem+)
   ============================================ */

@media (min-width: 48rem) {
  .woocommerce-form-row--first,
  .form-row-first {
    flex: 0 1 calc(50% - 0.75rem);
    margin-right: 1.5rem;
  }

  .woocommerce-form-row--last,
  .form-row-last {
    flex: 0 1 calc(50% - 0.75rem);
  }

  .woocommerce-form-row--wide,
  .form-row-wide {
    flex: 1 1 100%;
    margin-right: 0;
  }
}

/* ============================================
   PASSWORD FIELDS
   ============================================ */

input[type="password"],
.woocommerce-Input--password {
  font-family: monospace;
}

.woocommerce-password-hint {
  color: var(--tw-color-text-muted);
  font-size: 0.85rem;
  margin-top: 0.5rem;
}

.woocommerce-password-strength {
  margin-top: 0.5rem;
  padding: 0.5rem;
  border-radius: var(--tw-radius-small);
  font-size: 0.85rem;
}

.woocommerce-password-strength.strong {
  background-color: rgba(22, 163, 74, 0.1);
  color: var(--tw-color-success);
}

.woocommerce-password-strength.short {
  background-color: rgba(220, 38, 38, 0.1);
  color: var(--tw-color-error);
}

/* ============================================
   HELP TEXT & DESCRIPTIONS
   ============================================ */

.description,
.woocommerce-input-wrapper .description {
  display: block;
  margin-top: 0.5rem;
  color: var(--tw-color-text-muted);
  font-size: 0.85rem;
  line-height: 1.4;
}

.woocommerce-form-row .description {
  flex: 1 1 100%;
  margin-top: 0.5rem;
}

/* ============================================
   VALIDATION STATES
   ============================================ */

.woocommerce-form-row.woocommerce-validated {
  border-left: 4px solid var(--tw-color-success);
  padding-left: 1rem;
}

.woocommerce-form-row.woocommerce-validated input,
.woocommerce-form-row.woocommerce-validated select,
.woocommerce-form-row.woocommerce-validated textarea {
  border-color: var(--tw-color-success);
}

.woocommerce-form-row.woocommerce-invalid {
  border-left: 4px solid var(--tw-color-error);
  padding-left: 1rem;
}

.woocommerce-form-row.woocommerce-invalid input,
.woocommerce-form-row.woocommerce-invalid select,
.woocommerce-form-row.woocommerce-invalid textarea {
  border-color: var(--tw-color-error);
}

input.woocommerce-invalid:focus-visible,
select.woocommerce-invalid:focus-visible,
textarea.woocommerce-invalid:focus-visible {
  border-color: var(--tw-color-error);
  outline: 2px solid var(--tw-color-error);
  box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);
}

.woocommerce-invalid-required-field {
  border-left: 4px solid var(--tw-color-error);
  padding-left: 1rem;
}

.woocommerce-invalid-required-field input,
.woocommerce-invalid-required-field select,
.woocommerce-invalid-required-field textarea {
  border-color: var(--tw-color-error);
}

/* ============================================
   DISABLED & READONLY STATES
   ============================================ */

input:disabled,
input[readonly],
select:disabled,
textarea:disabled,
.input-text:disabled,
.woocommerce-Input:disabled {
  background-color: var(--tw-color-border);
  color: var(--tw-color-text-muted);
  cursor: not-allowed;
  opacity: 0.6;
}

input:disabled:hover,
input[readonly]:hover,
select:disabled:hover,
textarea:disabled:hover {
  border-color: var(--tw-color-border);
}

input:disabled:focus-visible,
input[readonly]:focus-visible,
select:disabled:focus-visible,
textarea:disabled:focus-visible {
  outline: none;
}

/* ============================================
   AUTOFILL COMPATIBILITY
   ============================================ */

input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus-visible,
input:-webkit-autofill:focus {
  -webkit-box-shadow: 0 0 0 1000px var(--tw-color-white) inset;
  box-shadow: 0 0 0 1000px var(--tw-color-white) inset;
}

input:-webkit-autofill {
  -webkit-text-fill-color: var(--tw-color-text);
  caret-color: var(--tw-color-text);
}

/* ============================================
   WOOCOMMERCE FORM WRAPPERS
   ============================================ */

.woocommerce-form {
  margin-bottom: 2rem;
}

.woocommerce-form-row {
  margin-bottom: 1.5rem;
}

.woocommerce-billing-fields,
.woocommerce-shipping-fields,
.woocommerce-additional-fields {
  margin-bottom: 2rem;
}

.woocommerce-billing-fields h3,
.woocommerce-shipping-fields h3,
.woocommerce-additional-fields h3 {
  font-size: 1.125rem;
  font-weight: 500;
  color: var(--tw-color-text);
  margin-bottom: 1.5rem;
}

/* ============================================
   LOGIN & REGISTRATION FORMS
   ============================================ */

.woocommerce-form-login,
.woocommerce-form-register {
  margin-bottom: 2rem;
}

.woocommerce-form-login .woocommerce-form-row,
.woocommerce-form-register .woocommerce-form-row {
  margin-bottom: 1.5rem;
}

/* ============================================
   LOST PASSWORD & RESET FORMS
   ============================================ */

.woocommerce-form-lost-password,
.woocommerce-form-reset-password {
  margin-bottom: 2rem;
}

/* ============================================
   FORM WRAPPER CONTAINERS
   ============================================ */

.checkout-container,
.checkout-customer-details,
.checkout-billing-address,
.checkout-shipping-address,
.checkout-order-review {
  margin-bottom: 2rem;
}

.woocommerce-EditAccountForm {
  max-width: 100%;
}

.edit-account fieldset {
  margin-bottom: 2rem;
}

.edit-account .woocommerce-form-row {
  margin-bottom: 1.5rem;
}

/* ============================================
   ACCESSIBILITY: REDUCED MOTION
   ============================================ */

@media (prefers-reduced-motion: reduce) {
  input[type="text"],
  input[type="email"],
  input[type="password"],
  input[type="tel"],
  input[type="number"],
  input[type="search"],
  input[type="url"],
  input[type="date"],
  textarea,
  select,
  .input-text,
  .woocommerce-Input,
  .select2-container .select2-selection--single {
    transition: none;
  }
}

/* ============================================
   ACCESSIBILITY: LONG LABEL WRAPPING
   ============================================ */

label {
  word-wrap: break-word;
  overflow-wrap: break-word;
}

.woocommerce-form-row label {
  max-width: 100%;
}

/* ============================================
   LOGICAL PROPERTIES (RTL Support)
   ============================================ */

label .required,
.required {
  margin-inline-start: 0.25rem;
}

label .optional,
.optional {
  margin-inline-start: 0.5rem;
}

input[type="checkbox"],
input[type="radio"],
.woocommerce-form__input-checkbox,
.woocommerce-form__input-radio {
  margin-inline-end: 0.75rem;
}

select,
.select {
  padding-inline-end: 2.5rem;
}