/* UFS Phase 10: shared forms, modal and help behavior. */

.ufs-app-shell form,
.ufs-app-shell .ufs-form {
    min-width: 0;
}

.ufs-app-shell .form-label,
.ufs-app-shell .ufs-field__label {
    color: var(--ufs-navy);
    font-weight: var(--ufs-font-weight-semibold);
    margin-bottom: .4rem;
}

.ufs-app-shell .form-control,
.ufs-app-shell .form-select,
.ufs-app-shell .input-group-text {
    min-height: 2.75rem;
    border-color: var(--ufs-gray-300);
    border-radius: var(--ufs-radius-md);
}

.ufs-app-shell textarea.form-control { min-height: 7rem; resize: vertical; }

.ufs-app-shell .form-control:focus,
.ufs-app-shell .form-select:focus,
.ufs-app-shell .form-check-input:focus {
    border-color: var(--ufs-context-primary);
    box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--ufs-context-primary) 18%, transparent);
}

.ufs-app-shell .form-control:disabled,
.ufs-app-shell .form-select:disabled,
.ufs-app-shell .form-control[readonly] {
    color: var(--ufs-gray-700);
    background: var(--ufs-gray-100);
    opacity: 1;
}

.ufs-app-shell .validation-message,
.ufs-app-shell .invalid-feedback,
.ufs-field__validation {
    display: block;
    margin-top: .35rem;
    color: var(--ufs-danger-primary);
    font-size: var(--ufs-font-size-sm);
}

.ufs-app-shell .modified.invalid,
.ufs-app-shell .form-control.is-invalid,
.ufs-app-shell .form-select.is-invalid {
    border-color: var(--ufs-danger-primary);
    background-image: none;
}

.ufs-app-shell .modified.valid,
.ufs-app-shell .form-control.is-valid,
.ufs-app-shell .form-select.is-valid {
    border-color: var(--ufs-personal-primary);
    background-image: none;
}

.ufs-form-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: var(--ufs-space-3);
    padding: var(--ufs-space-4) var(--ufs-space-5);
    border-top: 1px solid var(--ufs-gray-200);
    background: color-mix(in srgb, var(--ufs-surface) 94%, transparent);
}

.ufs-form-actions--sticky {
    position: sticky;
    bottom: 0;
    z-index: calc(var(--ufs-z-header) - 1);
    backdrop-filter: blur(10px);
    box-shadow: 0 -10px 24px rgba(11, 45, 75, .08);
}

.ufs-form-actions__leading,
.ufs-form-actions__main {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--ufs-space-2);
}
.ufs-form-actions__main { margin-inline-start: auto; }

.ufs-validation-summary {
    display: flex;
    align-items: flex-start;
    gap: var(--ufs-space-3);
    margin-bottom: var(--ufs-space-4);
    padding: var(--ufs-space-4);
    color: var(--ufs-danger-darker);
    background: var(--ufs-danger-lighter);
    border: 1px solid var(--ufs-danger-light);
    border-radius: var(--ufs-radius-md);
}
.ufs-validation-summary__icon { flex: 0 0 auto; }
.ufs-validation-summary__content ul { margin: .5rem 0 0; padding-inline-start: 1.25rem; }
.ufs-validation-summary__title { display: block; }

.ufs-confirm-panel {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: var(--ufs-space-3);
    padding: var(--ufs-space-4);
    border: 1px solid var(--ufs-warning-light);
    border-radius: var(--ufs-radius-md);
    background: var(--ufs-warning-lighter);
    color: var(--ufs-warning-darker);
}
.ufs-confirm-panel--danger { color: var(--ufs-danger-darker); background: var(--ufs-danger-lighter); border-color: var(--ufs-danger-light); }
.ufs-confirm-panel--info { color: var(--ufs-context-darker); background: var(--ufs-context-lighter); border-color: var(--ufs-context-muted); }
.ufs-confirm-panel--success { color: var(--ufs-personal-darker); background: var(--ufs-personal-lighter); border-color: var(--ufs-personal-muted); }
.ufs-confirm-panel__title { margin: 0; font-size: var(--ufs-font-size-base); }
.ufs-confirm-panel__description { margin: .25rem 0 0; }

