.ofal-questionnaire {
  --ofalq-ink: #120e1c;
  --ofalq-muted: #6a6280;
  --ofalq-faint: #9a92b0;
  --ofalq-border: #e8e2f5;
  --ofalq-panel: #f8f5ff;
  --ofalq-white: #fff;
  --ofalq-crimson: #dc0050;
  --ofalq-crimson-dark: #b8003e;
  --ofalq-purple: #5014a0;
  color: var(--ofalq-ink);
  font-family: 'DM Sans', system-ui, sans-serif;
  font-size: 16px;
  line-height: 1.65;
  width: 100%;
  min-width: 0;
}

.ofal-questionnaire,
.ofal-questionnaire * { box-sizing: border-box; }
.ofal-questionnaire [hidden] { display: none !important; }
.ofal-questionnaire button,
.ofal-questionnaire input,
.ofal-questionnaire select,
.ofal-questionnaire textarea { font: inherit; }
.ofal-questionnaire button { cursor: pointer; }
.ofal-questionnaire p,
.ofal-questionnaire h3,
.ofal-questionnaire h4 { margin: 0; }
.ofal-questionnaire h3 {
  color: var(--ofalq-ink);
  font-family: 'Playfair Display', Georgia, serif;
  font-size: clamp(2rem, 5vw, 3.5rem);
  font-weight: 700;
  letter-spacing: -.035em;
  line-height: 1.08;
  overflow-wrap: anywhere;
}
.ofal-questionnaire h3 em { color: var(--ofalq-crimson); font-style: italic; }
.ofal-questionnaire h3:focus { outline: none; }
.ofal-questionnaire :focus-visible {
  outline: 3px solid color-mix(in srgb, var(--ofalq-purple) 65%, white);
  outline-offset: 3px;
}

