/*
 * DORWORKS Custom CSS
 * 2026
 */

/* Body Styling */
body {
    font-size: .9rem;
}

/* Container padding for full-width layout */
.container-fluid {
    padding-left: 28px;
    padding-right: 28px;
}

/* Logo sizing — image is 2304x290; constrain to navbar height */
.navbar-brand-image {
    height: 36px;
    width: 160px;
    object-fit: contain;
}

/* Sidebar Dark Theme */
.navbar-vertical[data-bs-theme="dark"] {
    background-color: #1e293b;
}

/* Active Nav Item */
.navbar-vertical .nav-link.active {
    background-color: rgba(255, 255, 255, 0.1);
    border-left: 3px solid #206bc4;
}

/* Card Improvements */
.card {
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}

.card-header {
    background-color: transparent;
    border-bottom: 1px solid rgba(98, 105, 118, 0.16);
}

/* Stats Cards */
.stat-card {
    transition: transform 0.2s ease;
}

.stat-card:hover {
    transform: translateY(-2px);
}

/* Tabler badges keep --tblr-badge-color as grey unless we override it */
.badge.bg-warning,
.badge.bg-orange,
.badge.dw-scale-level-badge.text-white {
    --tblr-badge-color: #fff;
    color: #fff !important;
}

/* DOR Status Badges */
.badge-draft {
    background-color: #6c757d;
}

.badge-submitted {
    background-color: #0d6efd;
}

.badge-reviewed {
    background-color: #ffc107;
    color: #000;
}

.badge-approved {
    background-color: #198754;
}

