﻿
/* ═══════════════════════════════════════════════════
   FORM CONTROLS
   ═══════════════════════════════════════════════════ */

.ui-control-label {
    display: block;
    font-size: var(--ui-font-size-base);
    color: var(--ui-text-secondary);
    font-weight: var(--ui-font-weight-medium);
    margin-bottom: var(--ui-space-1);
}

.ui-control-label--required::after {
    content: " *";
    color: var(--ui-error);
}


.ui-field-row {
    display: flex;
    gap: var(--ui-space-3);
    margin-bottom: var(--ui-space-3);
    flex-wrap: wrap;
}

.ui-helper-text {
    display: block;
    font-size: var(--ui-font-size-sm);
    color: var(--ui-text-tertiary);
    margin-top: var(--ui-space-1);
}

.ui-validation-message {
    display: block;
    font-size: var(--ui-font-size-sm);
    color: var(--ui-error);
    margin-top: var(--ui-space-1);
}

.ui-input-with-suffix {
    position: relative;
    display: flex;
    align-items: center;
}

.ui-input-suffix {
    position: absolute;
    right: var(--ui-space-2);
    bottom: var(--ui-space-2);
    font-size: var(--ui-font-size-sm);
    color: var(--ui-text-tertiary);
    pointer-events: none;
    user-select: none;
}

.ui-field--locked .ui-control-label {
    color: var(--ui-text-disabled);
}

/* ═══════════════════════════════════════════════════
   CARDS  (formerly: SECTIONS)
   ═══════════════════════════════════════════════════ */

.ui-card {
    background: var(--ui-surface);
    border: 0.5px solid var(--ui-border);
    border-radius: var(--ui-radius-lg);
    margin-bottom: var(--ui-space-3);
    overflow: hidden;
}

.ui-card--focused {
    border-left: 3px solid var(--ui-accent);
}

.ui-card--disabled {
    opacity: 0.6;
    pointer-events: none;
    user-select: none;
}

.ui-card-body {
    padding: var(--ui-space-4);
}

.ui-card-header {
    display: flex;
    align-items: center;
    gap: var(--ui-space-3);
    padding: var(--ui-space-3) var(--ui-space-4);
    background: var(--ui-surface-subtle);
    border-bottom: 0.5px solid var(--ui-border);
    cursor: pointer;
    user-select: none;
}

    .ui-card-header:hover {
        background: var(--ui-surface-hover);
    }

.ui-card-header-controls {
    display: flex;
    align-items: center;
    gap: var(--ui-space-2);
    margin-left: auto;
}

.ui-card-title {
    margin: 0;
    font-size: var(--ui-font-size-md);
    font-weight: var(--ui-font-weight-semibold);
    color: var(--ui-text-primary);
    flex: 1;
    display: flex;
    align-items: center;
    gap: var(--ui-space-2);
}

/* ═══════════════════════════════════════════════════
   STATUS INDICATORS
   ═══════════════════════════════════════════════════ */

.ui-badge {
    display: inline-flex;
    align-items: center;
    padding: var(--ui-space-1) var(--ui-space-3);
    font-size: var(--ui-font-size-sm);
    font-weight: var(--ui-font-weight-semibold);
    border-radius: var(--ui-radius-pill);
    white-space: nowrap;
    flex-shrink: 0;
}

.ui-badge--complete {
    background: var(--ui-success-soft-bg);
    color: var(--ui-success-soft-fg);
}

.ui-badge--warning {
    background: var(--ui-warning-soft-bg);
    color: var(--ui-warning-soft-fg);
}

.ui-badge--error {
    background: var(--ui-error-soft-bg);
    color: var(--ui-error-soft-fg);
}

.ui-badge--info {
    background: var(--ui-info-soft-bg);
    color: var(--ui-info-soft-fg);
}

.ui-badge--neutral {
    background: var(--ui-surface-subtle);
    color: var(--ui-text-tertiary);
}

.ui-badge--new {
    background: #e6f7ee;
    color: #2f7a4d;
    border: 1px solid #a3d9b8;
}

.ui-badge--editing {
    background: var(--ui-warning-soft-bg);
    color: var(--ui-warning-soft-fg);
    border: 1px solid #f5c57a;
}

.ui-badge--saved {
    background: var(--ui-success-soft-bg);
    color: var(--ui-success-soft-fg);
    border: 1px solid #639922;
}

.ui-status-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--ui-border-strong);
    flex-shrink: 0;
}

.ui-status-dot--complete {
    background: var(--ui-success);
}

.ui-status-dot--warning {
    background: var(--ui-warning);
}

.ui-status-dot--error {
    background: var(--ui-error);
}

.ui-status-dot--active {
    background: var(--ui-accent);
}

.ui-status-icon--complete {
    color: var(--ui-success);
}

.ui-status-icon--warning {
    color: var(--ui-warning);
}

.ui-status-icon--error {
    color: var(--ui-error);
}

/* ═══════════════════════════════════════════════════
   COLLAPSE / EXPAND
   ═══════════════════════════════════════════════════ */

.ui-collapse-arrow {
    font-size: var(--ui-font-size-sm);
    color: var(--ui-text-tertiary);
    transition: transform var(--ui-transition-base);
    display: inline-block;
}

.ui-collapse-arrow--open {
    transform: rotate(90deg);
}

/* ═══════════════════════════════════════════════════
   ACTION ROW
   ═══════════════════════════════════════════════════ */

.ui-action-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: var(--ui-space-4);
    padding-top: var(--ui-space-3);
    border-top: 0.5px solid var(--ui-border);
}

/* ═══════════════════════════════════════════════════
   BUTTONS  (used outside Telerik components)
   ═══════════════════════════════════════════════════ */