.ofalq-progress {
  align-items: center;
  border-bottom: 1px solid var(--ofalq-border);
  display: flex;
  gap: 1rem;
  padding-bottom: 1rem;
}
.ofalq-progress > p:first-child,
.ofalq-small-label,
.ofalq-eyebrow {
  color: var(--ofalq-purple);
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.ofalq-progress progress {
  appearance: none;
  background: var(--ofalq-border);
  border: 0;
  color: var(--ofalq-crimson);
  flex: 1;
  height: 3px;
  max-width: 10rem;
}
.ofalq-progress progress::-webkit-progress-bar { background: var(--ofalq-border); }
.ofalq-progress progress::-webkit-progress-value { background: var(--ofalq-crimson); }
.ofalq-progress progress::-moz-progress-bar { background: var(--ofalq-crimson); }
.ofalq-intro-note { color: var(--ofalq-faint); font-size: .75rem; margin-top: 1rem !important; }

.ofalq-step {
  display: grid;
  gap: 2rem;
  min-width: 0;
  padding: 2.5rem 0 3rem;
}
.ofalq-heading { display: grid; gap: .8rem; }
.ofalq-heading > p { color: var(--ofalq-muted); max-width: 40rem; }
.ofalq-options { display: grid; gap: .75rem; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ofalq-options--compact { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ofalq-fieldset { border: 0; margin: 0; min-width: 0; padding: 0; }
.ofalq-fieldset > legend {
  color: var(--ofalq-purple);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .08em;
  margin-bottom: .75rem;
  padding: 0;
}
.ofalq-muted { color: var(--ofalq-faint); font-size: .72rem; font-weight: 400; }
.ofalq-choice {
  align-items: center;
  background: var(--ofalq-white);
  border: 1px solid var(--ofalq-border);
  display: flex;
  gap: .8rem;
  min-height: 4.5rem;
  min-width: 0;
  padding: 1rem;
  transition: border-color .2s ease, background .2s ease, box-shadow .2s ease;
}
.ofalq-choice:hover { border-color: #c8bbdf; }
.ofalq-choice:has(input:checked) {
  background: var(--ofalq-panel);
  border-color: var(--ofalq-crimson);
  box-shadow: inset 3px 0 0 var(--ofalq-crimson);
}
.ofalq-choice:has(input:focus-visible) { outline: 3px solid #bfa9dd; outline-offset: 3px; }
.ofalq-choice:has(input[aria-invalid=true]) { border-color: var(--ofalq-crimson); }
.ofalq-choice input { accent-color: var(--ofalq-crimson); flex: 0 0 auto; height: 1rem; width: 1rem; }
.ofalq-choice--service input { height: 1px; opacity: 0; position: absolute; width: 1px; }
.ofalq-choice-number { align-self: flex-start; color: var(--ofalq-crimson); font-size: .7rem; font-weight: 700; padding-top: .15rem; }
.ofalq-choice-copy { display: grid; gap: .2rem; min-width: 0; }
.ofalq-choice-label { color: var(--ofalq-ink); font-size: .76rem; font-weight: 700; letter-spacing: .04em; }
.ofalq-choice-description { color: var(--ofalq-muted); font-size: .72rem; line-height: 1.5; }
.ofalq-choice-mark { color: var(--ofalq-crimson); margin-left: auto; visibility: hidden; }
.ofalq-choice:has(input:checked) .ofalq-choice-mark { visibility: visible; }

.ofalq-field { display: grid; gap: .4rem; min-width: 0; }
.ofalq-field label,
.ofalq-budget-fields h4 {
  color: var(--ofalq-purple);
  font-family: 'DM Sans', system-ui, sans-serif;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .08em;
}
.ofalq-field input,
.ofalq-field select,
.ofalq-field textarea {
  appearance: auto;
  background-color: var(--ofalq-white) !important;
  border: 1px solid var(--ofalq-border);
  border-radius: 0;
  color: var(--ofalq-ink);
  max-width: 100%;
  min-height: 3.1rem;
  min-width: 0;
  padding: .75rem .9rem;
  width: 100%;
}
.ofalq-field textarea { min-height: 9rem; resize: vertical; }
.ofalq-field input::placeholder,
.ofalq-field textarea::placeholder { color: #aaa2bd; opacity: 1; }
.ofalq-field input:focus,
.ofalq-field select:focus,
.ofalq-field textarea:focus { border-color: var(--ofalq-crimson); outline: 2px solid transparent; }
.ofalq-field [aria-invalid=true] { border-color: var(--ofalq-crimson); border-width: 2px; }
.ofalq-field-help { color: var(--ofalq-muted); font-size: .75rem; }
.ofalq-budget-fields { display: grid; gap: 1rem; }
.ofalq-currency-fields,
.ofalq-contact-fields { display: grid; gap: 1.1rem; grid-template-columns: repeat(2, minmax(0, 1fr)); }

.ofalq-country-control { position: relative; }
.ofalq-country-options {
  background: var(--ofalq-white);
  border: 1px solid var(--ofalq-border);
  box-shadow: 0 .75rem 2rem rgb(18 14 28 / 14%);
  left: 0;
  list-style: none;
  margin: 0;
  max-height: 15rem;
  overflow-y: auto;
  padding: .4rem;
  position: absolute;
  right: 0;
  top: 100%;
  z-index: 20;
}
.ofalq-country-options [role=option] { color: var(--ofalq-ink); cursor: pointer; font-size: .82rem; min-height: 2.75rem; padding: .7rem; }
.ofalq-country-options [role=option]:hover,
.ofalq-country-options [aria-selected=true] { background: var(--ofalq-panel); outline: 1px solid var(--ofalq-purple); }

.ofalq-brief-details { border-top: 1px solid var(--ofalq-border); padding-top: 1rem; }
.ofalq-brief-details summary { color: var(--ofalq-muted); cursor: pointer; display: flex; font-size: .82rem; justify-content: space-between; min-height: 2.75rem; }
.ofalq-brief-details summary span { color: var(--ofalq-crimson); font-weight: 700; }
.ofalq-file-selection { margin-top: 1rem; }
.ofalq-file-list { color: var(--ofalq-muted); font-size: .76rem; overflow-wrap: anywhere; padding-left: 1.2rem; }

.ofalq-controls {
  align-items: center;
  border-top: 1px solid var(--ofalq-border);
  display: flex;
  gap: 1rem;
  justify-content: space-between;
  padding-top: 1.25rem;
}
.ofalq-controls .ofalq-button { margin-left: auto; }
.ofalq-button {
  background: var(--ofalq-crimson);
  border: 1px solid var(--ofalq-crimson);
  border-radius: 0;
  color: #fff;
  display: inline-flex;
  font-size: .75rem;
  font-weight: 700;
  justify-content: center;
  letter-spacing: .1em;
  min-height: 3rem;
  padding: .8rem 1.25rem;
  text-transform: uppercase;
  transition: background .2s ease, border-color .2s ease;
}
.ofalq-button:hover { background: var(--ofalq-crimson-dark); border-color: var(--ofalq-crimson-dark); color: #fff; }
.ofalq-button:disabled { background: #d7d2df; border-color: #d7d2df; cursor: not-allowed; }
.ofalq-quiet-button {
  background: transparent;
  border: 0;
  color: var(--ofalq-purple);
  font-size: .72rem;
  font-weight: 700;
  min-height: 2.75rem;
  padding: .5rem 0;
}

.ofalq-error-summary {
  background: #fff5f8;
  border-left: 4px solid var(--ofalq-crimson);
  color: var(--ofalq-ink);
  margin-top: 1.25rem;
  padding: 1rem;
}
.ofalq-error-summary ul { margin: .5rem 0 0; padding-left: 1.2rem; }
.ofalq-error-summary button { background: none; border: 0; color: var(--ofalq-crimson-dark); font: inherit; padding: .25rem 0; text-align: left; text-decoration: underline; }
.ofalq-review-content { display: grid; gap: 1.5rem; }
.ofalq-review-section { border-top: 1px solid var(--ofalq-border); padding-top: 1rem; }
.ofalq-review-heading,
.ofalq-review-actions { align-items: center; display: flex; flex-wrap: wrap; gap: .75rem; justify-content: space-between; }
.ofalq-review-heading h4 { color: var(--ofalq-purple); font-size: .72rem; letter-spacing: .1em; }
.ofalq-review-section dl { display: grid; gap: .75rem; margin: 1rem 0 0; }
.ofalq-review-section dl > div { display: grid; gap: 1rem; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); }
.ofalq-review-section dt { color: var(--ofalq-muted); font-size: .78rem; }
.ofalq-review-section dd { color: var(--ofalq-ink); margin: 0; overflow-wrap: anywhere; white-space: pre-wrap; }
.ofalq-consent { align-items: flex-start; color: var(--ofalq-muted); display: flex; font-size: .8rem; gap: .75rem; }
.ofalq-consent input { accent-color: var(--ofalq-crimson); flex: 0 0 auto; height: 1.1rem; margin-top: .2rem; width: 1.1rem; }
.ofalq-policy { color: var(--ofalq-crimson); font-size: .75rem; }
.ofalq-submission-state { display: grid; gap: 1rem; min-height: 24rem; place-content: center start; }
.ofalq-submission-state > p { color: var(--ofalq-muted); }
.ofalq-submission-state #submission-reference { color: var(--ofalq-purple); font-weight: 700; }
.ofalq-state-actions { align-items: center; display: flex; flex-wrap: wrap; gap: 1.25rem; margin-top: .5rem; }
.ofalq-state-actions a { color: var(--ofalq-purple); font-size: .75rem; font-weight: 700; letter-spacing: .08em; }
.ofalq-sr-only { clip: rect(0, 0, 0, 0); clip-path: inset(50%); height: 1px; overflow: hidden; position: absolute; white-space: nowrap; width: 1px; }

@media (prefers-reduced-motion: no-preference) {
  .ofal-questionnaire .ofalq-is-revealing { animation: ofalq-reveal .35s ease both; }
  @keyframes ofalq-reveal { from { opacity: .35; transform: translateY(.75rem); } to { opacity: 1; transform: none; } }
}

@media (max-width: 700px) {
  .ofalq-options,
  .ofalq-options--compact,
  .ofalq-currency-fields,
  .ofalq-contact-fields { grid-template-columns: minmax(0, 1fr); }
  .ofalq-step { padding: 2rem 0 2.5rem; }
  .ofalq-progress { gap: .7rem; }
  .ofalq-progress progress { max-width: 5rem; }
  .ofalq-progress .ofalq-small-label { display: none; }
  .ofalq-review-section dl > div { gap: .2rem; grid-template-columns: 1fr; }
  .ofalq-controls { gap: .6rem; }
  .ofalq-button { padding-inline: .9rem; }
}