/* Rating Colors */
.rating-1 { background-color: #dc3545; color: white; }
.rating-2 { background-color: #fd7e14; color: white; }
.rating-3 { background-color: #ffc107; color: black; }
.rating-4 { background-color: #20c997; color: white; }
.rating-5 { background-color: #198754; color: white; }

/* Tabler alerts: keep icon column from shrinking; body text stays one column */
.alert .alert-icon {
    flex-shrink: 0;
}

/* NRT (Not Responding to Training) Alert */
.nrt-alert {
    background-color: #dc3545;
    color: white;
    padding: 0.5rem 1rem;
    border-radius: 0.25rem;
}

/* Phase Progress */
.phase-progress {
    height: 8px;
    border-radius: 4px;
}

/* Trainee Card */
.trainee-card {
    border-left: 4px solid #206bc4;
}

.trainee-card.nrt {
    border-left-color: #dc3545;
}

/* Mobile Improvements */
@media (max-width: 991.98px) {
    .navbar-vertical {
        position: fixed;
        top: 0;
        left: -100%;
        width: 280px;
        height: 100vh;
        z-index: 1050;
        transition: left 0.3s ease;
    }

    .navbar-vertical.show {
        left: 0;
    }

    .page-wrapper {
        margin-left: 0;
    }
}

/* Print Styles */
@media print {
    .navbar-vertical,
    .navbar,
    .footer,
    .btn,
    .dropdown {
        display: none !important;
    }

    .page-wrapper {
        margin-left: 0 !important;
    }

    .card {
        box-shadow: none;
        border: 1px solid #ddd;
    }

    .modal,
    .modal-backdrop {
        display: none !important;
    }

    .dw-trainee-profile-sheet-embed {
        padding: 0 !important;
    }

    .dw-tps-card {
        box-shadow: none !important;
        border: none !important;
    }
}

/* Trainee profile sheet (TraineeProfileSheet + modal embed) */
.dw-trainee-profile-sheet-embed {
    padding: 0.5rem 0.75rem 1rem;
}

.dw-tps-card {
    border: 0;
    box-shadow: none;
}

.dw-tps-identity {
    width: 100%;
    margin-bottom: 1.25rem;
}

.dw-tps-identity-photo {
    width: 7rem;
    vertical-align: top;
    padding-right: 1rem;
}

.dw-tps-photo {
    width: 6.5rem;
    height: 6.5rem;
    border-radius: 0.5rem;
    object-fit: cover;
    border: 1px solid var(--tblr-border-color);
}

.dw-tps-photo-initials {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--tblr-primary);
    color: #fff;
    font-weight: 700;
    font-size: 1.5rem;
}

.dw-tps-name {
    font-size: 1.35rem;
    font-weight: 700;
    line-height: 1.2;
}

.dw-tps-program {
    color: var(--tblr-secondary);
    margin-top: 0.15rem;
}

.dw-tps-badge {
    display: inline-block;
    margin-top: 0.35rem;
    padding: 0.15rem 0.45rem;
    border-radius: 0.25rem;
    font-size: 0.75rem;
    background: var(--tblr-azure-lt);
    color: var(--tblr-azure);
}

.dw-tps-section + .dw-tps-section {
    margin-top: 1.25rem;
    padding-top: 1rem;
    border-top: 1px solid var(--tblr-border-color);
}

.dw-tps-section-title {
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: 0.65rem;
}

.dw-trainee-profile-modal-dialog {
    width: calc(100vw - 1.5rem);
    max-width: 1140px;
    margin: 0.75rem auto;
}

.dw-trainee-profile-modal-dialog .modal-content {
    max-height: calc(100vh - 1.5rem);
}

.dw-trainee-profile-modal-dialog .modal-body {
    padding: 1.25rem 1.5rem;
}

.dw-trainee-profile-sheet-content .dw-tps-photo {
    width: 7.5rem;
    height: 7.5rem;
}

@media (max-width: 991.98px) {
    .dw-trainee-profile-modal-dialog {
        width: calc(100vw - 0.5rem);
        max-width: none;
        margin: 0.25rem auto;
    }

    .dw-trainee-profile-modal-dialog .modal-content {
        max-height: calc(100vh - 0.5rem);
        min-height: calc(100vh - 0.5rem);
    }
}

/*
 * Tabler sets .alert { display: flex }. Adjacent text nodes and inline elements
 * become separate flex items (reads as 2–3 narrow “columns”). Single-block copy
 * should stay normal flow unless the alert opts into .d-flex (e.g. icon + text).
 */
.modal .alert:not(.d-flex):not(:has(.alert-icon)) {
    display: block;
}

/* Form Improvements */
.form-label.required::after {
    content: " *";
    color: #dc3545;
}

/* Table Hover */
.table-hover tbody tr:hover {
    background-color: rgba(32, 107, 196, 0.05);
}

/* Quick Action Buttons */
.quick-actions .btn {
    margin-right: 0.5rem;
    margin-bottom: 0.5rem;
}

/* Dashboard Widgets */
.widget-card {
    min-height: 150px;
}

.widget-icon {
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    font-size: 1.5rem;
}

/* Timeline (for DOR history) */
.timeline {
    position: relative;
    padding-left: 1.5rem;
}

.timeline::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 2px;
    background-color: #e9ecef;
}

.timeline-item {
    position: relative;
    padding-bottom: 1.5rem;
}

.timeline-item::before {
    content: '';
    position: absolute;
    left: -1.5rem;
    top: 0.25rem;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background-color: #206bc4;
    margin-left: -4px;
}

/* Objective Completion Status */
.objective-complete {
    text-decoration: line-through;
    opacity: 0.7;
}

/* Empty State */
.empty-state {
    padding: 3rem;
    text-align: center;
}

.empty-state-icon {
    font-size: 3rem;
    color: #6c757d;
    margin-bottom: 1rem;
}

/*
 * Scrollable modals: when a <form> wraps .modal-header + .modal-body + .modal-footer,
 * the form is the only flex child of .modal-content, so the body never gets a max height
 * and footer buttons can sit off-screen. Make the form a flex column with min-height: 0
 * so .modal-body can scroll (Bootstrap .modal-dialog-scrollable).
 */
.modal-dialog-scrollable .modal-content > form {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    max-height: 100%;
    overflow: hidden;
}

.modal-dialog-scrollable .modal-content > form .modal-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}

/* Workflow review history — initials, name, then signature */
.dw-wf-history-user {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    min-height: 2rem;
}
.dw-wf-history-user__sig {
    display: block;
    flex-shrink: 0;
    max-height: 2rem;
    max-width: 5.5rem;
    width: auto;
    height: auto;
    object-fit: contain;
    object-position: right center;
}
.dw-wf-history-user__avatar {
    flex-shrink: 0;
}
.dw-wf-history-user__name {
    line-height: 1.35;
}

/* My Profile — typed signature (system / locally installed script fonts only; no CDN) */
.dw-sig-font-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.5rem;
    max-width: 520px;
}
@media (max-width: 576px) {
    .dw-sig-font-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
.dw-sig-font-grid .btn {
    font-size: 0.8rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.dw-sig-font-btn.active {
    border-width: 2px;
}
.dw-sig-typed-preview {
    width: 100%;
    max-width: 520px;
    min-height: 200px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0.75rem 1rem;
}
.dw-sig-typed-text {
    font-size: clamp(1.75rem, 5vw, 2.75rem);
    line-height: 1.15;
    color: var(--tblr-body-color);
    text-align: center;
    word-break: break-word;
}
.dw-sig-stack1 { font-family: "Brush Script MT", "Segoe Script", cursive; }
.dw-sig-stack2 { font-family: "Lucida Handwriting", "Segoe Script", "Apple Chancery", cursive; }
.dw-sig-stack3 { font-family: "Snell Roundhand", "Zapfino", "Palatino Linotype", serif; }
.dw-sig-stack4 { font-family: "Bradley Hand ITC", "Marker Felt", "Chalkduster", fantasy; }
.dw-sig-stack5 { font-family: "French Script MT", "Segoe Script", cursive; }
.dw-sig-stack6 { font-family: "Monotype Corsiva", "Georgia", serif; font-style: italic; }
.dw-sig-stack7 { font-family: "Mistral", "Segoe Print", fantasy; }
.dw-sig-stack8 { font-family: "Segoe Script", "Comic Sans MS", cursive; }

/* My Profile — Dropzone target for S3-backed photo */
.dw-profile-photo-avatar {
    --tblr-avatar-size: 6rem;
    font-size: 2.75rem;
}
.dw-profile-photo-preview {
    width: 100%;
    aspect-ratio: 1 / 1;
    max-height: 360px;
    background-size: cover;
    background-position: center;
    background-color: var(--tblr-bg-surface-secondary, var(--tblr-bg-surface));
    border: 1px solid var(--tblr-border-color);
}
.dw-avatar-photo-btn {
    cursor: pointer;
}
.dw-profile-photo-dz.dropzone,
.dw-program-resource-dz.dropzone,
.dw-dor-activity-file-dz.dropzone,
.dw-dor-file-dz.dropzone,
.dw-agency-patch-dz.dropzone {
    min-height: 160px;
    border: 2px dashed var(--tblr-border-color) !important;
    border-radius: var(--tblr-border-radius);
    padding: 1.25rem 1rem;
    background: var(--tblr-bg-surface);
}
.dw-profile-photo-dz.dropzone.dz-drag-hover,
.dw-program-resource-dz.dropzone.dz-drag-hover,
.dw-dor-activity-file-dz.dropzone.dz-drag-hover,
.dw-dor-file-dz.dropzone.dz-drag-hover,
.dw-agency-patch-dz.dropzone.dz-drag-hover {
    border-color: var(--tblr-primary) !important;
    border-style: dashed !important;
    background: var(--tblr-primary-lt);
}
.dw-profile-photo-dz.dropzone .dz-message,
.dw-program-resource-dz.dropzone .dz-message,
.dw-dor-activity-file-dz.dropzone .dz-message,
.dw-dor-file-dz.dropzone .dz-message,
.dw-agency-patch-dz.dropzone .dz-message {
    margin: 1.25rem 0;
    text-align: center;
}
.dw-profile-photo-dz.dropzone .dz-message i,
.dw-program-resource-dz.dropzone .dz-message i,
.dw-dor-activity-file-dz.dropzone .dz-message i,
.dw-dor-file-dz.dropzone .dz-message i,
.dw-agency-patch-dz.dropzone .dz-message i {
    display: block;
    text-align: center;
}
[data-bs-theme="dark"] .dw-profile-photo-dz.dropzone,
[data-bs-theme="dark"] .dw-program-resource-dz.dropzone,
[data-bs-theme="dark"] .dw-dor-activity-file-dz.dropzone,
[data-bs-theme="dark"] .dw-dor-file-dz.dropzone,
[data-bs-theme="dark"] .dw-agency-patch-dz.dropzone {
    background: var(--tblr-bg-surface-secondary, var(--tblr-bg-surface));
}

/* Navbar agency identity (co-brand beside DORWORKS logo) */
.dw-nav-brand-cluster {
    align-items: center;
    gap: 0.75rem;
}
.dw-nav-brand-cluster .navbar-brand {
    margin-inline-end: 0 !important;
}
.dw-nav-agency-identity {
    align-items: center;
    min-width: 0;
    max-width: min(28rem, 42vw);
    gap: 0.5rem;
}
.dw-nav-agency-divider {
    flex-shrink: 0;
    align-self: center;
    width: 1px;
    height: 1.625rem;
    margin: 0;
    background: var(--tblr-border-color);
}
.dw-nav-agency-patch-wrap {
    display: block;
    flex-shrink: 0;
    line-height: 0;
}
.dw-nav-agency-patch {
    display: block;
    height: 24px;
    width: auto;
    max-width: 80px;
    object-fit: contain;
    vertical-align: middle;
}
/* Navbar only — co-brand patch should stay subtle beside the DORWORKS logo */
.dw-nav-agency-identity .dw-nav-agency-patch {
    opacity: 0.78;
}
.dw-nav-agency-name {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 1rem;
    font-weight: 500;
    line-height: 24px;
    letter-spacing: 0.01em;
    color: var(--tblr-secondary-color, var(--tblr-secondary));
}
@media (min-width: 1200px) {
    .dw-nav-agency-name {
        font-size: 1.0625rem;
    }
    .dw-nav-agency-identity {
        max-width: min(32rem, 38vw);
    }
}

/* Editor.js — program admin rich text */
.dw-editorjs-holder {
    min-height: 10rem;
    padding: .5rem .75rem;
    background: var(--tblr-bg-surface);
    border: 1px solid var(--tblr-border-color);
    border-radius: var(--tblr-border-radius);
}
.dw-editorjs-holder .codex-editor__redactor {
    padding-bottom: 1rem;
}
.dw-editorjs-render > :last-child {
    margin-bottom: 0;
}
.dw-editorjs-render blockquote.dw-editorjs-quote {
    margin: 0;
    padding-left: .75rem;
    border-left: 3px solid var(--tblr-border-color);
}
.dw-editorjs-render mark,
.dw-editorjs-render mark.cdx-marker {
    background: rgba(245, 235, 111, .29);
    padding: .1em 0;
}
.dw-editorjs-render u,
.dw-editorjs-render u.cdx-underline {
    text-decoration: underline;
}
.dw-editorjs-render hr.dw-editorjs-delimiter {
    margin: .75rem 0;
}

/*
 * Nested ordered lists — Word-style numbering (1 / a / i), not 1 / 2 / 1 / 2.
 * Top-level counter type comes from Editor.js settings (--list-counter-type).
 * Only nested levels are forced to a / i / 1 by depth.
 */
.dw-editorjs-holder .cdx-list-ordered .cdx-list-ordered > .cdx-list__item::before {
    content: counter(item, lower-alpha) ".";
}
.dw-editorjs-holder .cdx-list-ordered .cdx-list-ordered .cdx-list-ordered > .cdx-list__item::before {
    content: counter(item, lower-roman) ".";
}
.dw-editorjs-holder .cdx-list-ordered .cdx-list-ordered .cdx-list-ordered .cdx-list-ordered > .cdx-list__item::before {
    content: counter(item, decimal) ".";
}
.dw-editorjs-holder .cdx-list-ordered .cdx-list-ordered .cdx-list-ordered .cdx-list-ordered .cdx-list-ordered > .cdx-list__item::before {
    content: counter(item, lower-alpha) ".";
}
.dw-editorjs-holder .cdx-list-ordered .cdx-list-ordered .cdx-list-ordered .cdx-list-ordered .cdx-list-ordered .cdx-list-ordered > .cdx-list__item::before {
    content: counter(item, lower-roman) ".";
}

/*
 * Read-only lists: set list-style on the OL/UL (not the LI) so nested
 * 1 / a / i rules win. Padding keeps markers from collapsing onto text
 * inside tables (the old "1Meet" look).
 */
.dw-editorjs-render ol.dw-editorjs-list,
.popover.dw-cat-desc-popover-pop .popover-body ol.dw-editorjs-list {
    list-style-type: decimal;
    list-style-position: outside;
    padding-left: 1.6rem;
    margin: 0 0 0.35rem 0.15rem;
}
.dw-editorjs-render ul.dw-editorjs-list,
.popover.dw-cat-desc-popover-pop .popover-body ul.dw-editorjs-list {
    list-style-type: disc;
    list-style-position: outside;
    padding-left: 1.6rem;
    margin: 0 0 0.35rem 0.15rem;
}
.dw-editorjs-render ol.dw-editorjs-list--numeric,
.popover.dw-cat-desc-popover-pop .popover-body ol.dw-editorjs-list--numeric {
    list-style-type: decimal;
}
.dw-editorjs-render ol.dw-editorjs-list--lower-alpha,
.popover.dw-cat-desc-popover-pop .popover-body ol.dw-editorjs-list--lower-alpha {
    list-style-type: lower-alpha;
}
.dw-editorjs-render ol.dw-editorjs-list--upper-alpha,
.popover.dw-cat-desc-popover-pop .popover-body ol.dw-editorjs-list--upper-alpha {
    list-style-type: upper-alpha;
}
.dw-editorjs-render ol.dw-editorjs-list--lower-roman,
.popover.dw-cat-desc-popover-pop .popover-body ol.dw-editorjs-list--lower-roman {
    list-style-type: lower-roman;
}
.dw-editorjs-render ol.dw-editorjs-list--upper-roman,
.popover.dw-cat-desc-popover-pop .popover-body ol.dw-editorjs-list--upper-roman {
    list-style-type: upper-roman;
}
.dw-editorjs-render ol.dw-editorjs-list ol.dw-editorjs-list,
.popover.dw-cat-desc-popover-pop .popover-body ol.dw-editorjs-list ol.dw-editorjs-list {
    list-style-type: lower-alpha;
}
.dw-editorjs-render ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list,
.popover.dw-cat-desc-popover-pop .popover-body ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list {
    list-style-type: lower-roman;
}
.dw-editorjs-render ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list,
.popover.dw-cat-desc-popover-pop .popover-body ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list {
    list-style-type: decimal;
}
.dw-editorjs-render ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list,
.popover.dw-cat-desc-popover-pop .popover-body ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list {
    list-style-type: lower-alpha;
}
.dw-editorjs-render ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list,
.popover.dw-cat-desc-popover-pop .popover-body ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list ol.dw-editorjs-list {
    list-style-type: lower-roman;
}
.dw-editorjs-render .dw-editorjs-list > li,
.popover.dw-cat-desc-popover-pop .popover-body .dw-editorjs-list > li {
    display: list-item;
    list-style-position: outside;
}
.dw-editorjs-render ul.dw-editorjs-list.dw-editorjs-list--checklist,
.popover.dw-cat-desc-popover-pop .popover-body ul.dw-editorjs-list.dw-editorjs-list--checklist {
    list-style: none;
    padding-left: 0;
}
.dw-editorjs-render ul.dw-editorjs-list--checklist > li.dw-editorjs-check,
.popover.dw-cat-desc-popover-pop .popover-body ul.dw-editorjs-list--checklist > li.dw-editorjs-check {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    column-gap: 0.45rem;
    list-style: none;
    margin-bottom: 0.2rem;
}
.dw-editorjs-render .dw-editorjs-check-box,
.popover.dw-cat-desc-popover-pop .popover-body .dw-editorjs-check-box {
    box-sizing: border-box;
    flex: 0 0 1.05em;
    width: 1.05em;
    height: 1.05em;
    margin-top: 0.2em;
    border: 1.5px solid var(--tblr-border-color);
    border-radius: 0.2rem;
    background: var(--tblr-bg-forms, var(--tblr-bg-surface));
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.dw-editorjs-render .dw-editorjs-check--checked .dw-editorjs-check-box,
.popover.dw-cat-desc-popover-pop .popover-body .dw-editorjs-check--checked .dw-editorjs-check-box {
    background: var(--tblr-primary);
    border-color: var(--tblr-primary);
}
.dw-editorjs-render .dw-editorjs-check--checked .dw-editorjs-check-box::after,
.popover.dw-cat-desc-popover-pop .popover-body .dw-editorjs-check--checked .dw-editorjs-check-box::after {
    content: "";
    width: 0.28em;
    height: 0.5em;
    border: solid #fff;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg) translate(-1px, -1px);
}
.dw-editorjs-render .dw-editorjs-check-text,
.popover.dw-cat-desc-popover-pop .popover-body .dw-editorjs-check-text {
    flex: 1 1 0;
    min-width: 0;
}
.dw-editorjs-render ul.dw-editorjs-list--checklist ul.dw-editorjs-list--checklist,
.popover.dw-cat-desc-popover-pop .popover-body ul.dw-editorjs-list--checklist ul.dw-editorjs-list--checklist {
    flex: 1 0 100%;
    margin: 0.15rem 0 0;
    padding-left: 1.5rem;
}

[data-bs-theme="dark"] .dw-editorjs-holder {
    background: var(--tblr-bg-surface-secondary, var(--tblr-bg-surface));
}

/*
 * DOR daily narrative only: widen block + toolbar together so + / ⋮ stay aligned with text.
 * Program modals and other editors keep Editor.js defaults (~650px centered column).
 */
.dw-editorjs-holder--narrative {
    min-height: 12rem;
}
.dw-editorjs-holder--narrative .ce-block__content,
.dw-editorjs-holder--narrative .ce-toolbar__content {
    max-width: none;
    margin-left: 0;
    margin-right: 0;
}
/* Keep CCL / modal narrative prompts left-aligned like daily narrative (not Editor.js centered column). */
#dwDorCclModal .dw-editorjs-holder--narrative .ce-block__content,
#dwDorCclModal .dw-editorjs-holder--narrative .ce-toolbar__content,
#dw-dor-ccl-panel .dw-editorjs-holder--narrative .ce-block__content,
#dw-dor-ccl-panel .dw-editorjs-holder--narrative .ce-toolbar__content {
    max-width: none;
    margin-left: 0;
    margin-right: auto;
    text-align: left;
}

/* Shorter narrative editors (event modal extras, satisfactory fields). */
.dw-editorjs-holder.dw-editorjs-holder--narrative-compact {
    min-height: 6rem;
    padding: .35rem .5rem;
}
.dw-editorjs-holder--narrative-compact .codex-editor__redactor {
    padding-bottom: .5rem;
    min-height: 3rem;
}

/*
 * Category comments: same Editor.js blocks as narrative; grows with content (no inner scroll).
 * Override .dw-editorjs-holder { min-height: 10rem } — both classes are on the element.
 */
.dw-editorjs-holder.dw-editorjs-holder--comment {
    min-height: 0;
    padding: .35rem .5rem;
    overflow: visible;
    position: relative;
}
.dw-editorjs-holder--comment .codex-editor {
    overflow: visible;
}
.dw-editorjs-holder--comment .codex-editor__redactor {
    padding-bottom: .25rem;
    min-height: 1.75rem;
    max-height: none;
    overflow: visible;
}
.dw-eval-assessment .dw-eval-comment-holder.dw-editorjs-holder--comment .codex-editor__redactor {
    min-height: 1.75rem !important;
    padding-bottom: .25rem !important;
}
@media (min-width: 651px) {
    .dw-editorjs-holder--comment .codex-editor__redactor {
        margin-right: 0;
    }
}
.dw-editorjs-holder--comment .ce-inline-toolbar,
.dw-editorjs-holder--comment .ce-toolbar,
.dw-editorjs-holder--comment .ce-conversion-toolbar,
.dw-editorjs-holder--comment .ce-popover {
    z-index: 1080;
}
.dw-editorjs-holder--comment .ce-block__content,
.dw-editorjs-holder--comment .ce-toolbar__content {
    max-width: none;
    margin-left: 0;
    margin-right: 0;
}
.checklist-line-comment-cell .dw-editorjs-render,
.checklist-line-comment-cell .dw-editorjs-render--comment {
    font-size: .875rem;
    max-height: none;
    overflow: visible;
}

/* DOR page: keep content inside cards on narrow viewports */
#dw-dor-root {
    max-width: 100%;
    min-width: 0;
}

.dw-dor-assessment-card {
    max-width: 100%;
}

.dw-dor-assessment-card .card-body,
.dw-dor-assessment-card .dw-dor-entry-tab-content,
.dw-dor-assessment-card .tab-pane {
    max-width: 100%;
    min-width: 0;
}

/* Ratings table scrolls inside the card; wide min-width only when scroll container is active */
.dw-dor-rating-table-wrap {
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.dw-dor-rating-table {
    margin-bottom: 0;
}

/* Keep category label vertically centered when a definition info button is present */
.dw-dor-rating-table .dw-dor-rating-category-label {
    min-height: 2.75rem;
}

tr.dw-rating-section-head .dw-rating-section-head-label,
.dw-rating-section-head-block .dw-rating-section-head-label {
    font-size: 1rem;
}

tr.dw-rating-section-head .dw-rating-section-head-icon,
.dw-rating-section-head-block .dw-rating-section-head-icon {
    width: 1.75rem;
    height: 1.75rem;
}

.dw-dor-rating-table .dw-cat-desc-popover.dw-touch-icon-btn {
    min-width: 2rem;
    min-height: 2rem;
}

.dw-dor-rating-table .dw-dor-quick-event-btn {
    min-width: 2rem;
    min-height: 2rem;
    color: var(--tblr-primary);
}

.dw-dor-rating-table .dw-dor-quick-event-btn:hover,
.dw-dor-rating-table .dw-dor-quick-event-btn:focus {
    color: var(--tblr-primary);
    background-color: var(--tblr-primary-lt, rgba(var(--tblr-primary-rgb, 32, 107, 196), 0.12));
}

tr.checklist-line-comment-row:has(.dw-editorjs-holder--comment:focus-within) {
    position: relative;
    z-index: 4;
}

.checklist-line-comment-cell:has(.dw-editorjs-holder--comment:focus-within) {
    position: relative;
    z-index: 5;
}

.dw-dor-assessment-card .checklist-line-comment-cell {
    max-width: 100%;
    box-sizing: border-box;
    overflow-wrap: anywhere;
    word-break: break-word;
}

.dw-dor-assessment-card .checklist-line-comment-cell .dw-editorjs-holder--comment,
.dw-dor-assessment-card .checklist-line-comment-cell .dw-editorjs-render,
.dw-dor-assessment-card .checklist-line-comment-cell .dw-editorjs-render--comment {
    max-width: 100%;
    overflow-x: auto;
}

.checklist-line-comment-row.dw-required-comment--required .checklist-line-comment-cell {
    border-left: 3px solid var(--tblr-danger, #d63939);
    padding-left: 0.75rem;
}

.checklist-line-comment-row.dw-required-comment--pending .checklist-line-comment-cell {
    background-color: rgba(var(--tblr-danger-rgb, 214, 57, 57), 0.08);
    box-shadow: inset 0 0 0 1px rgba(var(--tblr-danger-rgb, 214, 57, 57), 0.35);
}

.checklist-line-comment-row.dw-required-comment--ok .checklist-line-comment-cell {
    background-color: rgba(var(--tblr-success-rgb, 47, 179, 68), 0.08);
    box-shadow: inset 0 0 0 1px rgba(var(--tblr-success-rgb, 47, 179, 68), 0.35);
    border-left: 3px solid var(--tblr-success, #2fb344);
    padding-left: 0.75rem;
}

@media (max-width: 991.98px) {
    .dw-dor-rating-table {
        min-width: 32rem;
    }

    #dw-dor-root .dw-rating-cell,
    .dw-eval-assessment .dw-rating-cell {
        min-width: 9.5rem;
    }
}

@media (max-width: 767.98px) {
    .dw-dor-assessment-card > .card-header {
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        row-gap: 0;
        padding-top: 0.75rem;
        padding-bottom: 0.75rem;
    }

    .dw-dor-assessment-card > .card-header > .d-flex {
        width: 100%;
        margin-bottom: 0;
    }

    .dw-dor-assessment-card .dw-dor-view-tab-group {
        display: flex;
        width: 100%;
    }

    .dw-dor-assessment-card .dw-dor-view-tab-group .btn {
        flex: 1 1 0;
        padding: 0.3rem 0.5rem;
        font-size: 0.8125rem;
        line-height: 1.25;
    }

    .dw-dor-assessment-card .card-actions {
        width: 100%;
        flex-wrap: wrap;
        gap: 0.5rem;
        justify-content: stretch;
        margin-top: 0.375rem;
        padding-top: 0.375rem;
    }

    .dw-dor-assessment-card .card-actions .btn {
        flex: 1 1 calc(50% - 0.25rem);
        min-width: 0;
        padding: 0.3rem 0.45rem;
        font-size: 0.75rem;
        line-height: 1.25;
    }

    .dw-dor-assessment-card .card-actions .btn .fas,
    .dw-dor-assessment-card .card-actions .btn .far {
        font-size: 0.7rem;
    }

    .dw-dor-assessment-card .card-actions .btn .me-1 {
        margin-right: 0.25rem !important;
    }
}

/* Trainee dashboard — compact progress row (4 × col-lg-3) */
.dw-trainee-progress-donut {
    min-height: 10rem;
}
@media (min-width: 992px) {
    .col-lg-3 .card:has(.dw-trainee-progress-donut) .card-title {
        font-size: 0.95rem;
    }
    .col-lg-3 .card:has(.dw-trainee-progress-donut) .card-actions .btn-sm {
        padding: 0.2rem 0.45rem;
        font-size: 0.75rem;
    }
}

/* Dashboard — active trainee: team + trainee filters side by side on md+ */
.dw-active-trainee-meta .dw-dor-summary-item--secondary {
    font-size: 0.8125rem;
}

.dw-dashboard-current-trainee-card .card-header {
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 0.75rem;
}
.dw-dashboard-current-trainee-card .card-actions {
    flex: 0 0 auto;
    margin-left: auto;
    width: auto;
    max-width: 100%;
}
.dw-dashboard-trainee-toolbar {
    display: flex;
    flex-flow: row nowrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.5rem;
}
.dw-dashboard-trainee-toolbar .input-group {
    flex: 0 0 auto;
    flex-wrap: nowrap;
    align-items: stretch;
    width: auto;
    max-width: none;
}
.dw-dashboard-trainee-toolbar .input-group > .input-group-text {
    flex: 0 0 auto;
}
.dw-dashboard-trainee-toolbar .input-group > select.select2-hidden-accessible {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}
.dw-dashboard-trainee-toolbar .input-group > .select2-container {
    flex: 1 1 auto;
    width: 1% !important;
    min-width: 0;
}
.dw-dashboard-trainee-toolbar .dw-dashboard-team-picker > .select2-container {
    min-width: 11rem;
    max-width: 16rem;
}
.dw-dashboard-trainee-toolbar .dw-dashboard-trainee-picker > .select2-container {
    min-width: 18rem;
    max-width: 28rem;
}
.dw-dashboard-trainee-toolbar .input-group .select2-container--default .select2-selection--single {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
    min-height: calc(1.4285714286em + 0.5rem + 2px);
    height: 100%;
}
@media (max-width: 767.98px) {
    .dw-dashboard-current-trainee-card .card-actions {
        margin-left: 0;
        width: 100%;
    }
    .dw-dashboard-trainee-toolbar {
        flex-flow: row wrap;
        justify-content: stretch;
        width: 100%;
    }
    .dw-dashboard-trainee-toolbar .input-group {
        flex: 1 1 100%;
        max-width: 100%;
    }
    .dw-dashboard-trainee-toolbar .select2-container {
        min-width: 0 !important;
        max-width: none !important;
    }
}

.dw-dor-category-def-btn .fas {
    pointer-events: none;
}

.popover.dw-cat-desc-popover-pop {
    --bs-popover-max-width: min(42rem, calc(100vw - 1.5rem));
    max-width: min(42rem, calc(100vw - 1.5rem));
    width: min(42rem, calc(100vw - 1.5rem));
    z-index: 1080;
}

.popover.dw-cat-desc-popover-pop .popover-header {
    font-weight: 600;
}

.popover.dw-cat-desc-popover-pop .popover-body {
    max-height: min(70vh, 28rem);
    overflow-y: auto;
    line-height: 1.55;
}

.popover.dw-cat-desc-popover-pop .popover-body > :last-child {
    margin-bottom: 0;
}

.popover.dw-cat-desc-popover-pop .popover-body p + p,
.popover.dw-cat-desc-popover-pop .popover-body ul + p,
.popover.dw-cat-desc-popover-pop .popover-body ol + p,
.popover.dw-cat-desc-popover-pop .popover-body p + ul,
.popover.dw-cat-desc-popover-pop .popover-body p + ol {
    margin-top: 0.65rem;
}

.dw-cat-desc-popover .fas {
    pointer-events: none;
}

#dwDorCategoryDefsModal .dw-dor-cat-def-item:last-child,
#dwEvalCategoryDefsModal .dw-dor-cat-def-item:last-child,
#dwDorScaleDefsModal .dw-dor-scale-def-item:last-child {
    border-bottom: none !important;
    margin-bottom: 0 !important;
    padding-bottom: 0 !important;
}

/* Section headers in the defs modal sit above category items (siblings), so the
   group needs bottom/top margin — zeroing head/desc margins alone left no gap. */
#dwDorCategoryDefsModal .dw-rating-section-group,
#dwEvalCategoryDefsModal .dw-rating-section-group {
    margin-top: 1rem;
    margin-bottom: 0.85rem;
}

#dwDorCategoryDefsModal [data-dw-cat-group]:first-child > .dw-rating-section-group,
#dwEvalCategoryDefsModal [data-dw-cat-group]:first-child > .dw-rating-section-group {
    margin-top: 0;
}

#dwDorCategoryDefsModal .dw-rating-section-group .dw-rating-section-head-block,
#dwDorCategoryDefsModal .dw-rating-section-group .dw-rating-section-head-block--has-desc,
#dwEvalCategoryDefsModal .dw-rating-section-group .dw-rating-section-head-block,
#dwEvalCategoryDefsModal .dw-rating-section-group .dw-rating-section-head-block--has-desc {
    margin-top: 0;
    margin-bottom: 0;
}

#dwDorCategoryDefsModal .dw-rating-section-group .dw-rating-section-desc-card,
#dwEvalCategoryDefsModal .dw-rating-section-group .dw-rating-section-desc-card {
    margin-top: 0.35rem;
    margin-bottom: 0;
}

