/* Common defaults. Legacy identity variables are fallbacks at the component,
   not root aliases (root var() aliases would freeze scoped density changes). */
:root {
    --pf-control-height: 56px;
    --pf-icon-action-size: 44px;
    --pf-control-radius: 14px;
    --pf-control-border: #c5dbe6;
    --pf-control-accent: #008eaf;
    --pf-control-surface: var(--bs-body-bg, #fff);
    --pf-control-text: var(--bs-body-color, #193747);
    --pf-control-muted: var(--bs-secondary-color, #61798a);
    --pf-control-error: var(--bs-danger, #b42332);
    --pf-control-disabled-bg: var(--bs-tertiary-bg, #f2f6f8);
    --pf-control-disabled-opacity: .65;
    --pf-control-message-size: .875rem;
    --pf-control-message-gap: 6px;
}
:is([data-bs-theme="dark"], [data-theme="dark"], .dark) {
    --pf-control-surface: var(--bs-body-bg, #183441);
    --pf-control-text: var(--bs-body-color, #e2edf2);
    --pf-control-muted: var(--bs-secondary-color, #b3cbd7);
    --pf-control-border: var(--bs-border-color, #46616e);
    --pf-control-disabled-bg: var(--bs-tertiary-bg, #234655);
}
.pf-field, .pf-field__body, .dir-grid > *, .pf-address-fields > * { min-width: 0; }
.pf-field { display: grid; gap: 8px; }
.pf-field__label { font-weight: 600; margin: 0; }
.pf-field__help { color: var(--pf-control-muted, #61798a); }
/* Compound controls own their outer height; do not force inner inputs or bodies. */
input.pf-field-input:not(:is(.tomselected, [type="hidden"], .profint-identity__input, .pf-numeric-field__input, .pf-temporal-source, .profint-phone-part > input, .pf-text-control > input, .pf-nationality > input)),
.pf-catalog-select:not(.multi) .ts-control {
    box-sizing: border-box;
    height: var(--pf-control-height, 56px);
    min-height: var(--pf-control-height, 56px);
}
input.pf-field-input:not(:is(.tomselected, [type="hidden"], .profint-identity__input, .pf-numeric-field__input, .pf-temporal-source, .profint-phone-part > input, .pf-text-control > input, .pf-nationality > input)) { min-width: 0; max-width: 100%; border-radius: var(--pf-control-radius); }
.pf-catalog-select { min-width: 0; width: 100%; }
.ts-wrapper.pf-catalog-select { padding: 0; border: 0; border-radius: var(--pf-control-radius); height: auto; background: transparent; background-image: none !important; box-shadow: none; }
.ts-wrapper.pf-catalog-select:is(.focus, .dropdown-active) { box-shadow: none; }
.pf-catalog-select .ts-control { border: 1px solid var(--pf-control-border); border-radius: var(--pf-control-radius); display: flex; align-items: center; padding: 10px 40px 10px 14px; box-shadow: none; }
.pf-catalog-select .ts-control > input { height: auto !important; min-height: 0 !important; padding: 0 !important; border: 0 !important; box-shadow: none !important; }
.ts-wrapper.pf-catalog-select.single > .ts-control { flex-wrap: nowrap; background-image: none !important; }
.ts-wrapper.pf-catalog-select.single > .ts-control > .item { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* Keep keyboard focus without leaving an empty search box/caret after a choice.
   Typing reopens Tom Select, restoring the normal search input. */
.ts-wrapper.pf-catalog-select.single.has-items:not(.dropdown-active) > .ts-control > input { position: absolute; width: 1px !important; min-width: 0 !important; flex: 0 0 1px; opacity: 0; clip-path: inset(50%); pointer-events: none; }
.pf-catalog-select.multi .ts-control { box-sizing: border-box; min-height: var(--pf-control-height, 56px); height: auto; max-height: none; flex-wrap: wrap; gap: 4px; padding-block: 5px; }
.pf-catalog-select.multi .ts-control > .item { box-sizing: border-box; display: inline-flex; align-items: center; min-height: var(--pf-icon-action-size, 44px); max-width: 100%; white-space: normal; overflow-wrap: anywhere; }
.pf-catalog-select.multi .ts-control > .item > .remove { box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 var(--pf-icon-action-size, 44px); width: var(--pf-icon-action-size, 44px); min-width: 44px; height: var(--pf-icon-action-size, 44px); min-height: 44px; padding: 0; }
.ts-wrapper.pf-catalog-select.single > .ts-control::after { content: ''; font-family: inherit; position: absolute; right: 16px; top: 50%; margin: 0; width: 8px; height: 8px; border: solid currentColor; border-width: 0 1.7px 1.7px 0; transform: translateY(-70%) rotate(45deg); opacity: .65; pointer-events: none; transition: transform .18s ease; }
.ts-wrapper.pf-catalog-select.single.dropdown-active > .ts-control::after { transform: translateY(-30%) rotate(225deg); }
.ts-wrapper.pf-catalog-select.multi > .ts-control::after { content: none; }
.pf-catalog-select.focus .ts-control, input.pf-field-input:focus:not(:is(.profint-identity__input, .pf-numeric-field__input, .profint-phone-part > input, .pf-text-control > input, .pf-nationality > input)) { border-color: var(--pf-control-accent); outline: none; box-shadow: 0 0 0 3px color-mix(in srgb, var(--pf-control-accent, #008eaf) 14%, transparent); }
.ts-wrapper.pf-catalog-select:is(.focus, .dropdown-active) > .ts-control { box-shadow: 0 0 0 3px color-mix(in srgb, var(--pf-control-accent, #008eaf) 14%, transparent); }
.pf-catalog-select .ts-dropdown { border-radius: 12px; border: 1px solid var(--pf-control-border); box-shadow: 0 12px 30px #14374a20; }
.pf-catalog-select .ts-dropdown .option { padding: 10px 14px; overflow-wrap: anywhere; }
/* Tom Select inserts inline highlight spans inside the label. A flex-column
   option turns each highlighted substring into a separate row. Rich labels
   keep their own block-level strong/small children without splitting names. */
.ts-dropdown .pf-select-option { box-sizing: border-box; display: block; min-height: var(--pf-icon-action-size, 44px); }
.pf-catalog-select .ts-dropdown .highlight { display: inline; padding: 0; color: inherit; background: #bceaf2; border-radius: 2px; font-weight: 700; }
/* Portaled menus are siblings of the application, so they need their own
   scoped surface. No ancestor card, transform or footer can paint over them. */
.ts-dropdown.pf-catalog-dropdown { z-index: 1090; box-sizing: border-box; margin: 0; border: 1px solid var(--pf-control-border, #c5dbe6); border-radius: 12px; color: var(--pf-control-text, #193747); background: var(--pf-control-surface, #fff); box-shadow: 0 12px 30px #14374a26; overflow: hidden; }
.pf-catalog-dropdown .ts-dropdown-content { box-sizing: border-box; overscroll-behavior: contain; padding: 5px; }
.pf-catalog-dropdown .option { display: block; min-height: var(--pf-icon-action-size, 44px); box-sizing: border-box; padding: 10px 12px; border-radius: 7px; white-space: normal; overflow-wrap: anywhere; }
.pf-catalog-dropdown .option.active { background: color-mix(in srgb, var(--pf-control-accent, #008eaf) 12%, var(--pf-control-surface, #fff)); color: var(--pf-control-text, #193747); }
.pf-catalog-dropdown .highlight { display: inline; padding: 0; border-radius: 2px; background: color-mix(in srgb, var(--pf-control-accent, #008eaf) 22%, transparent); color: inherit; }
.pf-catalog-dropdown :is(.no-results,.create) { padding: 12px; color: var(--pf-control-muted, #61798a); }
.pf-select-error { display: block; margin-top: var(--pf-control-message-gap,6px); color: var(--pf-control-error,#b42332); font-size: var(--pf-control-message-size,.875rem); }
.pf-select-error[hidden] { display: none; }
.pf-catalog-select.pf-select-invalid > .ts-control { border-color: var(--pf-control-error,#b42332); }
input.pf-choice-source { position: absolute !important; width: 1px !important; height: 1px !important; min-width: 0 !important; min-height: 0 !important; max-width: 1px !important; max-height: 1px !important; padding: 0 !important; margin: 0 !important; border: 0 !important; overflow: hidden !important; clip-path: inset(50%) !important; opacity: 0 !important; }
input.pf-choice-source::before,input.pf-choice-source::after { content: none !important; display: none !important; }
@media(prefers-reduced-motion:reduce) { .ts-wrapper.pf-catalog-select.single > .ts-control::after { transition: none; } }
.pf-catalog-select.disabled { opacity: var(--pf-control-disabled-opacity, .65); }
.pf-field:has([aria-invalid="true"]) .pf-field__body { --pf-control-border: var(--pf-control-error, #b42332); }
.pf-field-input.input-validation-error, .pf-field-input.is-invalid { border-color: var(--pf-control-error, #b42332); }
.pf-catalog-select:has(select[aria-invalid="true"]) > .ts-control,
.pf-catalog-select:has(select.input-validation-error) > .ts-control { border-color: var(--pf-control-error, #b42332); }
.pf-field-input:disabled:not(:is(.profint-identity__input, .pf-numeric-field__input, .profint-phone-part > input, .pf-text-control > input, .pf-nationality > input)) { opacity: var(--pf-control-disabled-opacity, .65); background: var(--pf-control-disabled-bg, #f2f6f8); }
.pf-address-fields { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; }
.pf-address-fields > :first-child { grid-column: 1 / -1; }
.pf-field label:has(> input[type="radio"]):not(.form-check-label) { min-height: var(--pf-control-height, 56px); box-sizing: border-box; }
@media(max-width:640px) { .pf-address-fields { grid-template-columns: minmax(0,1fr); } }