.ui-btn {
    display: inline-flex;
    align-items: center;
    gap: var(--ui-space-1);
    padding: var(--ui-space-2) var(--ui-space-4);
    font-size: var(--ui-font-size-md);
    font-weight: var(--ui-font-weight-medium);
    border: none;
    border-radius: var(--ui-radius-md);
    cursor: pointer;
    white-space: nowrap;
    transition: background var(--ui-transition-fast);
}

.ui-btn--primary {
    background: var(--ui-accent);
    color: var(--ui-text-on-accent);
}

    .ui-btn--primary:hover {
        background: var(--ui-accent-hover);
    }

.ui-btn--secondary {
    background: transparent;
    color: var(--ui-text-secondary);
    border: 1px solid var(--ui-border-strong);
}

    .ui-btn--secondary:hover {
        background: var(--ui-surface-subtle);
    }

.ui-btn--ghost {
    background: transparent;
    color: var(--ui-text-secondary);
    border: 1px solid var(--ui-border-strong);
    font-size: var(--ui-font-size-base);
    padding: var(--ui-space-1) var(--ui-space-3);
}

    .ui-btn--ghost:hover {
        background: var(--ui-surface-subtle);
    }

.ui-btn--link {
    background: none;
    border: none;
    padding: 0;
    font-size: var(--ui-font-size-base);
    color: var(--ui-accent);
    cursor: pointer;
}

    .ui-btn--link:hover {
        text-decoration: underline;
    }

.ui-btn:disabled,
.ui-btn--disabled {
    opacity: 0.38;
    cursor: not-allowed;
    pointer-events: none;
}

/* ═══════════════════════════════════════════════════
   DIVIDER
   ═══════════════════════════════════════════════════ */

.ui-divider {
    height: 0.5px;
    background: var(--ui-border);
    margin: var(--ui-space-3) 0;
    border: none;
}

/* ═══════════════════════════════════════════════════
   PLACEHOLDER / EMPTY STATE
   ═══════════════════════════════════════════════════ */

.ui-placeholder {
    background: var(--ui-surface-subtle);
    border: 1px dashed var(--ui-border);
    border-radius: var(--ui-radius-md);
    padding: var(--ui-space-4);
    font-size: var(--ui-font-size-base);
    color: var(--ui-text-tertiary);
    text-align: center;
}

/* ═══════════════════════════════════════════════════
   WORKSPACE BAR
   The horizontal toolbar above the configuration content
   ═══════════════════════════════════════════════════ */

.ui-workspace-bar {
    background: var(--ui-surface);
    border-bottom: 0.5px solid var(--ui-border);
    padding: 0 var(--ui-space-4) var(--ui-space-2); /* top right-left bottom */
    min-height: 42px;
    display: flex;
    align-items: center;
    gap: var(--ui-space-2);
    flex-shrink: 0;
    overflow-x: auto;
    overflow-y: hidden;
    white-space: nowrap;
}

.ui-ws-group {
    display: flex;
    align-items: center;
    gap: 8px; /* increased from 5px for more breathing room */
    padding: 0 var(--ui-space-3);
    border-left: 0.5px solid var(--ui-border);
    border-right: 0.5px solid var(--ui-border);
    height: 100%;
    flex-shrink: 0;
}

.ui-ws-group--no-divider {
    border-left: none;
    border-right: none;
    padding: 0;
}

.ui-ws-label {
    font-size: var(--ui-font-size-base);
    font-weight: var(--ui-font-weight-medium);
    color: var(--ui-text-secondary);
    white-space: nowrap;
    margin-bottom:0px;
}

.ui-ws-value {
    font-size: var(--ui-font-size-base);
    font-weight: var(--ui-font-weight-bold);
    color: var(--ui-text-primary);
    white-space: nowrap;
    flex-shrink: 0;
}

.ui-ws-value--placeholder {
    color: var(--ui-text-tertiary);
    font-weight: var(--ui-font-weight-regular);
}

.ui-ws-menu {
    display: flex;
    align-items: center;
    gap: var(--ui-space-1);
    flex: 1;
    min-width: 0;
}

.ui-ws-spacer {
    flex: 1;
}

.ui-ws-separator {
    width: 1px;
    height: 22px;
    background: var(--ui-border);
    margin: 0 var(--ui-space-1);
    flex-shrink: 0;
}

/* ═══════════════════════════════════════════════════
   PANE SECTION LABEL
   Small uppercase header above content sections
   ═══════════════════════════════════════════════════ */