#dwDorCategoryDefsModal .dw-dor-cat-def-item + .dw-dor-cat-def-item,
#dwEvalCategoryDefsModal .dw-dor-cat-def-item + .dw-dor-cat-def-item {
    margin-top: 0.25rem;
}

.dw-rating-category-title {
    font-size: 0.875rem;
    font-weight: 600;
    line-height: 1.35;
}

.dw-dor-tag-alerts .dw-dor-tag-alert:last-child {
    margin-bottom: 0 !important;
}

.dw-dor-tag-alert .dw-dor-tag-alert-line {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex: 1;
    min-width: 0;
}

.dw-dor-tag-alert .dw-dor-tag-alert-name {
    font-weight: 600;
}

.dw-dor-tag-alert .dw-dor-tag-alert-code {
    margin-left: auto;
    color: var(--tblr-muted);
    font-size: 0.875rem;
    white-space: nowrap;
}

/* Tabler split top nav (logo row + menu row): row 2 is navbar-expand-* only — not .navbar on <header> */
.page > header.navbar-expand-lg {
    border-top: 0;
    box-shadow: none;
}

/* Top nav: hamburger below lg (992px); split-header layout needs explicit collapse */
@media (max-width: 991.98px) {
    #navbar-menu:not(.show) {
        display: none !important;
    }
    #navbar-menu.show {
        display: block !important;
    }
    #navbar-menu.show .navbar-nav {
        flex-direction: column;
        align-items: stretch;
        padding-bottom: 0.75rem;
    }
    #navbar-menu.show .dropdown-menu {
        position: static !important;
        float: none;
        box-shadow: none;
        border: 0;
        padding-left: 0.5rem;
    }
    .page > header.navbar .navbar-toggler.d-lg-none {
        display: block;
    }
}
@media (min-width: 992px) {
    #navbar-menu {
        display: flex !important;
        flex-basis: auto;
    }
    .page > header.navbar .navbar-toggler.d-lg-none {
        display: none !important;
    }
}

