/* =============================================================================
   SECOND WIND - FORMS (inputs, validation, checkout, quiz controls)
   ============================================================================= */
.field { display: block; margin-bottom: var(--s4); }
.field > label, .field-label { display: block; font-weight: 600; font-size: var(--fs-sm); margin-bottom: 0.4rem; }
.field .req { color: var(--danger); }
.field .help { font-size: var(--fs-xs); color: var(--ink-3); margin-top: 0.35rem; }
.input, .select, .textarea {
  width: 100%; min-height: 48px; padding: 0.75rem 0.9rem; background: var(--surface);
  border: 1.5px solid var(--line); border-radius: var(--r-sm); font-size: 1rem;
  transition: border-color var(--dur-1) var(--ease), box-shadow var(--dur-1) var(--ease);
}
.textarea { min-height: 110px; resize: vertical; }
.input:focus, .select:focus, .textarea:focus { outline: none; border-color: var(--breath); box-shadow: 0 0 0 3px rgba(31,110,122,0.18); }
.input[aria-invalid="true"], .select[aria-invalid="true"], .textarea[aria-invalid="true"] { border-color: var(--danger); box-shadow: 0 0 0 3px rgba(179,38,30,0.15); }
.field-error { display: none; color: var(--danger); font-size: var(--fs-xs); font-weight: 600; margin-top: 0.35rem; }
.field.invalid .field-error { display: block; }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s4); }

/* Checkbox / radio */
.check { display: flex; align-items: flex-start; gap: 0.6rem; font-size: var(--fs-sm); cursor: pointer; }
.check input { width: 20px; height: 20px; margin-top: 2px; accent-color: var(--brand-deep); flex: 0 0 auto; }
/* A collection with no product yet: listed so the range is visible, dimmed and
   inert so nobody filters their way into an empty grid. */
.check--soon { cursor: default; color: var(--ink-3); }
.check--soon input { opacity: 0.45; cursor: default; }
/* The tag sits on its own line so the three rows line up the same way -
   inline, it fits after "The Nations" but wraps after the longer names. */
.check--soon .demo-tag { display: block; width: fit-content; margin-top: 0.25rem; }

/* Password toggle */
.pw-wrap { position: relative; }
.pw-wrap .pw-toggle { position: absolute; right: 0.5rem; top: 50%; transform: translateY(-50%); padding: 0.4rem; color: var(--ink-3); }

/* Error summary */
.error-summary { border: 1.5px solid var(--danger); background: #fdeceb; color: #7a1a15; border-radius: var(--r-sm); padding: 0.9rem 1.1rem; margin-bottom: var(--s5); }
.error-summary h3 { color: #7a1a15; font-size: 1rem; }
.error-summary a { color: #7a1a15; text-decoration: underline; }

/* Segmented option cards (quiz / gift finder / size) */
.opt-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 0.7rem; }
.opt {
  position: relative; display: flex; align-items: center; gap: 0.6rem; padding: 0.95rem 1.05rem;
  border: 1.5px solid var(--line); border-radius: var(--r-md); background: var(--surface);
  font-weight: 600; cursor: pointer; transition: border-color var(--dur-1) var(--ease), background var(--dur-1) var(--ease), transform var(--dur-1) var(--ease); text-align: left;
}
.opt:hover { border-color: var(--ink); transform: translateY(-2px); }
.opt[aria-pressed="true"], .opt.sel { border-color: var(--accent-deep); background: var(--accent-soft); color: var(--accent-ink); }
.opt__tick { width: 22px; height: 22px; border-radius: var(--r-pill); border: 1.5px solid var(--line); display: grid; place-items: center; flex: 0 0 auto; }
.opt[aria-pressed="true"] .opt__tick, .opt.sel .opt__tick { background: var(--accent-deep); border-color: var(--accent-deep); }
.opt[aria-pressed="true"] .opt__tick svg, .opt.sel .opt__tick svg { opacity: 1; }
.opt__tick svg { width: 13px; height: 13px; color: #fff; opacity: 0; }

/* Size / swatch selectors (PDP) */
.size-row, .color-row { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.size-opt { min-width: 48px; height: 48px; padding: 0 0.8rem; display: grid; place-items: center; border: 1.5px solid var(--line); border-radius: var(--r-sm); font-weight: 700; cursor: pointer; }
.size-opt.sel { border-color: var(--ink); background: var(--ink); color: var(--paper); }
.color-opt { width: 44px; height: 44px; border-radius: var(--r-pill); border: 1.5px solid var(--line); cursor: pointer; position: relative; display: grid; place-items: center; }
.color-opt .dot { width: 30px; height: 30px; border-radius: var(--r-pill); border: 1px solid rgba(0,0,0,0.1); }
.color-opt.sel { border-color: var(--ink); box-shadow: 0 0 0 2px var(--surface) inset; }
.color-opt.sel::after { content: ""; position: absolute; inset: -6px; border: 2px solid var(--ink); border-radius: var(--r-pill); }

/* Quiz progress */
.stepper { display: flex; align-items: center; gap: 0.5rem; margin-bottom: var(--s6); }
.stepper__dot { flex: 1; height: 5px; border-radius: var(--r-pill); background: var(--paper-3); overflow: hidden; }
.stepper__dot.done { background: var(--accent); }
.stepper__dot.active { background: var(--accent); opacity: 0.55; }
.step-label { font-size: var(--fs-xs); font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-3); }