/* Bootstrap modal normalization inside the authenticated application. */
.ufs-app-shell .modal { z-index: var(--ufs-z-overlay); }
.ufs-app-shell .modal-backdrop { z-index: var(--ufs-z-backdrop); }
.ufs-app-shell .modal-dialog { margin: 1rem auto; }
.ufs-app-shell .modal-content {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    max-height: min(90dvh, 58rem);
    overflow: hidden;
    border: 1px solid var(--ufs-gray-200);
    border-radius: var(--ufs-radius);
    box-shadow: var(--ufs-shadow-xl);
}
.ufs-app-shell .modal-header,
.ufs-modal-shell__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--ufs-space-4);
    padding: var(--ufs-space-4) var(--ufs-space-5);
    border-bottom: 1px solid var(--ufs-gray-200);
    background: var(--ufs-surface);
}
.ufs-app-shell .modal-title,
.ufs-modal-shell__title { color: var(--ufs-navy); font-weight: var(--ufs-font-weight-bold); }
.ufs-app-shell .modal-body {
    display: block;
    min-height: 0;
    overflow: auto;
    padding: var(--ufs-space-5);
    background: var(--ufs-surface);
}
.ufs-app-shell .modal-footer,
.ufs-modal-shell__footer {
    padding: var(--ufs-space-3) var(--ufs-space-5);
    border-top: 1px solid var(--ufs-gray-200);
    background: var(--ufs-surface-subtle);
}
.ufs-app-shell .modal-footer .btn-primary { order: 20; }
.ufs-app-shell .modal-footer .btn-danger { margin-inline-end: auto; }

.ufs-help-button {
    flex: 0 0 auto;
    min-width: 2rem;
    min-height: 2rem;
}
.ufs-field__label-row,
.ufs-form-section__header {
    min-width: 0;
}
.ufs-field__help,
.ufs-form-section__help {
    margin-inline-start: auto;
}

.ufs-busy-button { position: relative; pointer-events: none; }
.ufs-busy-button::after {
    content: "";
    width: .9rem;
    height: .9rem;
    margin-inline-start: .5rem;
    display: inline-block;
    vertical-align: -.12rem;
    border: 2px solid currentColor;
    border-inline-end-color: transparent;
    border-radius: 50%;
    animation: ufs-spin .8s linear infinite;
}

@media (max-width: 767.98px) {
    .ufs-form-actions { align-items: stretch; padding: var(--ufs-space-3); }
    .ufs-form-actions__leading,
    .ufs-form-actions__main { width: 100%; }
    .ufs-form-actions__main > .btn { flex: 1 1 auto; }
    .ufs-app-shell .modal-dialog { margin: 0; min-height: 100dvh; }
    .ufs-app-shell .modal-content { min-height: 100dvh; max-height: 100dvh; border-radius: 0; }
    .ufs-app-shell .modal-header,
    .ufs-app-shell .modal-body,
    .ufs-app-shell .modal-footer { padding-inline: var(--ufs-space-4); }
}

.ufs-modal-shell__progress {
    display: flex;
    align-items: center;
    gap: var(--ufs-space-2);
    margin-bottom: var(--ufs-space-4);
    padding: var(--ufs-space-3);
    color: var(--ufs-context-darker);
    background: var(--ufs-context-lighter);
    border: 1px solid var(--ufs-context-muted);
    border-radius: var(--ufs-radius-md);
}

/* ========================================================================
   Facility Information — professional editor system
   Applies consistently to contacts, services, links, branding, media,
   amenities/accessibility, credentials, and governance editors.
   ======================================================================== */
.facility-pro-editor {
    --fi-border: #dfe8f3;
    --fi-border-strong: #c8d8ea;
    --fi-bg: #f7faff;
    --fi-card: #fff;
    --fi-ink: #123452;
    --fi-muted: #6f8298;
    --fi-blue: #0a63e0;
    --fi-green: #1b9460;
    color: var(--fi-ink);
}

.facility-pro-editor > .d-flex:first-child,
.facility-pro-editor > .facility-aa-scope,
.facility-pro-inline > .row:first-child {
    margin-bottom: 1.25rem !important;
}