.dw-dor-activity-entry .card-body {
    padding: 1rem 1.15rem;
}

.dw-dor-activity-entry .dw-editorjs-render {
    max-height: none;
}

.dw-dor-summary-item {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: 0.35rem;
    font-size: 0.875rem;
    line-height: 1.35;
    min-width: 0;
}

.dw-dor-summary-item--secondary {
    font-size: 0.8125rem;
    color: var(--tblr-secondary);
}

#dw-dor-header-summary-main .col-lg-6 .dw-dor-summary-item .fw-semibold {
    word-break: break-word;
}

.dw-dor-summary-fto-row {
    margin-top: 0;
}

.dw-dor-summary-profile-row {
    margin-top: 0;
}

.dw-dor-summary-stack .dw-dor-summary-item + .dw-dor-summary-item {
    margin-top: 0.2rem;
}

#dw-dor-summary-card .card-actions {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

.dw-dor-compact-icon-btn {
    padding-left: 0.4rem;
    padding-right: 0.4rem;
    line-height: 1;
}

.dw-dor-compact-icon-btn i {
    font-size: 0.75rem;
    vertical-align: -0.05em;
}

.dw-scale-color-cell .dw-scale-color-controls .form-control-color {
    width: 3rem;
    height: 2.5rem;
    padding: .25rem;
    flex: 0 0 auto;
}

.dw-scale-color-cell .dw-scale-color-hex {
    min-width: 6.5rem;
}

.dw-scale-color-swatches .form-colorinput {
    margin-bottom: 0;
}

.dw-scale-color-swatch-row {
    flex-wrap: nowrap;
}

.checklist-matrix-table .checklist-matrix-category-row > td {
    background-color: var(--tblr-secondary-bg, var(--tblr-bg-surface-secondary, var(--tblr-gray-100)));
    color: var(--tblr-body-color, inherit);
}

.checklist-matrix-table .checklist-matrix-check .checklist-mark-checkbox {
    width: 1.125rem;
    height: 1.125rem;
    margin-top: 0;
    border: 2px solid var(--tblr-primary);
    background-color: var(--tblr-bg-surface, #fff);
    cursor: pointer;
}

.checklist-matrix-table .checklist-matrix-check .checklist-mark-checkbox:hover {
    border-color: var(--tblr-primary-darken, var(--tblr-primary));
    box-shadow: 0 0 0 0.15rem rgba(var(--tblr-primary-rgb), 0.2);
}

.checklist-matrix-table .checklist-matrix-check .checklist-mark-checkbox:checked {
    background-color: var(--tblr-primary);
    border-color: var(--tblr-primary);
}

.checklist-matrix-table .checklist-stamp-cell {
    display: inline-flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    margin-inline: auto;
}

.checklist-matrix-table .checklist-stamp-cell.dw-objectives-stamp-cell {
    flex-direction: column;
    align-items: center;
    gap: 0.35rem;
}

.dw-objectives-stamp-stack {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.35rem;
}

.dw-objectives-stamp-line {
    line-height: 1.3;
    text-align: center;
}

.dw-objectives-stamp-who,
.dw-objectives-stamp-when {
    white-space: nowrap;
}

.dw-objectives-stamp-line > div + div {
    margin-top: 0.1rem;
}

.dw-objective-file-btn-matrix {
    min-width: 2.25rem;
    min-height: 2.25rem;
}

@media (max-width: 991.98px) {
    .dw-objective-file-btn-matrix {
        min-width: 2.5rem;
        min-height: 2.5rem;
    }
}

.checklist-matrix-table .checklist-stamp-text {
    line-height: 1.35;
    text-align: left;
}

/* Tabler 1.6: .btn min-height/padding makes icon-only link actions sit low next to stamps */
.checklist-matrix-table .checklist-remove-mark-trigger,
.checklist-matrix-table .checklist-revoke-trainee-ack-trigger,
.checklist-matrix-table .checklist-revoke-supervisor-trigger,
.checklist-matrix-table .objectives-remove-mark-trigger,
.checklist-matrix-table .objectives-revoke-trainee-ack-trigger,
.checklist-matrix-table .objectives-revoke-supervisor-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    align-self: center;
    line-height: 1;
    min-height: 0;
    min-width: 0;
    padding: 0;
    opacity: 0.9;
}

.checklist-line-comment-row .checklist-line-comment-cell {
    background-color: var(--tblr-bg-surface-secondary, var(--tblr-gray-50));
    border-top: 0;
    padding-top: 0.5rem;
    padding-bottom: 0.75rem;
    overflow: visible;
}

/* Touch-friendly icon controls (≈44px) for phone / iPad */
.dw-touch-icon-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2.75rem;
    min-height: 2.75rem;
    padding: 0;
    border-radius: var(--tblr-border-radius);
    line-height: 1;
}

.dw-touch-icon-btn:hover,
.dw-touch-icon-btn:focus {
    background-color: var(--tblr-bg-surface-secondary, rgba(0, 0, 0, 0.04));
}

.checklist-line-comment-icon {
    color: var(--tblr-muted);
    line-height: 1;
}

.checklist-line-comment-icon:hover,
.checklist-line-comment-icon:focus {
    color: var(--tblr-primary);
}

.dw-objective-file-btn {
    position: relative;
    flex-shrink: 0;
}

.dw-objective-ref-icons {
    gap: 0.25rem;
}

@media (max-width: 991.98px) {
    .dw-objective-file-btn {
        min-width: 3rem;
        min-height: 3rem;
    }

    .dw-objective-file-btn i {
        font-size: 1.35rem;
    }
}

.checklist-line-comment-icon.checklist-line-comment-has-content {
    color: var(--tblr-primary);
}

#dw-dor-root th.dw-dor-flag-col,
#dw-dor-root td.dw-dor-flag-col,
.dw-eval-assessment th.dw-dor-flag-col,
.dw-eval-assessment td.dw-dor-flag-col {
    padding-left: 0.75rem;
    padding-right: 0.5rem;
}

#dw-dor-root td.dw-dor-flag-col .form-check,
.dw-eval-assessment td.dw-dor-flag-col .form-check {
    padding-left: 0;
    min-height: 1.25rem;
}

#dw-dor-root .form-check-input.dw-not-observed-checkbox,
#dw-dor-root .form-check-input.dw-nrt-checkbox,
.dw-eval-assessment .form-check-input.dw-not-observed-checkbox {
    width: 1.25rem;
    height: 1.25rem;
    margin-top: 0;
    margin-left: 0;
    float: none;
}

#dw-dor-root .form-check-input.dw-nrt-checkbox:checked {
    background-color: var(--tblr-danger);
    border-color: var(--tblr-danger);
}

#dw-dor-root .dw-rating-cell,
.dw-eval-assessment .dw-rating-cell {
    display: flex;
    align-items: stretch;
    min-width: 11rem;
}

#dw-dor-root .dw-rating-color-preview,
.dw-eval-assessment .dw-rating-color-preview {
    flex: 0 0 5px;
    margin-right: -1px;
    border-radius: var(--tblr-border-radius) 0 0 var(--tblr-border-radius);
    background: var(--tblr-border-color);
}

#dw-dor-root .dw-rating-color-preview.has-color,
.dw-eval-assessment .dw-rating-color-preview.has-color {
    flex-basis: 6px;
}

#dw-dor-root .dw-rating-select,
.dw-eval-assessment .dw-rating-select {
    flex: 1 1 auto;
    min-width: 0;
}

#dw-dor-root .dw-rating-select.has-rating,
.dw-eval-assessment .dw-rating-select.has-rating,
.dw-eval-assessment .form-select.dw-rating-select.has-rating {
    font-weight: 600;
    color: var(--tblr-body-color);
    background-color: color-mix(in srgb, var(--dw-rating-color, transparent) 20%, var(--tblr-bg-forms, var(--tblr-bg-surface)));
    border-color: var(--dw-rating-color, var(--tblr-border-color));
}

#dw-dor-root .dw-rating-select.has-rating:disabled,
.dw-eval-assessment .dw-rating-select.has-rating:disabled {
    opacity: 1;
    color: var(--tblr-body-color);
}

