/* Rentalo Control: canonical switches, status controls, checkbox/radio groups and number-series components.
 * All Control toggles use this single component. Page-specific files may only define placement/variant rules. */
.rentalo-portal {
    --rentalo-control-switch-width: 35px;
    --rentalo-control-switch-height: 20px;
    --rentalo-control-switch-knob: 15px;
    --rentalo-control-switch-padding-y: 10px;
    --rentalo-control-switch-padding-x: 12px;
    --rentalo-control-switch-radius: 10px;
}

.rentalo-portal .rentalo-settings-switch {
    position: relative;
    display: grid;
    grid-template-columns: var(--rentalo-control-switch-width) minmax(0, 1fr);
    align-items: start;
    column-gap: var(--rentalo-control-space-3, 12px);
    min-width: 0;
    margin: 0;
    padding: var(--rentalo-control-switch-padding-y) var(--rentalo-control-switch-padding-x);
    border: 1px solid var(--rentalo-control-border, var(--rentalo-border, #d6e0e9));
    border-radius: var(--rentalo-control-switch-radius);
    background: transparent;
    color: var(--rentalo-control-text, #223647);
    cursor: default;
    box-sizing: border-box;
}

.rentalo-portal .rentalo-settings-switch input[type="checkbox"] {
    position: absolute;
    grid-column: 1;
    grid-row: 1;
    align-self: start;
    width: var(--rentalo-control-switch-width);
    min-width: var(--rentalo-control-switch-width);
    max-width: var(--rentalo-control-switch-width);
    height: var(--rentalo-control-switch-height);
    min-height: var(--rentalo-control-switch-height);
    margin: 0;
    padding: 0;
    overflow: hidden;
    opacity: 0;
    pointer-events: auto;
    cursor: pointer;
    z-index: 1;
}

.rentalo-portal .rentalo-settings-switch input:disabled {
    cursor: not-allowed;
}

.rentalo-portal .rentalo-settings-switch-ui {
    position: relative;
    pointer-events: none;
    display: inline-block;
    grid-column: 1;
    grid-row: 1;
    align-self: start;
    flex: 0 0 var(--rentalo-control-switch-width);
    width: var(--rentalo-control-switch-width);
    min-width: var(--rentalo-control-switch-width);
    max-width: var(--rentalo-control-switch-width);
    height: var(--rentalo-control-switch-height);
    min-height: var(--rentalo-control-switch-height);
    margin-top: 0;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: #d0d5d9;
    box-sizing: border-box;
    transition: background-color .18s ease;
}

.rentalo-portal .rentalo-settings-switch-ui::after {
    content: "";
    position: absolute;
    top: 2px;
    left: 2px;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    border: 0;
    background: var(--rentalo-switch-knob, #fff);
    box-shadow: 0 1px 3px rgba(15, 23, 42, .18);
    box-sizing: border-box;
    transition: transform .18s ease;
}

.rentalo-portal .rentalo-settings-switch input:checked + .rentalo-settings-switch-ui {
    background: var(--rentalo-control-primary, var(--rentalo-primary, var(--rentalo-portal-primary, #006699)));
}

.rentalo-portal .rentalo-settings-switch input:checked + .rentalo-settings-switch-ui::after {
    transform: translateX(15px);
}

.rentalo-portal .rentalo-settings-switch input:focus-visible + .rentalo-settings-switch-ui {
    outline: 2px solid var(--rentalo-control-focus, #4c9ffe);
    outline-offset: 2px;
}

.rentalo-portal .rentalo-settings-switch-text {
    display: flex;
    grid-column: 2;
    grid-row: 1;
    flex-direction: column;
    gap: var(--rentalo-control-space-1, 4px);
    min-width: 0;
}

.rentalo-portal .rentalo-settings-switch-text strong {
    margin: 0;
    color: var(--rentalo-control-title, #40566a);
    font-size: var(--rentalo-control-label-size, 13px);
    font-weight: var(--rentalo-control-label-weight, 700);
    line-height: var(--rentalo-control-line-tight, 1.3);
}

.rentalo-portal .rentalo-settings-switch-text small {
    margin: 0;
    color: var(--rentalo-control-muted, #667985);
    font-size: var(--rentalo-control-subtext-size, 12px);
    line-height: var(--rentalo-control-line-normal, 1.45);
}

.rentalo-portal .rentalo-settings-switch:is(.is-disabled, :has(input:disabled)) {
    background: transparent;
    color: var(--rentalo-control-muted, #667985);
    cursor: not-allowed;
    opacity: .58;
}

.rentalo-portal .rentalo-settings-switch:is(.is-disabled, :has(input:disabled)) .rentalo-settings-switch-ui {
    background: #edf1f4;
}

.rentalo-portal .rentalo-settings-switch:is(.is-disabled, :has(input:disabled)) .rentalo-settings-switch-ui::after {
    background: #fff;
}

/* Canonical outer spacing when switch cards are mixed with one-column settings rows. */
.rentalo-portal .rentalo-settings-rows > .rentalo-settings-switch {
    margin-block: var(--rentalo-control-space-2, 8px);
}

.rentalo-portal .rentalo-control-switches,
.rentalo-portal .rentalo-control-station-switches,
.rentalo-portal .rentalo-control-item-switches {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--rentalo-control-grid-gap);
}

.rentalo-portal .rentalo-header-status-control {
    display: inline-flex;
    align-items: center;
    gap: var(--rentalo-control-space-3);
    min-height: var(--rentalo-control-field-height-compact);
    padding: 0 var(--rentalo-control-space-4);
    border: 1px solid var(--rentalo-control-border, var(--rentalo-border, #d6e0e9));
    border-radius: 8px;
    background: var(--rentalo-control-surface, #fff);
}

.rentalo-portal .rentalo-header-status-label {
    display: inline-flex;
    align-items: center;
    gap: var(--rentalo-control-space-2);
    margin: 0;
    font-size: var(--rentalo-control-label-size);
    font-weight: var(--rentalo-control-label-weight);
    line-height: var(--rentalo-control-line-tight);
    color: var(--rentalo-control-muted, #667985);
}

.rentalo-portal .rentalo-header-status-switch,
.rentalo-portal .rentalo-control-header-status .rentalo-settings-switch,
.rentalo-portal .rentalo-time-tariff-status-inline .rentalo-settings-switch {
    margin: 0;
}

.rentalo-portal .rentalo-control-header-status {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    min-width: 0;
}

/* Package 6: checkbox/radio groups, number-series cards and compact previews. */
.rentalo-portal {
    --rentalo-control-choice-min-height: 36px;
    --rentalo-control-choice-radius: 8px;
    --rentalo-control-choice-padding-y: 7px;
    --rentalo-control-choice-padding-x: 10px;
}

.rentalo-portal .rentalo-control-checkbox-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--rentalo-control-space-3);
}

.rentalo-portal .rentalo-control-checkbox-grid label,
.rentalo-portal .rentalo-portal-radio-options label,
.rentalo-portal .rentalo-control-compact-check {
    display: flex;
    align-items: center;
    gap: var(--rentalo-control-space-3);
    min-width: 0;
    min-height: var(--rentalo-control-choice-min-height);
    margin: 0;
    padding: var(--rentalo-control-choice-padding-y) var(--rentalo-control-choice-padding-x);
    border: 1px solid var(--rentalo-control-border, var(--rentalo-border, #dbe4ec));
    border-radius: var(--rentalo-control-choice-radius);
    background: var(--rentalo-control-surface, #fff);
    color: var(--rentalo-control-text, #263953);
    font-size: var(--rentalo-control-body-size);
    font-weight: 600;
    line-height: var(--rentalo-control-line-tight);
    cursor: pointer;
    box-sizing: border-box;
}

.rentalo-portal .rentalo-control-checkbox-grid input,
.rentalo-portal .rentalo-portal-radio-options input,
.rentalo-portal .rentalo-control-compact-check input {
    flex: 0 0 auto;
    margin: 0;
}

.rentalo-portal .rentalo-control-checkbox-grid label:has(input:checked),
.rentalo-portal .rentalo-portal-radio-options label:has(input:checked),
.rentalo-portal .rentalo-control-compact-check:has(input:checked) {
    border-color: var(--rentalo-control-primary, #006699);
    background: var(--rentalo-control-selected-bg, #edf6ff);
}

.rentalo-portal .rentalo-portal-radio-field {
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
}

.rentalo-portal .rentalo-portal-radio-field legend {
    margin: 0 0 var(--rentalo-control-field-gap);
    padding: 0;
    font-size: var(--rentalo-control-label-size);
    font-weight: var(--rentalo-control-label-weight);
    line-height: var(--rentalo-control-line-tight);
    color: var(--rentalo-control-title, #40566a);
}

.rentalo-portal .rentalo-portal-radio-options {
    display: flex;
    flex-wrap: wrap;
    gap: var(--rentalo-control-space-3);
}

.rentalo-portal .rentalo-control-number-series {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--rentalo-control-card-gap);
}

.rentalo-portal .rentalo-control-number-card {
    min-width: 0;
    padding: var(--rentalo-control-card-body-padding);
    border: 1px solid var(--rentalo-control-border, var(--rentalo-border, #dbe4ec));
    border-radius: var(--rentalo-control-card-radius);
    background: var(--rentalo-control-surface-soft, #f7fbff);
}

.rentalo-portal .rentalo-control-number-card h3 {
    margin: 0 0 var(--rentalo-control-space-4);
    font-size: var(--rentalo-control-section-title-size);
    font-weight: var(--rentalo-control-section-weight);
    line-height: var(--rentalo-control-line-tight);
    color: var(--rentalo-control-title, #40566a);
}

.rentalo-portal .rentalo-control-number-card .rentalo-settings-switch {
    margin-top: var(--rentalo-control-grid-gap);
}

.rentalo-portal .rentalo-control-number-preview {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: var(--rentalo-control-space-1);
    min-width: 0;
    padding: var(--rentalo-control-space-4);
    border: 1px dashed var(--rentalo-control-border, var(--rentalo-border, #dbe4ec));
    border-radius: var(--rentalo-control-input-radius, 8px);
    background: var(--rentalo-control-surface, #fff);
}

.rentalo-portal .rentalo-control-number-preview span {
    margin: 0;
    font-size: var(--rentalo-control-subtext-size);
    line-height: var(--rentalo-control-line-normal);
    color: var(--rentalo-control-muted, #667985);
}

.rentalo-portal .rentalo-control-number-preview strong {
    margin: 0;
    font-size: calc(var(--rentalo-control-section-title-size) + 2px);
    line-height: var(--rentalo-control-line-tight);
    color: var(--rentalo-control-title, #40566a);
    overflow-wrap: anywhere;
}

/* 2.16.222 – tabs and type-colour recognition */
.rentalo-portal-tabs a:not(.is-active) {
    background: color-mix(in srgb, var(--rentalo-portal-primary, #006699) 12%, var(--rentalo-control-card-bg, #fff));
    border-color: color-mix(in srgb, var(--rentalo-portal-primary, #006699) 24%, var(--rentalo-control-border, var(--rentalo-border, #d6e0e9)));
    color: color-mix(in srgb, var(--rentalo-portal-primary, #006699) 72%, var(--rentalo-control-text, #273b48));
}
.rentalo-portal-tabs a:not(.is-active):hover,
.rentalo-portal-tabs a:not(.is-active):focus-visible {
    background: color-mix(in srgb, var(--rentalo-portal-primary, #006699) 20%, var(--rentalo-control-card-bg, #fff));
    border-color: color-mix(in srgb, var(--rentalo-portal-primary, #006699) 42%, var(--rentalo-control-border, var(--rentalo-border, #d6e0e9)));
    color: var(--rentalo-control-text, #273b48);
}
.rentalo-control-type-name {
    display: inline-flex;
    align-items: center;
    gap: 7px;
}
.rentalo-control-type-dot {
    width: 10px;
    height: 10px;
    flex: 0 0 10px;
    border-radius: 50%;
    background: var(--rentalo-type-color, #8aa3b5);
    box-shadow: 0 0 0 1px rgba(18, 49, 70, .12);
}
.rentalo-control-editor-actions .rentalo-portal-primary-action {
    min-width: 124px;
}


/* 2.16.226 – unified editor status and tier row actions. */
.rentalo-control-title-row{display:flex;align-items:center;gap:12px;min-width:0}
.rentalo-control-title-row h1{margin:0}
.rentalo-control-tier-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;white-space:nowrap}
.rentalo-control-icon-action.is-success{color:#16753a;background:#eef9f2;border-color:#b9dfc7}
.rentalo-control-icon-action.is-success:hover,.rentalo-control-icon-action.is-success:focus-visible{color:#0d5d2b;background:#dff3e6;border-color:#8ec9a3}
.rentalo-control-tier-table td:last-child{min-width:92px;text-align:right}
.rentalo-control-tier-table td input[type="checkbox"]{display:block;margin:0 auto;width:18px;height:18px}


/* 2.16.571 – Global Control search/select system.
 *
 * All searchable Control fields share one geometry. Pages must not redefine
 * magnifier position, clear-button styling, field height, dropdown frame or
 * search padding. The page decides only which selection mode is required:
 * searchable single select, hierarchical single picker or searchable checklist.
 */
.rentalo-portal {
    --rentalo-control-search-icon-size: 16px;
    --rentalo-control-search-icon-left: 11px;
    --rentalo-control-search-text-left: 10px;
    --rentalo-control-search-clear-size: 28px;
    --rentalo-control-search-clear-right: 5px;
    --rentalo-control-search-dropdown-gap: 4px;
    --rentalo-control-search-dropdown-max-height: 320px;
}

/* Standalone checklist searches own their field frame. Inputs inside a search
 * shell are deliberately excluded: the shell is their only visual frame. */
body.rentalo-portal .rentalo-control-searchable-checklist > .rentalo-control-search-input,
body.rentalo-portal .rentalo-control-searchable-checklist > .rentalo-control-checklist-search {
    box-sizing: border-box;
    width: 100%;
    height: var(--rentalo-control-field-height, 40px);
    min-height: var(--rentalo-control-field-height, 40px);
    margin: 0;
    padding: 0 10px;
    border: 1px solid var(--rentalo-control-border, var(--rentalo-border, #d7e0e7));
    border-radius: var(--rentalo-control-input-radius, 6px);
    background: var(--rentalo-control-input-bg, var(--rentalo-input-bg, #fff));
    color: var(--rentalo-control-text, var(--rentalo-field-text, #273b48));
    font: inherit;
    font-size: var(--rentalo-control-input-size, var(--rentalo-control-body-size, 14px));
    line-height: normal;
    text-indent: 0;
}

body.rentalo-portal .rentalo-control-searchable-checklist > .rentalo-control-search-input:focus,
body.rentalo-portal .rentalo-control-searchable-checklist > .rentalo-control-search-input:focus-visible,
body.rentalo-portal .rentalo-control-searchable-checklist > .rentalo-control-checklist-search:focus,
body.rentalo-portal .rentalo-control-searchable-checklist > .rentalo-control-checklist-search:focus-visible {
    border-color: var(--rentalo-field-focus-border, var(--rentalo-control-primary, #006699));
    background: var(--rentalo-field-focus-bg, var(--rentalo-control-input-bg, #fff));
    outline: 0;
    box-shadow: none;
}

body.rentalo-portal .rentalo-control-search-shell {
    position: relative;
    display: block;
    width: 100%;
    min-width: 0;
    height: var(--rentalo-control-field-height, 40px);
    min-height: var(--rentalo-control-field-height, 40px);
    padding: 0;
    overflow: hidden;
    border: 0;
    border-radius: var(--rentalo-control-input-radius, 6px);
    background: transparent;
    box-sizing: border-box;
    outline: 0;
    box-shadow: none;
}

/* Icon and clear action are overlays inside the single field frame. The input
 * reserves their space with padding and remains full-width underneath. */
body.rentalo-portal .rentalo-control-search-shell > .dashicons-search {
    display: none;
    position: absolute;
    z-index: 1;
    top: 50%;
    left: var(--rentalo-control-search-icon-left);
    width: var(--rentalo-control-search-icon-size);
    height: var(--rentalo-control-search-icon-size);
    margin: 0;
    transform: translateY(-50%);
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--rentalo-control-muted, #657789);
    font-size: var(--rentalo-control-search-icon-size);
    line-height: var(--rentalo-control-search-icon-size);
    pointer-events: none;
}

html body.rentalo-portal div.rentalo-control-search-shell > input.rentalo-control-search-input {
    -webkit-appearance: none;
    appearance: none;
    width: 100%;
    min-width: 0;
    height: 100%;
    min-height: 0;
    margin: 0;
    padding: 0 10px 0 var(--rentalo-control-search-text-left);
    border: 1px solid var(--rentalo-control-border, var(--rentalo-border, #d7e0e7));
    border-radius: inherit;
    background: var(--rentalo-control-input-bg, var(--rentalo-input-bg, #fff));
    box-sizing: border-box;
    box-shadow: none;
    outline: 0;
}
html body.rentalo-portal div.rentalo-control-search-shell:has(.rentalo-control-search-clear) > input.rentalo-control-search-input {
    padding-right: calc(var(--rentalo-control-search-clear-size) + var(--rentalo-control-search-clear-right) + 5px);
}

/* The input owns both the normal and focus frame; the shell is layout-only. */
html body.rentalo-portal div.rentalo-control-search-shell > input.rentalo-control-search-input:focus,
html body.rentalo-portal div.rentalo-control-search-shell > input.rentalo-control-search-input:focus-visible,
body.rentalo-portal .rentalo-control-search-select.is-open > .rentalo-control-search-shell > input.rentalo-control-search-input,
body.rentalo-portal .rentalo-control-single-item-picker.is-open > .rentalo-control-search-shell > input.rentalo-control-search-input {
    border-color: var(--rentalo-field-focus-border, var(--rentalo-control-primary, #006699));
    border-radius: inherit;
    background: var(--rentalo-field-focus-bg, var(--rentalo-control-input-bg, #fff));
    box-shadow: none;
    outline: 0;
}

body.rentalo-portal .rentalo-control-search-clear {
    position: absolute;
    z-index: 2;
    top: 50%;
    right: var(--rentalo-control-search-clear-right);
    display: flex;
    align-items: center;
    justify-content: center;
    width: var(--rentalo-control-search-clear-size);
    height: var(--rentalo-control-search-clear-size);
    min-width: var(--rentalo-control-search-clear-size);
    min-height: var(--rentalo-control-search-clear-size);
    margin: 0;
    padding: 0;
    transform: translateY(-50%);
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: var(--rentalo-control-muted, #657789);
    font-family: Arial, sans-serif;
    font-size: 20px;
    font-style: normal;
    font-weight: 400;
    line-height: 1;
    text-shadow: none;
    box-shadow: none;
    outline: 0;
    cursor: pointer;
}

body.rentalo-portal .rentalo-control-search-clear[hidden] {
    display: none;
}

body.rentalo-portal .rentalo-control-search-clear:hover,
body.rentalo-portal .rentalo-control-search-clear:focus,
body.rentalo-portal .rentalo-control-search-clear:focus-visible,
body.rentalo-portal .rentalo-control-search-clear:active,
body.rentalo-portal .rentalo-control-search-select:focus-within .rentalo-control-search-clear,
body.rentalo-portal .rentalo-control-search-select.is-open .rentalo-control-search-clear {
    border: 0;
    background: transparent;
    color: var(--rentalo-control-muted, #657789);
    font-style: normal;
    font-weight: 400;
    text-shadow: none;
    box-shadow: none;
    outline: 0;
}


/* Cards containing floating Control pickers must not clip the canonical
 * search dropdown. This utility is shared by any Control editor that embeds
 * an absolutely positioned search/select panel inside a card. */
body.rentalo-portal .rentalo-control-floating-ui-card {
    overflow: visible;
    position: relative;
}
body.rentalo-portal .rentalo-control-floating-ui-card .rentalo-control-search-select.is-open {
    z-index: 1300;
}

/* Searchable single select: underlying native select remains the data source. */
.rentalo-portal .rentalo-control-search-select {
    position: relative;
    width: 100%;
    min-width: 0;
}

/* Canonical Control searchable-select frame.
 * The outer picker and shell are layout-only; the input owns the visible border.
 * This applies equally to customer and driver pickers in bookings, agreements and invoices. */
body.rentalo-portal .rentalo-control-search-select,
body.rentalo-portal .rentalo-portal-open-select {
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    outline: 0;
}

.rentalo-portal .rentalo-control-search-select .rentalo-portal-native-select {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
}

.rentalo-portal .rentalo-control-search-dropdown,
.rentalo-portal .rentalo-control-single-item-dropdown {
    position: absolute;
    z-index: 1200;
    top: calc(100% + var(--rentalo-control-search-dropdown-gap));
    left: 0;
    right: 0;
    min-width: 0;
    max-height: min(var(--rentalo-control-search-dropdown-max-height), calc(100vh - 180px));
    overflow: auto;
    padding: 6px;
    border: 1px solid var(--rentalo-control-border, var(--rentalo-border, #d7e0e7));
    border-radius: var(--rentalo-control-input-radius, 6px);
    background: var(--rentalo-control-surface, #fff);
    box-shadow: 0 10px 24px rgba(15, 23, 42, .14);
}

.rentalo-portal .rentalo-control-search-dropdown[hidden],
.rentalo-portal .rentalo-control-single-item-dropdown[hidden] {
    display: none;
}

/* Floating search results may be portalled to <body> by editors embedded in
 * clipped cards/columns. Geometry is supplied by the central JS positioner. */
body.rentalo-portal .rentalo-control-search-dropdown.is-floating-portal {
    position: fixed;
    z-index: 100000;
    top: auto;
    right: auto;
    bottom: auto;
    left: auto;
    min-width: 0;
}

.rentalo-portal .rentalo-control-search-option {
    display: block;
    width: 100%;
    min-height: 34px;
    padding: 7px 9px;
    overflow: hidden;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: var(--rentalo-control-text, #273b48);
    font: inherit;
    text-align: left;
    text-overflow: ellipsis;
    white-space: nowrap;
    cursor: pointer;
}

/* Live filtering sets the native hidden attribute on non-matching results.
 * Keep it authoritative over the component's display:block declaration. */
.rentalo-portal .rentalo-control-search-option[hidden] {
    display: none;
}

.rentalo-portal .rentalo-control-search-option:hover,
.rentalo-portal .rentalo-control-search-option:focus,
.rentalo-portal .rentalo-control-search-option.is-keyboard-active,
.rentalo-portal .rentalo-control-search-option.is-selected {
    background: var(--rentalo-selected-bg, #eef7fb);
    outline: 0;
}

.rentalo-portal .rentalo-control-search-option.is-selected {
    color: var(--rentalo-control-primary, #006699);
    font-weight: 700;
}

.rentalo-portal .rentalo-control-search-option:disabled {
    opacity: .48;
    cursor: not-allowed;
}

.rentalo-portal .rentalo-control-search-option.is-reset-option {
    color: var(--rentalo-control-muted, #657789);
    border-bottom: 1px solid var(--rentalo-control-border, #d7e0e7);
    border-radius: 6px 6px 0 0;
}

.rentalo-portal .rentalo-control-search-empty {
    padding: 10px 9px;
    color: var(--rentalo-control-muted, #657789);
    font-size: var(--rentalo-control-subtext-size, 12px);
}

/* Hierarchical single picker: same search field, checklist hierarchy in single mode. */
.rentalo-portal .rentalo-control-single-item-picker {
    position: relative;
    min-width: 0;
}

.rentalo-portal .rentalo-control-single-item-dropdown {
    /* The hierarchy list is the sole vertical scroll owner. The generic
     * searchable-dropdown rule above must not create a second scrollbar. */
    max-height: none;
    overflow: hidden;
    padding: 8px;
}

.rentalo-portal .rentalo-control-single-item-dropdown .rentalo-control-checklist-items {
    display: flex;
    flex-direction: column;
    gap: 10px;
    max-height: min(var(--rentalo-control-search-dropdown-max-height), calc(100vh - 180px));
    overflow-x: hidden;
    overflow-y: auto;
    padding-right: 4px;
}

.rentalo-portal .rentalo-control-single-item-dropdown .rentalo-control-checklist-category {
    padding: 6px 10px;
    border-bottom: 1px solid var(--rentalo-control-border, #d7e0e7);
}

.rentalo-portal .rentalo-control-single-item-dropdown .rentalo-control-checklist-category:last-child {
    border-bottom: 0;
}

.rentalo-portal .rentalo-control-single-item-dropdown .rentalo-control-checklist-category-title {
    display: block;
    margin: 0 0 10px;
    color: var(--rentalo-control-title, var(--rentalo-control-text, #273b48));
    font-weight: 700;
}

.rentalo-portal .rentalo-control-single-item-dropdown .rentalo-control-checklist-group.is-nested {
    padding: 0 0 0 12px;
    border: 0;
}

.rentalo-portal .rentalo-control-single-item-dropdown .rentalo-control-checklist-group.is-nested + .rentalo-control-checklist-group.is-nested {
    margin-top: 8px;
    padding-top: 8px;
    border-top: 1px solid var(--rentalo-control-border, #d7e0e7);
}

.rentalo-portal .rentalo-control-single-item-dropdown .rentalo-control-checklist-group-title {
    display: block;
    margin: 0 0 6px;
    color: var(--rentalo-control-muted, #657789);
    font-weight: 700;
}

.rentalo-portal .rentalo-control-single-item-row {
    display: grid;
    grid-template-columns: 16px minmax(0, 1fr);
    align-items: center;
    gap: 8px;
    width: 100%;
    min-width: 0;
    padding: 6px 8px;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.rentalo-portal .rentalo-control-single-item-row:hover,
.rentalo-portal .rentalo-control-single-item-row:focus,
.rentalo-portal .rentalo-control-single-item-row.is-selected {
    background: var(--rentalo-selected-bg, #eef7fb);
    outline: 0;
}

.rentalo-portal .rentalo-control-single-item-row.is-selected {
    box-shadow: inset 3px 0 0 var(--rentalo-control-primary, #006699);
}

.rentalo-portal .rentalo-control-single-item-row span:last-child {
    display: block;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rentalo-portal .rentalo-control-single-item-radio {
    width: 14px;
    height: 14px;
    border: 1px solid var(--rentalo-control-border, #aebdca);
    border-radius: 50%;
    background: #fff;
    box-shadow: inset 0 0 0 3px #fff;
}

.rentalo-portal .rentalo-control-single-item-row.is-selected .rentalo-control-single-item-radio {
    border-color: var(--rentalo-control-primary, #006699);
    background: var(--rentalo-control-primary, #006699);
}

.rentalo-portal .rentalo-control-single-item-empty {
    padding: 8px;
    color: var(--rentalo-control-muted, #657789);
}

/* Searchable checklist: multi-select mode uses the same field height and typography. */
body.rentalo-portal .rentalo-control-searchable-checklist > .rentalo-control-search-input {
    flex: 0 0 auto;
}

/* 2.16.583 – One compact hierarchical rental-item assignment list everywhere in Control. */
body.rentalo-portal .rentalo-control-item-assignment-list{
    display:flex;
    flex-direction:column;
    gap:0;
    min-width:0;
}
body.rentalo-portal .rentalo-control-item-assignment-list > .rentalo-control-checklist-search-shell{
    flex:0 0 auto;
    margin:0 0 6px;
}
body.rentalo-portal .rentalo-control-item-assignment-list .rentalo-control-checklist-select-all{
    display:flex;
    align-items:center;
    gap:7px;
    min-height:26px;
    margin:0;
    padding:2px 4px 6px;
    border-bottom:1px solid var(--rentalo-control-border,#d7e0e7);
    font-size:var(--rentalo-control-body-size,14px);
    font-weight:400;
    line-height:1.25;
}
body.rentalo-portal .rentalo-control-item-assignment-list .rentalo-control-checklist-items{
    display:flex;
    flex-direction:column;
    gap:0;
    min-height:0;
    margin:0;
    padding:0;
}
body.rentalo-portal .rentalo-control-item-assignment-list .rentalo-control-checklist-category{
    margin:0;
    padding:6px 2px;
    border:0;
    border-bottom:1px solid var(--rentalo-control-border,#d7e0e7);
}
body.rentalo-portal .rentalo-control-item-assignment-list .rentalo-control-checklist-category:last-child{
    border-bottom:0;
}
body.rentalo-portal .rentalo-control-item-assignment-list .rentalo-control-checklist-category-title{
    display:block;
    margin:0 0 3px;
    padding:0 2px;
    color:var(--rentalo-control-title,var(--rentalo-control-text,#273b48));
    font-size:var(--rentalo-control-body-size,14px);
    font-weight:700;
    line-height:1.25;
}
body.rentalo-portal .rentalo-control-item-assignment-list .rentalo-control-checklist-group.is-nested{
    margin:0;
    padding:0 0 0 10px;
    border:0;
}
body.rentalo-portal .rentalo-control-item-assignment-list .rentalo-control-checklist-group.is-nested + .rentalo-control-checklist-group.is-nested{
    margin-top:4px;
    padding-top:0;
    border-top:0;
}
body.rentalo-portal .rentalo-control-item-assignment-list .rentalo-control-checklist-group-title{
    display:block;
    margin:0 0 3px;
    padding:0 2px;
    color:var(--rentalo-control-text,#273b48);
    font-size:var(--rentalo-control-body-size,14px);
    font-weight:700;
    line-height:1.25;
}
body.rentalo-portal .rentalo-control-item-assignment-list .rentalo-control-checklist-row{
    display:grid;
    grid-template-columns:16px minmax(0,1fr);
    align-items:center;
    gap:6px;
    min-height:24px;
    margin:0;
    padding:6px 2px 6px 10px;
    border:0;
    background:transparent;
    font-size:var(--rentalo-control-body-size,14px);
    font-weight:400;
    line-height:1.2;
}
body.rentalo-portal .rentalo-control-item-assignment-list .rentalo-control-checklist-row > span{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-weight:400;
}
body.rentalo-portal .rentalo-control-item-assignment-list .rentalo-control-checklist-row input[type="checkbox"],
body.rentalo-portal .rentalo-control-item-assignment-list .rentalo-control-checklist-select-all input[type="checkbox"]{
    margin:0;
}

/* 2.16.586 – Labels own their intrinsic width; trailing help/action icons never wrap away from the text. */
body.rentalo-portal .rentalo-control-side-label-grid > label > span,
body.rentalo-portal .rentalo-control-compact-row > span,
body.rentalo-portal .rentalo-control-condition-fields > label > span,
body.rentalo-portal .rentalo-control-label-with-help{
    width:max-content;
    max-width:100%;
    white-space:nowrap;
}
body.rentalo-portal :where(
    .rentalo-control-side-label-grid,
    .rentalo-control-condition-fields,
    .rentalo-control-compact-row
) :where(.rentalo-control-help-icon,.rentalo-help-icon,.dashicons){
    flex:0 0 auto;
    white-space:nowrap;
}


/* 2.16.680 – Customer/driver state and rating inside the shared searchable select. */
.rentalo-portal .rentalo-control-search-option.is-customer-option{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:center;
    gap:8px;
    padding-left:8px;
    border-left:4px solid var(--rentalo-control-muted,#657789);
    border-radius:0 6px 6px 0;
    text-overflow:clip;
}
.rentalo-portal .rentalo-control-search-option.is-customer-option:has(> .rentalo-customer-select-status-dot.is-active){border-left-color:#2f9e5b}
.rentalo-portal .rentalo-control-search-option.is-customer-option:has(> .rentalo-customer-select-status-dot.is-inactive){border-left-color:#c43b3b}
.rentalo-portal .rentalo-control-search-option.is-customer-option> .rentalo-customer-select-status-dot{display:none}
/* Reserved idea for a later optional feature: tint customer rows subtly with
 * their rating color (yellow/orange/red, plus configured blue/gray). Keep it
 * disabled for now so the left border communicates only active/inactive. */
.rentalo-portal .rentalo-customer-select-status-dot{
    display:inline-block;
    width:8px;
    height:8px;
    min-width:8px;
    border-radius:50%;
    background:var(--rentalo-control-muted,#657789);
}
.rentalo-portal .rentalo-customer-select-status-dot.is-active{background:#2f9e5b}
.rentalo-portal .rentalo-customer-select-status-dot.is-inactive{background:#c43b3b}
.rentalo-portal .rentalo-customer-select-label{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.rentalo-portal .rentalo-customer-select-badge{justify-self:end}
.rentalo-customer-basic-tooltip{
    position:fixed;
    z-index:100000;
    display:grid;
    grid-template-columns:max-content minmax(0,1fr);
    gap:4px 12px;
    max-width:min(520px,calc(100vw - 16px));
    padding:9px 11px;
    border:1px solid var(--rentalo-control-border,#cdd9e2);
    border-radius:6px;
    background:var(--rentalo-control-surface,#fff);
    color:var(--rentalo-control-text,#273b48);
    box-shadow:0 8px 24px rgba(15,23,42,.18);
    font-size:12px;
    line-height:1.35;
    pointer-events:none;
}
.rentalo-customer-basic-tooltip[hidden]{display:none}
.rentalo-customer-basic-tooltip-label{color:var(--rentalo-control-muted,#657789);white-space:nowrap}
.rentalo-customer-basic-tooltip-value{min-width:0;overflow-wrap:anywhere;font-weight:600}
.rentalo-portal .rentalo-customer-name-with-alert{display:inline-flex;align-items:center;gap:5px;max-width:100%;vertical-align:middle}
.rentalo-portal .rentalo-customer-name-with-alert>a{min-width:0}
.rentalo-portal .badge.rentalo-customer-alert-indicator{
    flex:0 0 18px;
    justify-content:center;
    width:18px;
    min-height:18px;
    height:18px;
    padding:0;
    border-radius:50%;
    font-size:12px;
    line-height:18px;
    cursor:help;
}
.rentalo-portal .rentalo-customer-alert-indicator:focus-visible{outline:2px solid var(--rentalo-control-focus,#2271b1);outline-offset:2px}
body.rentalo-portal.rentalo-control-theme-resolved-dark .rentalo-customer-basic-tooltip{
    border-color:var(--rentalo-control-border,#415466);
    background:var(--rentalo-control-surface,#1d2b36);
    color:var(--rentalo-control-text,#e7edf2);
    box-shadow:0 10px 28px rgba(0,0,0,.38);
}
body.rentalo-portal .rentalo-control-search-shell > .rentalo-customer-select-selected-dot{
    position:absolute;
    z-index:2;
    top:50%;
    left:10px;
    transform:translateY(-50%);
}
body.rentalo-portal .rentalo-control-search-select.has-customer-meta > .rentalo-control-search-shell > input.rentalo-control-search-input{
    padding-left:32px;
    padding-right:132px;
}
body.rentalo-portal .rentalo-control-search-shell > .rentalo-customer-select-selected-badge{
    position:absolute;
    z-index:2;
    top:50%;
    right:calc(var(--rentalo-control-search-clear-size) + var(--rentalo-control-search-clear-right) + 8px);
    max-width:105px;
    overflow:hidden;
    text-overflow:ellipsis;
    transform:translateY(-50%);
}
body.rentalo-portal .rentalo-control-search-shell > .rentalo-customer-select-selected-badge[hidden],
body.rentalo-portal .rentalo-control-search-shell > .rentalo-customer-select-selected-dot[hidden]{display:none}

/* 2.16.856 – One compact customer-sort control shared by booking, agreement and invoice. */
body.rentalo-portal .rentalo-customer-sort-toggle{
    position:absolute;
    z-index:3;
    top:50%;
    right:5px;
    display:grid;
    place-items:center;
    width:26px;
    height:28px;
    min-width:26px;
    min-height:28px;
    margin:0;
    padding:0;
    transform:translateY(-50%);
    border:0;
    border-radius:5px;
    background:transparent;
    color:var(--rentalo-control-muted,#657789);
    cursor:pointer;
}
body.rentalo-portal .rentalo-customer-sort-toggle:hover,
body.rentalo-portal .rentalo-customer-sort-toggle:focus-visible,
body.rentalo-portal .rentalo-customer-sort-toggle.is-open{background:var(--rentalo-control-surface-muted,#eef3f6);color:var(--rentalo-control-primary,#006699);outline:0}
body.rentalo-portal .rentalo-control-search-select.has-customer-sort .rentalo-control-search-clear:hover,
body.rentalo-portal .rentalo-control-search-select.has-customer-sort .rentalo-control-search-clear:focus-visible{border-radius:5px;background:var(--rentalo-control-surface-muted,#eef3f6);color:var(--rentalo-control-primary,#006699)}
body.rentalo-portal .rentalo-customer-sort-toggle .dashicons{width:16px;height:16px;font-size:16px;line-height:16px;transition:transform .15s ease}
body.rentalo-portal .rentalo-customer-sort-toggle.is-open .dashicons{transform:rotate(180deg)}
html body.rentalo-portal .rentalo-portal-content div.rentalo-control-search-select.has-customer-sort > .rentalo-control-search-shell > input.rentalo-control-search-input{padding-right:72px}
body.rentalo-portal .rentalo-control-search-select.has-customer-sort .rentalo-control-search-clear{right:35px}
html body.rentalo-portal .rentalo-portal-content div.rentalo-control-search-select.has-customer-sort.has-customer-meta > .rentalo-control-search-shell > input.rentalo-control-search-input{padding-right:164px}
body.rentalo-portal .rentalo-control-search-select.has-customer-sort .rentalo-customer-select-selected-badge{right:76px}
body.rentalo-portal .rentalo-customer-sort-row{display:flex;align-items:center;justify-content:flex-start;gap:10px;height:34px;margin-top:4px;padding:3px 6px;border:1px solid var(--rentalo-control-border,var(--rentalo-border,#d7e0e7));border-radius:var(--rentalo-control-input-radius,6px);background:var(--rentalo-control-surface-muted,#f4f7fa);box-sizing:border-box}
body.rentalo-portal .rentalo-customer-sort-row[hidden]{display:none}
body.rentalo-portal .rentalo-customer-sort-row select.rentalo-customer-sort-select{width:auto;min-width:160px;height:26px;min-height:26px;margin:0;padding:0 28px 0 8px;border-color:var(--rentalo-control-border,var(--rentalo-border,#d7e0e7));border-radius:5px;background-color:var(--rentalo-control-input-bg,var(--rentalo-input-bg,#fff));color:var(--rentalo-control-text,var(--rentalo-field-text,#273b48));font-size:12px;line-height:24px}
body.rentalo-portal .rentalo-customer-sort-check{display:flex;align-items:center;gap:5px;height:26px;margin:0;color:var(--rentalo-control-text,var(--rentalo-field-text,#273b48));font-size:11px;font-weight:600;white-space:nowrap;cursor:pointer}
body.rentalo-portal .rentalo-customer-sort-check input[type="checkbox"]{width:16px;height:16px;margin:0;accent-color:var(--rentalo-control-primary,#006699)}
body.rentalo-portal .rentalo-control-search-select.hide-customer-info .rentalo-portal-open-select-list .rentalo-customer-select-badge{display:none}
@media(max-width:479px){body.rentalo-portal .rentalo-customer-sort-row{gap:7px}body.rentalo-portal .rentalo-customer-sort-row select.rentalo-customer-sort-select{min-width:0;flex:1 1 auto}body.rentalo-portal .rentalo-customer-sort-check{flex:0 0 auto}}


/* 2.16.739 - native WordPress media modal accessibility labels.
   Rentalo Control is frontend-routed, so wp-admin's common screen-reader
   utility is not guaranteed to be present. Keep the native wp.media markup
   and hide only its accessibility-only labels exactly as WordPress expects. */
body.rentalo-portal .media-modal .screen-reader-text,
body.rentalo-portal .media-modal .screen-reader-text span,
body.rentalo-portal .media-modal .ui-helper-hidden-accessible {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(1px, 1px, 1px, 1px);
    clip-path: inset(50%);
    border: 0;
    word-wrap: normal;
    white-space: nowrap;
}

/* Local OCR modal */
.rentalo-ocr-modal .rentalo-portal-modal-dialog{max-width:900px}
.rentalo-ocr-upload-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;padding:18px 20px 4px}
.rentalo-ocr-upload-grid label,.rentalo-ocr-result-grid label{display:flex;flex-direction:column;gap:6px;font-weight:700}
.rentalo-ocr-result-grid [data-rentalo-ocr-field-row][hidden]{display:none}
.rentalo-ocr-upload-grid small{font-weight:400;color:var(--rentalo-control-muted,#667085)}
.rentalo-ocr-status{margin:12px 20px 0;padding:10px 12px;border:1px solid var(--rentalo-control-border,#d7dee7);border-radius:8px;background:var(--rentalo-control-surface-soft,#f7f9fb)}
.rentalo-ocr-results{padding:14px 20px 4px}
.rentalo-ocr-results h3{margin:0 0 12px}
.rentalo-ocr-result-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}
.rentalo-ocr-result-grid input{width:100%}
.rentalo-ocr-raw{margin-top:14px}
.rentalo-ocr-raw pre{max-height:180px;overflow:auto;white-space:pre-wrap;padding:10px;border:1px solid var(--rentalo-control-border,#d7dee7);border-radius:8px;background:var(--rentalo-control-surface-soft,#f7f9fb);font-size:12px}
.rentalo-ocr-modal [data-rentalo-ocr-form]>.rentalo-portal-form-actions{position:sticky;bottom:0;z-index:2;margin-top:16px;padding:14px 20px 18px;border-top:1px solid var(--rentalo-control-border,#d7dee7);background:var(--rentalo-control-card-bg,#fff)}
@media (max-width:767px){.rentalo-ocr-upload-grid,.rentalo-ocr-result-grid{grid-template-columns:1fr}}
.rentalo-ocr-status.is-loading{display:flex;align-items:center;gap:9px}
.rentalo-ocr-status.is-loading::before{content:"";width:15px;height:15px;flex:0 0 15px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:rentalo-ocr-spin .75s linear infinite}
.rentalo-ocr-status.is-success{border-color:#b7dfc5;background:#f2fbf5;color:#1f6b38}
.rentalo-ocr-status.is-error{border-color:#efc2c2;background:#fff5f5;color:#a12d2d}
@keyframes rentalo-ocr-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.rentalo-ocr-status.is-loading::before{animation-duration:1.5s}}

/* 2.17.003 – one hierarchy for group and rental-item assignments. */
body.rentalo-portal .rentalo-control-group-item-assignment-list .rentalo-control-group-assignment-row{
    padding-left:2px;
    font-weight:700;
}
body.rentalo-portal .rentalo-control-group-item-assignment-list .rentalo-control-group-assignment-row .rentalo-control-checklist-group-title{
    margin:0;
    padding:0;
    font-weight:700;
}
body.rentalo-portal .rentalo-control-group-item-assignment-list .rentalo-control-item-assignment-row{
    padding-left:28px;
}

/* 2.17.005 – inherited child selections remain visually selected without becoming direct assignments. */
body.rentalo-portal .rentalo-control-group-item-assignment-list .rentalo-control-item-assignment-row.is-inherited{opacity:1}
body.rentalo-portal .rentalo-control-group-item-assignment-list .rentalo-control-item-assignment-row.is-inherited input[type="checkbox"]{opacity:1;cursor:default}
body.rentalo-portal .rentalo-control-group-item-assignment-list .rentalo-control-item-assignment-row.is-inherited span{opacity:.82}

/* Central Control search in the top bar. */
body.rentalo-portal .rentalo-control-global-search{position:relative;width:250px;min-width:250px;align-self:center}
body.rentalo-portal .rentalo-control-global-search .rentalo-control-search-shell{width:100%}
/* The top bar lives outside .rentalo-portal-content. Keep the shared search
 * geometry explicit here so later generic input rules cannot collapse the
 * reserved magnifier space. Values still come from the central search system. */
html body.rentalo-portal .rentalo-control-global-search .rentalo-control-search-shell > input.rentalo-control-search-input,
html body.rentalo-portal .rentalo-control-global-search .rentalo-control-search-shell > input.rentalo-control-search-input:hover,
html body.rentalo-portal .rentalo-control-global-search .rentalo-control-search-shell > input.rentalo-control-search-input:focus,
html body.rentalo-portal .rentalo-control-global-search .rentalo-control-search-shell > input.rentalo-control-search-input:focus-visible{
    width:100%;
    height:34px;
    min-height:34px;
    margin:0;
    padding:0 10px 0 var(--rentalo-control-search-text-left);
    border:0;
    box-sizing:border-box;
    outline:0;
    box-shadow:none;
}
html body.rentalo-portal .rentalo-control-global-search .rentalo-control-search-shell,
html body.rentalo-portal .rentalo-control-global-search .rentalo-control-search-shell:hover,
html body.rentalo-portal .rentalo-control-global-search .rentalo-control-search-shell:focus-within{
    border:0;
    border-radius:var(--rentalo-control-input-radius,6px);
    outline:0;
    box-shadow:none;
}
/* 2.17.523 – global search shell and input share exactly one geometry.
 * The shell used the generic Control field height while the header input is
 * compact (34px). On :focus-within its background made the extra shell area
 * visible, which looked like the field grew downward. Keep the shell layout-only
 * and exactly as high as its input in every state. */
html body.rentalo-portal .rentalo-control-global-search .rentalo-control-search-shell,
html body.rentalo-portal .rentalo-control-global-search .rentalo-control-search-shell:hover,
html body.rentalo-portal .rentalo-control-global-search .rentalo-control-search-shell:focus-within{
    height:34px;
    min-height:34px;
    padding:0;
    background:transparent;
}
/* The global search already provides its own Rentalo clear button.
 * Hide only the browser-native search clear control to avoid a second X. */
body.rentalo-portal .rentalo-control-global-search input[type="search"]::-webkit-search-cancel-button{
    -webkit-appearance:none;
    appearance:none;
    display:none;
}
body.rentalo-portal .rentalo-control-global-search-results{position:absolute;z-index:10050;top:calc(100% + 6px);left:0;width:min(520px,calc(100vw - 32px));max-height:520px;overflow:auto;background:var(--rentalo-control-card-bg,#fff);border:1px solid var(--rentalo-border,#d7e0e7);border-radius:var(--rentalo-control-input-radius,8px);box-shadow:0 12px 30px rgba(20,45,70,.16)}
body.rentalo-portal .rentalo-control-global-search-group-title{padding:8px 12px 5px;font-size:11px;font-weight:700;text-transform:uppercase;color:var(--rentalo-control-muted,#62758a);background:var(--rentalo-control-card-head-bg,#f4f7fa)}
body.rentalo-portal .rentalo-control-global-search-option{display:grid;gap:2px;padding:8px 12px;text-decoration:none;color:var(--rentalo-control-text,#1d2b36);border-bottom:1px solid var(--rentalo-border,#e2e8ee)}
body.rentalo-portal .rentalo-control-global-search-option:last-child{border-bottom:0}
body.rentalo-portal .rentalo-control-global-search-option:hover,body.rentalo-portal .rentalo-control-global-search-option:focus{background:var(--rentalo-selected-bg,#eef6fb);outline:0}
body.rentalo-portal .rentalo-control-global-search-option small{color:var(--rentalo-control-muted,#62758a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:1023px){body.rentalo-portal .rentalo-control-global-search{width:190px;min-width:190px}}
@media(max-width:767px){body.rentalo-portal .rentalo-control-global-search{display:none}}
body.rentalo-portal .rentalo-payment-voided-indicator{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;color:#9a6700;cursor:help}
body.rentalo-portal .rentalo-payment-voided-indicator .dashicons{font-size:18px;width:18px;height:18px}

/* 2.17.104 - Personal global search layouts reuse the Control palette and geometry. */
body.rentalo-portal .rentalo-control-global-search[data-layout="tabs"] .rentalo-control-global-search-results{width:min(860px,calc(100vw - 32px))}
body.rentalo-portal .rentalo-control-global-search-tabs{display:flex;flex-wrap:nowrap;gap:4px;position:sticky;top:0;z-index:2;padding:7px 8px;background:transparent;border-bottom:1px solid var(--rentalo-border,#d7e0e7);overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}
body.rentalo-portal .rentalo-control-global-search-tab{appearance:none;border:1px solid transparent;border-radius:var(--rentalo-control-input-radius,8px);background:var(--rentalo-selected-bg,#eef6fb);color:var(--rentalo-control-primary,#006699);font:inherit;font-size:12px;font-weight:700;line-height:28px;height:30px;padding:0 10px;white-space:nowrap;cursor:pointer}
body.rentalo-portal .rentalo-control-global-search-tab:hover,body.rentalo-portal .rentalo-control-global-search-tab:focus-visible{background:var(--rentalo-selected-bg,#eef6fb);color:var(--rentalo-control-primary,#006699);outline:0}
body.rentalo-portal .rentalo-control-global-search-tab.is-active{background:var(--rentalo-control-primary,#006699);color:#fff}
body.rentalo-portal .rentalo-control-global-search-tab-panel[hidden]{display:none}
body.rentalo-portal .rentalo-control-global-search-tab-panels .rentalo-control-global-search-group-title{position:static}

/* 2.17.112 – Search inputs always reserve the shared magnifier area.
 * This reinforcement also covers dynamically generated invoice/customer
 * searchable selects, which can otherwise inherit page-level input padding. */
html body.rentalo-portal .rentalo-control-search-select > .rentalo-control-search-shell > input.rentalo-control-search-input,
html body.rentalo-portal .rentalo-portal-open-select > .rentalo-control-search-shell > input.rentalo-control-search-input {
    box-sizing:border-box;
    padding-left:var(--rentalo-control-search-text-left);
}

/* 2.17.113 – Global fallback for all Control search fields with an icon. */
html body.rentalo-portal .rentalo-portal-search-field:has(> .dashicons-search) > input[type="search"],
html body.rentalo-portal .rentalo-portal-search-field:has(> .dashicons-search) > input[type="text"] {
    padding-left: var(--rentalo-control-search-text-left, 40px);
}
html body.rentalo-portal input[type="search"]::-webkit-search-cancel-button,
html body.rentalo-portal input[type="search"]::-webkit-search-decoration {
    -webkit-appearance: none;
    appearance: none;
}

/* 2.17.132 – canonical Control search-select extensions.
 * Single selects, multi-selects, customer status rows and floating dropdowns all
 * use the same search shell/dropdown geometry. */
body.rentalo-portal .rentalo-management-item-filter .rentalo-control-search-select,
body.rentalo-portal .rentalo-management-customer-filter .rentalo-control-search-select{width:100%;min-width:0}
body.rentalo-portal .rentalo-control-search-option.is-multiple-option{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:9px}
body.rentalo-portal .rentalo-control-search-option.is-multiple-option .rentalo-control-search-option-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Search multi-selects deliberately have no checkbox-specific visual CSS.
 * Their checkboxes inherit the exact global Control checkbox component used by overview lists. */
body.rentalo-portal .rentalo-control-search-selected-count{position:absolute;right:34px;top:50%;transform:translateY(-50%);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--rentalo-control-muted,#657789);font-size:11px;pointer-events:none}
body.rentalo-portal .rentalo-control-search-select.has-multiple-selection .rentalo-control-search-input{padding-right:135px}
body.rentalo-portal .rentalo-auto-page-hidden{display:none}
body.rentalo-portal .rentalo-control-pagination button{appearance:none;border:1px solid var(--rentalo-control-border);background:var(--rentalo-control-card-bg);color:var(--rentalo-control-text);min-width:32px;height:32px;border-radius:var(--rentalo-control-input-radius,6px);cursor:pointer}
body.rentalo-portal .rentalo-control-pagination button:hover,body.rentalo-portal .rentalo-control-pagination button:focus-visible{border-color:var(--rentalo-control-primary);color:var(--rentalo-control-primary)}

/* 2.17.134 – Search fields use one border only; multi-select checkboxes inherit the global Control checkbox without local visual overrides. */

/* 2.17.138 – Selected customer/driver metadata must never overlap the text.
 * A later generic search-input rule intentionally reserves the magnifier area;
 * this customer-meta override adds the status-dot clearance on top of it. */
html body.rentalo-portal .rentalo-control-search-select.has-customer-meta > .rentalo-control-search-shell > input.rentalo-control-search-input,
html body.rentalo-portal .rentalo-portal-open-select.has-customer-meta > .rentalo-control-search-shell > input.rentalo-control-search-input{
    padding-left:32px;
}


/* 2.17.140 – Inactive customer/driver records remain visible for maintenance,
 * but cannot be newly selected in operational pickers. */
.rentalo-portal .rentalo-control-search-option.is-customer-option.is-unselectable {
    cursor: not-allowed;
    color: var(--rentalo-control-muted, #657789);
    background: transparent;
}
.rentalo-portal .rentalo-control-search-option.is-customer-option.is-unselectable:hover,
.rentalo-portal .rentalo-control-search-option.is-customer-option.is-unselectable:focus {
    background: var(--rentalo-control-surface-soft, #f6f8fa);
}
.rentalo-portal .rentalo-control-search-option.is-customer-option:has(.rentalo-control-search-option-edit) {
    grid-template-columns: minmax(0,1fr) auto auto;
}
.rentalo-portal .rentalo-control-search-option-edit {
    display: inline-grid;
    place-items: center;
    width: 26px;
    height: 26px;
    border-radius: 5px;
    color: var(--rentalo-control-primary, #006699);
    cursor: pointer;
}
.rentalo-portal .rentalo-control-search-option-edit:hover,
.rentalo-portal .rentalo-control-search-option-edit:focus {
    background: var(--rentalo-selected-bg, #eef7fb);
    outline: 0;
}


/* 2.17.141 – Keep maintenance action before the customer-rating badge in
 * shared customer/driver search results. */
.rentalo-portal .rentalo-control-search-option.is-customer-option .rentalo-control-search-option-edit {
    order: 1;
}
.rentalo-portal .rentalo-control-search-option.is-customer-option .rentalo-customer-select-badge {
    order: 2;
}


/* Booking cancellation review keeps approval/rejection actions together without inventing a separate UI pattern. */
.rentalo-booking-cancellation-review-actions{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:16px;
    margin-top:16px;
}
.rentalo-booking-cancellation-review-actions form{
    display:grid;
    gap:10px;
    align-content:start;
}
@media(max-width:767px){
    .rentalo-booking-cancellation-review-actions{grid-template-columns:1fr}
}

/* Booking cancellation: use the shared Control modal and keep form fields compact. */
.rentalo-booking-cancel-modal .rentalo-portal-modal-dialog{max-width:680px}
.rentalo-booking-cancel-modal .rentalo-booking-cancellation-admin-form{display:grid;gap:14px;padding:18px 20px 20px}
.rentalo-booking-cancel-modal .rentalo-booking-cancellation-admin-form>label{display:grid;gap:6px}
.rentalo-booking-cancel-modal .rentalo-booking-cancellation-admin-form>label>span{font-weight:600}
.rentalo-booking-cancel-modal .rentalo-booking-cancel-summary{margin-bottom:2px}
.rentalo-booking-cancel-modal input:disabled,.rentalo-booking-cancel-modal textarea:disabled{opacity:.55;cursor:not-allowed;background:var(--rentalo-surface-muted,#f6f7f7)}

/* 2.17.156 – phone topbar search: icon trigger, full-width search surface. */
body.rentalo-portal .rentalo-control-mobile-search-toggle{
    display:none;
    place-items:center;
    width:40px;
    height:40px;
    padding:0;
    flex:0 0 40px;
    border:1px solid var(--rentalo-control-border,var(--rentalo-border,#d7e0e7));
    border-radius:var(--rentalo-control-input-radius,8px);
    background:var(--rentalo-control-card-bg,#fff);
    color:var(--rentalo-control-text,#1d2b36);
    cursor:pointer;
}
body.rentalo-portal .rentalo-control-mobile-search-toggle .dashicons{
    width:20px;
    height:20px;
    font-size:20px;
    line-height:20px;
}
@media(max-width:767px){
    body.rentalo-portal .rentalo-control-mobile-search-toggle{display:inline-grid}
    body.rentalo-portal .rentalo-control-global-search{
        display:none;
        position:absolute;
        top:calc(100% + 8px);
        left:14px;
        right:14px;
        z-index:10060;
        width:auto;
        min-width:0;
        padding:0;
    }
    body.rentalo-portal .rentalo-control-global-search.is-mobile-open{display:block}
    body.rentalo-portal .rentalo-control-global-search .rentalo-control-search-shell{
        min-height:42px;
        background:var(--rentalo-control-card-bg,#fff);
        box-shadow:0 12px 30px rgba(20,45,70,.16);
    }
    html body.rentalo-portal .rentalo-control-global-search .rentalo-control-search-shell > input.rentalo-control-search-input{
        height:40px;
        min-height:40px;
    }
    body.rentalo-portal .rentalo-control-global-search-results,
    body.rentalo-portal .rentalo-control-global-search[data-layout="tabs"] .rentalo-control-global-search-results{
        width:100%;
        max-height:min(520px,calc(100vh - 132px));
    }
}

/* 2.17.285 – generic Open-Select chevron for role selectors. */
body.rentalo-portal .rentalo-open-select-toggle{position:absolute;z-index:3;top:50%;right:5px;display:grid;place-items:center;width:26px;height:28px;min-width:26px;min-height:28px;margin:0;padding:0;transform:translateY(-50%);border:0;border-radius:5px;background:transparent;color:var(--rentalo-control-muted,#657789);cursor:pointer}
body.rentalo-portal .rentalo-open-select-toggle:hover,body.rentalo-portal .rentalo-open-select-toggle:focus-visible,body.rentalo-portal .rentalo-open-select-toggle.is-open{background:var(--rentalo-control-surface-muted,#eef3f6);color:var(--rentalo-control-primary,#006699);outline:0}
body.rentalo-portal .rentalo-open-select-toggle .dashicons{width:16px;height:16px;font-size:16px;line-height:16px;transition:transform .15s ease}
body.rentalo-portal .rentalo-open-select-toggle.is-open .dashicons{transform:rotate(180deg)}
html body.rentalo-portal .rentalo-portal-content div.rentalo-control-search-select.has-open-select-toggle > .rentalo-control-search-shell > input.rentalo-control-search-input{padding-right:72px}
body.rentalo-portal .rentalo-control-search-select.has-open-select-toggle .rentalo-control-search-clear{right:35px}

/* 2.17.310 – Searchfelder besitzen pluginweit genau einen sichtbaren Rahmen. */
html body.rentalo-portal .rentalo-control-search-shell,
html body.rentalo-portal .rentalo-control-checklist-search-shell{
    border:0;
    outline:0;
    box-shadow:none;
    background:transparent;
}
html body.rentalo-portal .rentalo-control-search-shell::before,
html body.rentalo-portal .rentalo-control-search-shell::after,
html body.rentalo-portal .rentalo-control-checklist-search-shell::before,
html body.rentalo-portal .rentalo-control-checklist-search-shell::after{
    box-shadow:none;
    border:0;
}
html body.rentalo-portal .rentalo-control-search-shell > input.rentalo-control-search-input,
html body.rentalo-portal .rentalo-control-checklist-search-shell > input.rentalo-control-search-input{
    box-shadow:none;
    outline:0;
}
.rentalo-invoice-segment-usage input:disabled {
    background: var(--rentalo-control-disabled-bg, #edf0f2);
    color: var(--rentalo-control-muted, #6b7280);
}
.rentalo-contract-level-row[data-level-locked="1"] {
    opacity: .55;
}

/* Recipient groups inherit the canonical shared tab palette from Control design. */
/* A linked read-only field shares the standard input's frame and height. */
.rentalo-control-field-value{
    color:var(--rentalo-control-primary,#006699);
    display:flex;
    align-items:center;
    min-height:var(--rentalo-control-field-height,40px);
    box-sizing:border-box;
    padding:8px 12px;
    border:1px solid var(--rentalo-control-border,#c8d1d8);
    border-radius:var(--rentalo-control-radius,6px);
    background:var(--rentalo-control-input-bg,#fff);
    font:inherit;
    min-width:0;
    overflow-wrap:anywhere;
}

/* Shared timeline children must occupy their content track for every event type. */
.rentalo-portal .rentalo-portal-activity-item > div {
    min-width: 0;
    overflow-wrap: anywhere;
    word-break: normal;
}
.rentalo-portal .rentalo-portal-activity-item > div:only-child { grid-column: 2; }
.rentalo-portal .rentalo-portal-activity-meta { flex-wrap: wrap; min-width: 0; }
.rentalo-portal .rentalo-control-linked-documents { min-width: 0; overflow-wrap: anywhere; }

