/* Clinical surfaces follow the selected accent without changing semantic status colors. */
/* Native date/time, currency and numeric columns keep complete values inside the
   table's scroll container. Names, descriptions and emails retain natural wrapping. */
.fi-body .ds-table-compact-value.fi-ta-text-item,
.fi-body .ds-table-compact-value .fi-ta-text-item,
.fi-body .ds-table-compact-value .fi-ta-text-item-label {
    white-space: nowrap;
    overflow-wrap: normal;
    word-break: normal;
}
.fi-simple-main .fi-sc-text.fi-badge { flex-shrink:0; min-width:max-content; }
.fi-simple-main .fi-sc-text.fi-badge .fi-badge-label { white-space:nowrap; }
:root:root {
    --color-primary-50: var(--primary-50);
    --color-primary-100: var(--primary-100);
    --color-primary-200: var(--primary-200);
    --color-primary-300: var(--primary-300);
    --color-primary-400: var(--primary-400);
    --color-primary-500: var(--primary-500);
    --color-primary-600: var(--primary-600);
    --color-primary-700: var(--primary-700);
    --color-primary-800: var(--primary-800);
    --color-primary-900: var(--primary-900);
    --color-primary-950: var(--primary-950);

    --color-gray-50: var(--gray-50);
    --color-gray-100: var(--gray-100);
    --color-gray-200: var(--gray-200);
    --color-gray-300: var(--gray-300);
    --color-gray-400: var(--gray-400);
    --color-gray-500: var(--gray-500);
    --color-gray-600: var(--gray-600);
    --color-gray-700: var(--gray-700);
    --color-gray-800: var(--gray-800);
    --color-gray-900: var(--gray-900);
    --color-gray-950: var(--gray-950);
    --orbit-body-bg: color-mix(in srgb, #f5f6f8 99%, var(--primary-700));
    --orbit-panel-bg: #fff;
    --orbit-card-bg: #fff;
    --orbit-card-bg-solid: #fff;
    --orbit-panel-muted-bg: var(--color-gray-200);
    --orbit-panel-soft-bg: var(--color-gray-100);
    --orbit-card-muted-bg: var(--color-gray-100);
    --orbit-text-color: var(--color-gray-950);
    --orbit-text-muted: var(--color-gray-600);
    --orbit-text-soft: var(--color-gray-700);
    --ds-brand: var(--primary-600);
    --ds-surface: #fff;
    --ds-canvas: var(--color-gray-100);
    --ds-text: var(--color-gray-950);
    --ds-muted: var(--color-gray-600);
    --ds-border: var(--color-gray-300);
    --ds-table-row: #fff;
    --ds-table-stripe: #f5f6f8;
    --ds-table-hover: color-mix(in srgb, #fff 95%, var(--primary-600));
    --ds-table-selected: color-mix(in srgb, #fff 84%, var(--primary-600));
    --ds-table-heading-bg: color-mix(in srgb, #fff 87%, var(--primary-500));
    --ds-table-heading-line: color-mix(in srgb, #fff 65%, var(--primary-600));
    --ds-table-footer-bg: var(--ds-surface);
    --ds-table-frame-bg: color-mix(in srgb, var(--color-gray-100) 96%, var(--primary-500));
    --ds-table-grid-line: color-mix(in srgb, #fff 35%, var(--ds-border));
    --ds-table-active-ink: var(--primary-700);
}
:root.dark:root {
    --orbit-surface-deep: var(--color-gray-900);
    --orbit-body-bg: color-mix(in srgb, var(--color-gray-950) 99%, var(--primary-700));
    --orbit-panel-bg: var(--color-gray-900);
    --orbit-card-bg: var(--color-gray-900);
    --orbit-card-bg-solid: var(--color-gray-900);
    --orbit-panel-muted-bg: var(--color-gray-800);
    --orbit-panel-soft-bg: var(--color-gray-800);
    --orbit-card-muted-bg: var(--color-gray-800);
    --orbit-text-color: var(--color-gray-100);
    --orbit-text-muted: var(--color-gray-300);
    --orbit-text-soft: var(--color-gray-200);
    --ds-surface: var(--color-gray-900);
    --ds-canvas: var(--color-gray-950);
    --ds-text: var(--color-gray-100);
    --ds-muted: var(--color-gray-300);
    --ds-border: var(--color-gray-700);
    --ds-table-row: var(--color-gray-900);
    --ds-table-stripe: color-mix(in srgb, var(--color-gray-900) 96%, #fff);
    --ds-table-hover: color-mix(in srgb, var(--color-gray-900) 88%, #fff);
    --ds-table-selected: color-mix(in srgb, var(--color-gray-900) 82%, var(--primary-300));
    --ds-table-heading-bg: color-mix(in srgb, var(--color-gray-900) 80%, var(--primary-300));
    --ds-table-heading-line: color-mix(in srgb, var(--color-gray-900) 60%, var(--primary-300));
    --ds-table-footer-bg: color-mix(in srgb, var(--color-gray-900) 93%, var(--primary-300));
    --ds-table-frame-bg: color-mix(in srgb, var(--color-gray-950) 96%, var(--primary-300));
    --ds-table-grid-line: var(--ds-border);
    --ds-table-active-ink: var(--primary-300);
}
/* Shared native table hierarchy, including stacked cards and relation tables.
 * Keep Orbit spacing, native sorting/pagination and the selected accent palette. */
.fi-body :is(.fi-ta-table, .ds-mobile-table) > thead > tr > :is(th, .fi-ta-table-stacked-header-cell) {
    background:var(--ds-table-heading-bg);
    color:var(--ds-text);
    border-block-end:2px solid var(--ds-table-heading-line);
    font-weight:700;
}
.fi-body .fi-ta-header-cell-sort-btn { color:inherit; font-weight:inherit; }
.fi-body .fi-ta-header-cell .fi-icon:not(.fi-loading-indicator) { color:var(--ds-muted); }
.fi-body .fi-ta-header-cell:is([aria-sort="ascending"], [aria-sort="descending"], .fi-sorted) .fi-icon,
.fi-body .fi-ta-header-cell-sort-btn.fi-active .fi-icon { color:var(--ds-table-active-ink); }
.fi-body .fi-ta-main > .fi-pagination {
    background:var(--ds-table-footer-bg);
    color:var(--ds-text);
    border-block-start:1px solid var(--ds-table-heading-line);
    gap:.75rem;
    padding:1rem clamp(.75rem, 2vw, 1.5rem);
    min-width:0;
}
.fi-body .fi-ta-main > .fi-pagination .fi-pagination-overview { color:var(--ds-text); font-weight:500; }
.fi-body .fi-pagination-items { gap:.375rem; box-shadow:none; }
.fi-body .fi-pagination-item-btn {
    min-width:2.75rem;
    min-height:2.75rem;
    border:1px solid var(--ds-border);
    border-radius:.75rem;
    background:var(--ds-surface);
    color:var(--ds-muted);
}
.fi-body .fi-pagination-item.fi-active > .fi-pagination-item-btn,
.fi-body .fi-pagination-item-btn:is(.fi-active, [aria-current="page"]) {
    background:var(--ds-table-heading-bg);
    border-color:var(--ds-table-heading-line);
    color:var(--ds-table-active-ink);
    font-weight:700;
}
.fi-body .fi-pagination-item-btn:focus-visible {
    outline:2px solid var(--ds-brand);
    outline-offset:3px;
}
.fi-body :is(.fi-ta-table, .ds-mobile-table) > tbody > tr + tr > td {
    border-block-start:1px solid var(--ds-table-grid-line);
}
.fi-body .ds-mobile-table > tfoot { background:var(--ds-table-footer-bg); color:var(--ds-text); }
.fi-body .fi-ta-table.fi-ta-table-stacked-on-mobile .fi-ta-cell-label { color:var(--ds-text); font-weight:600; }
/* Native stripes keep grouping, hidden rows and explicit per-table opt-outs intact. */
/* Orbit reserves a button height even when the native table action slot is empty. */
.fi-ta-header-toolbar > .fi-ta-actions:not(:has(*)) {
    display: none;
}
.ds-table-identity { display:flex; align-items:center; gap:.75rem; min-width:0; }
.ds-table-identity > img { width:3.125rem; height:3.125rem; flex-shrink:0; border-radius:50%; object-fit:cover; }
.ds-table-identity-text { min-width:0; white-space:normal; overflow-wrap:anywhere; }
.ds-table-identity-text > a { font-weight:600; color:var(--ds-brand); }
.ds-table-identity-secondary { color:var(--ds-muted); }
/* Secondary metadata keeps its full value while yielding emphasis to names.
 * Relative units preserve browser text enlargement; inputs and titles retain their scale. */
.fi-body :is(.fi-ta-text-description, .ds-table-identity-secondary),
.fi-body .ds-table-secondary-value .fi-ta-text-item,
.fi-body .ds-table-secondary-value.fi-ta-text-item {
    font-size:.8125rem;
    line-height:1.5;
    overflow-wrap:anywhere;
}
.fi-body .ds-text-toggle {
    font:inherit;
    font-weight:600;
    color:var(--primary-700);
    text-decoration:underline;
    text-underline-offset:3px;
    padding:2px 4px;
    min-height:24px;
    cursor:pointer;
}
.dark .fi-body .ds-text-toggle, .fi-body.dark .ds-text-toggle { color:var(--primary-300); }
.fi-body .ds-text-toggle:focus-visible { outline:2px solid currentColor; outline-offset:2px; border-radius:4px; }
/* Unbroken resource names remain readable within the available heading width. */
.fi-body .fi-header-heading { overflow-wrap:anywhere; }
/* Tabs use additional rows when their labels no longer fit the available space. */
.fi-body .fi-page .fi-tabs { max-width:100%; flex-wrap:wrap; }
.fi-body .fi-page .fi-tabs-item { min-width:0; max-width:100%; white-space:normal; }
.fi-body .fi-page .fi-tabs-item-label { white-space:normal; overflow-wrap:anywhere; }
.fi-body .fi-ta-table > tbody > .fi-ta-row:not(.fi-ta-group-header-row) {
    background:var(--ds-table-row);
}
.fi-body .fi-ta-table > tbody > .fi-ta-row.fi-striped {
    background:var(--ds-table-stripe);
}
.fi-body .fi-ta-table > tbody > .fi-ta-row.fi-selected {
    background:var(--ds-table-selected);
}
/* Cells must inherit the row so Orbit's translucent hover does not flatten the stripes. */
.fi-body .fi-ta-table > tbody > .fi-ta-row:not(.fi-ta-group-header-row) > .fi-ta-cell {
    background:inherit;
}
@media(hover:hover) {
    .fi-body .fi-ta-table > tbody > .fi-ta-row:not(.fi-ta-group-header-row):is(:hover, :focus-within) {
        background:var(--ds-table-hover);
    }
    .fi-body .fi-ta-table > tbody > .fi-ta-row.fi-selected:is(:hover, :focus-within) {
        background:color-mix(in srgb, var(--ds-table-selected) 75%, var(--ds-table-hover));
    }
}
/* Tokenized clinical screens share the same palette. Clinical status colors remain semantic. */
.ds-visual.ds-visual {
    --ve-bg: var(--ds-surface);
    --ve-ink: var(--ds-text);
    --ve-muted: var(--ds-muted);
    --ve-line: var(--ds-border);
    --ve-soft: var(--ds-canvas);
    --ve-accent: var(--primary-600);
    --ve-accent-ink: var(--primary-700);
}
.dark .ds-visual.ds-visual { --ve-accent-ink: var(--primary-300); }
.dsv2-calendar.dsv2-calendar {
    background: var(--ds-surface);
    color: var(--ds-text);
    --fc-page-bg-color: var(--ds-surface);
    --fc-neutral-bg-color: var(--ds-canvas);
    --fc-border-color: var(--ds-border);
}

/* Compact buttons inspired by the supplied shine example. Keep native action semantics. */
.fi-body :is(button, a).fi-btn {
    display:inline-flex;
    box-sizing:border-box;
    min-width:0;
    max-width:100%;
    height:auto;
    white-space:normal;
    overflow-wrap:break-word;
    line-height:1.4;
    border-width:1px;
    border-style:solid;
    border-radius:.625rem;
    transition:background-color 160ms ease,border-color 160ms ease,box-shadow 160ms ease;
}
.fi-body :is(button, a).fi-btn > .fi-icon { flex-shrink:0; }
.fi-body .fi-btn-label { overflow-wrap:break-word; word-break:normal; }
.fi-body :is(button, a).fi-btn:hover { transform:none; }
.fi-body :is(button, a).fi-btn:focus-visible {
    outline:2px solid var(--primary-600);
    outline-offset:3px;
}
.fi-body :is(button, a).fi-btn.fi-color-primary:not(.fi-outlined) {
    position:relative;
    overflow:hidden;
    background:linear-gradient(100deg,
        color-mix(in srgb, #1e293b 85%, var(--primary-700)),
        color-mix(in srgb, #334155 90%, var(--primary-600)));
    color:#f1f5f9;
    border-color:color-mix(in srgb, #1e293b 80%, var(--primary-700));
    box-shadow:0 1px 2px rgb(15 23 42 / .14),inset 0 1px 0 rgb(255 255 255 / .08);
}
.fi-body :is(button, a).fi-btn.fi-color-primary:not(.fi-outlined) :is(.fi-icon, .fi-btn-label) { color:inherit; }
.dark .fi-body :is(button, a).fi-btn.fi-color-primary:not(.fi-outlined) {
    background:linear-gradient(100deg, #e2e8f0, #f1f5f9);
    color:#1e293b;
    border-color:#cbd5e1;
    box-shadow:0 1px 2px rgb(0 0 0 / .2),inset 0 1px 0 rgb(255 255 255 / .65);
}
.fi-body :is(button, a).fi-btn.fi-color-primary:not(.fi-outlined)::before {
    content:"";
    position:absolute;
    inset:0;
    pointer-events:none;
    border-radius:inherit;
    background:linear-gradient(45deg, transparent 25%, rgb(255 255 255 / .18) 50%, transparent 75%);
    background-size:250% 250%;
    background-position:200% 0;
    background-repeat:no-repeat;
    transition:background-position 0s ease;
}
.dark .fi-body :is(button, a).fi-btn.fi-color-primary:not(.fi-outlined)::before {
    background-image:linear-gradient(45deg, transparent 25%, rgb(255 255 255 / .65) 50%, transparent 75%);
}
@media(hover:hover) and (prefers-reduced-motion:no-preference) {
    .fi-body :is(button, a).fi-btn.fi-color-primary:not(.fi-outlined):not(:disabled):not(.fi-disabled):hover::before {
        background-position:-100% 0;
        transition-duration:1500ms;
    }
}
.fi-body :is(button, a).fi-btn.fi-color-gray {
    background:var(--ds-surface);
    color:var(--ds-text);
    border-color:var(--ds-border);
    box-shadow:0 1px 2px rgb(15 23 42 / .04);
}
.fi-body :is(button, a).fi-btn.fi-color-gray:hover { background:var(--ds-canvas); }
.fi-body :is(button, a).fi-btn.fi-color-gray :is(.fi-icon, .fi-btn-label) { color:inherit; }
.fi-body .fi-dropdown-panel {
    max-width:calc(100vw - 2rem);
    background:var(--ds-surface);
    border:1px solid var(--ds-border);
    box-shadow:0 8px 24px rgb(15 23 42 / .12);
}
/* Tables span their schema. Size containers confuse this Floating UI version's fixed offsets. */
.fi-body .fi-grid-ctn:has(> .fi-grid-col > .fi-sc-component > .fi-ta) { container-type:normal; }
.fi-body .fi-resource-list-records-page { container-type:normal; }

/* Widget scalar spans are emitted at lg, but container grids can split earlier. */
.fi-body .fi-wi-widget[style*="--col-span-lg: 1 / -1"] { grid-column:1 / -1; }
.fi-body :is(.fi-wi-widget, .fi-header > div, .fi-header-actions-ctn) { min-width:0; }
.fi-body .fi-header { flex-wrap:nowrap; gap:1rem; }
.fi-body .fi-header > div:first-child:not(.fi-header-actions-ctn) { flex:0 1 auto; }
.fi-body .fi-header-actions-ctn { flex:0 1 auto; max-width:100%; }
.fi-body .fi-header-actions-ctn { margin-inline-start:auto; }
.fi-body .fi-header-actions-ctn > .fi-ac { justify-content:flex-end; gap:.75rem; }
.fi-body .fi-header-actions-ctn > .fi-ac > .fi-dropdown:has(.ds-header-mobile-actions) { display:none; }
/* Form controls remain visible, with space outside the final section. */
.fi-body .fi-form-actions,
.fi-body .fi-main form .fi-sc-actions:has(> .fi-ac > button[type="submit"]),
.fi-body .fi-main form > .fi-ac:last-child { margin-block-start:1.25rem; }
.fi-body .fi-form-actions > .fi-ac,
.fi-body .fi-main form .fi-sc-actions:has(button[type="submit"]) > .fi-ac,
.fi-body .fi-main form > .fi-ac:last-child { justify-content:flex-end; gap:.75rem; }
@media (min-width:40rem) and (max-width:64rem) {
    .fi-body :is(.fi-header-actions-ctn, .fi-form-actions, .fi-main form .fi-sc-actions:has(button[type="submit"]), .fi-main form > .fi-ac:last-child) .fi-btn {
        min-height:2.5rem; padding:.5rem .875rem; font-size:.875rem;
    }
}
@media (max-width:39.999rem) {
    .fi-body .fi-header-actions-ctn { position:relative; width:100%; margin-inline-start:0; justify-content:center; }
    .fi-body .fi-header-actions-ctn:has(> .fi-ac) > .fi-page-navigation-pin-source { position:absolute; inset-inline-start:0; align-self:center; }
    .fi-body .fi-header-actions-ctn > .fi-ac { width:100%; justify-content:center; }
    .fi-body .fi-header-actions-ctn > .fi-ac > :not(:has(.ds-header-mobile-actions)) { display:none; }
    .fi-body .fi-header-actions-ctn > .fi-ac > .fi-dropdown:has(.ds-header-mobile-actions) { display:block; }
    .fi-body .fi-form-actions > .fi-ac { justify-content:center; gap:.75rem; }
    .fi-body .fi-main form .fi-sc-actions:has(button[type="submit"]) > .fi-ac { justify-content:center; gap:.75rem; }
    .fi-body .fi-main form > .fi-ac:last-child { justify-content:center; gap:.75rem; }
}
/* Match Filament's row breakpoint: 22rem is a width, never a mobile height. */
@media (min-width:40rem) {
    .fi-body .fi-header { flex-wrap:wrap; }
    .fi-body .fi-header > div:first-child:not(.fi-header-actions-ctn) { flex:1 1 22rem; }
}
.fi-body .fi-ta-cell .fi-badge { max-width:100%; white-space:normal; overflow-wrap:break-word; word-break:normal; }
.fi-body .fi-ta-cell :is(.fi-badge-label-ctn, .fi-badge-label) { min-width:0; max-width:100%; white-space:normal; overflow-wrap:break-word; word-break:normal; }
.fi-body .fi-ta-cell:has(.fi-ta-actions) { width:1%; }
.fi-body .fi-ta-cell .fi-ta-actions { flex-wrap:wrap; }
.fi-body .dsn-grid { display:grid; grid-template-columns:minmax(0,1fr); gap:1rem; }
.fi-body .dsn-widget:has(.dsn-card) {
    overflow:hidden; border-radius:1.25rem; border:1px solid var(--ds-border);
    background:var(--ds-surface); box-shadow:0 12px 30px rgb(15 23 42 / .04);
}
.fi-body .dsn-card {
    min-width:0; overflow:hidden; padding:1.5rem; border:1px solid var(--ds-border);
    border-radius:var(--ds-radius-card,1.25rem); color:var(--ds-text);
    background:var(--ds-surface) !important;
    box-shadow:0 12px 30px rgb(15 23 42 / .04);
}
.fi-body .dsn-title { font-weight:600; line-height:1.5; margin-bottom:.75rem; }
.dark .fi-body .dsn-title { color:var(--ds-text) !important; }
.fi-body .dsn-excerpt { overflow-wrap:anywhere; }
.fi-body .dsn-excerpt :is(img,video) { max-width:100%; height:auto; }
.fi-body .dsn-media img { max-height:16rem; width:100%; object-fit:contain; border-radius:1rem; }
.fi-body .ds-menu-help { display:flex; align-items:center; flex-wrap:wrap; gap:.5rem .75rem; margin-top:.5rem; }
.fi-body .ds-menu-help > p { color:var(--ds-muted); font-size:.875rem; line-height:1.6; flex:1 1 24rem; overflow-wrap:anywhere; }
.fi-body .ds-menu-help-details { display:grid; gap:.75rem; font-size:.9375rem; line-height:1.65; }
.fi-body .ds-menu-help-details h3 { font-weight:600; margin-top:.5rem; }

/* Editable fields stay distinct from readonly/disabled values in both themes. */
.fi-body .fi-input-wrp {
    background:var(--ds-surface);
    border:1px solid var(--ds-border);
    box-shadow:0 1px 2px rgb(15 23 42 / .04);
}
.fi-body .fi-input-wrp:has(:is(input[readonly]:not(.fi-fo-date-time-picker-display-text-input), textarea[readonly])),
.fi-body .fi-input-wrp.fi-disabled,
.fi-body .fi-input-wrp:has(:is(input:disabled, textarea:disabled, select:disabled)) {
    background:#e9edf1;
    border-color:#d2d8e0;
    box-shadow:none;
    cursor:not-allowed;
}
.dark .fi-body .fi-input-wrp:has(:is(input[readonly]:not(.fi-fo-date-time-picker-display-text-input), textarea[readonly])),
.dark .fi-body .fi-input-wrp.fi-disabled,
.dark .fi-body .fi-input-wrp:has(:is(input:disabled, textarea:disabled, select:disabled)) {
    background:#202a36;
    border-color:#394655;
}
.fi-body .fi-input-wrp :is(input[readonly]:not(.fi-fo-date-time-picker-display-text-input), textarea[readonly], input:disabled, textarea:disabled, select:disabled) {
    background:transparent;
    color:var(--ds-muted);
    cursor:not-allowed;
}
.fi-body .fi-input-wrp:not(.fi-disabled):not(:has(:is(input[readonly]:not(.fi-fo-date-time-picker-display-text-input), textarea[readonly], input:disabled, textarea:disabled, select:disabled))):focus-within {
    border-color:var(--primary-600);
    outline:2px solid var(--primary-600);
    outline-offset:2px;
}
.fi-body .fi-input-wrp.fi-invalid { border-color:var(--danger-600); }
.fi-body .fi-input-wrp.fi-invalid:focus-within { outline-color:var(--danger-600); border-color:var(--danger-600)!important; }

/* The date input may span a form column; its calendar remains compact. */
.fi-body .fi-fo-date-time-picker-panel {
    width:320px;
    max-width:calc(100vw - 2rem);
    min-width:0;
}
.fi-body .fi-fo-date-time-picker-calendar-day.fi-disabled {
    background:#edf0f3;
    color:#929ba8;
    opacity:1;
}
.dark .fi-body .fi-fo-date-time-picker-calendar-day.fi-disabled {
    background:#28313e;
    color:#758294;
}
.fi-body .fi-fo-file-upload-avatar :is(.filepond--root, .filepond--panel-root, .filepond--image-preview-wrapper) { border-radius:50%; }
.fi-body .fi-ta-content-ctn {
    border-radius:16px;
    padding:.625rem;
    background:var(--ds-table-frame-bg);
}
.fi-body :is(.fi-ta-table, .ds-mobile-table) {
    border-collapse:separate;
    border-spacing:0;
    background:var(--ds-surface);
    border:1px solid var(--ds-table-grid-line);
    border-radius:12px;
}
.fi-body .fi-ta-table > thead > tr:first-child > th:first-child { border-start-start-radius:12px; }
.fi-body .fi-ta-table > thead > tr:first-child > th:last-child { border-start-end-radius:12px; }
.fi-body .fi-ta-table > tbody > tr:last-child > td:first-child { border-end-start-radius:12px; }
.fi-body .fi-ta-table > tbody > tr:last-child > td:last-child { border-end-end-radius:12px; }
.fi-body .ds-mobile-table > thead > tr:first-child > th:first-child { border-start-start-radius:12px; }
.fi-body .ds-mobile-table > thead > tr:first-child > th:last-child { border-start-end-radius:12px; }
@media (max-width:39.999rem) {
    .fi-body .fi-ta-content-ctn { padding:.375rem; }
    .fi-body .fi-pagination-overview { white-space:normal; overflow-wrap:anywhere; }
}
.fi-body .fi-dropdown-panel .fi-btn {
    width:100%;
    justify-content:flex-start;
    text-align:left;
    padding-inline:1rem;
    padding-block:.625rem;
}
.fi-body .fi-dropdown-list-item-label { min-width:0; white-space:normal; overflow-wrap:anywhere; }
/* Download feedback comes from the existing action, never a simulated success timer. */
.fi-body .ds-download-action > .fi-icon:not(.fi-loading-indicator) { transition:transform 200ms ease; }
.fi-body :is(button, a).fi-btn.fi-color-primary.ds-download-action:not(.fi-outlined)::before { content:none; }
@media(hover:hover) and (prefers-reduced-motion:no-preference) {
    .fi-body .ds-download-action:not(:disabled):not(.fi-disabled):hover > .fi-icon:not(.fi-loading-indicator) { transform:translateY(3px); }
}

/* Menu transitions are handled by dentalserver-page-loader on all browsers. */

/* Keep the dialog layer above navigation and dropdowns throughout its opening
 * transition, including before Livewire adds the fi-modal-open marker. */
.fi-body .fi-modal { position:relative; z-index:100; }
.fi-body .fi-modal > .fi-modal-close-overlay,
.fi-body .fi-modal > .fi-modal-window-ctn { z-index:100; }
/* Bound normal dialogs to the available height. Only the content scrolls;
 * header/footer stay in flow so they cannot cover fields in a long form. */
.fi-body .fi-modal:not(.fi-modal-slide-over) > .fi-modal-window-ctn { overflow-y:auto; align-items:safe center; }
.fi-body .fi-modal:not(.fi-modal-slide-over) > .fi-modal-window-ctn > .fi-modal-window:not(.fi-width-screen) {
    display:flex;
    flex-direction:column;
    max-height:calc(100vh - 2rem);
    max-height:calc(100dvh - 2rem);
    overflow:visible;
}
.fi-body .fi-modal:not(.fi-modal-slide-over) > .fi-modal-window-ctn > .fi-modal-window:not(.fi-width-screen) > .fi-modal-content {
    flex:1 1 auto;
    min-height:0;
    overflow-y:auto;
    overscroll-behavior:contain;
}
/* Native modal content is a flex column. Keep each section's natural height so
 * nested scrollable tables do not shrink into a scrollbar in short viewports. */
.fi-body .fi-modal:not(.fi-modal-slide-over) > .fi-modal-window-ctn > .fi-modal-window:not(.fi-width-screen) > .fi-modal-content > * {
    flex-shrink:0;
}
.fi-body .fi-modal:not(.fi-modal-slide-over) > .fi-modal-window-ctn > .fi-modal-window:not(.fi-width-screen) > :is(.fi-modal-header, .fi-modal-footer) {
    position:relative;
    flex-shrink:0;
}
.fi-no { z-index:110; }
/* Respect native widths and legacy shorthand; large desktop screens do not stretch dialogs. */
.fi-body .fi-modal:not(.fi-width-screen) > .fi-modal-window-ctn > .fi-modal-window {
    max-width:min(var(--ds-modal-width, 64rem), calc(100vw - 2rem));
    min-width:0;
    margin-inline:auto;
}
.fi-modal-window:is(.fi-width-3xs, .\33 xs) { --ds-modal-width:16rem; }
.fi-modal-window:is(.fi-width-2xs, .\32 xs) { --ds-modal-width:18rem; }
.fi-modal-window:is(.fi-width-xs, .xs) { --ds-modal-width:20rem; }
.fi-modal-window:is(.fi-width-sm, .sm) { --ds-modal-width:24rem; }
.fi-modal-window:is(.fi-width-md, .md) { --ds-modal-width:28rem; }
.fi-modal-window:is(.fi-width-lg, .lg) { --ds-modal-width:32rem; }
.fi-modal-window:is(.fi-width-xl, .xl) { --ds-modal-width:36rem; }
.fi-modal-window:is(.fi-width-2xl, .\32 xl) { --ds-modal-width:42rem; }
.fi-modal-window:is(.fi-width-3xl, .\33 xl) { --ds-modal-width:48rem; }
.fi-modal-window:is(.fi-width-4xl, .\34 xl) { --ds-modal-width:56rem; }
.fi-modal-window:is(.fi-width-5xl, .\35 xl) { --ds-modal-width:64rem; }

/* FullCalendar keeps its data/actions and adopts Orbit surfaces, spacing and controls. */
.fi-body :is(.dsv2-calendar, #dentserv-calendar, [x-data="dsv2Calendar"]) .fc {
    --fc-page-bg-color:var(--ds-surface);
    --fc-border-color:var(--ds-border);
    --fc-neutral-bg-color:var(--ds-canvas);
    --fc-today-bg-color:transparent;
    color:var(--ds-text);
}
.fi-body :is(.dsv2-calendar, #dentserv-calendar, [x-data="dsv2Calendar"]) .fc .fc-button-primary {
    background:var(--ds-surface);
    color:var(--ds-text);
    border:1px solid var(--ds-border);
    border-radius:10px;
    box-shadow:none;
    font-size:.875rem;
    font-weight:500;
    padding:.5rem .75rem;
}
.fi-body :is(.dsv2-calendar, #dentserv-calendar, [x-data="dsv2Calendar"]) .fc .fc-button-group { gap:4px; }
.fi-body :is(.dsv2-calendar, #dentserv-calendar, [x-data="dsv2Calendar"]) .fc .fc-button-primary:not(:disabled):is(:hover, .fc-button-active) {
    background:color-mix(in srgb, var(--ds-surface) 88%, var(--primary-600));
    color:var(--primary-700);
    border-color:var(--primary-500);
}
.dark .fi-body :is(.dsv2-calendar, #dentserv-calendar, [x-data="dsv2Calendar"]) .fc .fc-button-primary:not(:disabled):is(:hover, .fc-button-active) { color:var(--primary-300); }
.fi-body :is(.dsv2-calendar, #dentserv-calendar, [x-data="dsv2Calendar"]) .fc .fc-toolbar-title { font-size:1.125rem; font-weight:600; }
.fi-body :is(.dsv2-calendar, #dentserv-calendar, [x-data="dsv2Calendar"]) .fc .fc-dayGridMonth-view :is(.fc-scrollgrid, td, th) { border:0; }
.fi-body :is(.dsv2-calendar, #dentserv-calendar, [x-data="dsv2Calendar"]) .fc .fc-col-header-cell-cushion { color:var(--ds-muted); font-weight:500; font-size:.75rem; padding-block:12px; }
.fi-body :is(.dsv2-calendar, #dentserv-calendar, [x-data="dsv2Calendar"]) .fc .fc-dayGridMonth-view .fc-daygrid-day-frame {
    background:var(--orbit-panel-soft-bg);
    border-radius:10px;
    margin:4px;
    min-height:88px;
}
.fi-body :is(.dsv2-calendar, #dentserv-calendar, [x-data="dsv2Calendar"]) .fc .fc-day-today .fc-daygrid-day-frame { background:var(--orbit-panel-muted-bg); }
.fi-body :is(.dsv2-calendar, #dentserv-calendar, [x-data="dsv2Calendar"]) .fc .fc-day-other .fc-daygrid-day-frame {
    background:repeating-linear-gradient(135deg, var(--ds-surface), var(--ds-surface) 4px, var(--orbit-panel-soft-bg) 4px, var(--orbit-panel-soft-bg) 8px);
}
.fi-body :is(.dsv2-calendar, #dentserv-calendar, [x-data="dsv2Calendar"]) .fc .fc-daygrid-day-number { color:var(--ds-text); padding:6px 8px; font-size:.8125rem; }
.fi-body :is(.dsv2-calendar, #dentserv-calendar, [x-data="dsv2Calendar"]) .fc .fc-daygrid-event { border-radius:.5rem; padding:.25rem .35rem; }
@media(max-width:639px) {
    .fi-body :is(.dsv2-calendar, #dentserv-calendar, [x-data="dsv2Calendar"]) .fc .fc-dayGridMonth-view .fc-daygrid-day-frame { margin:2px; min-height:64px; }
}
/* Orbit leaves unchecked controls transparent; keep their boundaries visible in both modes. */
.fi-body input.fi-radio-input:not(:checked),
.fi-body input.fi-checkbox-input:not(:checked) {
    background-color:var(--ds-surface);
    border:1px solid var(--ds-muted);
    box-shadow:none;
}
.fi-body input.fi-radio-input:focus-visible,
.fi-body input.fi-checkbox-input:focus-visible { outline:2px solid var(--primary-600); outline-offset:3px; }
/* Orbit's shared card positioning overrides the native off-canvas sidebar. */
@media(max-width:1023px) {
    .fi-body-has-topbar .fi-sidebar { position:fixed; }
    .fi-body-has-topbar .fi-sidebar:not(.fi-sidebar-open) { visibility:hidden; pointer-events:none; }
}

/* Native cards respect column visibility; hidden desktop cells must not reappear. */
@media(max-width:1023px) {
    .fi-ta-table.fi-ta-table-stacked-on-mobile { display:block; width:100%; }
    .fi-ta-table.fi-ta-table-stacked-on-mobile > thead { display:block; }
    .fi-ta-table.fi-ta-table-stacked-on-mobile > thead > tr:not(.fi-ta-table-stacked-header-row) { display:none; }
    .fi-ta-table.fi-ta-table-stacked-on-mobile > thead > .fi-ta-table-stacked-header-row { display:block; }
    .fi-ta-table.fi-ta-table-stacked-on-mobile > thead .fi-ta-header-cell { display:none; }
    .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody { display:block; white-space:normal; }
    .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody > tr:not(.fi-collapsed) { display:block; position:relative; padding:12px 0; }
    .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody > tr > .fi-ta-cell:not(.fi-ta-selection-cell) { width:100%; padding:4px 16px; }
    .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody > tr > .fi-ta-cell:not(.fi-ta-selection-cell):not(.fi-hidden):not([class*=':fi-visible']) { display:block; }
    .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody > tr > .fi-ta-selection-cell { position:absolute; right:12px; top:8px; width:auto; padding:0; }
    .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody > tr > .fi-ta-cell:first-child { border-start-start-radius:12px; border-start-end-radius:12px; }
    .fi-ta-table.fi-ta-table-stacked-on-mobile .fi-ta-cell-label { display:block; font-size:12px; color:var(--ds-muted); }
    .fi-ta-table.fi-ta-table-stacked-on-mobile .fi-ta-cell-content { display:block; overflow-wrap:anywhere; }
    .fi-ta-table.fi-ta-table-stacked-on-mobile .fi-ta-text { padding:0; }
    .fi-ta-table.fi-ta-table-stacked-on-mobile .fi-ta-actions { display:flex; flex-wrap:wrap; justify-content:flex-start; white-space:normal; }
    .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody > tr > .fi-ta-cell[class*=':fi-visible'] { display:none; }
}
@media(min-width:640px) and (max-width:1023px) {
    .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody > tr > .fi-ta-cell.sm\:fi-visible { display:block; }
    .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody > tr > .fi-ta-cell.sm\:fi-hidden { display:none; }
}
@media(min-width:768px) and (max-width:1023px) {
    .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody > tr > .fi-ta-cell.md\:fi-visible { display:block; }
    .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody > tr > .fi-ta-cell.md\:fi-hidden { display:none; }
}

/* Native stacked rows follow table space, without changing fixed dropdown positioning. */
.ds-ta-compact .fi-ta-table.fi-ta-table-stacked-on-mobile { display:block; width:100%; }
.ds-ta-compact .fi-ta-table.fi-ta-table-stacked-on-mobile > thead { display:block; }
.ds-ta-compact .fi-ta-table.fi-ta-table-stacked-on-mobile > thead > tr:not(.fi-ta-table-stacked-header-row) { display:none; }
.ds-ta-compact .fi-ta-table.fi-ta-table-stacked-on-mobile > thead .fi-ta-table-stacked-header-row { display:block; }
.ds-ta-compact .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody { display:block; white-space:normal; }
.ds-ta-compact .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody > tr:not(.fi-collapsed) { display:block; position:relative; padding:12px 0; }
.ds-ta-compact .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody > tr > .fi-ta-cell:not(.fi-ta-selection-cell) { width:100%; padding:4px 16px; }
.ds-ta-compact .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody > tr > .fi-ta-cell:not(.fi-ta-selection-cell):not(.fi-hidden):not([class*=':fi-visible']) { display:block; }
.ds-ta-compact .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody > tr > .fi-ta-cell[class*=':fi-visible'] { display:none; }
.ds-ta-compact .fi-ta-table.fi-ta-table-stacked-on-mobile .fi-ta-cell-label { display:block; font-size:12px; color:var(--ds-muted); }
.ds-ta-compact .fi-ta-table.fi-ta-table-stacked-on-mobile .fi-ta-cell-content { display:block; overflow-wrap:anywhere; }
.ds-ta-compact .fi-ta-table.fi-ta-table-stacked-on-mobile .fi-ta-text { padding:0; }
.ds-ta-compact .fi-ta-table.fi-ta-table-stacked-on-mobile .fi-ta-actions { display:flex; flex-wrap:wrap; justify-content:flex-start; white-space:normal; }
.ds-ta-compact .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody > tr > .fi-ta-selection-cell { position:absolute; right:12px; top:8px; width:auto; padding:0; }
.ds-ta-compact.ds-ta-medium .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody > tr > .fi-ta-cell.sm\:fi-visible { display:block; }
.ds-ta-compact.ds-ta-medium .fi-ta-table.fi-ta-table-stacked-on-mobile > tbody > tr > .fi-ta-cell.sm\:fi-hidden { display:none; }

/* Long doctor options must not define the calendar filter width. */
.fi-body .dsv2-calendar-heading > * { min-width:0; max-width:100%; }
.fi-body .dsv2-calendar-heading > label { flex:0 1 20rem; }
.fi-body .dsv2-calendar-heading select { width:100%; min-width:0; max-width:100%; }

/* Shared HTML table summaries fit the native mobile card and nested relation table. */
.ds-table-summary { min-width:0; max-width:100%; flex-wrap:wrap; }
.ds-table-summary > :last-child { min-width:0; max-width:100%; flex-basis:min(14rem,100%)!important; }
.ds-table-summary :is(div,span,a) { overflow-wrap:anywhere; }

/* Long wizard labels must remain readable without a concealed horizontal strip. */
@media (min-width:48rem) {
    .fi-body .fi-sc-wizard-header {
        grid-auto-flow:row;
        grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));
        overflow:visible;
    }
    .fi-body .fi-sc-wizard-header-step { min-width:0; }
    .fi-body .fi-sc-wizard-header-step-btn { width:100%; min-width:0; padding:1rem; }
    .fi-body .fi-sc-wizard-header-step-text { min-width:0; }
    .fi-body :is(.fi-sc-wizard-header-step-label,.fi-sc-wizard-header-step-description) { white-space:normal; overflow-wrap:break-word; }
    .fi-body .fi-sc-wizard-header-step > svg { display:none; }
}
.ds-table-summary span { min-width:0; max-width:100%; }

/* Profile identity and widget headers share the available page width. */
.ds-patient-profile { width:100%; min-width:0; }
.ds-patient-profile-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,max(300px,calc((100% - 28px) / 3))),1fr)); gap:14px; }
.ds-patient-profile-grid > * { min-width:0; }
.ds-patient-profile-value { margin-top:6px; font-size:14px; font-weight:600; color:#111827; overflow-wrap:anywhere; line-height:1.5; }
.ds-patient-email-part { display:inline-block; max-width:100%; overflow-wrap:anywhere; vertical-align:top; }
.ds-profile-widget-summary { flex:1 1 100%; width:100%; min-width:0; margin-bottom:14px; }
.ds-payment-summary-status { display:flex; justify-content:flex-end; margin-bottom:.75rem; }
.ds-payment-summary-totals { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr)); gap:.75rem; margin:0; }
.ds-payment-summary-totals > div { min-width:0; padding:.85rem; border:1px solid var(--ds-border); border-radius:.75rem; background:var(--ds-canvas); }
.ds-payment-summary-totals dt, .ds-payment-summary-note { color:var(--ds-muted); font-size:.8125rem; line-height:1.5; }
.ds-payment-summary-totals dd { margin:.25rem 0 0; color:var(--ds-text); font-size:1.125rem; font-weight:700; font-variant-numeric:tabular-nums; overflow-wrap:anywhere; }
.ds-payment-summary-note { margin:.85rem 0 0; }
/* The guided consultation keeps six steps readable, with at most three columns. */
.ds-consultation-steps {
    display: grid;
    gap: 1.25rem;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, max(18rem, calc((100% - 2.5rem) / 3))), 1fr));
}

/* Patient and doctor previews share readable labels and complete identity values. */
.ds-person-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem;
    margin-top: -3rem;
    padding: 0 1.5rem 1.5rem;
    min-width: 0;
}
.ds-person-header-avatar {
    flex: none;
    width: 11.25rem;
    height: 11.25rem;
    max-width: 100%;
    aspect-ratio: 1;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid #fff;
    background: #fff;
    box-shadow: 0 10px 25px rgb(15 23 42 / 18%);
}
.ds-person-header-copy {
    flex: 1 1 20rem;
    min-width: 0;
    overflow-wrap: anywhere;
}
.ds-person-header-contact {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem 1.25rem;
}
.ds-person-header-contact > span { min-width: 0; }
.ds-person-preview {
    min-width: 0;
    background: var(--ds-surface);
    color: var(--ds-text);
    overflow-wrap: anywhere;
}
.ds-person-preview dl {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
}
.ds-person-preview dl > div {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    min-width: 0;
    gap: .25rem;
}
.ds-person-preview dd {
    max-width: 100%;
    margin-inline-start: 0;
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
    overflow-wrap: anywhere;
}
.ds-person-summary > div { flex-wrap: wrap; align-items: flex-start; gap: .5rem 1rem; }
.ds-person-summary > div > span:first-child { flex: 0 0 auto; max-width: 100%; }
.ds-person-summary > div > span:last-child { flex: 1 1 8rem; min-width: 0; text-align: end; }
.dark .ds-person-preview :is(h2, h3, dt, dd, .text-gray-900, .text-gray-950) { color: var(--ds-text); }
.dark .ds-person-preview :is(p, .text-gray-500, .text-gray-600, .text-gray-700) { color: var(--ds-muted); }
.dark .ds-person-preview .bg-gray-50 { background: var(--ds-canvas); }
.ds-doctor-profile-banner { background:linear-gradient(110deg,var(--primary-700),var(--primary-400)); }
/* Generated values remain selectable/copyable; readonly and validation stay native. */
.ds-generated-access-field .fi-input-wrp { background-color:var(--ds-canvas); }
.ds-generated-access-field input[readonly] { color:var(--ds-text); cursor:text; }
.ds-doctor-profile .text-blue-700 { color:var(--primary-700); }
.dark .ds-doctor-profile .text-blue-700 { color:var(--primary-300); }
.dark .ds-doctor-profile .bg-white { background:var(--ds-surface); }
.dark .ds-doctor-profile .bg-gray-50 { background:var(--ds-canvas); }
.dark .ds-doctor-profile :is(.text-gray-900,.text-gray-950) { color:var(--ds-text); }
.dark .ds-doctor-profile :is(.text-gray-500,.text-gray-600,.text-gray-700) { color:var(--ds-muted); }
.dark .ds-doctor-profile :is(.border-gray-100,.border-gray-200) { border-color:var(--ds-border); }

@media (max-width:39.999rem) {
    .fi-body .fi-ta-table.fi-ta-table-stacked-on-mobile .fi-ta-actions { justify-content:center; gap:.75rem; padding-block:.5rem; }
}