#dw-dor-root .dw-rating-select option,
.dw-eval-assessment .dw-rating-select option {
    font-weight: normal;
}

#dwDorActivityModal .dw-rating-cell {
    display: flex;
    align-items: stretch;
    min-width: 11rem;
}

#dwDorActivityModal .dw-rating-color-preview {
    flex: 0 0 5px;
    margin-right: -1px;
    border-radius: var(--tblr-border-radius) 0 0 var(--tblr-border-radius);
    background: var(--tblr-border-color);
}

#dwDorActivityModal .dw-rating-color-preview.has-color {
    flex-basis: 6px;
}

#dwDorActivityModal .dw-act-rating-select {
    flex: 1 1 auto;
    min-width: 0;
}

#dwDorActivityModal .dw-act-rating-select.has-rating {
    font-weight: 600;
    background-color: color-mix(in srgb, var(--dw-rating-color, transparent) 20%, var(--tblr-bg-forms, var(--tblr-bg-surface)));
    border-color: var(--dw-rating-color, var(--tblr-border-color));
}

#dwDorActivityModal .dw-act-rating-select.has-rating:disabled {
    opacity: 1;
    color: var(--tblr-body-color);
}

.dw-notification-bell {
    display: inline-block;
    line-height: 1;
    vertical-align: middle;
}

#dw-notification-bell-toggle.dw-notification-bell-nav--active,
.dw-notification-bell-marker--active {
    color: var(--tblr-danger, #d63939);
}

/* Poll + Font Awesome 7: wrapper class + direct JS paint on svg/i. */
.dw-notification-bell-marker--active .dw-notification-bell,
.dw-notification-bell-marker--active svg {
    color: var(--tblr-danger, #d63939);
}

.dw-notification-bell-marker--active .dw-notification-bell,
.dw-notification-bell-marker--active svg {
    transform-origin: 50% 0.15em;
    animation: dw-notification-bell-swing 2s ease-in-out infinite;
    will-change: transform;
}

.dw-notification-bell--swing {
    transform-origin: 50% 0.15em;
    animation: dw-notification-bell-swing 2s ease-in-out infinite;
    will-change: transform;
}

@keyframes dw-notification-bell-swing {
    0%,
    55%,
    100% {
        transform: rotate(0deg);
    }

    8% {
        transform: rotate(18deg);
    }

    16% {
        transform: rotate(-15deg);
    }

    24% {
        transform: rotate(12deg);
    }

    32% {
        transform: rotate(-8deg);
    }

    40% {
        transform: rotate(4deg);
    }
}

@media (prefers-reduced-motion: reduce) {
    .dw-notification-bell--swing,
    .dw-notification-bell-marker--active .dw-notification-bell,
    .dw-notification-bell-marker--active svg {
        animation: none;
    }
}

/* DOR assessment card: section switcher lives in card header (paired tabs) */
.dw-dor-assessment-card .card-header.dw-dor-assessment-header--tabs {
    background-color: var(--tblr-bg-surface-secondary, var(--tblr-tertiary-bg));
}

.dw-dor-assessment-card .dw-dor-view-tab-group .btn {
    font-weight: 600;
    padding: 0.4rem 1.1rem;
    border-color: var(--tblr-border-color);
    color: var(--tblr-body-color);
    background-color: transparent;
}

.dw-dor-assessment-card .dw-dor-view-tab-group .btn:hover:not(.active) {
    background-color: rgba(var(--tblr-primary-rgb), 0.06);
    color: var(--tblr-body-color);
}

.dw-dor-assessment-card .dw-dor-view-tab-group .btn.active {
    background-color: var(--tblr-primary);
    border-color: var(--tblr-primary);
    color: var(--tblr-primary-fg, #fff);
    z-index: 2;
}

.dw-dor-assessment-card .dw-dor-view-tab-group .btn:focus-visible {
    box-shadow: 0 0 0 0.2rem rgba(var(--tblr-primary-rgb), 0.28);
}

/* DOR template picker: apply on select (Select2) */
.dw-dor-template-picker-field {
    min-width: 0;
}

.dw-dor-template-picker-field .select2-container {
    width: 100% !important;
}

/* Workflow assignee pickers (person / team) */
.dw-workflow-assignee-form .dw-wf-pick-fields {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    width: 100%;
}
.dw-workflow-assignee-form .dw-wf-assignee-picker {
    width: 100%;
    min-width: 0;
}
.dw-workflow-assignee-form .dw-wf-assignee-picker.mb-2 {
    margin-bottom: 0.75rem;
}
.dw-workflow-assignee-form .dw-wf-assignee-picker .form-select,
.dw-workflow-assignee-form .dw-wf-assignee-picker .select2-container {
    width: 100% !important;
    max-width: 100%;
}
.dw-workflow-assignee-form .dw-wf-action-row--primary {
    margin-top: 1rem;
    padding-top: 0.25rem;
    width: 100%;
}
.dw-dor-workflow-files-row .card-header .text-muted.small {
    font-size: 0.8125rem;
    line-height: 1.3;
}
.dw-workflow-assignee-form .dw-wf-action-row .btn {
    flex-shrink: 0;
}

/* Daily + event narrative: compact picker aligned right (matches card header) */
.dw-dor-template-picker-field--narrative {
    width: min(100%, 22rem);
    min-width: 12rem;
    flex: 0 0 auto;
}

.dw-dor-narrative-card .card-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

.dw-dor-narrative-card .card-header .card-title {
    flex: 1 1 auto;
    min-width: 0;
}

.dw-dor-narrative-card .card-actions {
    flex: 0 0 auto;
    margin-left: auto;
    width: min(100%, 22rem);
    min-width: 12rem;
    max-width: 100%;
}

.dw-dor-narrative-card .card-actions .dw-dor-template-picker-field--narrative {
    width: 100%;
}

.dw-dor-narrative-field__head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 0.75rem;
    margin-bottom: 0.5rem;
}

.dw-dor-narrative-field__head .form-label {
    flex: 1 1 auto;
    min-width: 0;
}

.dw-dor-narrative-field__head .dw-dor-template-picker-field--narrative {
    margin-left: auto;
}

.dw-dor-category-comment-head .dw-dor-template-picker-field--narrative {
    min-width: 10rem;
    max-width: 14rem;
}

.checklist-line-comment-cell .dw-dor-template-picker-field {
    width: 100%;
    max-width: 100%;
}

/* Program hub: tab bar + body (page actions live in .page-header above the card) */
.dw-program-hub-card {
    overflow: hidden;
}

.dw-program-hub-card > .dw-program-hub-header {
    position: relative;
    padding: 0;
    background-color: var(--tblr-bg-surface-secondary, var(--tblr-card-cap-bg, var(--tblr-tertiary-bg)));
    border-bottom: 0;
}

/* Full-width tab underline (avoids gray “gaps” past the last tab) */
.dw-program-hub-card > .dw-program-hub-header::after {
    content: '';
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 0;
    border-bottom: var(--tblr-border-width, 1px) solid var(--tblr-border-color, var(--bs-border-color));
    pointer-events: none;
}

.dw-program-hub-header .dw-program-hub-tabs {
    position: relative;
    z-index: 1;
    width: 100%;
    margin: 0;
    border-bottom: 0;
}

.dw-program-hub-header .nav-tabs .nav-link {
    color: var(--tblr-body-color);
    margin-bottom: -1px;
    border-top: 0;
    border-radius: 0;
}

.dw-program-hub-header .nav-tabs .nav-item:first-child .nav-link {
    border-left: 0;
}

.dw-program-hub-header .card-header-tabs .nav-link.active {
    color: var(--tblr-body-color);
    background-color: var(--tblr-card-bg, var(--bs-card-bg));
    border-bottom-color: var(--tblr-card-bg, var(--bs-card-bg));
}

.dw-program-hub-card > .card-body {
    padding: var(--tblr-card-spacer-y, 1.25rem) var(--tblr-card-spacer-x, 1.25rem);
}

/* Category / checklist group headers inside program tabs (not bg-light — breaks dark mode) */
.dw-program-section-head {
    background-color: var(--tblr-bg-surface-secondary, var(--tblr-card-cap-bg, var(--tblr-tertiary-bg)));
    color: var(--tblr-body-color);
}

[id^="dw-objectives-category-"],
[id^="dw-objective-row-"],
[id^="dw-objectives-matrix-line-"],
#dw-objectives-uncategorized {
    scroll-margin-top: 5rem;
}

@keyframes dwObjectivesScrollFlash {
    0% {
        box-shadow: none;
    }
    6% {
        box-shadow: inset 0 0 0 2px var(--tblr-primary);
    }
    72% {
        box-shadow: inset 0 0 0 2px var(--tblr-primary);
    }
    100% {
        box-shadow: none;
    }
}

.dw-objectives-scroll-highlight {
    animation: dwObjectivesScrollFlash 5s ease;
}

tr.dw-objectives-scroll-highlight {
    animation: dwObjectivesScrollFlash 5s ease;
}

.dw-objectives-category-progress {
    min-width: 10rem;
    max-width: 18rem;
}

@media (min-width: 768px) {
    .dw-objectives-category-head {
        flex-wrap: nowrap;
    }
}

#dw-objectives-matrix-table {
    width: 100%;
}

#dw-objectives-matrix-table .dw-objectives-col-name {
    width: 33%;
}

#dw-objectives-matrix-table .dw-objectives-col-phase {
    width: 1%;
    white-space: nowrap;
}

#dw-objectives-matrix-table .dw-objectives-col-mark,
#dw-objectives-matrix-table .dw-objectives-col-supervisor {
    width: 1%;
    min-width: 8rem;
}

#dw-objectives-matrix-table .dw-objectives-col-comment {
    width: 1%;
    white-space: nowrap;
}

#dw-objectives-matrix-table tr.dw-objectives-search-hidden,
#dw-objectives-matrix-table tr.dw-objectives-collapsed-hidden {
    display: none;
}

#dw-objectives-matrix-table.dw-objectives-search-active tr.dw-objectives-collapsed-hidden:not(.dw-objectives-search-hidden) {
    display: table-row;
}

.checklist-matrix-category-row[data-objectives-collapsed="1"] .dw-objectives-category-chevron {
    transform: rotate(-90deg);
}

.dw-objectives-category-toggle .dw-objectives-category-chevron {
    transition: transform 0.15s ease-in-out;
}

/* Rating section dividers (DOR assessment, activity modal, program categories) */
tr.dw-rating-section-head td {
    background-color: var(--tblr-bg-surface-secondary, var(--tblr-card-cap-bg, var(--tblr-tertiary-bg)));
    border-top: 1px solid var(--tblr-border-color);
    border-bottom: 1px solid var(--tblr-border-color);
    padding: 0.45rem 0.75rem;
    vertical-align: middle;
}

tr.dw-rating-section-head + tr td {
    border-top: none;
}

tr.dw-rating-section-desc td {
    background-color: transparent;
    border-top: none;
    border-bottom: none;
    padding: 0.5rem 0.75rem 0.65rem;
    vertical-align: top;
}

tr.dw-rating-section-desc + tr td {
    border-top: none;
}

.dw-rating-section-desc-card {
    border-color: var(--tblr-border-color);
    box-shadow: none;
}

.dw-rating-section-desc-card .card-body {
    font-size: 0.875rem;
    line-height: 1.4;
}

