.fluentform {
  --ppm-ff-error: #b00009;
  --ppm-ff-ok: #0f6b34;
  --ppm-ff-field-bg: var(--surface);
  --ppm-ff-radius: 10px;

  --fluentform-primary: var(--color-red);
  --fluentform-secondary: var(--text-muted);
  --fluentform-danger: var(--ppm-ff-error);
  --fluentform-border-color: var(--border);
  --fluentform-border-radius: var(--ppm-ff-radius);

  font-family: var(--font-main);
  color: var(--text);
}

:root[data-theme="dark"] .fluentform {
  --ppm-ff-error: #ff9a90;
  --ppm-ff-ok: #7fe3a4;
  --ppm-ff-field-bg: var(--surface-raised);
}

:root[data-contrast="high"] .fluentform {
  --ppm-ff-error: #ffff00;
  --ppm-ff-ok: #ffff00;
  --ppm-ff-field-bg: #000000;
}

.fluentform form { margin: 0; }

.fluentform .ff-el-group { margin: 0 0 1.5rem; }

.fluentform .ff-el-input--label label {
  display: inline-block;
  margin-bottom: .4rem;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.45;
  color: var(--text);
}

.fluentform .ff-el-help-message {
  margin: .35rem 0 0;
  font-size: .9rem;
  line-height: 1.5;
  color: var(--text-muted);
}

.fluentform .ff-el-tooltip { color: var(--accent-text); }

.fluentform .ff-el-form-control {
  box-sizing: border-box;
  display: block;
  width: 100%;
  min-height: 48px;
  padding: .65rem .85rem;
  font-family: inherit;
  font-size: 1rem;
  line-height: 1.5;
  color: var(--text);
  background-color: var(--ppm-ff-field-bg);
  border: 1px solid var(--border);
  border-radius: var(--ppm-ff-radius);
  box-shadow: none;
  transition: border-color .15s ease;
}

.fluentform textarea.ff-el-form-control {
  min-height: 8rem;
  resize: vertical;
}

.fluentform select.ff-el-form-control { padding-right: 2rem; }

.fluentform .ff-el-form-control::placeholder {
  color: var(--text-muted);
  opacity: 1;
}

.fluentform .ff-el-form-control:hover { border-color: var(--color-red-light); }

.fluentform .ff-el-form-control:focus,
.fluentform .ff-el-form-control:focus-visible {
  outline: 3px solid var(--color-red);
  outline-offset: 2px;
  border-color: var(--color-red);
}

:root[data-contrast="high"] .fluentform .ff-el-form-control:focus,
:root[data-contrast="high"] .fluentform .ff-el-form-control:focus-visible,
:root[data-contrast="high"] .fluentform input.ff-el-form-check-input:focus-visible,
:root[data-contrast="high"] .fluentform .ff-btn-submit:focus-visible,
:root[data-contrast="high"] .fluentform .ff_upload_btn:focus-visible { outline-color: #ffff00; }

.fluentform .ff-el-form-check { margin: 0 0 .25rem; }

.fluentform .ff-el-form-check-label {
  display: flex;
  align-items: flex-start;
  gap: .6rem;
  min-height: 32px;
  padding: .3rem 0;
  font-size: 1rem;
  line-height: 1.5;
  color: var(--text);
  cursor: pointer;
}

.fluentform input.ff-el-form-check-input {
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
  margin: .1rem 0 0;
  accent-color: var(--color-red);
}

:root[data-contrast="high"] .fluentform input.ff-el-form-check-input { accent-color: #ffff00; }

.fluentform input.ff-el-form-check-input:focus-visible {
  outline: 3px solid var(--color-red);
  outline-offset: 2px;
}

.fluentform .ff-el-section-break {
  margin: 2.25rem 0 1.25rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--border);
}

.fluentform .ff-el-section-break h1,
.fluentform .ff-el-section-break h2,
.fluentform .ff-el-section-break h3 {
  margin: 0 0 .4rem;
  color: var(--text);
}

.fluentform .ff-el-group.ff-el-is-error .ff-el-form-control {
  border-width: 2px;
  border-color: var(--ppm-ff-error);
}

.fluentform .error.text-danger,
.fluentform .error-text {
  display: block;
  margin: .4rem 0 0;
  font-size: .92rem;
  font-weight: 600;
  line-height: 1.5;
  color: var(--ppm-ff-error);
}

.fluentform .error.text-danger::before,
.fluentform .error-text::before {
  content: "\26A0\FE0E";
  margin-right: .4rem;
}

.fluentform .ff-errors-in-stack {
  margin: 0 0 1.5rem;
  padding: .9rem 1.1rem;
  color: var(--text);
  background: var(--surface-tint);
  border: 2px solid var(--ppm-ff-error);
  border-radius: var(--ppm-ff-radius);
}

.fluentform .ff-errors-in-stack .error { margin: 0; }

.fluentform .ff-message-success {
  margin: 0;
  padding: 1rem 1.15rem;
  font-size: 1rem;
  line-height: 1.6;
  color: var(--text);
  background: var(--surface-tint);
  border: 2px solid var(--ppm-ff-ok);
  border-radius: var(--ppm-ff-radius);
}

.fluentform .ff_submit_btn_wrapper { margin-top: 1.75rem; }

.fluentform .ff-btn-submit,
.fluentform .ff-btn-submit.ff_btn_style {
  display: inline-block;
  min-height: 48px;
  padding: .75rem 2rem;
  font-family: inherit;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.4;
  color: var(--color-white);
  background-color: var(--color-red);
  border: 2px solid transparent;
  border-radius: 24px;
  cursor: pointer;
  transition: background-color .15s ease;
}

.fluentform .ff-btn-submit:hover { background-color: var(--color-red-dark); }

.fluentform .ff-btn-submit:focus-visible,
.fluentform .ff_upload_btn:focus-visible {
  outline: 3px solid var(--color-red);
  outline-offset: 3px;
}

.fluentform .ff-btn-submit[disabled] {
  opacity: .65;
  cursor: not-allowed;
}

.fluentform .ff_upload_btn.ff-btn {
  min-height: 44px;
  padding: .55rem 1.5rem;
  font-family: inherit;
  font-size: 1rem;
  font-weight: 600;
  color: var(--accent-text);
  background: transparent;
  border: 2px solid var(--color-red);
  border-radius: 24px;
  cursor: pointer;
}

.fluentform .ff_upload_btn.ff-btn:hover {
  color: var(--color-white);
  background: var(--color-red);
}

:root[data-contrast="high"] .fluentform .ff-btn-submit,
:root[data-contrast="high"] .fluentform .ff-btn-submit.ff_btn_style,
:root[data-contrast="high"] .fluentform .ff_upload_btn.ff-btn {
  color: #ffff00;
  background: #000000;
  border-color: #ffff00;
}

:root[data-contrast="high"] .fluentform .ff-el-form-control { border-width: 2px; }

@media (max-width: 640px) {
  .fluentform .ff-t-cell { padding-right: 0; }
  .fluentform .ff-btn-submit { width: 100%; }
}
