/* Rental Manager 2.11.6.3 hotfix on the 2.11.6.2 stabilization layer */
:root {
    --cfl-stab-primary-bg: var(--cfl-stab-primary-bg-runtime, var(--cfl-button-primary-background, var(--cfl-primary-button-background, var(--cfl-brand-primary, #f4511e))));
    --cfl-stab-primary-text: var(--cfl-stab-primary-text-runtime, var(--cfl-primary-button-text, var(--cfl-button-primary-text, var(--cfl-on-primary, #fff))));
    --cfl-stab-surface: var(--cfl-surface, var(--cfl-card-background, #fff));
    --cfl-stab-surface-2: var(--cfl-surface-secondary, var(--cfl-muted-background, #f5f7fa));
    --cfl-stab-text: var(--cfl-text, var(--cfl-text-primary, #152238));
    --cfl-stab-muted: var(--cfl-text-muted, #617089);
    --cfl-stab-border: var(--cfl-border, #d7e0eb);
    --cfl-stab-error: var(--cfl-error, var(--cfl-danger, #c72a21));
    --cfl-stab-error-soft: #fff4f2;
    --cfl-stab-radius: 14px;
}

/* Customer overlays/components must consume the customer theme tokens. */
body.cfl-rental-customer-account {
    --cfl-stab-surface: var(--cfl-cx-surface, #fff);
    --cfl-stab-surface-2: var(--cfl-cx-soft, #f5f7fa);
    --cfl-stab-text: var(--cfl-cx-text, #152238);
    --cfl-stab-muted: var(--cfl-cx-muted, #617089);
    --cfl-stab-border: var(--cfl-cx-line, #d7e0eb);
    --cfl-stab-error: var(--cfl-cx-error, var(--cfl-error, #c72a21));
}

@supports (color: color-mix(in srgb, #fff 50%, #000)) {
    :root { --cfl-stab-error-soft: color-mix(in srgb, var(--cfl-stab-surface) 91%, var(--cfl-stab-error) 9%); }
}
:is(body.dark-mode, body.cfl-dark-mode, [data-theme="dark"] body, body[data-theme="dark"]) { --cfl-stab-error-soft: #2a2027; }

html.cfl-stab-modal-open { overflow: hidden; }
.cfl-stab-handoff-overlay {
    position: fixed; inset: 0; z-index: 1000000; display: grid; place-items: center;
    padding: max(20px, env(safe-area-inset-top)) max(20px, env(safe-area-inset-right)) max(20px, env(safe-area-inset-bottom)) max(20px, env(safe-area-inset-left));
    background: rgb(10 23 42 / 68%); backdrop-filter: blur(3px);
}
.cfl-stab-handoff-overlay[hidden] { display: none !important; }
.cfl-stab-handoff-dialog { position: relative; width: min(520px, 100%); padding: clamp(24px, 4vw, 36px); border: 1px solid var(--cfl-stab-border); border-radius: 18px; background: var(--cfl-stab-surface); color: var(--cfl-stab-text); box-shadow: 0 24px 70px rgb(0 0 0 / 28%); }
.cfl-stab-handoff-dialog h2 { margin: 6px 0 10px; font-size: clamp(1.45rem, 4vw, 2rem); }
.cfl-stab-handoff-dialog .cfl-stab-dialog-title-sr { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }
.cfl-stab-handoff-dialog p { margin: 16px 0 0; color: var(--cfl-stab-muted); line-height: 1.55; }
.cfl-stab-eyebrow { display: block; font-size: .75rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--cfl-stab-primary-bg); }
.cfl-stab-handoff-close { position: absolute; inset-block-start: 12px; inset-inline-end: 12px; width: 42px; height: 42px; border: 1px solid var(--cfl-stab-border); border-radius: 999px; background: var(--cfl-stab-surface); color: var(--cfl-stab-text); font-size: 1.5rem; line-height: 1; }
.cfl-stab-handoff-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 24px; }
.cfl-stab-handoff-actions > * { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; padding: 10px 18px; border-radius: 10px; font-weight: 800; text-decoration: none !important; }
.cfl-stab-handoff-cancel { border: 1px solid var(--cfl-stab-border); background: var(--cfl-stab-surface); color: var(--cfl-stab-text); }
.cfl-stab-handoff-continue { border: 1px solid var(--cfl-stab-primary-bg); background: var(--cfl-stab-primary-bg); color: var(--cfl-stab-primary-text) !important; }

/* Currency values remain atomic even when WooCommerce nests the symbol. */
.cfl-stab-atomic-price,
.cfl-stab-atomic-price-wrap,
.cfl-stab-atomic-price .amount,
.cfl-stab-atomic-price .woocommerce-Price-amount,
.cfl-stab-atomic-price .woocommerce-Price-currencySymbol,
.cfl-stab-atomic-price-wrap .amount,
.cfl-stab-atomic-price-wrap .woocommerce-Price-amount,
.cfl-stab-atomic-price-wrap .woocommerce-Price-currencySymbol {
    display: inline !important; white-space: nowrap !important; word-break: keep-all !important; overflow-wrap: normal !important; flex: 0 0 auto !important;
}
.cfl-stab-atomic-price-wrap { min-width: max-content !important; }

/* Customer rental filters use the exact primary-action tokens. */
.cfl-stab-my-rentals-page .cfl-stab-rental-filter.is-active,
.cfl-stab-my-rentals-page .cfl-stab-rental-filter[aria-current="page"] {
    background: var(--cfl-stab-primary-bg) !important;
    border-color: var(--cfl-stab-primary-bg) !important;
    color: var(--cfl-stab-primary-text) !important;
    -webkit-text-fill-color: var(--cfl-stab-primary-text) !important;
}
.cfl-stab-my-rentals-page .cfl-stab-rental-filter.is-active *,
.cfl-stab-my-rentals-page .cfl-stab-rental-filter[aria-current="page"] * { color: inherit !important; -webkit-text-fill-color: inherit !important; }
.cfl-stab-my-rentals-page .cfl-stab-rental-filter:not(.is-active) { background: var(--cfl-stab-surface) !important; color: var(--cfl-stab-text) !important; border-color: var(--cfl-stab-border) !important; }


/* 2.11.6.5: My Rentals uses the actual customer branding tokens directly.
   This intentionally outranks older filter rules that colored active text with
   the primary background color. */
body.cfl-rental-customer-account .cfl-rental-lifecycle-filters a.is-active,
body.cfl-rental-customer-account .cfl-rental-lifecycle-filters a[aria-current="page"],
body.cfl-rental-customer-account.cfl-stab-my-rentals-page .cfl-stab-rental-filter.is-active,
body.cfl-rental-customer-account.cfl-stab-my-rentals-page .cfl-stab-rental-filter[aria-current="page"] {
    background: var(--cfl-brand-primary, var(--cfl-stab-primary-bg-runtime, var(--cfl-stab-primary-bg))) !important;
    border-color: var(--cfl-brand-primary, var(--cfl-stab-primary-bg-runtime, var(--cfl-stab-primary-bg))) !important;
    color: var(--cfl-brand-button-text, var(--cfl-stab-primary-text-runtime, #fff)) !important;
    -webkit-text-fill-color: var(--cfl-brand-button-text, var(--cfl-stab-primary-text-runtime, #fff)) !important;
}
body.cfl-rental-customer-account .cfl-rental-lifecycle-filters a.is-active *,
body.cfl-rental-customer-account .cfl-rental-lifecycle-filters a[aria-current="page"] * {
    color: inherit !important;
    -webkit-text-fill-color: inherit !important;
}

/* Overdue treatment is scoped to the actual My Rentals card. A page/article
   wrapper must never inherit this status styling. This also outranks the older
   generic status rule that could paint the whole card solid red. */
.cfl-stab-my-rentals-page .cfl-my-rental-card.cfl-stab-overdue-card,
.cfl-stab-my-rentals-page .cfl-my-rental-card.cfl-rental-status-return-overdue,
.cfl-stab-my-rentals-page .cfl-my-rental-card.cfl-rental-status-pickup-overdue,
.cfl-stab-my-rentals-page .cfl-my-rental-card.cfl-rental-status-return-required {
    background: #fff7f5 !important;
    background: var(--cfl-stab-error-soft) !important;
    color: var(--cfl-stab-text) !important;
    border-color: var(--cfl-stab-border) !important;
    border-inline-start: 5px solid var(--cfl-stab-error) !important;
}
.cfl-stab-my-rentals-page .cfl-my-rental-card.cfl-stab-overdue-card > * { color: inherit; }
.cfl-stab-overdue-panel { background: #fff1ef !important; color: var(--cfl-stab-text) !important; border-color: #e7b7b2 !important; }
@supports (color: color-mix(in srgb, #fff 50%, #000)) {
    .cfl-stab-my-rentals-page .cfl-my-rental-card.cfl-stab-overdue-card,
    .cfl-stab-my-rentals-page .cfl-my-rental-card.cfl-rental-status-return-overdue,
    .cfl-stab-my-rentals-page .cfl-my-rental-card.cfl-rental-status-pickup-overdue,
    .cfl-stab-my-rentals-page .cfl-my-rental-card.cfl-rental-status-return-required {
        background: color-mix(in srgb, var(--cfl-stab-surface) 94%, var(--cfl-stab-error) 6%) !important;
        border-color: color-mix(in srgb, var(--cfl-stab-error) 28%, var(--cfl-stab-border)) !important;
    }
    .cfl-stab-overdue-panel {
        background: color-mix(in srgb, var(--cfl-stab-surface) 89%, var(--cfl-stab-error) 11%) !important;
        border-color: color-mix(in srgb, var(--cfl-stab-error) 38%, var(--cfl-stab-border)) !important;
    }
}
body.cfl-rental-customer-account.cfl-rental-theme-dark.cfl-stab-my-rentals-page .cfl-my-rental-card.cfl-stab-overdue-card,
body.cfl-rental-customer-account.cfl-rental-theme-dark.cfl-stab-my-rentals-page .cfl-my-rental-card.cfl-rental-status-return-overdue,
body.cfl-rental-customer-account.cfl-rental-theme-dark.cfl-stab-my-rentals-page .cfl-my-rental-card.cfl-rental-status-pickup-overdue,
body.cfl-rental-customer-account.cfl-rental-theme-dark.cfl-stab-my-rentals-page .cfl-my-rental-card.cfl-rental-status-return-required { background: #202c3e !important; }
.cfl-stab-my-rentals-page .cfl-my-rental-card .cfl-rental-status-chip.cfl-rental-status-return-overdue,
.cfl-stab-my-rentals-page .cfl-my-rental-card .cfl-rental-status-chip.cfl-rental-status-pickup-overdue,
.cfl-stab-my-rentals-page .cfl-my-rental-card .cfl-rental-status-chip.cfl-rental-status-return-required { background: var(--cfl-stab-error) !important; color: #fff !important; -webkit-text-fill-color: #fff !important; }

.cfl-stab-location-address { display: flex; align-items: flex-start; gap: 7px; margin-top: 4px; color: var(--cfl-stab-muted); font-size: .9em; line-height: 1.4; overflow-wrap: anywhere; }
.cfl-stab-location-address > span:first-child { flex: 0 0 auto; color: var(--cfl-stab-primary-bg); }

/* Notification action hierarchy. */
.cfl-stab-notification-card .cfl-stab-unread-badge { display: inline-flex; margin-inline-start: 8px; padding: 3px 8px; border-radius: 999px; background: color-mix(in srgb, var(--cfl-stab-primary-bg) 13%, var(--cfl-stab-surface)); color: var(--cfl-stab-text); font-size: .72rem; font-weight: 800; }
.cfl-stab-notification-card .cfl-stab-notification-open { background: var(--cfl-stab-primary-bg) !important; border-color: var(--cfl-stab-primary-bg) !important; color: var(--cfl-stab-primary-text) !important; }
.cfl-stab-notification-card .cfl-stab-notification-read { background: var(--cfl-stab-surface) !important; color: var(--cfl-stab-text) !important; border: 1px solid var(--cfl-stab-border) !important; }
.cfl-stab-notification-card .cfl-stab-notification-archive { background: transparent !important; color: var(--cfl-stab-muted) !important; border: 1px solid var(--cfl-stab-border) !important; }

/* Settings pages own their layout through explicit component classes.
 * 2.11.6.4 removes the former wildcard grid/column overrides; those rules
 * collapsed legitimate Communications and Document Templates workspaces. */
.cfl-stab-settings-root,
.cfl-stab-settings-root > *,
.cfl-stab-settings-root form {
    min-width: 0 !important;
    box-sizing: border-box;
}
.cfl-stab-settings-root { width: 100% !important; max-width: none !important; }

/* Staff reusable-document workspace. */
.cfl-stab-document-operations { margin-top: 24px; padding: clamp(18px,3vw,28px); border: 1px solid var(--cfl-stab-border); border-radius: var(--cfl-stab-radius); background: var(--cfl-stab-surface); color: var(--cfl-stab-text); }
.cfl-stab-document-operations h3 { margin: 4px 0 6px; }
.cfl-stab-document-operations p { color: var(--cfl-stab-muted); }
.cfl-stab-document-list { display: grid; gap: 10px; margin: 18px 0; }
.cfl-stab-document-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px; border: 1px solid var(--cfl-stab-border); border-radius: 10px; background: var(--cfl-stab-surface-2); }
.cfl-stab-document-row > div:first-child { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.cfl-stab-document-status { display: inline-flex; padding: 3px 8px; border-radius: 999px; background: var(--cfl-stab-surface); border: 1px solid var(--cfl-stab-border); font-size: .76rem; font-weight: 800; }
.cfl-stab-document-assign-form { display: grid; grid-template-columns: minmax(240px,1fr) auto auto; gap: 12px; align-items: end; margin-top: 18px; }
.cfl-stab-document-assign-form label > span { display: block; margin-bottom: 6px; font-weight: 700; }
.cfl-stab-document-assign-form select,
.cfl-stab-document-assign-form input[type="text"] { width: 100%; min-height: 44px; }
.cfl-stab-document-notify { display: flex !important; align-items: center; gap: 8px; min-height: 44px; }
.cfl-stab-document-notify > span { margin: 0 !important; }
.cfl-stab-document-no-notice-reason { grid-column: 1 / -1; }
.cfl-stab-document-feedback.is-error { color: var(--cfl-stab-error); }
.cfl-stab-document-panel-loader { margin-top: 20px; padding: 16px; border: 1px dashed var(--cfl-stab-border); border-radius: 10px; }

/* Sticky Rental Builder footer reserves its own flow space. */
.cfl-stab-rental-builder-root { padding-bottom: calc(var(--cfl-stab-action-bar-height, 70px) + 30px + env(safe-area-inset-bottom)) !important; scroll-padding-bottom: calc(var(--cfl-stab-action-bar-height,70px) + 40px); }
.cfl-stab-rental-action-bar { margin-top: 22px !important; bottom: max(12px, env(safe-area-inset-bottom)) !important; z-index: 60; }

/* Repair only detected wide regions; do not hide page overflow globally. */
.cfl-stab-width-repair { min-width: 0 !important; max-width: 100% !important; width: 100% !important; }
.cfl-stab-table-scroll { width: 100%; max-width: 100%; overflow-x: auto; overscroll-behavior-inline: contain; -webkit-overflow-scrolling: touch; }
.cfl-stab-signed-out-heading { margin: 0 0 18px; }

:focus-visible { outline: 3px solid color-mix(in srgb, var(--cfl-stab-primary-bg) 70%, #fff) !important; outline-offset: 3px; }

@media (max-width: 1100px) {
    .cfl-stab-documents-page .cfl-stab-template-form { grid-template-columns: minmax(0,1fr) !important; }
    .cfl-stab-documents-page .cfl-stab-template-wording { grid-column: auto !important; }
    .cfl-stab-document-assign-form { grid-template-columns: minmax(0,1fr); }
    .cfl-stab-document-no-notice-reason { grid-column: auto; }
}
@media (max-width: 782px) {
    .cfl-stab-handoff-actions { display: grid; grid-template-columns: 1fr; }
    .cfl-stab-handoff-actions > * { width: 100%; }
    .cfl-stab-document-row { align-items: flex-start; flex-direction: column; }
    .cfl-stab-document-actions, .cfl-stab-document-actions button { width: 100%; }
    .cfl-stab-notification-card :is(.cfl-stab-notification-open,.cfl-stab-notification-read,.cfl-stab-notification-archive) { width: 100% !important; min-height: 46px; display: flex !important; align-items: center; justify-content: center; margin-top: 8px; }
    .cfl-stab-communications-page .cfl-stab-message-library-grid { grid-template-columns: minmax(0,1fr) !important; }
    .cfl-stab-rental-action-bar { margin-inline: 0 !important; }
}
@media (prefers-reduced-motion: reduce) {
    .cfl-stab-handoff-overlay, .cfl-stab-handoff-dialog, .cfl-stab-rental-action-bar { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}

/* 2.11.7.2 — customer notification + financial filter corrections loaded at
   the final stabilization priority so older shared button rules cannot win. */
body.cfl-rental-customer-account .cfl-payments-receipts .cfl-financial-filters a.is-active,
body.cfl-rental-customer-account .cfl-payments-receipts .cfl-financial-filters a[aria-current="page"]{
    background:var(--cfl-brand-primary,var(--cfl-stab-primary-bg))!important;
    border-color:var(--cfl-brand-primary,var(--cfl-stab-primary-bg))!important;
    color:var(--cfl-brand-button-text,var(--cfl-stab-primary-text-runtime,#fff))!important;
    -webkit-text-fill-color:var(--cfl-brand-button-text,var(--cfl-stab-primary-text-runtime,#fff))!important;
}
body.cfl-rental-customer-account .cfl-payments-receipts .cfl-financial-filters a.is-active *,
body.cfl-rental-customer-account .cfl-payments-receipts .cfl-financial-filters a[aria-current="page"] *{
    color:inherit!important;
    -webkit-text-fill-color:inherit!important;
}
body.cfl-rental-customer-account .cfl-customer-notifications-page .cfl-stab-notification-card .cfl-notification-actions{
    display:flex!important;
    align-items:center!important;
    justify-content:flex-end!important;
    gap:8px!important;
    flex-wrap:wrap!important;
}
body.cfl-rental-customer-account .cfl-customer-notifications-page .cfl-stab-notification-card .cfl-stab-notification-open{
    background:var(--cfl-brand-primary,var(--cfl-stab-primary-bg))!important;
    border-color:var(--cfl-brand-primary,var(--cfl-stab-primary-bg))!important;
    color:var(--cfl-brand-button-text,var(--cfl-stab-primary-text-runtime,#fff))!important;
    -webkit-text-fill-color:var(--cfl-brand-button-text,var(--cfl-stab-primary-text-runtime,#fff))!important;
}
@media(max-width:782px){
    body.cfl-rental-customer-account .cfl-customer-notifications-page .cfl-stab-notification-card .cfl-notification-actions{
        display:grid!important;
        grid-template-columns:repeat(2,minmax(0,1fr))!important;
        width:100%!important;
        gap:8px!important;
    }
    body.cfl-rental-customer-account .cfl-customer-notifications-page .cfl-stab-notification-card :is(.cfl-stab-notification-open,.cfl-stab-notification-read,.cfl-stab-notification-archive){
        width:100%!important;
        min-width:0!important;
        min-height:44px!important;
        margin:0!important;
    }
    body.cfl-rental-customer-account .cfl-customer-notifications-page .cfl-stab-notification-card .cfl-stab-notification-open{grid-column:1/-1!important}
}
@media(max-width:430px){
    body.cfl-rental-customer-account .cfl-customer-notifications-page .cfl-stab-notification-card .cfl-notification-actions{grid-template-columns:1fr!important}
    body.cfl-rental-customer-account .cfl-customer-notifications-page .cfl-stab-notification-card .cfl-stab-notification-open{grid-column:auto!important}
}
body.cfl-rental-customer-account .cfl-rental-lifecycle-filters a.is-active,
body.cfl-rental-customer-account .cfl-rental-lifecycle-filters a[aria-current="page"]{
    background:var(--cfl-brand-primary,var(--cfl-stab-primary-bg))!important;
    border-color:var(--cfl-brand-primary,var(--cfl-stab-primary-bg))!important;
    color:var(--cfl-brand-button-text,var(--cfl-stab-primary-text-runtime,#fff))!important;
    -webkit-text-fill-color:var(--cfl-brand-button-text,var(--cfl-stab-primary-text-runtime,#fff))!important;
}