.dw-rating-section-group .dw-rating-section-head-block {
    margin-top: 0;
    margin-bottom: 0;
}

.dw-rating-section-group .dw-rating-section-head-block--has-desc {
    margin-bottom: 0;
}

.dw-rating-section-group .dw-rating-section-desc-card {
    margin-top: 0.35rem;
}

.dw-rating-section-head-inner {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.dw-rating-section-head-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: var(--tblr-border-radius, 4px);
    background-color: rgba(var(--tblr-primary-rgb, 32, 107, 196), 0.12);
    color: var(--tblr-primary);
    flex-shrink: 0;
}

.dw-rating-section-head-label {
    font-size: 0.7rem;
    font-weight: 700;
    color: var(--tblr-secondary);
    line-height: 1.2;
}

tr.dw-rating-section-head--muted .dw-rating-section-head-icon {
    background-color: var(--tblr-bg-surface-tertiary, var(--tblr-tertiary-bg));
    color: var(--tblr-secondary);
}

tr.dw-rating-section-head--muted .dw-rating-section-head-label {
    color: var(--tblr-secondary);
}

.dw-rating-section-head-block {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.45rem 0.75rem;
    margin-top: 0.5rem;
    margin-bottom: 0.75rem;
    border-radius: var(--tblr-border-radius, 4px);
    background-color: var(--tblr-bg-surface-secondary, var(--tblr-tertiary-bg));
    border: 1px solid var(--tblr-border-color);
    border-left: 3px solid var(--tblr-primary);
}

.dw-rating-section-head-block--has-desc {
    margin-bottom: 0.5rem;
}

.dw-rating-section-head-block--muted {
    border-left-color: var(--tblr-border-color);
}

.dw-rating-section-head-block--muted .dw-rating-section-head-label {
    color: var(--tblr-secondary);
}

.dw-rating-section-head-block:first-child {
    margin-top: 0;
}

/* Defs modal: spacing is handled on .dw-rating-section-group (categories are siblings). */

#dw-dor-activity-category-picks .dw-rating-section-head-pick,
#dw-dor-ccl-categories .dw-rating-section-head-pick {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.35rem 0.5rem;
    margin-top: 0.35rem;
    border-radius: var(--tblr-border-radius, 4px);
    background-color: var(--tblr-bg-surface-secondary, var(--tblr-tertiary-bg));
    border-left: 3px solid var(--tblr-primary);
}

#dw-dor-activity-category-picks .dw-rating-section-head-pick--muted,
#dw-dor-ccl-categories .dw-rating-section-head-pick--muted {
    border-left-color: var(--tblr-border-color);
}

/* Add/edit event modal + CCL: match section label size in checkbox picks and rating rows */
#dwDorActivityModal #dw-dor-activity-category-picks .dw-rating-section-head-pick .dw-rating-section-head-icon,
#dwDorActivityModal #dw-dor-activity-rating-rows tr.dw-rating-section-head .dw-rating-section-head-icon,
#dw-dor-ccl-categories .dw-rating-section-head-pick .dw-rating-section-head-icon {
    width: 1.5rem;
    height: 1.5rem;
    font-size: 0.75rem;
}

#dwDorActivityModal #dw-dor-activity-category-picks .dw-rating-section-head-pick .dw-rating-section-head-label,
#dwDorActivityModal #dw-dor-activity-rating-rows tr.dw-rating-section-head .dw-rating-section-head-label,
#dw-dor-ccl-categories .dw-rating-section-head-pick .dw-rating-section-head-label {
    font-size: 0.875rem;
}

#dwRatingScaleBody tr.dw-rating-scale-row-retired {
    background-color: var(--tblr-bg-surface-secondary, var(--tblr-tertiary-bg));
}

#dwRatingScaleBody tr.dw-rating-scale-row-retired input[readonly] {
    cursor: not-allowed;
    opacity: 0.85;
}

#dwRatingScaleBody .dw-rating-scale-row td:last-child {
    min-width: 6.5rem;
    white-space: nowrap;
}

/* Select2 — match Tabler form controls (light + dark via theme variables) */
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple {
    border: 1px solid var(--tblr-border-color);
    border-radius: var(--tblr-border-radius, 4px);
    min-height: 2.25rem;
    background-color: var(--tblr-bg-forms, var(--tblr-body-bg)) !important;
}

.select2-container--default .select2-selection--single .select2-selection__rendered {
    line-height: 2.125rem;
    padding-left: 0.75rem;
    color: var(--tblr-body-color);
}

.select2-container--default .select2-selection--single .select2-selection__arrow {
    height: 2.125rem;
}

.select2-container--default .select2-selection--single .select2-selection__arrow b {
    border-color: var(--tblr-secondary, #6c757d) transparent transparent transparent;
}

.select2-container--default .select2-selection__placeholder {
    color: var(--tblr-secondary, #6c757d);
}

.select2-container--default .select2-selection--multiple {
    padding: 0.125rem 0.375rem;
}

.select2-container--default .select2-selection--multiple .select2-selection__rendered {
    color: var(--tblr-body-color);
}

.select2-container--default .select2-selection--multiple .select2-selection__choice {
    background-color: var(--tblr-primary-lt, var(--tblr-bg-surface-secondary, var(--tblr-tertiary-bg)));
    border: 1px solid var(--tblr-border-color);
    color: var(--tblr-body-color);
}

.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
    color: var(--tblr-secondary, #6b7280);
    border-right-color: var(--tblr-border-color);
}

.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
    color: var(--tblr-body-color);
}

[data-bs-theme="dark"] .select2-container--default .select2-selection--multiple .select2-selection__choice {
    background-color: rgba(var(--tblr-primary-rgb, 6, 111, 209), 0.22);
    border-color: rgba(var(--tblr-primary-rgb, 6, 111, 209), 0.35);
    color: var(--tblr-body-color);
}

[data-bs-theme="dark"] .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
    color: var(--tblr-secondary, #9ca3af);
    border-right-color: rgba(var(--tblr-primary-rgb, 6, 111, 209), 0.35);
}

[data-bs-theme="dark"] .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
    color: var(--tblr-body-color);
}

.select2-container--default .select2-search--inline .select2-search__field {
    color: var(--tblr-body-color);
    background: transparent;
}

.select2-dropdown {
    border-color: var(--tblr-border-color);
    background-color: var(--tblr-bg-surface, var(--tblr-body-bg)) !important;
    color: var(--tblr-body-color);
}

.select2-container--default .select2-results__option {
    color: var(--tblr-body-color);
}

.select2-container--default .select2-results__option--highlighted[aria-selected] {
    background-color: var(--tblr-primary);
    color: var(--tblr-primary-fg, #fff);
}

.select2-container--default .select2-results__option--selected {
    background-color: var(--tblr-bg-surface-secondary, var(--tblr-tertiary-bg));
    color: var(--tblr-body-color);
}

.select2-container--default .select2-search--dropdown .select2-search__field {
    border: 1px solid var(--tblr-border-color);
    border-radius: var(--tblr-border-radius, 4px);
    background-color: var(--tblr-bg-forms, var(--tblr-body-bg)) !important;
    color: var(--tblr-body-color);
}

.select2-container--default.select2-container--focus .select2-selection--single,
.select2-container--default.select2-container--focus .select2-selection--multiple {
    border-color: var(--tblr-primary);
    outline: 0;
    box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb, 32, 107, 196), 0.25);
}

.modal .select2-container--default .select2-selection--single,
.modal .select2-container--default .select2-selection--multiple,
.modal .select2-dropdown {
    background-color: var(--tblr-bg-forms, var(--tblr-bg-surface, var(--tblr-body-bg))) !important;
}

/* DOR page: files + workflow side-by-side */
.dw-dor-workflow-files-row .card {
    height: 100%;
}