.facility-pro-editor > .d-flex:first-child {
    padding: 1rem 1.1rem;
    border: 1px solid var(--fi-border);
    border-radius: 1rem;
    background: linear-gradient(135deg, #f7fbff 0%, #ffffff 100%);
    box-shadow: 0 10px 28px rgba(15, 52, 82, .055);
}

.facility-pro-editor > .d-flex:first-child h3,
.facility-pro-editor > .d-flex:first-child h4 {
    color: var(--fi-ink);
    font-weight: 800;
}

.facility-pro-editor .facility-contact-list {
    display: grid;
    gap: .85rem;
}

.facility-pro-editor .facility-contact-item {
    border: 1px solid var(--fi-border);
    border-radius: 1rem;
    background: #fff;
    padding: 1rem 1.05rem;
    box-shadow: 0 8px 24px rgba(15, 52, 82, .05);
    transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}

.facility-pro-editor .facility-contact-item:hover {
    transform: translateY(-1px);
    border-color: #b9d2ef;
    box-shadow: 0 13px 30px rgba(15, 52, 82, .09);
}

.facility-pro-editor .facility-contact-item__icon {
    width: 42px;
    height: 42px;
    border-radius: .85rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--fi-blue);
    background: #edf5ff;
    border: 1px solid #d5e7ff;
    flex: 0 0 auto;
}

