/* Portal adapters: the shell owns density; compound fields own their interior.
   Shared controls keep their validation and canonical MVC inputs. */
:is(.portal-wide-shell, .portal-client-dialog, .portal-impersonation-dialog, .medicos-shell) {
    --pf-control-height: 44px;
    --pf-control-radius: 10px;
    --pf-control-surface: var(--surface, var(--bs-body-bg, #fff));
    --pf-control-text: var(--text, var(--ink, var(--bs-body-color, #193747)));
    --pf-control-muted: var(--text-3, var(--muted, #61798a));
    --pf-control-border: var(--border-strong, var(--hairline, #c5dbe6));
    --pf-control-accent: var(--accent-3, var(--profint-green, #008eaf));
}

/* Preserve a single outer frame for searches, including dynamically built menus. */
:is(.rx-search, .topbar__search, .gsearch-input, .portal-client-search, .rx-ms-search,
    .richselect__search, .richselect .rs-search, .pf-grid-search) > input.pf-field-input {
    height: auto;
    min-height: 0;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}
.rx-search { height: 44px; min-height: 44px; padding-block: 0; }
.portal-client-search { min-height: 44px; padding-block: 10px; }
.rx-search > input, .portal-client-search > input { flex: 1 1 0; min-width: 0; }

/* Text, date, numeric and catalog controls use the same outer baseline. */
:is(.portal-wide-shell, .medicos-shell) :is(input.rx-input, select.rx-select, input.rx-form-input,
    input.input, select.select, input.form-control, select.form-select):not(
    .pf-choice-source, .pf-temporal-source, .profint-identity__canonical, .tomselected,
    .pf-numeric-field__input, .pf-text-control > input, .profint-phone-part > input,
    .profint-identity__input, .ts-control > input, [type="hidden"], [type="checkbox"], [type="radio"]) {
    box-sizing: border-box;
    height: var(--pf-control-height);
    min-height: var(--pf-control-height);
    padding-block: 0;
}
.portal-wide-shell :is(.rx-dd-trigger, .rx-date-field, .rx-mr-field, .rx-ms-trigger,
    .richselect__trigger, .rs-trigger, .timepicker__trigger, .datepick-field) {
    box-sizing: border-box;
    min-height: var(--pf-control-height);
}
.portal-wide-shell .daterange {
    box-sizing: border-box;
    height: var(--pf-control-height);
    min-height: var(--pf-control-height);
    max-width: 100%;
}
.portal-wide-shell .daterange :is(.dr-input, .dr-field) { height: 100%; min-height: 0; }
.portal-wide-shell :is(.rx-filterbar, .filterbar, .lic-filters) { align-items: end; }
.portal-wide-shell :is(.rx-filterbar, .filterbar, .lic-filters) > :is(.btn, .rx-btn) {
    min-height: var(--pf-control-height);
    justify-content: center;
}

/* Keep the icon out of text and avoid duplicate native/shared indicators. */
.portal-client-dialog .pf-choice-field .pf-choice-indicator { flex-shrink: 0; }
.portal-client-dialog .portal-client-entry__choice { padding: 14px; }
.portal-client-dialog .portal-client-type { padding: 12px 14px; }
.portal-client-dialog .portal-client-entry__text { flex: 1; }
.portal-client-dialog .portal-client-entry__text :is(b, small) { overflow-wrap: anywhere; }
.portal-client-dialog .portal-client-entry.is-unavailable { opacity: 1; }
.portal-client-dialog .portal-client-entry.is-unavailable .portal-client-entry__choice { opacity: .65; }
.portal-client-dialog .modal-content { max-height: calc(100dvh - 32px); background: var(--surface, var(--bs-body-bg, #fff)); }
.portal-client-dialog .modal-body { min-height: 0; }

/* Stacked text wrappers must shrink inside grid/flex columns. */
.portal-wide-shell :is(.pf-field__body, .pf-text-control, .pf-temporal-control,
    .profint-identity, .profint-phone-part, .pf-numeric-field, .ts-wrapper) { min-width: 0; max-width: 100%; }
.portal-wide-shell .pf-text-control > :is(input, textarea) { margin: 0; }
.medicos-shell .input-wrap { display: block; padding: 0; border: 0; border-radius: 0; background: transparent; }
.medicos-shell .exfilters-head { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.medicos-shell .exfilters-head > * { min-width: 0; max-width: 100%; }
.medicos-shell .exfilters-head .tabs { flex-wrap: wrap; }
.medicos-shell .rev-foot { z-index: 20; min-width: 0; flex-wrap: wrap; }
.medicos-shell .rev-foot > * { min-width: 0; max-width: 100%; }
.medicos-shell .rev-foot .btn { height: auto; min-height: 44px; white-space: normal; }
.medicos-shell .validation-summary-valid { display: none; }

@media (max-width: 760px) {
    :is(.portal-wide-shell, .portal-client-dialog, .portal-impersonation-dialog, .medicos-shell) {
        --pf-control-height: 44px;
    }
    .portal-client-dialog .modal-dialog { margin: 8px; }
    .portal-client-dialog .modal-content { max-height: calc(100dvh - 16px); }
    .portal-client-dialog .modal-header, .portal-client-dialog .modal-body,
    .portal-client-dialog .modal-footer { padding: 16px; }
    .portal-client-dialog .portal-client-entry__choice { padding: 12px; }
    .portal-client-dialog .portal-client-options { max-height: min(280px, 38dvh); }
    .medicos-shell .exfilters-head { grid-template-columns: minmax(0, 1fr); }
    .medicos-shell .rev-foot__msg { flex-basis: calc(100% - 90px); }
    .medicos-shell .rev-foot > .btn-primary { flex: 1 1 100%; }
}

/* The calendar range needs its own row between the two navigation buttons. */
@media (max-width: 600px) {
    .tw-actions:has(> [data-date-window]) {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
    }
    .tw-actions:has(> [data-date-window]) > [role="status"] {
        grid-column: 1 / -1;
        grid-row: 1;
        text-align: center;
        white-space: nowrap;
    }
    .tw-actions > [data-date-window] {
        grid-row: 2;
        min-width: 0;
        width: 100%;
        white-space: normal;
    }
}
