/* Shared alerts workspace: use the active DevExpress theme in both appearances. */
.adh-alerts-modal {
    --alerts-accent: var(--dxbl-accent-color, #2b8099);
    --alerts-line: color-mix(in srgb, currentColor 15%, transparent);
    color: var(--dxbl-popup-body-color, var(--bs-body-color));
    border-radius: 1.2em;
}
.adh-alerts-header {
    background: linear-gradient(115deg, color-mix(in srgb, var(--dxbl-accent-color, #2b8099) 16%, var(--dxbl-popup-body-bg, var(--bs-body-bg))), var(--dxbl-popup-body-bg, var(--bs-body-bg)));
    padding: 1.2em 1.5em;
    flex-shrink: 0;
}
.adh-alerts-brand { display: flex; gap: 1em; align-items: center; min-width: 0; }
.adh-alerts-brand > div { min-width: 0; }
.adh-alerts-brand h2 { margin: .12em 0; font-size: 1.4em; font-weight: 650; overflow-wrap: anywhere; }
.adh-alerts-brand p { margin: 0; font-size: .9em; opacity: .75; }
.adh-alerts-body { min-width: 0; min-height: 0; padding: 1.3em; overflow: auto; }
.dxbl-modal-content:has(.adh-alerts-header) { max-width: calc(100vw - 1rem); max-height: calc(100dvh - 1rem); border-radius: 1.2em; overflow: hidden; }
.dxbl-modal-content:has(.adh-alerts-header) > .dxbl-modal-body { min-height: 0; min-width: 0; overflow: auto; }
.adh-alerts-body .xaf-view, .adh-alerts-body .xaf-detail-view, .adh-alerts-body .xaf-list-view { min-width: 0; max-width: 100%; }
.adh-alerts-body .contract-overview, .adh-alerts-body .contract-overview-host { min-width: 0; max-width: 100%; }
.adh-inbox-modal .adh-notifications-grid {
    height: min(65dvh, 48rem);
    min-height: 0;
    flex: 0 0 auto;
    border: 1px solid var(--alerts-line);
    border-radius: .65em;
    background: var(--dxbl-grid-bg, var(--dxbl-popup-body-bg, var(--bs-body-bg)));
}
.adh-inbox-modal .adh-notifications-grid td { padding-block: 1em; }
.adh-inbox-modal .adh-reminder-link { text-decoration: none; font-weight: 600; }
.adh-notification-meta { display: flex; flex-direction: column; align-items: flex-start; gap: .25em; margin-top: .35em; font-size: .82em; line-height: 1.4; font-weight: 400; }
.adh-alert-type { font-weight: 600; color: var(--alerts-accent, #2b8099); }
.adh-alert-team { opacity: .8; overflow-wrap: anywhere; }
.adh-alert-team strong { font-weight: 600; }
.adh-alert-team:has(.adh-team-members) { opacity: 1; }
.adh-team-members { display: flex; flex-direction: column; gap: .3em; }
.adh-team-member { display: flex; flex-wrap: wrap; align-items: baseline; gap: .25em .4em; }
.adh-team-member > strong { font-weight: 600; }
.adh-team-role { --team-role-color: #56616d; display: inline-flex; padding: .1em .5em; border-radius: 99px; font-size: .85em; font-weight: 500; line-height: 1.4; color: var(--team-role-color); background: color-mix(in srgb, var(--team-role-color) 12%, var(--dxbl-grid-bg, var(--bs-body-bg, #fff))); border: 1px solid color-mix(in srgb, var(--team-role-color) 25%, transparent); }
.adh-team-role-owner { --team-role-color: #8a5700; }
.adh-team-role-date { --team-role-color: #176b82; }
.adh-team-role-commercial { --team-role-color: #236747; }
.adh-team-role-team { --team-role-color: #7040a0; }
:is(body.dxbl-theme-dark, html.dxbl-theme-dark, [data-bs-theme="dark"], [data-theme-mode="dark"], [data-theme="dark"]) .adh-team-role { --team-role-color: #b9c4ce; }
:is(body.dxbl-theme-dark, html.dxbl-theme-dark, [data-bs-theme="dark"], [data-theme-mode="dark"], [data-theme="dark"]) .adh-team-role-owner { --team-role-color: #f9c56a; }
:is(body.dxbl-theme-dark, html.dxbl-theme-dark, [data-bs-theme="dark"], [data-theme-mode="dark"], [data-theme="dark"]) .adh-team-role-date { --team-role-color: #83d4e9; }
:is(body.dxbl-theme-dark, html.dxbl-theme-dark, [data-bs-theme="dark"], [data-theme-mode="dark"], [data-theme="dark"]) .adh-team-role-commercial { --team-role-color: #8dd7ab; }
:is(body.dxbl-theme-dark, html.dxbl-theme-dark, [data-bs-theme="dark"], [data-theme-mode="dark"], [data-theme="dark"]) .adh-team-role-team { --team-role-color: #cfacf2; }
.adh-alert-status, .adh-preview-badges span { display: inline-flex; padding: .25em .7em; border-radius: 99px; background: color-mix(in srgb, var(--dxbl-accent-color, #2b8099) 13%, transparent); font-size: .85em; font-weight: 600; }
.adh-alert-time-status {
    color: var(--alert-status-color);
    background: color-mix(in srgb, var(--alert-status-color) 13%, var(--dxbl-grid-bg, var(--bs-body-bg, #fff)));
    border: 1px solid color-mix(in srgb, var(--alert-status-color) 25%, transparent);
}
.adh-alert-status-overdue { --alert-status-color: #b91c1c; }
.adh-alert-status-due { --alert-status-color: #8a5700; }
.adh-alert-status-upcoming { --alert-status-color: #176b82; }
.adh-alert-status-snoozed { --alert-status-color: #7040a0; }
:is(body.dxbl-theme-dark, html.dxbl-theme-dark, [data-bs-theme="dark"], [data-theme-mode="dark"], [data-theme="dark"]) .adh-alert-status-overdue { --alert-status-color: #ff9a9a; }
:is(body.dxbl-theme-dark, html.dxbl-theme-dark, [data-bs-theme="dark"], [data-theme-mode="dark"], [data-theme="dark"]) .adh-alert-status-due { --alert-status-color: #f9c56a; }
:is(body.dxbl-theme-dark, html.dxbl-theme-dark, [data-bs-theme="dark"], [data-theme-mode="dark"], [data-theme="dark"]) .adh-alert-status-upcoming { --alert-status-color: #83d4e9; }
:is(body.dxbl-theme-dark, html.dxbl-theme-dark, [data-bs-theme="dark"], [data-theme-mode="dark"], [data-theme="dark"]) .adh-alert-status-snoozed { --alert-status-color: #cfacf2; }
.adh-calendar-preview { padding: .4em .6em .8em; min-width: 0; max-width: min(28em, calc(100vw - 4rem)); }
:is(body.dxbl-theme-dark, html.dxbl-theme-dark, [data-bs-theme="dark"], [data-theme-mode="dark"], [data-theme="dark"]) .adh-team-role {
    background: color-mix(in srgb, var(--team-role-color) 12%, #18212b);
}
:is(body.dxbl-theme-dark, html.dxbl-theme-dark, [data-bs-theme="dark"], [data-theme-mode="dark"], [data-theme="dark"]) .adh-alert-time-status {
    background: color-mix(in srgb, var(--alert-status-color) 12%, #18212b);
}
:is(body.dxbl-theme-dark, html.dxbl-theme-dark, [data-bs-theme="dark"], [data-theme-mode="dark"], [data-theme="dark"]) .adh-preview-badges span {
    color: #d8e4ed;
    background: #263642;
}
.adh-calendar-preview h3 { font-size: 1.15em; margin: .8em 0; overflow-wrap: anywhere; }
.adh-preview-badges { display: flex; gap: .5em; flex-wrap: wrap; }
.adh-calendar-preview dl { margin: 0; }
.adh-calendar-preview dl > div { display: grid; grid-template-columns: 6em minmax(0, 1fr); gap: .6em; margin: .65em 0; }
.adh-calendar-preview dt { font-weight: 500; opacity: .7; }
.adh-calendar-preview dd { margin: 0; overflow-wrap: anywhere; }
.adh-preview-description { white-space: pre-line; overflow-wrap: anywhere; border-top: 1px solid color-mix(in srgb, currentColor 15%, transparent); padding-top: .8em; }
.adh-workspace-action { display: inline-flex; gap: .8em; align-items: center; padding: .55em .85em; border: 1px solid color-mix(in srgb, currentColor 20%, transparent); border-radius: .55em; background: color-mix(in srgb, var(--dxbl-accent-color, #2b8099) 12%, transparent); color: inherit; font: inherit; font-weight: 600; cursor: pointer; }
.adh-workspace-action:focus-visible { outline: 2px solid var(--dxbl-accent-color, #2b8099); outline-offset: 3px; }
.adh-reminder-form { display: grid; gap: 1.1em; }
.adh-reminder-section { padding: 1.2em; border: 1px solid color-mix(in srgb, currentColor 14%, transparent); border-radius: .85em; }
.adh-reminder-section h3 { font-size: 1em; margin: 0 0 1em; font-weight: 650; }
.adh-reminder-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 1em; }
.adh-reminder-field { display: flex; flex-direction: column; gap: .4em; min-width: 0; }
.adh-reminder-field label { font-size: .9em; font-weight: 550; }
.adh-reminder-field-wide { grid-column: 1 / -1; }
.adh-reminder-hint { opacity: .7; font-size: .85em; margin: .7em 0 0; }
@media (max-width: 600px) {
    .adh-alerts-header, .adh-alerts-body { padding: 1em; }
    .adh-alerts-brand p { display: none; }
    .adh-reminder-fields { grid-template-columns: 1fr; }
}
/* The complete header template prevents XAF's caption template replacing the brand. */
.adh-alerts-modal .adh-alerts-header {
    --dxbl-popup-header-color: var(--dxbl-popup-body-color, var(--bs-body-color, #20313a));
    background: color-mix(in srgb, var(--dxbl-popup-body-bg, var(--bs-body-bg, #fff)) 89%, var(--dxbl-accent-color, #2b8099)) !important;
    color: var(--dxbl-popup-header-color);
}
.adh-alerts-header-inner { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 1em; }
.adh-alerts-close { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; padding: 0; border: 0; border-radius: 50%; font: inherit; font-size: 25px; line-height: 1; color: var(--dxbl-popup-body-color, var(--bs-body-color)); background: var(--dxbl-popup-body-bg, var(--bs-body-bg)); cursor: pointer; }
.adh-alerts-close:hover { background: color-mix(in srgb, var(--dxbl-popup-body-color, var(--bs-body-color)) 9%, var(--dxbl-popup-body-bg, var(--bs-body-bg))); }
.adh-alerts-close:focus-visible { outline: 2px solid var(--dxbl-accent-color, #2b8099); outline-offset: 2px; }
.adh-alerts-modal .dxbl-modal-body.adh-alerts-body { padding: 1.2em; }
.adh-inbox-modal .adh-notifications-grid td { border-inline: 0; }
/* A single unobtrusive scroll surface; keep modal chrome outside it. */
.adh-alerts-modal .dxbl-modal-body,
.adh-alerts-modal .dxbl-modal-body * {
    scrollbar-width: thin;
    scrollbar-color: color-mix(in srgb, currentColor 25%, transparent) transparent;
}
.adh-alerts-modal .dxbl-modal-body::-webkit-scrollbar,
.adh-alerts-modal .dxbl-modal-body *::-webkit-scrollbar { width: 6px; height: 6px; }
.adh-alerts-modal .dxbl-modal-body::-webkit-scrollbar-thumb,
.adh-alerts-modal .dxbl-modal-body *::-webkit-scrollbar-thumb { background: color-mix(in srgb, currentColor 25%, transparent); border-radius: 99px; }
.adh-alerts-modal .dxbl-modal-body::-webkit-scrollbar-button,
.adh-alerts-modal .dxbl-modal-body *::-webkit-scrollbar-button { display: none; width: 0; height: 0; }
.adh-reminder-modal .adh-alerts-body > .main,
.adh-reminder-modal .adh-alerts-body > .main > .main-content { height: auto; min-height: 0; overflow: visible; }
.adh-alerts-modal .dxbl-modal-footer { flex-shrink: 0; }
.adh-alerts-modal .adh-alerts-body { box-sizing: border-box; }
.adh-alerts-modal .adh-alerts-body > .main { height: auto; min-height: 0; max-height: 100%; }
.adh-inbox-modal .adh-alerts-body > .main > .main-content { height: auto; min-height: 0; }
.adh-alerts-header-icon { width: 3.4em; height: 3.4em; border-radius: .9em; display: grid; place-items: center; background: color-mix(in srgb, var(--dxbl-accent-color, #2b8099) 10%, transparent); flex: 0 0 auto; }
/* Contract workspace styling used to size the inner content to the viewport,
   making it wider than its containing popup and clipping both sides. */
.adh-alerts-modal.dxbl-popup > .dxbl-modal-content {
    width: 100% !important; max-width: 100% !important; min-width: 0;
    height: 100%; max-height: 100%; box-sizing: border-box; overflow: hidden;
}
.adh-record-modal .adh-alerts-body > .main > .main-content { height: auto; min-height: 0; }
.adh-alert-time-status { margin-inline-start: .65em; }
.adh-reminder-form { container-type: inline-size; width: 100%; }
.adh-workspace-action { max-width: 100%; white-space: normal; overflow-wrap: anywhere; text-align: start; }
@container (max-width: 500px) {
    .adh-reminder-fields { grid-template-columns: 1fr; }
}

/* Search cards share the secured scheduler projection, across all date windows. */
.adh-calendar-search-workspace { display: block !important; width: 100%; min-width: 0; }
.adh-calendar-search-layout.has-results { display: grid !important; grid-template-columns: minmax(17em, 23em) minmax(0, 1fr); gap: 1em; align-items: start; }
.adh-calendar-search-layout.results-only { grid-template-columns: minmax(0, 1fr); }
.adh-calendar-search-scheduler { min-width: 0; }
.adh-calendar-search-scheduler[hidden] { display: none; }
.adh-calendar-results { border: 1px solid var(--dxbl-border-color, var(--bs-border-color, #888)); border-radius: .65em; padding: 1em; min-width: 0; }
.adh-calendar-results h3 { font-size: 1.1em; margin: 0; }
.adh-calendar-results header p { opacity: .75; overflow-wrap: anywhere; margin: .5em 0; }
.adh-calendar-result-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .5em; margin: .7em 0; }
.adh-calendar-result-actions button:disabled { opacity: .45; cursor: default; }
.adh-calendar-result-cards { display: grid; gap: .65em; }
.adh-calendar-result-card { display: flex; flex-direction: column; gap: .5em; padding: .9em; border: 1px solid var(--dxbl-border-color, var(--bs-border-color, #888)); border-radius: .6em; background: var(--dxbl-popup-body-bg, var(--bs-body-bg)); color: inherit; text-align: start; font: inherit; cursor: pointer; overflow-wrap: anywhere; }
.adh-calendar-result-card.is-selected, .adh-calendar-match-selected { outline: 2px solid var(--dxbl-accent-color, #2b8099); outline-offset: -2px; background: color-mix(in srgb, var(--dxbl-accent-color, #2b8099) 10%, var(--bs-body-bg, white)); }
.adh-calendar-result-card:focus-visible { outline: 3px solid var(--dxbl-accent-color, #2b8099); outline-offset: 2px; }
.adh-calendar-result-description { white-space: pre-line; font-size: .9em; }
.results-only .adh-calendar-result-cards { grid-template-columns: repeat(auto-fit, minmax(min(20em, 100%), 1fr)); }
@media (max-width: 1000px) { .adh-calendar-search-layout.has-results { grid-template-columns: minmax(0, 1fr); } }

.adh-calendar-search-bar { margin: 0 0 1em; max-width: 46em; }
.adh-calendar-search-bar label { display: block; font-weight: 600; margin-bottom: .4em; }
.adh-calendar-search-input-row { display: flex; gap: .5em; align-items: stretch; flex-wrap: wrap; }
.adh-calendar-search-input-row input { flex: 1 1 17em; min-width: 0; padding: .6em .8em; border: 1px solid var(--dxbl-border-color, var(--bs-border-color, #888)); border-radius: .5em; background: var(--dxbl-popup-body-bg, var(--bs-body-bg)); color: inherit; font: inherit; }
.adh-calendar-search-input-row input:focus-visible { outline: 2px solid var(--dxbl-accent-color, #2b8099); outline-offset: 1px; }
.adh-calendar-search-bar small { display: block; margin-top: .4em; opacity: .75; }
.adh-calendar-search-layout { min-width: 0; }
/* Align the native filter toolbar with the search and results below it. */
.main:has(.adh-calendar-search-workspace) > .main-toolbar .dxbl-toolbar-placeholder {
    display: none;
}
.main:has(.adh-calendar-search-workspace) > .main-toolbar .dxbl-btn-toolbar {
    justify-content: flex-start;
}
.main:has(.adh-calendar-search-workspace) > .main-toolbar {
    padding-bottom: .8em;
}
.adh-calendar-search-bar { max-width: none; }
.adh-calendar-search-input-row input { flex-basis: 24em; }

/* One shared grid keeps search exactly above the result column and filters above the calendar. */
.main:has(.adh-calendar-search-workspace) {
    --calendar-search-width: 23em;
    --calendar-control-height: var(--dxbl-editor-height, 2.25em);
    padding: .75rem 1rem;
    box-sizing: border-box;
    display: grid !important;
    grid-template-columns: minmax(0, var(--calendar-search-width)) minmax(0, 1fr);
    grid-template-rows: auto auto minmax(0, 1fr);
    gap: 1em;
    container: calendar-workspace / inline-size;
}
.main:has(.adh-calendar-search-workspace) > .main-content,
.main:has(.adh-calendar-search-workspace) .adh-calendar-search-workspace { display: contents !important; }
.main:has(.adh-calendar-search-workspace) > .main-toolbar { grid-column: 2; grid-row: 1; padding: 0 !important; min-width: 0; align-self: center; }
.main:has(.adh-calendar-search-workspace) .adh-calendar-search-bar { grid-column: 1; grid-row: 1; margin: 0; min-width: 0; align-self: center; }
.main:has(.adh-calendar-search-workspace) .adh-calendar-search-layout { grid-column: 1 / -1; grid-row: 3; overflow: auto; min-height: 0; }
.adh-calendar-search-bar label, .adh-calendar-search-bar small { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.adh-calendar-search-input-row { flex-wrap: nowrap; }
.adh-calendar-search-input-row input { flex: 1 1 0; height: var(--calendar-control-height); box-sizing: border-box; padding-block: 0; }
.adh-calendar-search-input-row button { flex: 0 0 var(--calendar-control-height); width: var(--calendar-control-height); height: var(--calendar-control-height); padding: 0; justify-content: center; box-sizing: border-box; }
.main:has(.adh-calendar-search-workspace) > .main-toolbar .dxbl-text-edit,
.main:has(.adh-calendar-search-workspace) > .main-toolbar button[data-action-name] { min-height: var(--calendar-control-height); height: var(--calendar-control-height); box-sizing: border-box; }
@container calendar-workspace (max-width: 110em) {
    .main:has(.adh-calendar-search-workspace) > .main-toolbar { grid-column: 1 / -1; grid-row: 2; }
    .main:has(.adh-calendar-search-workspace) .adh-calendar-search-layout { grid-row: 3; }
}
@container calendar-workspace (max-width: 45em) {
    .main:has(.adh-calendar-search-workspace) .adh-calendar-search-bar { grid-column: 1 / -1; }
    .adh-calendar-search-layout.has-results { grid-template-columns: minmax(0, 1fr); }
}

/* Refresh is independent of the adaptive filter row, but invokes the native XAF action. */
.main:has(.adh-calendar-search-workspace) > .main-toolbar .dxbl-toolbar-group:has([data-action-name="Refresh"]) { display: none !important; }
.main:has(.adh-calendar-search-workspace) > .main-toolbar { margin-inline-end: calc(var(--calendar-control-height) + 1em); }
.adh-calendar-refresh { grid-column: 2; grid-row: 1; justify-self: end; align-self: center; z-index: 1; width: var(--calendar-control-height); height: var(--calendar-control-height); padding: 0; justify-content: center; box-sizing: border-box; }
@container calendar-workspace (max-width: 110em) {
    .main:has(.adh-calendar-search-workspace) > .main-toolbar { margin-inline-end: 0; }
}
@container calendar-workspace (max-width: 45em) {
    .main:has(.adh-calendar-search-workspace) .adh-calendar-search-bar { margin-inline-end: calc(var(--calendar-control-height) + 1em); }
}

.contract-alerts-card { border:1px solid var(--dxbl-border-color, #ccc); border-radius:.75em; padding:1em; color:var(--dxbl-text-color, inherit); background:var(--dxbl-editor-bg, transparent); }
.contract-alerts-card header { display:flex; align-items:center; justify-content:space-between; gap:1em; margin-bottom:.75em; }
.contract-alerts-card h3 { margin:0; font-size:1.1em; }
.contract-alerts-card ul { list-style:none; margin:0; padding:0; max-height:24em; overflow:auto; }
.contract-alerts-card li { display:flex; align-items:center; flex-wrap:wrap; gap:.75em; padding:.75em 0; border-top:1px solid var(--dxbl-border-color, #ccc); }
.contract-alerts-card li strong { flex:1 1 16em; }
.contract-alerts-card time { white-space:nowrap; }
.contract-alerts-card p { margin:0; }
.contract-alert-delivery { flex:1 0 100%; margin:0; font-size:.9em; }
.contract-alert-delivery > div { display:flex; flex-wrap:wrap; gap:.35em 1em; margin-top:.3em; }
.contract-alert-delivery dt { min-width:12em; font-weight:600; }
.contract-alert-delivery dd { flex:1 1 16em; margin:0; overflow-wrap:anywhere; }
.contract-alerts-summary-group .contract-alerts-card { border:0; border-radius:0; padding:0; background:transparent; }
.contract-alerts-summary-group .contract-alerts-card li:first-child { border-top:0; }