/* Forms hub: start-form cards */
.dw-forms-hub-card {
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.dw-forms-hub-card:hover {
    border-color: var(--tblr-primary);
    box-shadow: var(--tblr-box-shadow-input);
}

/* Analytics — trainee category history heatmap */
.dw-analytics-history-table-wrap {
    max-height: min(70vh, 42rem);
    overflow: auto;
}

.dw-analytics-history-table th,
.dw-analytics-history-table td {
    white-space: nowrap;
}

.dw-analytics-history-table thead th {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--tblr-bg-surface, #fff);
}

.dw-analytics-history-sticky-col {
    position: sticky;
    left: 0;
    z-index: 2;
    min-width: 11rem;
    max-width: 16rem;
    background: var(--tblr-bg-surface, #fff);
    box-shadow: 1px 0 0 var(--tblr-border-color, rgba(0, 0, 0, 0.08));
}

.dw-analytics-history-table thead .dw-analytics-history-sticky-col {
    z-index: 4;
}

.dw-analytics-history-table.table-striped > tbody > tr:nth-of-type(odd) > .dw-analytics-history-sticky-col,
.dw-analytics-history-table.table-striped > tbody > tr:nth-of-type(odd) > .dw-analytics-history-avg-col {
    background-color: var(--tblr-table-striped-bg, rgba(0, 0, 0, 0.02));
}

.dw-analytics-history-table > tbody > tr.table-active > .dw-analytics-history-sticky-col,
.dw-analytics-history-table > tbody > tr.table-active > .dw-analytics-history-avg-col {
    background-color: var(--tblr-active-bg, rgba(0, 0, 0, 0.04));
}

.dw-analytics-history-dor-col {
    min-width: 4.25rem;
    vertical-align: bottom;
}

.dw-analytics-history-score-cell {
    min-width: 3rem;
}

.dw-analytics-history-avg-col {
    min-width: 5.5rem;
    position: sticky;
    right: 0;
    z-index: 2;
    background: var(--tblr-bg-surface, #fff);
    box-shadow: -1px 0 0 var(--tblr-border-color, rgba(0, 0, 0, 0.08));
}

.dw-analytics-history-table thead .dw-analytics-history-avg-col {
    z-index: 4;
}

.dw-analytics-history-cell-link:hover .badge {
    filter: brightness(0.92);
}

.dw-analytics-history-problem-row .dw-analytics-history-sticky-col {
    border-left: 3px solid var(--tblr-danger, #d63939);
    padding-left: calc(0.75rem - 3px);
}

[data-bs-theme="dark"] .dw-analytics-history-sticky-col,
[data-bs-theme="dark"] .dw-analytics-history-avg-col,
[data-bs-theme="dark"] .dw-analytics-history-table thead th {
    background: var(--tblr-bg-surface, #1f2937);
}

[data-bs-theme="dark"] .dw-analytics-history-table.table-striped > tbody > tr:nth-of-type(odd) > .dw-analytics-history-sticky-col,
[data-bs-theme="dark"] .dw-analytics-history-table.table-striped > tbody > tr:nth-of-type(odd) > .dw-analytics-history-avg-col {
    background-color: var(--tblr-table-striped-bg, rgba(255, 255, 255, 0.03));
}

/* Analytics — category review (struggle → read write-ups) */
.dw-analytics-review-overview {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.dw-analytics-review-chip {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    min-width: 10rem;
    max-width: 18rem;
    padding: 0.65rem 0.75rem;
    border: 1px solid var(--tblr-border-color, #e6e7e9);
    border-radius: var(--tblr-border-radius, 0.375rem);
    background: var(--tblr-bg-surface, #fff);
    color: inherit;
    text-decoration: none;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.dw-analytics-review-chip:hover {
    border-color: var(--tblr-primary, #206bc4);
    color: inherit;
}

.dw-analytics-review-chip--problem {
    border-left: 3px solid var(--tblr-danger, #d63939);
}

.dw-analytics-review-chip--focused {
    border-color: var(--tblr-primary, #206bc4);
    box-shadow: 0 0 0 1px var(--tblr-primary, #206bc4);
}

.dw-analytics-review-chip-name {
    font-weight: 600;
    font-size: 0.875rem;
    line-height: 1.3;
}

.dw-analytics-review-chip-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.15rem;
}

.dw-analytics-review-category {
    margin-bottom: 1.75rem;
    padding-bottom: 0.25rem;
}

.dw-analytics-review-category--problem > .d-flex:first-child h4 {
    border-left: 3px solid var(--tblr-danger, #d63939);
    padding-left: 0.5rem;
}

.dw-analytics-review-entry {
    padding: 0.85rem 1rem;
    margin-bottom: 0.75rem;
    border: 1px solid var(--tblr-border-color, #e6e7e9);
    border-radius: var(--tblr-border-radius, 0.375rem);
    background: var(--tblr-bg-surface-secondary, rgba(0, 0, 0, 0.02));
}

.dw-analytics-review-writeups,
.dw-analytics-review-events {
    margin-top: 0.5rem;
}

.dw-analytics-review-block {
    margin-bottom: 0.65rem;
}

.dw-analytics-review-block:last-child {
    margin-bottom: 0;
}

.dw-analytics-review-event {
    padding: 0.65rem 0.75rem;
    margin-bottom: 0.5rem;
    border-left: 2px solid var(--tblr-border-color, #e6e7e9);
    background: var(--tblr-bg-surface, #fff);
    border-radius: 0 var(--tblr-border-radius, 0.375rem) var(--tblr-border-radius, 0.375rem) 0;
}

.dw-analytics-review-event:last-child {
    margin-bottom: 0;
}

[data-bs-theme="dark"] .dw-analytics-review-entry {
    background: rgba(255, 255, 255, 0.03);
}

[data-bs-theme="dark"] .dw-analytics-review-event {
    background: var(--tblr-bg-surface, #1f2937);
}

/* Analytics — rating heatmaps (cohort, phase, FTO calibration) */
.dw-analytics-heatmap-table-wrap {
    max-height: min(70vh, 42rem);
    overflow: auto;
}

.dw-analytics-heatmap-table th,
.dw-analytics-heatmap-table td {
    white-space: nowrap;
}

.dw-analytics-heatmap-table thead th {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--tblr-bg-surface, #fff);
}

.dw-analytics-heatmap-sticky-col {
    position: sticky;
    left: 0;
    z-index: 2;
    min-width: 11rem;
    max-width: 16rem;
    background: var(--tblr-bg-surface, #fff);
    box-shadow: 1px 0 0 var(--tblr-border-color, rgba(0, 0, 0, 0.08));
}

.dw-analytics-heatmap-table thead .dw-analytics-heatmap-sticky-col {
    z-index: 4;
}

.dw-analytics-heatmap-table > tbody > tr.table-active > .dw-analytics-heatmap-sticky-col,
.dw-analytics-heatmap-table > tbody > tr.table-active > .dw-analytics-heatmap-avg-col {
    background-color: var(--tblr-active-bg, rgba(0, 0, 0, 0.04));
}

.dw-analytics-heatmap-col {
    min-width: 4.5rem;
    vertical-align: bottom;
}

.dw-analytics-heatmap-score-cell {
    min-width: 3.25rem;
    padding: 0.35rem 0.25rem;
    vertical-align: middle;
}

.dw-analytics-heatmap-score-cell-empty {
    background: var(--tblr-bg-surface, #fff);
}

.dw-analytics-heatmap-cell-value {
    display: inline-block;
    min-width: 1.75rem;
    font-weight: 600;
    font-size: 0.8125rem;
    line-height: 1.2;
}

.dw-analytics-heatmap-empty {
    color: var(--tblr-muted, #6c757d);
}

.dw-analytics-heatmap-avg-col {
    min-width: 4.5rem;
    position: sticky;
    right: 0;
    z-index: 2;
    box-shadow: -1px 0 0 var(--tblr-border-color, rgba(0, 0, 0, 0.08));
    padding: 0.35rem 0.25rem;
    vertical-align: middle;
}

.dw-analytics-heatmap-avg-col.dw-analytics-heatmap-score-cell-empty {
    background: var(--tblr-bg-surface, #fff);
}

.dw-analytics-heatmap-table thead .dw-analytics-heatmap-avg-col {
    z-index: 4;
}

[data-bs-theme="dark"] .dw-analytics-heatmap-sticky-col,
[data-bs-theme="dark"] .dw-analytics-heatmap-table thead th,
[data-bs-theme="dark"] .dw-analytics-heatmap-score-cell-empty,
[data-bs-theme="dark"] .dw-analytics-heatmap-avg-col.dw-analytics-heatmap-score-cell-empty {
    background: var(--tblr-bg-surface, #1f2937);
}

/* Analytics — compare trainees scope row */
#dw-analytics-compare-scope-form .select2-container {
    width: 100% !important;
}

#dw-analytics-compare-scope-form .select2-container--default .select2-selection--single {
    height: 2.25rem;
}

#dw-analytics-compare-scope-form .select2-container--default .select2-selection--multiple {
    min-height: 2.25rem;
}

/* Developer — Create agency progress panel */
.dw-create-agency-progress-step {
    padding: 12px 15px;
    margin-bottom: 8px;
    border-radius: 6px;
    background: var(--tblr-bg-surface-secondary);
    border-left: 4px solid var(--tblr-border-color);
    display: flex;
    align-items: center;
    transition: all 0.3s ease;
}
.dw-create-agency-progress-step.pending {
    border-left-color: var(--tblr-secondary);
    color: var(--tblr-secondary);
}
.dw-create-agency-progress-step.running {
    border-left-color: var(--tblr-primary);
    background: var(--tblr-primary-lt);
    color: var(--tblr-primary);
}
.dw-create-agency-progress-step.success {
    border-left-color: var(--tblr-success);
    background: var(--tblr-success-lt);
    color: var(--tblr-success);
}
.dw-create-agency-progress-step.error {
    border-left-color: var(--tblr-danger);
    background: var(--tblr-danger-lt);
    color: var(--tblr-danger);
}
.dw-create-agency-progress-step .step-icon {
    width: 24px;
    margin-right: 12px;
    text-align: center;
}
.dw-create-agency-progress-step .step-text {
    flex: 1;
}
.dw-create-agency-progress-step .step-time {
    font-size: 0.85em;
    opacity: 0.8;
}
.dw-create-agency-log-output {
    background: #1e1e1e;
    color: #d4d4d4;
    font-family: Consolas, Monaco, monospace;
    font-size: 12px;
    padding: 15px;
    border-radius: 6px;
    height: 300px;
    overflow-y: auto;
    white-space: pre-wrap;
    word-wrap: break-word;
}
.dw-create-agency-log-output .log-info { color: #569cd6; }
.dw-create-agency-log-output .log-success { color: #4ec9b0; }
.dw-create-agency-log-output .log-warning { color: #dcdcaa; }
.dw-create-agency-log-output .log-error { color: #f14c4c; }
.dw-create-agency-form-section {
    margin-bottom: 20px;
}
.dw-create-agency-form-section h6 {
    margin-bottom: 15px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--tblr-border-color);
}
/* Legacy class names used by CreateAgency.php markup/JS */
.form-section { margin-bottom: 20px; }
.form-section h6 {
    margin-bottom: 15px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--tblr-border-color);
}
.progress-step {
    padding: 12px 15px;
    margin-bottom: 8px;
    border-radius: 6px;
    background: var(--tblr-bg-surface-secondary);
    border-left: 4px solid var(--tblr-border-color);
    display: flex;
    align-items: center;
    transition: all 0.3s ease;
}
.progress-step.pending { border-left-color: var(--tblr-secondary); color: var(--tblr-secondary); }
.progress-step.running { border-left-color: var(--tblr-primary); background: var(--tblr-primary-lt); color: var(--tblr-primary); }
.progress-step.success { border-left-color: var(--tblr-success); background: var(--tblr-success-lt); color: var(--tblr-success); }
.progress-step.error { border-left-color: var(--tblr-danger); background: var(--tblr-danger-lt); color: var(--tblr-danger); }
.progress-step .step-icon { width: 24px; margin-right: 12px; text-align: center; }
.progress-step .step-text { flex: 1; }
.progress-step .step-time { font-size: 0.85em; opacity: 0.8; }
.log-output {
    background: #1e1e1e;
    color: #d4d4d4;
    font-family: Consolas, Monaco, monospace;
    font-size: 12px;
    padding: 15px;
    border-radius: 6px;
    height: 300px;
    overflow-y: auto;
    white-space: pre-wrap;
    word-wrap: break-word;
}
.log-output .log-info { color: #569cd6; }
.log-output .log-success { color: #4ec9b0; }
.log-output .log-warning { color: #dcdcaa; }
.log-output .log-error { color: #f14c4c; }

/* ApexCharts: dark-mode legend swatch ↔ label spacing (event stats donuts, etc.) */
[data-bs-theme="dark"] .apexcharts-legend .apexcharts-legend-series {
    margin-right: 0.75rem !important;
}
[data-bs-theme="dark"] .apexcharts-legend .apexcharts-legend-marker {
    margin-right: 0.45rem !important;
}
[data-bs-theme="dark"] .apexcharts-datalabels text,
[data-bs-theme="dark"] .apexcharts-datalabel label {
    fill: #ffffff !important;
}

/* ApexCharts: light hover tooltips with dark text (readable in day and night mode) */
.apexcharts-tooltip.apexcharts-theme-light {
    background: var(--tblr-bg-surface, #fff) !important;
    border: 1px solid var(--tblr-border-color, #e2e8f0) !important;
    color: var(--tblr-body-color, #1e293b) !important;
    box-shadow: var(--tblr-box-shadow-dropdown, 0 0.5rem 1rem rgba(0, 0, 0, 0.15)) !important;
}
.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title,
.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-text-y-label,
.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-text-y-value,
.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-text-z-label,
.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-text-z-value,
.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-text-goals-label,
.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-text-goals-value {
    color: var(--tblr-body-color, #1e293b) !important;
}

.dw-dashboard-metrics-row .row.row-cards {
    align-items: stretch;
}

.dw-dashboard-metrics-row .card.h-100 {
    height: 100%;
}

/* FTO Training Calendar (FullCalendar) */
.dw-fto-calendar {
    height: 680px;
    min-height: 680px;
}
.dw-fto-calendar .fc {
    height: 100%;
}
.dw-fto-calendar.dw-fto-calendar-year-view {
    overflow-x: hidden;
    overflow-y: auto;
}
.dw-fto-calendar.dw-fto-calendar-year-view .fc {
    height: auto !important;
}
.dw-fto-calendar.dw-fto-calendar-year-view .fc-multimonth {
    min-height: 0;
}
.dw-fto-calendar .fc-event.dw-fc-plan {
    border-style: dashed !important;
    border-width: 2px !important;
}
.dw-fto-calendar .fc-event.dw-fc-actual {
    border-width: 2px !important;
}
/* Light mode: FullCalendar sets inline color from textColor on .fc-event-main — do not override. */
.dw-fto-calendar .fc-list-event:hover td {
    filter: brightness(0.97);
}
.dw-fc-legend-swatch {
    display: inline-block;
    width: 0.85rem;
    height: 0.85rem;
    border-radius: 0.15rem;
    margin-right: 0.35rem;
    vertical-align: -0.1rem;
    border: 2px solid transparent;
}
.dw-fc-legend-plan {
    background-color: var(--tblr-primary-lt);
    border-color: var(--tblr-primary);
    border-style: dashed;
}
.dw-fc-legend-actual {
    background-color: var(--tblr-success-lt);
    border-color: var(--tblr-success);
}
.tooltip.dw-fc-event-tooltip .tooltip-inner {
    max-width: 320px;
    text-align: left;
}
.tooltip.dw-fc-event-tooltip .tooltip-inner strong {
    font-weight: 600;
}

/* Dark mode: saturated trainee colors + light text (pastel light-mode fills wash out on dark UI) */
[data-bs-theme="dark"] .dw-fto-calendar .fc-list-event:hover td {
    filter: brightness(1.08);
}
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-colored,
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-colored .fc-event-main,
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-colored .fc-event-title,
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-colored .fc-list-event-title,
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-colored .fc-list-event-time,
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-colored a {
    color: var(--dw-fc-event-text, var(--fc-event-text-color)) !important;
}
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-0.dw-fc-plan { --dw-fc-event-bg: #1e3a5f; --dw-fc-event-border: #60a5fa; --dw-fc-event-text: #dbeafe; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-0.dw-fc-actual { --dw-fc-event-bg: #1e40af; --dw-fc-event-border: #93c5fd; --dw-fc-event-text: #eff6ff; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-1.dw-fc-plan { --dw-fc-event-bg: #14532d; --dw-fc-event-border: #4ade80; --dw-fc-event-text: #dcfce7; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-1.dw-fc-actual { --dw-fc-event-bg: #166534; --dw-fc-event-border: #86efac; --dw-fc-event-text: #f0fdf4; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-2.dw-fc-plan { --dw-fc-event-bg: #78350f; --dw-fc-event-border: #fbbf24; --dw-fc-event-text: #fef3c7; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-2.dw-fc-actual { --dw-fc-event-bg: #92400e; --dw-fc-event-border: #fcd34d; --dw-fc-event-text: #fffbeb; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-3.dw-fc-plan { --dw-fc-event-bg: #4c1d95; --dw-fc-event-border: #a78bfa; --dw-fc-event-text: #ede9fe; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-3.dw-fc-actual { --dw-fc-event-bg: #6d28d9; --dw-fc-event-border: #c4b5fd; --dw-fc-event-text: #f5f3ff; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-4.dw-fc-plan { --dw-fc-event-bg: #881337; --dw-fc-event-border: #fb7185; --dw-fc-event-text: #ffe4e6; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-4.dw-fc-actual { --dw-fc-event-bg: #be123c; --dw-fc-event-border: #fda4af; --dw-fc-event-text: #fff1f2; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-5.dw-fc-plan { --dw-fc-event-bg: #134e4a; --dw-fc-event-border: #2dd4bf; --dw-fc-event-text: #ccfbf1; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-5.dw-fc-actual { --dw-fc-event-bg: #0f766e; --dw-fc-event-border: #5eead4; --dw-fc-event-text: #f0fdfa; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-6.dw-fc-plan { --dw-fc-event-bg: #312e81; --dw-fc-event-border: #818cf8; --dw-fc-event-text: #e0e7ff; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-6.dw-fc-actual { --dw-fc-event-bg: #4338ca; --dw-fc-event-border: #a5b4fc; --dw-fc-event-text: #eef2ff; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-7.dw-fc-plan { --dw-fc-event-bg: #831843; --dw-fc-event-border: #f472b6; --dw-fc-event-text: #fce7f3; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-7.dw-fc-actual { --dw-fc-event-bg: #be185d; --dw-fc-event-border: #f9a8d4; --dw-fc-event-text: #fdf2f8; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-8.dw-fc-plan { --dw-fc-event-bg: #7c2d12; --dw-fc-event-border: #fb923c; --dw-fc-event-text: #ffedd5; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-8.dw-fc-actual { --dw-fc-event-bg: #c2410c; --dw-fc-event-border: #fdba74; --dw-fc-event-text: #fff7ed; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-9.dw-fc-plan { --dw-fc-event-bg: #365314; --dw-fc-event-border: #a3e635; --dw-fc-event-text: #ecfccb; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-9.dw-fc-actual { --dw-fc-event-bg: #4d7c0f; --dw-fc-event-border: #bef264; --dw-fc-event-text: #f7fee7; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-10.dw-fc-plan { --dw-fc-event-bg: #164e63; --dw-fc-event-border: #22d3ee; --dw-fc-event-text: #cffafe; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-10.dw-fc-actual { --dw-fc-event-bg: #0e7490; --dw-fc-event-border: #67e8f9; --dw-fc-event-text: #ecfeff; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-11.dw-fc-plan { --dw-fc-event-bg: #701a75; --dw-fc-event-border: #e879f9; --dw-fc-event-text: #fae8ff; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-trainee-11.dw-fc-actual { --dw-fc-event-bg: #a21caf; --dw-fc-event-border: #f0abfc; --dw-fc-event-text: #fdf4ff; }
[data-bs-theme="dark"] .dw-fto-calendar .fc-event.dw-fc-colored {
    background-color: var(--dw-fc-event-bg) !important;
    border-color: var(--dw-fc-event-border) !important;
}
[data-bs-theme="dark"] .dw-fto-calendar .fc-list-event.dw-fc-colored td {
    background-color: var(--dw-fc-event-bg) !important;
    border-color: var(--dw-fc-event-border) !important;
}

.dw-dor-task-exposure-table-wrap {
    overflow-x: auto;
}

.dw-dor-task-exposure-legend-row {
    display: flex;
    align-items: flex-start;
    gap: 0;
}

.dw-dor-task-exposure-legend-spacer {
    flex: 0 0 12rem;
    width: 12rem;
    min-width: 12rem;
    max-width: 18rem;
}

.dw-dor-task-exposure-legend {
    flex: 1 1 auto;
    min-width: 0;
    text-align: right;
}

.dw-dor-task-exposure-legend .badge,
.dw-dor-task-exposure-legend-badge {
    font-size: 0.7rem;
    font-weight: 600;
    color: #fff !important;
    text-shadow: 0 1px 1px rgba(0, 0, 0, 0.35);
}

.dw-dor-task-exposure-table .dw-dor-task-exposure-task-col {
    min-width: 12rem;
    max-width: 18rem;
    vertical-align: middle;
}

.dw-dor-task-exposure-table .dw-dor-task-exposure-col-head {
    width: 2.75rem;
    min-width: 2.75rem;
    font-size: 0.75rem;
}

.dw-dor-task-exposure-cell {
    width: 2.75rem;
    min-width: 2.75rem;
    height: 2.25rem;
    padding: 0 !important;
    text-align: center;
    vertical-align: middle;
    border-color: var(--tblr-border-color) !important;
}

.dw-dor-task-exposure-cell.is-filled {
    border-color: color-mix(in srgb, currentColor 10%, var(--tblr-border-color)) !important;
}

.dw-dor-task-exposure-cell.is-filled.is-other-dor {
    cursor: default;
    opacity: 0.72;
}

.dw-dor-task-exposure-cell.is-addable,
.dw-dor-task-exposure-cell.is-editable {
    cursor: pointer;
}

.dw-dor-task-exposure-cell.is-addable:hover {
    background-color: var(--tblr-active-bg, rgba(0, 0, 0, 0.04));
}

.dw-dor-task-exposure-cell.is-filled.is-editable:hover {
    filter: brightness(0.92);
}

.dw-dor-task-exposure-cell.is-filled,
.dw-dor-task-exposure-cell.is-filled .dw-dor-task-exposure-code {
    color: #fff !important;
    text-shadow: 0 1px 1px rgba(0, 0, 0, 0.35);
}

.dw-dor-task-exposure-code {
    display: block;
    font-size: 0.65rem;
    font-weight: 700;
    line-height: 2.25rem;
    letter-spacing: -0.02em;
    pointer-events: none;
    user-select: none;
    color: inherit;
}

.dw-dor-task-exposure-add {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    font-size: 0.75rem;
    opacity: 0.55;
}

.dw-task-exposure-grid--readonly .dw-dor-task-exposure-cell {
    cursor: default;
}

.dw-task-exposure-grid--readonly .dw-dor-task-exposure-cell.is-filled.is-readonly:hover {
    filter: none;
}

/* Compact layout — display-only category reference on DOR (not the assessment table) */
.dw-dor-category-reference-card .dw-dor-category-reference-table-wrap {
    width: 100%;
    max-width: 100%;
}

.dw-dor-category-reference-card .dw-dor-category-reference-table thead th {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    color: var(--tblr-secondary);
    padding: 0.25rem 0.5rem;
}

.dw-dor-category-reference-card .card-header {
    min-height: 0;
}

.dw-dor-category-reference-card .card-title {
    font-size: 1rem;
}

.dw-dor-category-reference-card .dw-dor-category-reference-table tbody td {
    padding: 0.15rem 0.5rem;
    font-size: 0.8125rem;
    line-height: 1.2;
}

.dw-dor-category-reference-card .dw-dor-category-reference-table .dw-dor-rating-category-label {
    min-height: 0;
}

.dw-dor-category-reference-card .dw-dor-category-reference-table .dw-cat-desc-popover.dw-touch-icon-btn {
    min-width: 1.375rem;
    min-height: 1.375rem;
    padding: 0;
    font-size: 0.8125rem;
}

.dw-dor-category-reference-card .dw-dor-category-reference-table tr.dw-rating-section-head td {
    padding: 0.15rem 0.5rem;
    background-color: var(--tblr-bg-surface-secondary, var(--tblr-light));
}

.dw-dor-category-reference-card .dw-rating-section-head-inner {
    gap: 0.35rem;
}

.dw-dor-category-reference-card .dw-rating-section-head-icon {
    width: 1.125rem;
    height: 1.125rem;
    font-size: 0.625rem;
}

.dw-dor-category-reference-card tr.dw-rating-section-head .dw-rating-section-head-label {
    font-size: 0.625rem;
    line-height: 1.1;
}

.dw-program-form-fields-list .dw-form-field-drag-handle {
    cursor: grab;
    color: var(--tblr-secondary);
    line-height: 1;
    padding: 0.125rem 0.25rem;
    touch-action: none;
}

.dw-program-form-fields-list .dw-form-field-drag-handle:active {
    cursor: grabbing;
}

.dw-program-form-fields-list li.dw-form-field-dragging {
    opacity: 0.65;
}

.dw-program-form-fields-list li.dw-form-field-drag-over {
    background-color: var(--tblr-primary-lt, rgba(32, 107, 196, 0.08));
}

.dw-objective-required-badge {
    font-size: 0.625rem;
    font-weight: 600;
    padding: 0.1rem 0.35rem;
    line-height: 1.1;
    vertical-align: middle;
}