.ui-pane-section-label {
    font-size: var(--ui-font-size-sm);
    font-weight: var(--ui-font-weight-medium);
    color: var(--ui-text-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-top: var(--ui-space-5);
    margin-bottom: var(--ui-space-3);
}

/* ═══════════════════════════════════════════════════
   SEARCH INPUT
   Prominent search box used for primary lookups
   ═══════════════════════════════════════════════════ */

.ui-search-wrap {
    position: relative;
    margin-bottom: 0;
}

    /* The search input itself — applied to Telerik inputs via override */
    .ui-search-wrap .k-input {
        border: 2px solid var(--ui-accent-bright) !important;
        border-radius: var(--ui-radius-lg) !important;
        font-size: var(--ui-font-size-xl) !important;
        font-weight: var(--ui-font-weight-medium) !important;
    }

        .ui-search-wrap .k-input:focus-within {
            border-color: var(--ui-accent) !important;
            box-shadow: 0 0 0 3px rgba(55,138,221,0.15) !important;
        }

/* ═══════════════════════════════════════════════════
   SECONDARY TOGGLE ROW
   Inline text-button toggles (e.g. "Recent models")
   ═══════════════════════════════════════════════════ */

.ui-toggle-row {
    display: flex;
    align-items: center;
    margin-top: var(--ui-space-2);
}

.ui-toggle-btn {
    display: inline-flex;
    align-items: center;
    gap: var(--ui-space-1);
    font-size: var(--ui-font-size-base);
    color: var(--ui-text-secondary);
    background: none;
    border: none;
    cursor: pointer;
    padding: var(--ui-space-1) 0;
}

    .ui-toggle-btn:hover {
        color: var(--ui-accent);
    }

.ui-toggle-arrow {
    font-size: var(--ui-font-size-xs);
    display: inline-block;
    transition: transform var(--ui-transition-base);
}

.ui-toggle-arrow--open {
    transform: rotate(90deg);
}

.ui-toggle-divider {
    width: 1px;
    height: 13px;
    background: var(--ui-border);
    margin: 0 var(--ui-space-3);
}

/* ═══════════════════════════════════════════════════
   SUB-PANEL
   Expanded content area below a toggle
   ═══════════════════════════════════════════════════ */

.ui-sub-panel {
    margin-top: var(--ui-space-2);
    padding: var(--ui-space-3);
    background: var(--ui-surface-subtle);
    border-radius: var(--ui-radius-md);
}

.ui-sub-panel-hint {
    font-size: var(--ui-font-size-base);
    color: var(--ui-text-tertiary);
    font-style: italic;
}

/* ═══════════════════════════════════════════════════
   SUB-SECTION  (used inside a pane, below ui-pane-section-label)
   ═══════════════════════════════════════════════════ */

.ui-subsection {
    margin-top: var(--ui-space-4);
}

.ui-subsection-label {
    display: flex;
    align-items: center;
    gap: var(--ui-space-2);
    font-size: var(--ui-font-size-base);
    font-weight: var(--ui-font-weight-semibold);
    color: var(--ui-text-primary);
    margin-bottom: var(--ui-space-2);
}

.ui-subsection .k-input,
.ui-subsection .k-input-inner {
    font-size: var(--ui-font-size-md) !important;
}

.ui-subsection .k-input-inner {
    padding: var(--ui-space-2) var(--ui-space-3) !important;
}

.ui-text-muted {
    color: var(--ui-text-tertiary);
    font-weight: var(--ui-font-weight-regular);
}
.ui-action-row--end {
    justify-content: flex-end;
}
/* ═══════════════════════════════════════════════════
   COMBOBOX ITEM (two-line dropdown items)
   Mirrors the ui-chip pattern but stacked for dropdowns.
   ═══════════════════════════════════════════════════ */

.ui-combo-item {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: var(--ui-space-1) 0;
}

.ui-combo-item-primary {
    font-size: var(--ui-font-size-md);
    font-weight: var(--ui-font-weight-medium);
    color: var(--ui-accent-dark);
    line-height: 1.3;
}

.ui-combo-item-secondary {
    font-size: var(--ui-font-size-sm);
    color: var(--ui-text-tertiary);
    line-height: 1.3;
}

/* Make sure Telerik's list item lets the template breathe */
.k-list-item:has(.ui-combo-item) {
    padding-block: var(--ui-space-2);
}


/* ═══════════════════════════════════════════════════
   PER-ITEM TAGS PANEL
   ═══════════════════════════════════════════════════ */

.ui-per-item {
    margin-top: var(--ui-space-3);
    padding: var(--ui-space-3);
    background: var(--ui-surface-subtle);
    border-radius: var(--ui-radius-md);
}

.ui-per-item-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--ui-space-3);
}

.ui-per-item-title {
    font-size: var(--ui-font-size-md);
    font-weight: var(--ui-font-weight-semibold);
    color: var(--ui-text-primary);
}

.ui-per-item-actions {
    display: flex;
    gap: var(--ui-space-2);
}

.ui-per-item-grid {
    max-height: 320px;
    overflow-y: auto;
}


/* ═══════════════════════════════════════════════════
   PER-ITEM GRID — CHANGED-FROM-DEFAULT INDICATOR
   Telerik input override: highlights cells whose value
   has been edited away from the shared default.
   ═══════════════════════════════════════════════════ */

.ui-input-override .k-input {
    background: var(--ui-surface) !important;
}

.ui-input-override--changed .k-input {
    background: var(--ui-warning-soft-bg) !important;
    border-color: var(--ui-warning) !important;
}

/* ═══════════════════════════════════════════════════
   ITEM CHIPS
   Small selectable items in lists (e.g. recent models)
   ═══════════════════════════════════════════════════ */

.ui-chip-list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--ui-space-2);
}

.ui-chip {
    display: inline-flex;
    align-items: center;
    gap: var(--ui-space-2);
    padding: var(--ui-space-2) var(--ui-space-3);
    border: 1px solid var(--ui-border-strong);
    border-radius: var(--ui-radius-md);
    cursor: pointer;
    background: var(--ui-surface);
    transition: background var(--ui-transition-fast), border-color var(--ui-transition-fast);
}

    .ui-chip:hover {
        border-color: var(--ui-accent-bright);
        background: var(--ui-accent-soft);
    }

.ui-chip-primary {
    font-size: var(--ui-font-size-md);
    font-weight: var(--ui-font-weight-medium);
    color: var(--ui-accent-dark);
}

.ui-chip-secondary {
    font-size: var(--ui-font-size-sm);
    color: var(--ui-text-tertiary);
}

/* ═══════════════════════════════════════════════════
   BROWSE-BY-GROUP LAYOUT
   Two-column dropdown layout used in product browse
   ═══════════════════════════════════════════════════ */

.ui-browse-row {
    display: flex;
    gap: var(--ui-space-4);
    margin-bottom: var(--ui-space-3);
}

.ui-browse-field {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: var(--ui-space-1);
}

    .ui-browse-field label {
        font-size: var(--ui-font-size-base);
        font-weight: var(--ui-font-weight-medium);
        color: var(--ui-text-secondary);
    }

/* ═══════════════════════════════════════════════════
   SELECTION BAR
   Display of a currently-selected item with "change" link
   ═══════════════════════════════════════════════════ */

.ui-selection-bar {
    display: flex;
    align-items: flex-start;
    gap: var(--ui-space-4);
    padding: var(--ui-space-3) var(--ui-space-4);
    background: var(--ui-accent-soft);
    border-radius: var(--ui-radius-md);
}

