:root {
    /* VNTA semantic tokens: keep feature styles theme-aware and free of color literals. */
    --vnta-color-primary: var(--dxds-color-content-info-default-rest);
    --vnta-color-success: var(--dxds-color-content-success-default-rest);
    --vnta-color-warning: var(--dxds-color-content-warning-default-rest);
    --vnta-color-danger: var(--dxds-color-content-danger-default-rest);
    --vnta-color-info: var(--dxds-color-content-info-default-rest);
    --vnta-color-neutral: var(--dxds-color-content-neutral-default-rest);
    --vnta-bg-surface: var(--dxds-color-surface-neutral-default-rest);
    --vnta-bg-subtle: var(--dxds-color-surface-neutral-subdued-rest);
    --vnta-bg-surface-subtle: var(--dxds-color-surface-neutral-subtle-rest);
    --vnta-bg-primary-subtle: color-mix(in srgb, var(--vnta-color-primary) 10%, var(--vnta-bg-surface));
    --vnta-bg-success-subtle: color-mix(in srgb, var(--vnta-color-success) 10%, var(--vnta-bg-surface));
    --vnta-bg-warning-subtle: color-mix(in srgb, var(--vnta-color-warning) 10%, var(--vnta-bg-surface));
    --vnta-bg-danger-subtle: color-mix(in srgb, var(--vnta-color-danger) 10%, var(--vnta-bg-surface));
    --vnta-bg-info-subtle: var(--dxds-color-surface-info-subtle-rest, color-mix(in srgb, var(--vnta-color-info) 10%, var(--vnta-bg-surface)));
    --vnta-bg-highlight: color-mix(in srgb, var(--vnta-color-warning) 30%, var(--vnta-bg-surface));
    --vnta-text-primary: var(--dxds-color-content-neutral-default-rest);
    --vnta-text-secondary: var(--dxds-color-content-neutral-subtle-rest);
    --vnta-text-inverse: var(--dxds-color-content-neutral-inverted-rest);
    --vnta-text-on-primary: var(--dxds-color-content-neutral-inverted-rest, #ffffff);
    --vnta-text-highlight: var(--vnta-text-primary);
    --vnta-border-color: var(--dxds-color-border-neutral-default-rest);
    --vnta-border-primary: var(--dxds-color-border-primary-default-rest);
    --vnta-border-emphasis: color-mix(in srgb, var(--vnta-text-secondary) 42%, var(--vnta-border-color));
    --vnta-border-success: color-mix(in srgb, var(--vnta-color-success) 42%, var(--vnta-border-color));
    --vnta-border-warning: color-mix(in srgb, var(--vnta-color-warning) 42%, var(--vnta-border-color));
    --vnta-border-danger: color-mix(in srgb, var(--vnta-color-danger) 42%, var(--vnta-border-color));
    --vnta-border-info: var(--dxds-color-border-info-default-rest, color-mix(in srgb, var(--vnta-color-info) 42%, var(--vnta-border-color)));

    --CRM-icon-size: 1.25rem;
    --CRM-avatar-size: 2rem;
    --CRM-avatar-margin-left: 0.75rem;
    --CRM-header-padding: 0.625rem;
    --CRM-toolbar-margin-bottom: 1rem;
    --CRM-module-content-padding: 1rem;
    --CRM-toolbar-padding-x: 0.375rem;
    --CRM-messagelist-padding-x: 1.25rem;
    --CRM-messagelist-padding-y: 2rem;
    --CRM-submitarea-padding-x: 1.25rem;
    --CRM-submitarea-padding-y: 0.5rem;
    --CRM-chatui-header-padding: 1.25rem;
    --CRM-chatui-header-padding-bottom: 0.5rem;
    --CRM-scheduler-panel-margin-top: 3.5rem;

    /* Keep non-focused multi-row selections distinct from the focused row. */
    --hrm-grid-selected-row-background: color-mix(in srgb, var(--vnta-color-primary) 8%, var(--vnta-bg-surface));
    --hrm-grid-selected-row-border: color-mix(in srgb, var(--vnta-color-primary) 35%, var(--vnta-border-color));
    --hrm-grid-selected-row-foreground: var(--vnta-text-primary);
}

.small-size {
    --CRM-icon-size: 1rem;
    --CRM-avatar-size: 1.5rem;
    --CRM-avatar-margin-left: 0.5rem;
    --CRM-toolbar-padding-x: 0.25rem;
    --CRM-messagelist-padding-x: 0.75rem;
    --CRM-messagelist-padding-y: 1.5rem;
    --CRM-submitarea-padding-x: 0.75rem;
    --CRM-submitarea-padding-y: 0.375rem;
    --CRM-chatui-header-padding: 0.75rem;
    --CRM-chatui-header-padding-bottom: 0.375rem;
    --CRM-scheduler-panel-margin-top: 3rem;
}

.large-size {
    --CRM-icon-size: 1.5rem;
    --CRM-avatar-size: 2.5rem;
    --CRM-avatar-margin-left: 1rem;
    --CRM-toolbar-padding-x: 0.5rem;
    --CRM-messagelist-padding-x: 1.75rem;
    --CRM-messagelist-padding-y: 2.5rem;
    --CRM-submitarea-padding-x: 1.75rem;
    --CRM-submitarea-padding-y: 0.625rem;
    --CRM-chatui-header-padding: 1.75rem;
    --CRM-chatui-header-padding-bottom: 0.625rem;
    --CRM-scheduler-panel-margin-top: 4rem;
}

html, body {
    height: 100%;
}

body {
    margin: 0;
    letter-spacing: var(--dxds-letter-spacing-base-md);
    background-color: var(--dxds-color-surface-neutral-subdued-rest);
}

/* Shared grid semantics. */
.hrm-grid-amount {
    font-variant-numeric: tabular-nums;
}

.hrm-grid-amount--total {
    color: var(--vnta-color-primary);
    font-weight: 700;
}

.hrm-grid-status {
    white-space: nowrap;
}

.yes-no-status-yes {
    color: var(--vnta-color-success, var(--dxds-color-content-success-default-rest));
}

.yes-no-status-no {
    color: var(--vnta-color-danger, var(--dxds-color-content-danger-default-rest));
}

.yes-no-status-info {
    color: var(--vnta-color-primary, var(--dxds-color-content-primary-default-rest));
}

.yes-no-status-neutral {
    color: var(--vnta-text-secondary, var(--dxds-color-content-neutral-subtle-rest));
}

/* Applies only to the portal-rendered employee status ComboBox dropdown. */
.employee-status-combobox-dropdown {
    --dxbl-list-box-item-hover-bg: transparent;
    --dxbl-list-box-item-hover-color: var(--dxbl-list-box-item-color);
    --dxbl-list-box-item-selected-hover-bg: var(--dxbl-list-box-item-selected-bg);
    --dxbl-list-box-item-selected-hover-color: var(--dxbl-list-box-item-selected-color);
}

/* ===========================================================================
   DXGRID SELECTED & FOCUSED ROW HIGH-CONTRAST TEXT STANDARDIZATION
   =========================================================================== */

/* Shared pill badges & key tags */
.vnta-badge {
    align-items: center;
    border-radius: 999px;
    display: inline-flex;
    font-size: .8125rem;
    font-weight: 600;
    gap: .35rem;
    line-height: 1.2;
    padding: .2rem .6rem;
    white-space: nowrap;
}

.vnta-badge-success {
    background: color-mix(in srgb, var(--vnta-color-success) 14%, var(--vnta-bg-surface));
    color: var(--vnta-color-success);
    border: 1px solid color-mix(in srgb, var(--vnta-color-success) 30%, transparent);
}

.vnta-badge-warning {
    background: color-mix(in srgb, var(--vnta-color-warning) 16%, var(--vnta-bg-surface));
    color: var(--vnta-color-warning);
    border: 1px solid color-mix(in srgb, var(--vnta-color-warning) 30%, transparent);
}

.vnta-badge-danger {
    background: color-mix(in srgb, var(--vnta-color-danger) 16%, var(--vnta-bg-surface));
    color: var(--vnta-color-danger);
    border: 1px solid color-mix(in srgb, var(--vnta-color-danger) 30%, transparent);
}

.vnta-badge-primary {
    background: color-mix(in srgb, var(--vnta-color-primary) 14%, var(--vnta-bg-surface));
    color: var(--vnta-color-primary);
    border: 1px solid color-mix(in srgb, var(--vnta-color-primary) 30%, transparent);
}

.vnta-badge-secondary {
    background: var(--vnta-bg-subtle);
    color: var(--vnta-text-secondary);
    border: 1px solid var(--vnta-border-color);
}

.vnta-key-tag {
    background: color-mix(in srgb, var(--vnta-text-secondary) 14%, transparent);
    border-radius: .25rem;
    color: var(--vnta-text-secondary);
    font-size: .75rem;
    font-family: monospace;
    padding: .1rem .35rem;
    display: inline-block;
}

/* Focused rows use DevExpress' dark accent surface and therefore need white text. */
:is(.dxbl-grid, .dxbl-treelist) tr:is(.dxbl-grid-focused-row, .dxbl-treelist-focused-row) > td,
:is(.dxbl-grid, .dxbl-treelist) tr:is(.dxbl-grid-focused-row, .dxbl-treelist-focused-row) > td :not(.dxbl-btn):not(.dxbl-btn *):not(button):not(button *):not(mark):not(mark *) {
    color: var(--dxds-color-content-neutral-inverted-rest) !important;
}

/* Focused row high-contrast adaptations for badges and tags (eliminates white-on-white blobs) */
:is(.dxbl-grid, .dxbl-treelist) tr:is(.dxbl-grid-focused-row, .dxbl-treelist-focused-row) .vnta-badge-secondary {
    background: rgba(255, 255, 255, 0.2) !important;
    color: var(--dxds-color-content-neutral-inverted-rest) !important;
    border-color: rgba(255, 255, 255, 0.4) !important;
}

:is(.dxbl-grid, .dxbl-treelist) tr:is(.dxbl-grid-focused-row, .dxbl-treelist-focused-row) .vnta-key-tag {
    background: rgba(255, 255, 255, 0.22) !important;
    color: var(--dxds-color-content-neutral-inverted-rest) !important;
}

:is(.dxbl-grid, .dxbl-treelist) tr:is(.dxbl-grid-focused-row, .dxbl-treelist-focused-row) .vnta-badge-primary {
    background: rgba(255, 255, 255, 0.24) !important;
    color: var(--dxds-color-content-neutral-inverted-rest) !important;
    border-color: rgba(255, 255, 255, 0.45) !important;
}

:is(.dxbl-grid, .dxbl-treelist) tr:is(.dxbl-grid-focused-row, .dxbl-treelist-focused-row) .vnta-badge-success {
    background: color-mix(in srgb, var(--vnta-color-success) 45%, transparent) !important;
    color: #ffffff !important;
    border-color: rgba(255, 255, 255, 0.45) !important;
}

:is(.dxbl-grid, .dxbl-treelist) tr:is(.dxbl-grid-focused-row, .dxbl-treelist-focused-row) .vnta-badge-warning {
    background: color-mix(in srgb, var(--vnta-color-warning) 50%, transparent) !important;
    color: #ffffff !important;
    border-color: rgba(255, 255, 255, 0.45) !important;
}

:is(.dxbl-grid, .dxbl-treelist) tr:is(.dxbl-grid-focused-row, .dxbl-treelist-focused-row) .vnta-badge-danger {
    background: color-mix(in srgb, var(--vnta-color-danger) 50%, transparent) !important;
    color: #ffffff !important;
    border-color: rgba(255, 255, 255, 0.45) !important;
}

/* Selected rows that are not focused stay on a light tint with a dark readable foreground. */
:is(.dxbl-grid, .dxbl-treelist) tr:is(.dxbl-grid-selected-row:not(.dxbl-grid-focused-row):not(.dxbl-treelist-focused-row), .dxbl-treelist-selected-row:not(.dxbl-grid-focused-row):not(.dxbl-treelist-focused-row), [aria-selected="true"]:not(.dxbl-grid-focused-row):not(.dxbl-treelist-focused-row)) > td {
    background-color: var(--hrm-grid-selected-row-background) !important;
    border-block-end: 1px solid var(--hrm-grid-selected-row-border) !important;
    color: var(--hrm-grid-selected-row-foreground) !important;
}

/* Search highlights stay legible instead of inheriting the selected-row text color. */
:is(.dxbl-grid, .dxbl-treelist) mark,
:is(.dxbl-grid, .dxbl-treelist) mark * {
    background-color: var(--vnta-bg-highlight) !important;
    color: var(--vnta-text-highlight) !important;
    border-radius: 0.2rem;
    padding: 0 0.125rem;
}

*, ::after, ::before {
    box-sizing: border-box
}

.icon {
    opacity: 0.7;
    background-size: contain;
    mask-repeat: no-repeat;
    mask-position: center center;
    mask-size: 100% 100%;
    background-color: currentColor;
}

.medium-icon {
    width: var(--CRM-icon-size);
    height: var(--CRM-icon-size);
}

.avatar {
    width: var(--CRM-avatar-size);
    height: var(--CRM-avatar-size);
    margin-left: var(--CRM-avatar-margin-left);
}

.icon.small-icon {
    width: 0.75rem;
    height: 0.75rem;
}

.hamburger-icon {
    -webkit-mask-image: url("images/icons/navigation.svg");
    mask-image: url("images/icons/navigation.svg");
}

.sun-icon {
    mask-image: url("images/icons/weather-sunny.svg");
}

.moon-icon {
    mask-image: url("images/icons/weather-moon.svg");
}

.bell-icon {
    mask-image: url("images/icons/bell.svg");
}

.github-icon {
    mask-image: url("images/icons/github.svg");
}

.back-icon {
    mask-image: url("images/icons/arrow-left.svg");
}

.copy-icon {
    mask-image: url("images/icons/copy.svg");
}

.refresh-icon {
    mask-image: url("images/icons/arrow-sync.svg");
}

.person-add-icon {
    mask-image: url("images/icons/person-add.svg");
}

.sign-out-icon {
    mask-image: url("images/icons/sign-out.svg");
}

.call-icon {
    mask-image: url("images/icons/call.svg");
}

.mail-icon {
    mask-image: url("images/icons/mail.svg");
}

.more-icon {
    mask-image: url("images/icons/more-horizontal.svg");
}

.ai-chat-icon {
    mask-image: url("images/icons/ai-chat.svg");
}

.notification {
    position: relative;
}

.notification::after {
    content: attr(notification-count) / "";
    color: white;
    display: flex;
    position: absolute;
    top: 0;
    left: 5%;
    font-size: 0.8em;
    width: 1.2em;
    height: 1.2em;
    border-radius: 50%;
    background-color: red;
    align-items: center;
    justify-content: center;
}

.dropdown-no-padding {
    --dxbl-dropdown-body-padding-x: 0;
    --dxbl-dropdown-body-padding-y: 0;
}

@media (min-width: 899.98px) {
    .pw-800 {
        max-width: 800px !important;
        width: 800px !important;
    }
}

.loading-panel {
    height: 100%;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}

.loading-panel > .loader {
    display: flex;
    align-items: center;
}

.loading-panel > .loader > .spinner {
    width: 2rem;
    height: 2rem;
    border: 0.25rem solid color-mix(in sRGB, var(--dxds-color-surface-primary-default-rest) 30%, transparent);
    border-bottom-color: var(--dxds-color-surface-primary-default-rest);
    border-radius: 50%;
    display: inline-block;
    box-sizing: border-box;
    animation: rotation 0.75s linear infinite;
}

.loading-panel > .loader > .label {
    color: var(--vnta-text-primary);
    font-size: var(--dxds-font-size-base-lg);
    font-weight: var(--dxds-font-weight-base-strong);
    margin-left: 0.75rem;
}

@keyframes rotation {
    0% {
        transform: rotate(0deg);
    }

    100% {
        transform: rotate(360deg);
    }
}

/* Used by the shared matrix-permission read-only guard for non-native buttons. */
.screen-permission-mutation-disabled,
[data-screen-permission-guard-disabled] {
    cursor: not-allowed !important;
    opacity: .55;
    pointer-events: none !important;
}