.facility-pro-editor .facility-contact-item__actions {
    display: flex;
    gap: .5rem;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.facility-pro-modal {
    border: 0 !important;
    border-radius: 1.35rem !important;
    overflow: hidden;
    box-shadow: 0 32px 90px rgba(15, 23, 42, .28) !important;
}

.facility-pro-modal-header {
    padding: 1.2rem 1.4rem !important;
    background: linear-gradient(135deg, #edf5ff 0%, #f8fbff 55%, #ffffff 100%);
    border-bottom: 1px solid var(--fi-border, #dfe8f3) !important;
}

.facility-pro-modal-header .modal-title {
    color: #123452;
    font-weight: 850;
    letter-spacing: -.015em;
}

.facility-pro-modal-header .btn-close {
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 50%;
    background-color: rgba(255,255,255,.86);
    box-shadow: 0 4px 14px rgba(15, 52, 82, .1);
}

.facility-pro-modal-body {
    padding: 1.15rem !important;
    background: #f5f8fc;
}

.facility-pro-modal-footer {
    padding: 1rem 1.25rem !important;
    background: #fff;
    border-top: 1px solid #dfe8f3 !important;
    gap: .6rem;
}

.facility-pro-grid {
    --bs-gutter-x: 1rem;
    --bs-gutter-y: 1rem;
}

.facility-pro-grid > [class*="col-"] {
    position: relative;
}

.facility-pro-modal-body .facility-pro-grid > [class*="col-"] {
    padding-top: .9rem;
    padding-bottom: .9rem;
    padding-left: 1rem;
    padding-right: 1rem;
    border: 1px solid var(--fi-border, #dfe8f3);
    border-radius: 1rem;
    background: #fff;
    box-shadow: 0 7px 22px rgba(15, 52, 82, .045);
}

.facility-pro-modal-body .facility-pro-grid > [class*="col-"]:has(.row) {
    padding-bottom: 1rem;
}

.facility-pro-editor .form-label,
.facility-pro-editor .facility-setup-label-row > label,
.facility-pro-editor label.form-check-label {
    color: #173b5c;
    font-weight: 750;
}

.facility-pro-editor .form-label {
    margin-bottom: .48rem;
}

.facility-pro-editor .form-control,
.facility-pro-editor .form-select {
    min-height: 44px;
    border-color: #bac9d9;
    border-radius: .78rem;
    background-color: #fff;
    box-shadow: none;
}

.facility-pro-editor textarea.form-control {
    min-height: 104px;
    resize: vertical;
}

.facility-pro-editor .form-control:focus,
.facility-pro-editor .form-select:focus {
    border-color: #69a7f2;
    box-shadow: 0 0 0 .22rem rgba(10, 99, 224, .12);
}

.facility-pro-editor .form-text,
.facility-pro-editor .text-muted {
    color: var(--fi-muted) !important;
}

.facility-pro-editor .facility-service-form-section,
.facility-pro-editor .facility-aa-panel,
.facility-pro-inline .card,
.facility-pro-record-card {
    border: 1px solid var(--fi-border, #dfe8f3) !important;
    border-radius: 1.1rem !important;
    background: #fff;
    box-shadow: 0 10px 28px rgba(15, 52, 82, .055);
}

.facility-pro-editor .facility-service-form-section {
    padding: 1rem;
    margin-bottom: 1rem;
}

.facility-pro-editor .facility-service-form-section__header {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    padding-bottom: .85rem;
    margin-bottom: 1rem;
    border-bottom: 1px solid #e5edf6;
}

.facility-pro-editor .facility-service-form-section__header > i {
    width: 38px;
    height: 38px;
    border-radius: .75rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--fi-blue);
    background: #edf5ff;
}

.facility-pro-editor .facility-service-form-section__header strong {
    display: block;
    color: #123452;
    font-size: 1rem;
}

.facility-pro-editor .facility-service-form-section__header span {
    display: block;
    color: var(--fi-muted);
    font-size: .84rem;
    margin-top: .12rem;
}

.facility-pro-editor .facility-service-choice-grid,
.facility-pro-editor .facility-aa-grid {
    gap: .8rem;
}

.facility-pro-editor .facility-service-choice-grid > *,
.facility-pro-editor .facility-aa-option {
    border-radius: .9rem !important;
    border-color: #d9e5f1 !important;
    background: #fbfdff;
}

.facility-pro-inline > .facility-pro-grid > [class*="col-"] > .card,
.facility-pro-record-card {
    height: 100%;
}

.facility-pro-inline .card-header,
.facility-pro-record-card .card-header {
    background: linear-gradient(135deg, #f3f8ff, #ffffff);
    border-bottom: 1px solid #e4edf6;
    font-weight: 800;
    color: #123452;
}

.facility-pro-record-card .card-body,
.facility-pro-inline .card-body {
    padding: 1rem;
}

.facility-pro-editor .facility-aa-scope {
    background: linear-gradient(135deg, #f4f8fd 0%, #fff 100%) !important;
    border-color: #dce7f2 !important;
    box-shadow: 0 8px 24px rgba(15, 52, 82, .045);
}

.facility-pro-editor .facility-aa-tabs {
    background: #f7faff;
    border: 1px solid #dfe8f3;
    border-radius: .9rem;
    padding: .3rem;
}

.facility-pro-editor .facility-aa-tab {
    border-radius: .65rem;
    border-bottom: 0 !important;
}

.facility-pro-editor .facility-aa-tab.is-active {
    color: #fff !important;
    background: var(--fi-blue);
}

/* Standard label/action layout: help before AI, aligned to the far right. */
.facility-pro-editor .facility-setup-label-row,
.facility-pro-editor .facility-field-label-row,
.facility-pro-editor .facility-help-label-row {
    width: 100%;
    display: flex !important;
    align-items: center;
    gap: .45rem;
}

.facility-pro-editor .facility-setup-label-row > label,
.facility-pro-editor .facility-field-label-row > label,
.facility-pro-editor .facility-help-label-row > label {
    margin-right: auto;
    margin-bottom: 0;
}

.facility-pro-editor .facility-field-help-button,
.facility-pro-editor .facility-inline-help-button,
.facility-pro-editor [data-facility-help-button="true"] {
    width: 28px !important;
    height: 28px !important;
    min-width: 28px !important;
    border-radius: 50% !important;
    border: 1px solid #b8d5fa !important;
    color: #0a63e0 !important;
    background: #f2f8ff !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 0 !important;
    flex: 0 0 auto;
}

.facility-pro-editor .facility-field-help-button:hover,
.facility-pro-editor .facility-inline-help-button:hover,
.facility-pro-editor [data-facility-help-button="true"]:hover {
    background: #0a63e0 !important;
    border-color: #0a63e0 !important;
    color: #fff !important;
}

.facility-pro-editor .form-check {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    margin: 0;
}

.facility-pro-editor .form-check-input {
    width: 1.15rem;
    height: 1.15rem;
    margin-top: 0;
}

.facility-pro-editor .facility-contact-empty,
.facility-pro-editor .alert-light.border {
    border-radius: 1rem;
    border: 1px dashed #c7d8ea !important;
    background: #f8fbff;
    color: #536b83;
    padding: 1.4rem;
}

@media (max-width: 991.98px) {
    .facility-pro-modal-body { padding: .85rem !important; }
    .facility-pro-editor .facility-contact-item { align-items: flex-start; }
    .facility-pro-editor .facility-contact-item__actions { width: 100%; justify-content: flex-start; }
}

@media (max-width: 767.98px) {
    .facility-pro-modal { border-radius: 1rem !important; }
    .facility-pro-modal-header { padding: 1rem !important; }
    .facility-pro-modal-body .facility-pro-grid > [class*="col-"] { padding: .85rem; }
    .facility-pro-editor > .d-flex:first-child { align-items: stretch !important; }
    .facility-pro-editor > .d-flex:first-child .btn { width: 100%; }
}