.ui-selection-info {
    flex: 1;
}

.ui-selection-name {
    font-size: var(--ui-font-size-md);
    font-weight: var(--ui-font-weight-medium);
    color: var(--ui-accent-dark);
}

.ui-selection-change {
    font-size: var(--ui-font-size-base);
    color: var(--ui-accent);
    background: none;
    border: none;
    cursor: pointer;
    padding: 0;
    text-decoration: underline;
}

    .ui-selection-change:hover {
        color: var(--ui-accent-hover);
    }

/* ═══════════════════════════════════════════════════
   TELERIK OVERRIDES
   ═══════════════════════════════════════════════════
   Important
   The rules below target Telerik internal classes (.k-*).
   They are subject to breakage on Telerik major upgrades.
   When upgrading Telerik, audit this section first.
   ═══════════════════════════════════════════════════ */

/* Tooltip restyle to match design system navy */
.k-tooltip.ui-themed-tooltip {
    background-color: var(--ui-nav-bg) !important;
    color: var(--ui-nav-text) !important;
    border: none !important;
    border-radius: var(--ui-radius-md) !important;
    box-shadow: var(--ui-shadow-md) !important;
    font-size: var(--ui-font-size-sm) !important;
    font-weight: var(--ui-font-weight-regular) !important;
    line-height: 1.5 !important;
    padding: var(--ui-space-2) var(--ui-space-3) !important;
    max-width: 280px !important;
}

    .k-tooltip.ui-themed-tooltip .k-callout {
        color: var(--ui-nav-bg) !important;
    }

    .k-tooltip.ui-themed-tooltip .k-tooltip-content,
    .ui-themed-tooltip .k-tooltip-content {
        color: var(--ui-nav-text) !important;
        font-size: var(--ui-font-size-sm) !important;
        line-height: 1.5 !important;
    }

.k-tooltip-content {
    color: var(--ui-nav-text) !important;
    font-size: var(--ui-font-size-sm) !important;
    line-height: 1.5 !important;
}

/* Inline numeric inputs in the workspace bar — narrow, centered, bold */
.ui-ws-input-narrow .k-numerictextbox,
.ui-ws-input-narrow .k-dropdownlist {
    width: 68px !important;
}

.ui-ws-input-narrow .k-input-inner {
    text-align: center;
    font-size: var(--ui-font-size-md);
    font-weight: var(--ui-font-weight-semibold);
}

.ui-ws-input-narrow.ui-input--invalid .k-numerictextbox,
.ui-ws-input-narrow.ui-input--invalid .k-input-inner {
    border-color: var(--ui-error) !important;
    background: var(--ui-error-soft-bg) !important;
}


.ui-workspace-bar .k-button-flat {
    color: var(--ui-accent) !important;
}

    .ui-workspace-bar .k-button-flat:hover {
        background: var(--ui-accent-soft) !important;
        color: var(--ui-accent) !important;
    }

    .ui-workspace-bar .k-button-flat:disabled,
    .ui-workspace-bar .k-button-flat.k-disabled {
        color: var(--ui-text-disabled) !important;
    }

/* ═══════════════════════════════════════════════════
   TOOLTIP ICON
   ═══════════════════════════════════════════════════ */

.ui-tooltip-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 14px;
    height: 14px;
    margin-left: var(--ui-space-1);
    border: 1px solid var(--ui-border);
    border-radius: 50%;
    background: var(--ui-surface-subtle);
    color: var(--ui-text-tertiary);
    font-size: 8px;
    font-weight: var(--ui-font-weight-semibold);
    line-height: 1;
    cursor: help;
    user-select: none;
    transition: background var(--ui-transition-fast), color var(--ui-transition-fast), border-color var(--ui-transition-fast);
}

.ui-tooltip-icon:hover {
    background: var(--ui-accent-soft);
    color: var(--ui-accent);
    border-color: var(--ui-accent-bright);
}

/* Unsaved-changes banner — warning band above the tile grid */
.ui-unsaved-banner {
    background: var(--ui-warning-soft-bg);
    border-left: 3px solid var(--ui-warning);
    color: var(--ui-warning-soft-fg);
    padding: var(--ui-space-2) var(--ui-space-3);
    margin-bottom: var(--ui-space-2);
    font-size: var(--ui-font-size-base);
    border-radius: var(--ui-radius-sm);
}

/* Validation summary — error band below the tile grid */
.ui-validation-summary {
    background: var(--ui-error-soft-bg);
    border: 1px solid var(--ui-error);
    color: var(--ui-error-soft-fg);
    padding: var(--ui-space-3) var(--ui-space-4);
    margin-top: var(--ui-space-3);
    margin-bottom: var(--ui-space-3);
    border-radius: var(--ui-radius-md);
    font-size: var(--ui-font-size-base);
}

    .ui-validation-summary h5 {
        margin: 0 0 var(--ui-space-2) 0;
        font-size: var(--ui-font-size-md);
        font-weight: var(--ui-font-weight-semibold);
    }

    .ui-validation-summary ul {
        margin: 0;
        padding-left: var(--ui-space-5);
    }


/* ═══════════════════════════════════════════════════
   SETTINGS TILE LAYOUT
   ═══════════════════════════════════════════════════ */

.ui-settings-tiles.k-tilelayout {
    height: auto !important;
    max-width: 100%;
    background: transparent !important;
    padding: 0 !important;
}

/* Tile card — restore hover lift */
.ui-settings-tiles .k-tilelayout-item {
    background: var(--ui-surface) !important;
    border: 0.5px solid var(--ui-border) !important;
    border-radius: var(--ui-radius-lg) !important;
    box-shadow: none !important;
    overflow: hidden;
    transition: box-shadow var(--ui-transition-base),
                border-color var(--ui-transition-fast);
}

    .ui-settings-tiles .k-tilelayout-item:hover {
        border-color: var(--ui-border-strong) !important;
        box-shadow: var(--ui-shadow-hover) !important;
    }

