.fs-step-navigation { display: flex; align-items: stretch; gap: .5rem; margin-bottom: 1.5rem; min-width: 0; }
.fs-step-navigation > button { flex: 0 0 2.5rem; padding: .375rem; font-size: 1.5rem; }
.fs-step-navigation > ol { flex: 1 1 0; display: flex; flex-wrap: nowrap; gap: .5rem; padding: 0; margin: 0; min-width: 0; overflow: hidden; }
.fs-step-navigation li { flex: 1 1 0; min-width: 0; margin: 0 !important; }
.fs-step-navigation .nav-link { width: 100%; height: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fs-step-navigation [hidden], .fs-choice [hidden] { display: none !important; }

.formularservice-wizard { --fs-accent: #185abd; --fs-track: #ccd6e3; --fs-ink: #243d60; }
.fs-wizard-overall { display: flex; align-items: center; gap: 1rem; min-width: 0; }
.fs-wizard-overall__details { flex: 1 1 auto; min-width: 0; }
.fs-wizard-overall__circle { flex: 0 0 3.5rem; width: 3.5rem; height: 3.5rem; border-radius: 50%; background: conic-gradient(var(--fs-accent) var(--fs-progress), var(--fs-track) 0); display: grid; place-items: center; }
.fs-wizard-overall__circle::after { content: ''; width: 2.65rem; height: 2.65rem; border-radius: 50%; background: #fff; }
.fs-wizard-overall__numbers { display: flex; flex-wrap: wrap; gap: .25rem 1rem; color: var(--fs-ink); font-weight: 600; }
.fs-wizard-overall__details > .progress + .fs-wizard-overall__numbers { margin-top: .4rem; }
.fs-step-marker { display: none; }
.fs-step-label { display: block; overflow: hidden; text-overflow: ellipsis; }
.fs-wizard--milestones .fs-step-navigation ol { gap: 0; }
.fs-wizard--milestones .fs-step-navigation li { position: relative; }
.fs-wizard--milestones .fs-step-navigation li::before { content: ''; position: absolute; top: 1.05rem; left: 0; right: 0; height: 3px; background: var(--fs-track); }
.fs-wizard--milestones .fs-step-navigation li.is-complete::before { background: var(--fs-accent); }
.fs-wizard--milestones .fs-step-navigation li.is-current::before { background: linear-gradient(to right, var(--fs-accent) 50%, var(--fs-track) 50%); }
.fs-wizard--milestones .fs-step-navigation .nav-link { position: relative; border: 0; background: transparent; color: var(--fs-ink); padding: 0 .3rem .5rem; opacity: 1; }
.fs-wizard--milestones .fs-step-marker { position: relative; display: grid; place-items: center; width: 2.25rem; height: 2.25rem; margin: 0 auto .6rem; border: 3px solid var(--fs-track); background: #fff; border-radius: 50%; color: var(--fs-ink); font-weight: 700; }
.fs-wizard--milestones .is-complete .fs-step-marker { background: var(--fs-accent); border-color: var(--fs-accent); color: #fff; }
.fs-wizard--milestones .is-current .fs-step-marker { border-color: var(--fs-accent); box-shadow: inset 0 0 0 3px #fff; background: var(--fs-accent); color: #fff; }
.fs-wizard--milestones .fs-step-label { font-size: .9rem; padding: 0 .15rem; }
.fs-wizard--milestones .is-current .fs-step-label { font-weight: 700; }
.fs-wizard--chevrons .fs-step-navigation ol { gap: .15rem; }
.fs-wizard--chevrons .fs-step-navigation .nav-link { border: 0; border-radius: 0; padding: .9rem 1.35rem; clip-path: polygon(0 0, calc(100% - 14px) 0, 100% 50%, calc(100% - 14px) 100%, 0 100%, 14px 50%); background: #e8eef6; color: var(--fs-ink); }
.fs-wizard--chevrons .fs-step-navigation .active { background: var(--fs-accent); color: #fff; }
.fs-wizard--chevrons .is-complete .nav-link { background: #cee0f7; }
.fs-wizard--cards .fs-step-navigation .nav-link { text-align: left; border: 1px solid var(--fs-track); border-bottom: 4px solid var(--fs-track); border-radius: .5rem; background: #f6f8fc; color: var(--fs-ink); padding: .75rem; }
.fs-wizard--cards .fs-step-marker { display: block; font-weight: 700; font-size: 1.3rem; margin-bottom: .35rem; }
.fs-wizard--cards .fs-step-navigation .active { border-color: var(--fs-accent); background: #eaf2ff; }
.fs-wizard--cards .is-complete .nav-link { border-bottom-color: var(--fs-accent); }
.fs-wizard--compact .fs-step-navigation .nav-link { display: flex; align-items: center; gap: .4rem; padding: .35rem .5rem; font-size: .85rem; border-radius: 2rem; }
.fs-wizard--compact .fs-step-marker { display: inline-grid; flex: 0 0 1.5rem; place-items: center; height: 1.5rem; border: 1px solid currentColor; border-radius: 50%; font-weight: 700; }
.fs-wizard--compact .fs-step-label { min-width: 0; }

.formularservice-wizard .fs-step-navigation .nav-link:disabled { cursor: default; pointer-events: auto; }
.fs-review-intro > :last-child, .form-check-label > :last-child { margin-bottom: 0; }

/* Review cards keep long and multi-line answers readable at every viewport size. */
.fs-review-card { margin: 0 0 1.25rem; border: 1px solid #d5deea; border-radius: .8rem; background: #fff; color: #20334f; overflow: hidden; box-shadow: 0 3px 12px #20334f08; }
.fs-review-card__header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1.25rem; background: #f3f6fb; border-bottom: 1px solid #d5deea; }
.fs-review-card__title { margin: 0; font-size: 1.05rem; line-height: 1.4; font-weight: 700; overflow-wrap: anywhere; }
.fs-review-edit { flex-shrink: 0; }
.fs-review-answers { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); margin: 0; }
.fs-review-answers > dt, .fs-review-answers > dd { margin: 0; padding: 1rem 1.25rem; border-bottom: 1px solid #edf0f5; overflow-wrap: anywhere; min-width: 0; line-height: 1.6; }
.fs-review-answers > dt { font-size: .9rem; font-weight: 600; color: #4c5c73; }
.fs-review-answers > :nth-last-child(-n+2) { border-bottom: 0; }
.fs-review-answer { color: #172b49; }
.fs-review-answer.is-empty { color: #758399; font-style: italic; font-size: .9rem; }
[data-wizard-review-page] > .form-check { padding: 1rem 1rem 1rem 2.75rem; border: 1px solid #ccd9eb; border-radius: .6rem; background: #f3f7fd; color: #20334f; position: relative; }
[data-wizard-review-page] > .form-check > .form-check-input { position: absolute; left: 1rem; top: 1.3rem; margin: 0; }
@media (max-width: 600px) {
    .fs-review-card__header { padding: .85rem; gap: .5rem; }
    .fs-review-answers { grid-template-columns: minmax(0, 1fr); }
    .fs-review-answers > dt { border-bottom: 0; padding: .85rem .85rem .2rem; }
    .fs-review-answers > dd { padding: 0 .85rem .85rem; }
    .fs-review-answers > dt:nth-last-child(2) { border-bottom: 0; }
}

/* Explicit container spacing replaces utility margins and Bootstrap gutters. */
:is(.com-formularservice-form, [class*="mod-formularservice-form"]) .fs-layout-stack {
    display: grid;
    gap: var(--fs-layout-gap);
    align-content: start;
    min-width: 0;
}
:is(.com-formularservice-form, [class*="mod-formularservice-form"]) .fs-layout-stack > * { margin: 0 !important; min-width: 0; }
:is(.com-formularservice-form, [class*="mod-formularservice-form"]) .fs-layout-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: var(--fs-layout-gap);
    min-width: 0;
}
@media (min-width: 768px) {
    :is(.com-formularservice-form, [class*="mod-formularservice-form"]) .fs-layout-row { grid-template-columns: repeat(12, minmax(0, 1fr)); }
    :is(.com-formularservice-form, [class*="mod-formularservice-form"]) .fs-layout-column { grid-column: span var(--fs-column-span); }
}

/* Inline answers wrap to the available field width, including narrow module columns. */
.fs-choice-options--inline { display: flex; flex-wrap: wrap; align-items: flex-start; gap: .5rem 1.5rem; min-width: 0; }
.fs-choice-options--inline > .form-check { flex: 0 1 auto; min-width: 0; max-width: 100%; margin: 0; box-sizing: border-box; }
.fs-choice-options--inline .form-check-label { white-space: normal; overflow-wrap: anywhere; }
.fs-option-image { display: block; width: min(12rem, 100%); max-height: 10rem; object-fit: contain; margin: .25rem 0 .5rem; }
.fs-image-block img { display: block; max-width: 100%; height: auto; }
.fs-richtext-block { overflow-wrap: anywhere; }

/* CAPTCHA is rendered inside the final page, above the submit actions. */
.fs-cap-placement { width: 100%; box-sizing: border-box; display: flex; flex-direction: column; align-items: flex-start; min-width: 0; }
.fs-cap-placement[hidden], .fs-cap-placement [hidden] { display: none !important; }
.fs-cap-align-center { align-items: center; }
.fs-cap-align-end { align-items: flex-end; }
.fs-cap { width: var(--fs-cap-width, 320px); max-width: 100%; min-width: 0; }
.fs-cap cap-widget { display: block; width: 100%; max-width: 100%; --cap-widget-width: 100%; }
.fs-cap-preview { font-size: var(--fs-cap-font-size, 15px); display: flex; gap: 15px; align-items: center; box-sizing: border-box; min-height: var(--cap-widget-height, 72px); padding: 14px; background: var(--cap-background, #fdfdfd); color: var(--cap-color, #212121); border: 1px solid var(--cap-border-color, #dddddd); border-radius: var(--cap-border-radius, 14px); overflow-wrap: anywhere; }
.fs-cap-preview-checkbox { flex: 0 0 25px; height: 25px; border: 1px solid var(--cap-spinner-color, #185abd); border-radius: 6px; }

.fs-rating .form-range { display: block; max-width: 32rem; }
.fs-rating-value { max-width: 9rem; }
.fs-rating-dial { --rating-angle: 0deg; --rating-blue: #008bc5; position: relative; box-sizing: border-box; width: min(100%, var(--fs-rating-size, 448px)); aspect-ratio: 1; margin: 1rem auto 1.5rem; border: 6px solid #b9deef; border-radius: 50%; background: #fff; box-shadow: 0 1rem 2rem #00000015; cursor: grab; touch-action: none; container-type: inline-size; }
.fs-rating-dial:active { cursor: grabbing; }
.fs-rating-dial__track { position: absolute; inset: 0; border-radius: 50%; background: conic-gradient(var(--rating-blue) 0deg var(--rating-angle), #dedfe1 var(--rating-angle) 360deg); }
.fs-rating-dial__track::after { content: ''; position: absolute; inset: 6%; border-radius: 50%; background: #fff; box-shadow: inset 0 .25rem .65rem #00000006; }
.fs-rating-dial__ticks { position: absolute; inset: 5%; }
.fs-rating-dial__ticks i { position: absolute; width: 1%; height: 4%; top: 0; left: 49.5%; background: #aaa; border-radius: 1rem; }
.fs-rating-dial__ticks i:nth-child(2) { top: 49.5%; left: 98%; width: 3%; height: 1%; }
.fs-rating-dial__ticks i:nth-child(3) { top: 97%; }
.fs-rating-dial__ticks i:nth-child(4) { top: 49.5%; left: -1%; width: 3%; height: 1%; }
.fs-rating-dial__handle { position: absolute; inset: 3%; transform: rotate(var(--rating-angle)); pointer-events: none; }
.fs-rating-dial__handle span { position: absolute; top: 0; left: 50%; transform: translate(-50%, -50%); width: 8%; aspect-ratio: 1; border: .45rem solid white; border-radius: 50%; background: var(--rating-blue); box-shadow: 0 .25rem .6rem #00000018; }
.fs-rating-dial__center { position: absolute; inset: 12.5%; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 7%; border: 2px solid #e8e8e8; border-radius: 50%; background: #fafafa; color: #777; text-align: center; cursor: default; touch-action: auto; pointer-events: none; }
.fs-rating--wheel .fs-rating-value { pointer-events: auto; width: 100%; max-width: none; min-width: 0; height: auto; margin: .05em 0; padding: 0; border: 0; border-radius: .15em; background: transparent; color: #080808; box-shadow: none; font-family: inherit; font-size: clamp(2rem, 18cqi, 5rem); font-weight: 700; line-height: 1.15; text-align: center; }
.fs-rating--wheel .fs-rating-value:focus-visible { outline: 2px solid var(--rating-blue); outline-offset: 2px; }
.fs-rating--empty .fs-rating-dial__handle { opacity: .45; }

.fs-rating-dial.fs-rating-align-start { margin-inline: 0 auto; }
.fs-rating-dial.fs-rating-align-center { margin-inline: auto; }
.fs-rating-dial.fs-rating-align-end { margin-inline: auto 0; }

/* Each error treatment can be enabled independently in the form settings. */
[data-fs-submission].fs-error-frame .fs-field-invalid {
    outline: 2px solid var(--fs-error-color, #b42318);
    outline-offset: 4px;
    border-radius: 4px;
}
[data-fs-submission].fs-error-label .fs-field-invalid > :is(label, legend),
[data-fs-submission].fs-error-label .fs-field-invalid > :is(label, legend) * {
    color: var(--fs-error-color, #b42318) !important;
}
[data-fs-submission].fs-error-input .fs-input-invalid {
    border-color: var(--fs-error-color, #b42318) !important;
    outline: 2px solid var(--fs-error-color, #b42318);
    outline-offset: 2px;
    background-color: color-mix(in srgb, var(--fs-error-color, #b42318) 8%, white) !important;
}
[data-fs-submission].fs-error-input .fs-input-invalid:focus {
    box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--fs-error-color, #b42318) 15%, transparent);
}