.ui-settings-tiles .k-tilelayout-item-header {
    background: var(--ui-surface-subtle) !important;
    border-bottom: 0.5px solid var(--ui-border) !important;
    padding: var(--ui-space-3) var(--ui-space-4) !important;
    color: var(--ui-text-primary) !important;
    font-size: var(--ui-font-size-md) !important;
    font-weight: var(--ui-font-weight-semibold) !important;
    cursor: move;
}

    .ui-settings-tiles .k-tilelayout-item-header .k-tilelayout-item-header-title {
        color: var(--ui-text-primary) !important;
        font-size: var(--ui-font-size-md) !important;
        font-weight: var(--ui-font-weight-semibold) !important;
    }

/* Body — full padding now that the header has its own band */
.ui-settings-tiles .k-tilelayout-item-body {
    padding: var(--ui-space-4) !important;
    display: flex;
    flex-direction: column;
    gap: var(--ui-space-3);
}

/* ═══════════════════════════════════════════════════
   PARENT CHAIN OVERRIDES
   Force the CardContainerComponent's wrappers to be
   bounded so the page's internal scroll regions work.
   ═══════════════════════════════════════════════════ */

.k-splitter-pane.k-scrollable:has(.schedule-item-config-page) {
    overflow: hidden !important;
}

.k-splitter-pane:has(.schedule-item-config-page) .card-container {
    height: 100%;
    min-height: 0;
    display: flex; /* override the .grid class behavior */
    flex-direction: column;
}


.k-splitter-pane:has(.schedule-item-config-page) .card-component {
    flex: 1;
    min-height: 0;
    overflow: hidden;
}

/* ═══════════════════════════════════════════════════
   PAGE LAYOUT — SCHEDULE ITEM CONFIGURATION
   The page is composed of four regions stacked
   vertically (banner, toolbar, body, modals), with
   the body splitting horizontally into a sidebar
   and the main content area.
   ═══════════════════════════════════════════════════ */

.schedule-item-config-page {
    display: flex;
    flex-direction: column;
    height: calc(100dvh - 100px);
    min-height: 0;
    overflow: hidden;
}

.page-region {
    /* base region — extended by modifier classes below */
}

.page-region--banner {
    flex-shrink: 0;
}

.page-region--toolbar {
    flex-shrink: 0;
}

.page-region--body {
    display: flex;
    flex-direction: row;
    gap: var(--ui-space-4);
    flex: 1;
    min-height: 0;
}

.page-region--sidebar {
    flex-shrink: 0;
    width: 220px;
    background: var(--ui-surface);
    border-right: 0.5px solid var(--ui-border);
    padding: var(--ui-space-3);
}

.page-region--content {
    flex: 1;
    min-width: 0;
    padding: var(--ui-space-3) var(--ui-space-4);
    overflow-y: auto;
}

/* ═══════════════════════════════════════════════════
   SIDEBAR NAVIGATION
   Left-rail navigation for the configurator page —
   mode toggle, section nav, product info card.
   ═══════════════════════════════════════════════════ */

.ui-sidebar {
    width: 200px;
    flex-shrink: 0;
    border-right: 0.5px solid var(--ui-border);
    background: var(--ui-surface);
    overflow-y: auto;
    overflow-x: hidden;
    padding: var(--ui-space-3) 0;
}

/* ── Mode toggle (Guided / Expert) ─────────────── */

.ui-sidebar-mode-toggle {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--ui-space-2);
    padding: var(--ui-space-3);
    margin-bottom: var(--ui-space-2);
}

.ui-mode-label {
    font-size: var(--ui-font-size-base);
    color: var(--ui-text-tertiary);
    font-weight: var(--ui-font-weight-medium);
    cursor: pointer;
    user-select: none;
}

.ui-mode-label--active {
    color: var(--ui-accent);
}

.ui-mode-switch {
    position: relative;
    display: inline-block;
    width: 32px;
    height: 16px;
    cursor: pointer;
    flex-shrink: 0;
}

    .ui-mode-switch input[type="checkbox"] {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        margin: 0;
        padding: 0;
        opacity: 0;
        cursor: pointer;
        z-index: 2;
        appearance: none;
        -webkit-appearance: none;
    }

.ui-mode-switch-track {
    position: absolute;
    inset: 0;
    background: var(--ui-border-muted);
    border-radius: 16px;
    transition: background var(--ui-transition-fast);
    z-index: 1;
}

    .ui-mode-switch-track::before {
        content: '';
        position: absolute;
        height: 12px;
        width: 12px;
        left: 2px;
        top: 2px;
        background: var(--ui-surface);
        border-radius: 50%;
        transition: transform var(--ui-transition-base);
        box-shadow: var(--ui-shadow-xs);
    }

.ui-mode-switch input[type="checkbox"]:checked + .ui-mode-switch-track {
    background: var(--ui-accent);
}

    .ui-mode-switch input[type="checkbox"]:checked + .ui-mode-switch-track::before {
        transform: translateX(16px);
    }
/* ── Divider ───────────────────────────────────── */

.ui-sidebar-divider {
    height: 0.5px;
    background: var(--ui-border);
    margin: var(--ui-space-2) var(--ui-space-3);
}

/* ── Product info card ─────────────────────────── */

.ui-sb-product-card {
    margin: 0 var(--ui-space-3) var(--ui-space-3);
}

.ui-sb-product-tab {
    display: inline-flex;
    align-items: center;
    gap: var(--ui-space-1);
    padding: var(--ui-space-1) var(--ui-space-2);
    font-size: var(--ui-font-size-sm);
    color: var(--ui-accent);
    border-bottom: 2px solid var(--ui-accent);
    margin-bottom: var(--ui-space-2);
}

.ui-sb-product-tab-icon {
    font-size: var(--ui-font-size-md);
}

.ui-sb-product-image {
    background: var(--ui-surface-subtle);
    border: 0.5px solid var(--ui-border);
    border-radius: var(--ui-radius-md);
    padding: var(--ui-space-3);
    aspect-ratio: 4 / 3;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

    .ui-sb-product-image img {
        max-width: 100%;
        max-height: 100%;
        object-fit: contain;
    }

.ui-sb-product-placeholder {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--ui-space-2);
    color: var(--ui-text-tertiary);
    font-size: var(--ui-font-size-sm);
    text-align: center;
}

    .ui-sb-product-placeholder svg {
        width: 60px;
        height: 45px;
        opacity: 0.4;
    }

/* ── Static docs button ────────────────────────── */

.ui-sb-doc-button {
    display: flex;
    align-items: center;
    gap: var(--ui-space-2);
    width: calc(100% - var(--ui-space-3) * 2);
    margin: 0 var(--ui-space-3);
    padding: var(--ui-space-2) var(--ui-space-3);
    background: var(--ui-surface);
    border: 0.5px solid var(--ui-border);
    border-radius: var(--ui-radius-md);
    color: var(--ui-accent);
    font-size: var(--ui-font-size-base);
    font-weight: var(--ui-font-weight-medium);
    cursor: pointer;
    text-align: left;
    transition: background var(--ui-transition-fast), border-color var(--ui-transition-fast);
}

    .ui-sb-doc-button:hover {
        background: var(--ui-accent-soft);
        border-color: var(--ui-accent-bright);
    }

.ui-sb-doc-icon {
    font-size: var(--ui-font-size-md);
}

.ui-sb-doc-label {
    flex: 1;
}

.ui-sb-doc-external {
    color: var(--ui-text-tertiary);
    font-size: var(--ui-font-size-base);
}


/* ═══════════════════════════════════════════════════
   SIDEBAR NAV ITEMS
   Individual nav rows: dot indicator, label, badge.
   Used inside .ui-sidebar.
   ═══════════════════════════════════════════════════ */

.ui-nav-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--ui-space-2) var(--ui-space-3);
    font-size: var(--ui-font-size-base);
    color: var(--ui-text-secondary);
    border-left: 2px solid transparent;
    cursor: pointer;
    user-select: none;
    transition: background var(--ui-transition-fast), color var(--ui-transition-fast);
}

    .ui-nav-item:hover {
        background: var(--ui-surface-subtle);
        color: var(--ui-text-primary);
    }

.ui-nav-item--active {
    background: var(--ui-accent-soft);
    color: var(--ui-accent);
    border-left-color: var(--ui-accent);
    font-weight: var(--ui-font-weight-medium);
}

.ui-nav-item--active:hover {
    background: var(--ui-accent-soft);
    color: var(--ui-accent);
}

.ui-nav-item--disabled {
    color: var(--ui-text-disabled);
    opacity: 0.5;
    pointer-events: none;
}

.ui-nav-item-left {
    display: flex;
    align-items: center;
    gap: var(--ui-space-2);
}

/* ── Status dot ───────────────────────────────── */

.ui-nav-item-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--ui-border-strong);
    flex-shrink: 0;
}

.ui-nav-item--active .ui-nav-item-dot {
    background: var(--ui-accent);
}

.ui-nav-item--disabled .ui-nav-item-dot {
    background: var(--ui-border-muted);
}

/* ── Badges (Ok / Warn / Skipped) ─────────────── */

.ui-nav-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 16px;
    height: 16px;
    padding: 0 var(--ui-space-1);
    font-size: var(--ui-font-size-xs);
    font-weight: var(--ui-font-weight-semibold);
    border-radius: var(--ui-radius-pill);
    flex-shrink: 0;
}

.ui-nav-badge--ok {
    background: var(--ui-success-soft-bg);
    color: var(--ui-success-soft-fg);
}

.ui-nav-badge--warn {
    background: var(--ui-warning-soft-bg);
    color: var(--ui-warning-soft-fg);
}

.ui-nav-badge--skipped {
    background: var(--ui-surface-subtle);
    color: var(--ui-text-tertiary);
}
.ui-nav-item--disabled .ui-nav-badge--warn {
    opacity: 0.6;
}
/* ═══════════════════════════════════════════════════
   TELERIK BASELINE — DESIGN TOKEN MAPPING
   ═══════════════════════════════════════════════════
   Maps Telerik's built-in .k-* size classes to our
   design tokens so Telerik defaults stop winning over
   our type scale. Without this block, Telerik's
   hardcoded font-sizes (12px on .k-button-md, etc.)
   will leak through anywhere we don't manually override.

   These rules use !important because they compete with
   Telerik's own !important declarations and high
   specificity selectors in main-dark.css.

   AUDIT THIS BLOCK ON ANY TELERIK MAJOR-VERSION UPGRADE.
   If Telerik renames or restructures .k-* classes, the
   overrides will silently stop applying.
   ═══════════════════════════════════════════════════ */

/* ── Buttons ─────────────────────────────────────── */

.ui-themed .k-button {
    font-family: var(--ui-font-family) !important;
    font-size: var(--ui-font-size-base) !important;
}

.ui-themed .k-button-sm {
    font-size: var(--ui-font-size-sm) !important;
    padding: var(--ui-space-1) var(--ui-space-2) !important;
}

.ui-themed .k-button-md {
    font-size: var(--ui-font-size-base) !important;
    padding: var(--ui-space-2) var(--ui-space-3) !important;
}

.ui-themed .k-button-lg {
    font-size: var(--ui-font-size-md) !important;
    padding: var(--ui-space-2) var(--ui-space-4) !important;
}

.ui-themed .k-input,
.ui-themed .k-input-inner {
    font-family: var(--ui-font-family) !important;
    font-size: var(--ui-font-size-base) !important;
}

.ui-themed .k-input-sm,
.ui-themed .k-input-sm .k-input-inner {
    font-size: var(--ui-font-size-sm) !important;
}

.ui-themed .k-input-md,
.ui-themed .k-input-md .k-input-inner {
    font-size: var(--ui-font-size-base) !important;
}

.ui-themed .k-input-lg,
.ui-themed .k-input-lg .k-input-inner {
    font-size: var(--ui-font-size-md) !important;
}

.ui-themed .k-label,
.ui-themed .k-form-label {
    font-family: var(--ui-font-family) !important;
    font-size: var(--ui-font-size-base) !important;
    color: var(--ui-text-secondary) !important;
}

.ui-themed .k-form-hint {
    font-size: var(--ui-font-size-sm) !important;
    color: var(--ui-text-tertiary) !important;
}

.ui-themed .k-form-error {
    font-size: var(--ui-font-size-sm) !important;
    color: var(--ui-error) !important;
}

.ui-themed .k-list,
.ui-themed .k-list-item,
.ui-themed .k-list-content {
    font-family: var(--ui-font-family) !important;
    font-size: var(--ui-font-size-base) !important;
}

.ui-themed .k-list-item {
    padding-block: var(--ui-space-2) !important;
}

.ui-themed .k-grid {
    font-family: var(--ui-font-family) !important;
    font-size: var(--ui-font-size-base) !important;
}

.ui-themed .k-grid-header,
.ui-themed .k-grid-header-wrap th {
    font-size: var(--ui-font-size-base) !important;
    font-weight: var(--ui-font-weight-semibold) !important;
    color: var(--ui-text-primary) !important;
}

.ui-themed .k-grid td {
    font-size: var(--ui-font-size-base) !important;
}

.ui-themed .k-tabstrip-items .k-link {
    font-family: var(--ui-font-family) !important;
    font-size: var(--ui-font-size-md) !important;
    font-weight: var(--ui-font-weight-medium) !important;
}

.ui-themed .k-checkbox-label,
.ui-themed .k-radio-label {
    font-size: var(--ui-font-size-base) !important;
    color: var(--ui-text-secondary) !important;
}

.ui-themed .k-tooltip {
    font-family: var(--ui-font-family) !important;
    font-size: var(--ui-font-size-sm) !important;
}

.ui-themed .ui-row-action.k-button {
    color: var(--ui-text-muted) !important;
    background: transparent !important;
    border: none !important;
    padding: var(--ui-space-1) var(--ui-space-2) !important;
    min-width: 0 !important;
    border-radius: var(--ui-radius-sm) !important;
    transition: color var(--ui-transition-fast), background var(--ui-transition-fast);
}

    .ui-themed .ui-row-action.k-button:hover {
        color: var(--ui-accent) !important;
        background: var(--ui-accent-soft) !important;
    }

    .ui-themed .ui-row-action.k-button:active {
        background: var(--ui-accent) !important;
        color: var(--ui-text-on-accent) !important;
    }

    .ui-themed .ui-row-action.k-button:disabled,
    .ui-themed .ui-row-action.k-button.k-disabled {
        color: var(--ui-text-disabled) !important;
        background: transparent !important;
        cursor: not-allowed;
    }

    label{
        margin-bottom:0px !important;
    }
/* ═══════════════════════════════════════════════════
   BREAK-OUT CARD
   Replaces the old .ui-breakout-row — gives the toggle
   a prominent banded look so it reads as a section
   divider, not just a checkbox.
   ═══════════════════════════════════════════════════ */

.ui-breakout-card {
    display: flex;
    align-items: flex-start;
    gap: var(--ui-space-3);
    margin-top: var(--ui-space-4);
    padding: var(--ui-space-3) var(--ui-space-4);
    background: var(--ui-surface-subtle);
    border: 0.5px solid var(--ui-border);
    border-radius: var(--ui-radius-md);
}

.ui-breakout-card-text {
    display: flex;
    flex-direction: column;
    gap: var(--ui-space-1);
}

.ui-breakout-card-title {
    display: inline-flex;
    align-items: center;
    gap: var(--ui-space-1);
    font-size: var(--ui-font-size-base);
    font-weight: var(--ui-font-weight-semibold);
    color: var(--ui-text-primary);
}

.ui-breakout-card-subtitle {
    font-size: var(--ui-font-size-sm);
    color: var(--ui-text-tertiary);
}

/* ═══════════════════════════════════════════════════
   LINK-STYLE BUTTON
   Plain text button that looks like a hyperlink.
   Used for low-emphasis utility actions.
   ═══════════════════════════════════════════════════ */

.ui-btn-link {
    background: none;
    border: none;
    padding: 0;
    font-size: var(--ui-font-size-base);
    color: var(--ui-accent);
    cursor: pointer;
}

    .ui-btn-link:hover {
        text-decoration: underline;
        color: var(--ui-accent-hover);
    }

/* ═══════════════════════════════════════════════════
   GRID HEADER WITH INLINE TOGGLE
   Used in per-item tags grid: column title on left,
   "Increment ☐" toggle on right of each header cell.
   ═══════════════════════════════════════════════════ */

.ui-grid-header-with-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--ui-space-3);
    width: 100%;
}

.ui-grid-header-title {
    display: inline-flex;
    align-items: center;
    gap: var(--ui-space-1);
    font-weight: var(--ui-font-weight-semibold);
    color: var(--ui-text-primary);
    margin: var(--ui-space-2);
}

.ui-grid-header-toggle {
    display: inline-flex;
    align-items: center;
    gap: var(--ui-space-1);
    font-weight: var(--ui-font-weight-regular);
    font-size: var(--ui-font-size-sm);
    color: var(--ui-text-secondary);
    cursor: pointer;
    user-select: none;
}

/* ═══════════════════════════════════════════════════
   CLEAN GRID  (per-item tags style)
   Strips Telerik's default grid chrome — no header
   background, no row banding, lighter borders. Used
   when the grid sits inside a content card and shouldn't
   announce itself as a heavy data table.
   ═══════════════════════════════════════════════════ */

.ui-themed .ui-grid-clean .k-grid-header,
.ui-themed .ui-grid-clean .k-grid-header-wrap {
    background: transparent !important;
    border-bottom: 0.5px solid var(--ui-border) !important;
}

    .ui-themed .ui-grid-clean .k-grid-header th,
    .ui-themed .ui-grid-clean .k-grid-header-wrap th {
        background: transparent !important;
        border-bottom: none !important;
        padding-block: var(--ui-space-2) !important;
    }

.ui-themed .ui-grid-clean .k-grid-content,
.ui-themed .ui-grid-clean .k-grid td {
    background: transparent !important;
}

.ui-themed .ui-grid-clean .k-grid tr {
    background: transparent !important;
}

    .ui-themed .ui-grid-clean .k-grid tr:hover td {
        background: transparent !important;
    }

.ui-themed .ui-grid-clean .k-grid td {
    border-bottom: 0.5px solid var(--ui-border-soft) !important;
}

.ui-themed .ui-per-item-actions .k-button-outline {
    color: var(--ui-text-primary) !important;
    border-color: var(--ui-border-strong) !important;
}

    .ui-themed .ui-per-item-actions .k-button-outline:hover {
        color: var(--ui-text-primary) !important;
        background: var(--ui-surface-hover) !important;
    }

/* Force grid header cells to expand to full column width 
   so justify-content: space-between can distribute properly */
.ui-themed .ui-grid-clean .k-grid-header th .k-cell-inner,
.ui-themed .ui-grid-clean .k-grid-header th > .k-link,
.ui-themed .ui-grid-clean .k-grid-header th .k-column-title {
    width: 100% !important;
    display: block !important;
}

.page-region--debug {
    flex-shrink: 0;
    margin-top: var(--ui-space-4);
    padding: 0 var(--ui-space-4);
}

/* ═══════════════════════════════════════════════════
 Calculation skeleton loader
todo: for Matt - change sk- to ui-sk- here and on ResultCompont
═══════════════════════════════════════════════════ */
@keyframes sk-shimmer {
    0% {
        background-position: -600px 0;
    }

    100% {
        background-position: 600px 0;
    }
}

.ui-sk-base {
    background: linear-gradient(90deg, #e8ecf0 25%, #f4f6f8 50%, #e8ecf0 75%);
    background-size: 600px 100%;
    animation: sk-shimmer 1.4s infinite linear;
    border-radius: 4px;
}

.ui-sk-line {
    height: 12px;
    margin-bottom: 6px;
}

    .ui-sk-line.tall {
        height: 16px;
    }

    .ui-sk-line.short {
        width: 55%;
    }

    .ui-sk-line.mid {
        width: 75%;
    }

    .ui-sk-line.full {
        width: 100%;
    }

.ui-sk-block {
    border-radius: 6px;
}

/* Skeleton grid mirrors res-grid layout */
.ui-sk-grid {
    display: grid;
    grid-template-columns: 1fr 350px;
    grid-template-rows: auto auto auto auto;
    gap: 8px;
    margin-bottom: 12px;
}
/* Left col: table skeleton spans rows 1-3 */
.ui-sk-selections {
    grid-column: 1;
    grid-row: 1 / 5;
    background: #fff;
    border: 0.5px solid #e2e6ea;
    border-radius: 10px;
    overflow: hidden;
    padding: 12px 14px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.ui-sk-sel-header {
    display: flex;
    justify-content: space-between;
    margin-bottom: 4px;
}

.ui-sk-row {
    display: flex;
    gap: 8px;
    align-items: center;
}

.ui-sk-cell {
    flex: 1;
}

    .ui-sk-cell.narrow {
        max-width: 28px;
    }

/* Left col row 4: detail skeleton */
.ui-sk-detail {
    grid-column: 1;
    grid-row: 2;
    /* inside sk wrapper — kept for skeleton only */
    background: #fff;
    border: 0.5px solid #e2e6ea;
    border-radius: 10px;
    overflow: hidden;
    padding: 12px 14px;
}

/* Right col */
.ui-sk-snd-attn {
    grid-column: 2;
    grid-row: 1;
    background: #fff;
    border: 0.5px solid #e2e6ea;
    border-radius: 10px;
    padding: 10px 12px;
}

.ui-sk-snd-spl {
    grid-column: 2;
    grid-row: 2;
    background: #fff;
    border: 0.5px solid #e2e6ea;
    border-radius: 10px;
    padding: 10px 12px;
}

.ui-sk-chart-nc {
    grid-column: 2;
    grid-row: 3;
    background: #fff;
    border: 0.5px solid #e2e6ea;
    border-radius: 10px;
    overflow: hidden;
    height: 356px;
    display: flex;
    flex-direction: column;
    padding: 10px 12px;
    gap: 8px;
}

.ui-sk-chart-fan {
    grid-column: 2;
    grid-row: 4;
    background: #fff;
    border: 0.5px solid #e2e6ea;
    border-radius: 10px;
    overflow: hidden;
    height: 356px;
    display: flex;
    flex-direction: column;
    padding: 10px 12px;
    gap: 8px;
}

.ui-sk-chart-body {
    flex: 1;
    border-radius: 6px;
}

/* Calculating status indicator */
.ui-sk-status {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 14px;
    margin-bottom: 10px;
    background: var(--blue-light);
    border-radius: 8px;
    font-size: 12px;
    color: var(--blue-dark);
    font-weight: 500;
}

.ui-sk-spinner {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    flex-shrink: 0;
    border: 2px solid rgba(24,95,165,0.25);
    border-top-color: var(--blue);
    animation: sk-spin 0.7s linear infinite;
}

@keyframes sk-spin {
    to {
        transform: rotate(360deg);
    }
}