/* Custom Styles - Bootstrap Overrides and App-Specific */

/* ============================================
   DARK THEME - CSS VARIABLES
   ============================================ */

:root {
    /* Default theme values - will be overridden by inline styles from database */
    --theme-bg-type: solid;
    --theme-bg-color: #1a1a1a;
    --theme-bg-gradient-start: #1a1a1a;
    --theme-bg-gradient-end: #2a2a2a;
    --theme-border-color: #ffffff;
    --theme-text-color: #ffffff;
    --theme-card-bg: #2a2a2a;
    --theme-button-primary: #4a5568;
    --theme-button-secondary: #3a3a3a;
    --theme-button-success: #2d5016;
    --theme-button-danger: #5a1a1a;
    --theme-button-warning: #5a4a1a;
    --theme-button-info: #1a4a5a;
}

/* Dark Theme Base */
body {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    background-color: var(--theme-bg-color) !important;
    color: var(--theme-text-color) !important;
}

/* Dark Background */
body, .main-content {
    background-color: var(--theme-bg-color);
    color: var(--theme-text-color);
}

/* Note: Gradient backgrounds are handled via inline styles in header.php for dynamic theme support */

/* Cards - Dark with White Borders */
.card {
    background-color: var(--theme-card-bg) !important;
    border: 1px solid var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
    margin-bottom: 1.5rem;
}

.card-header {
    background-color: var(--theme-card-bg) !important;
    border-bottom: 1px solid var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

.card-body {
    background-color: var(--theme-card-bg) !important;
    color: var(--theme-text-color) !important;
}

.card-footer {
    background-color: var(--theme-card-bg) !important;
    border-top: 1px solid var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

.accordion-item {
    background-color: var(--theme-card-bg) !important;
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

.accordion-button,
.accordion-button:not(.collapsed) {
    background-color: var(--theme-card-bg) !important;
    color: var(--theme-text-color) !important;
    box-shadow: none;
}

.accordion-button:focus {
    box-shadow: none;
}

.accordion-body {
    background-color: var(--theme-card-bg) !important;
    color: var(--theme-text-color) !important;
}

/* Tables - Dark with White Borders */
.table {
    color: var(--theme-text-color) !important;
    background-color: var(--theme-card-bg) !important;
    border-color: var(--theme-border-color) !important;
}

.table th {
    white-space: nowrap;
    background-color: var(--theme-card-bg) !important;
    color: var(--theme-text-color) !important;
    border-color: var(--theme-border-color) !important;
    border-bottom: 1px solid var(--theme-border-color) !important;
}

.table td {
    background-color: var(--theme-card-bg) !important;
    color: var(--theme-text-color) !important;
    border-color: var(--theme-border-color) !important;
    border-top: 1px solid var(--theme-border-color) !important;
}

.table tbody tr {
    border-color: var(--theme-border-color) !important;
}

.table tbody tr:hover {
    background-color: color-mix(in srgb, var(--theme-card-bg) 80%, white) !important;
}

.table th a {
    color: var(--theme-text-color) !important;
    text-decoration: none;
}

.table th a:hover {
    color: rgba(255, 255, 255, 0.8) !important;
    text-decoration: underline;
}

.table th.sortable:hover {
    background-color: color-mix(in srgb, var(--theme-card-bg) 80%, white) !important;
}

.table th.sorting-active {
    background-color: color-mix(in srgb, var(--theme-card-bg) 80%, white) !important;
    font-weight: 600;
}

.table th.sorting-active .sort-indicator {
    opacity: 1;
    color: var(--theme-text-color) !important;
}

.table-bordered {
    border: 1px solid var(--theme-border-color) !important;
}

.table-bordered th,
.table-bordered td {
    border: 1px solid var(--theme-border-color) !important;
}

/* Form Controls - Dark Theme */
.form-control,
.form-select,
.form-check-input {
    background-color: var(--theme-card-bg) !important;
    border: 1px solid var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

.form-control:focus,
.form-select:focus {
    background-color: var(--theme-card-bg) !important;
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
    box-shadow: 0 0 0 0.25rem rgba(255, 255, 255, 0.25);
}

.form-control::placeholder {
    color: color-mix(in srgb, var(--theme-text-color) 50%, transparent) !important;
}

.form-label {
    color: var(--theme-text-color) !important;
}

.form-text {
    color: color-mix(in srgb, var(--theme-text-color) 80%, transparent) !important;
}

/* Buttons - Darker Colors on Dark Background */
.btn-primary {
    background-color: var(--theme-button-primary) !important;
    border-color: var(--theme-button-primary) !important;
    color: var(--theme-text-color) !important;
}

.btn-primary:hover {
    opacity: 0.9;
    filter: brightness(1.1);
}

.btn-secondary {
    background-color: var(--theme-button-secondary) !important;
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

.btn-secondary:hover {
    background-color: color-mix(in srgb, var(--theme-button-secondary) 90%, white) !important;
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

.btn-success {
    background-color: var(--theme-button-success) !important;
    border-color: var(--theme-button-success) !important;
    color: var(--theme-text-color) !important;
}

.btn-success:hover {
    opacity: 0.9;
    filter: brightness(1.1);
}

.btn-danger {
    background-color: var(--theme-button-danger) !important;
    border-color: var(--theme-button-danger) !important;
    color: var(--theme-text-color) !important;
}

.btn-danger:hover {
    opacity: 0.9;
    filter: brightness(1.1);
}

.btn-warning {
    background-color: var(--theme-button-warning) !important;
    border-color: var(--theme-button-warning) !important;
    color: var(--theme-text-color) !important;
}

.btn-warning:hover {
    opacity: 0.9;
    filter: brightness(1.1);
}

.btn-info {
    background-color: var(--theme-button-info) !important;
    border-color: var(--theme-button-info) !important;
    color: var(--theme-text-color) !important;
}

.btn-info:hover {
    opacity: 0.9;
    filter: brightness(1.1);
}

.btn-link {
    --bs-btn-color: #ffc107;
    --bs-btn-hover-color: #ffc107;
    --bs-btn-active-color: #ffc107;
    --bs-btn-disabled-color: #ffc107;
    color: #ffc107 !important;
}

.btn-link:hover,
.btn-link:focus,
.btn-link:active,
.btn-link:focus-visible {
    color: #ffc107 !important;
}

.btn-link.text-danger,
.btn-link.text-danger:hover,
.btn-link.text-danger:focus,
.btn-link.text-danger:active {
    color: #dc3545 !important;
}

.btn-outline-primary {
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
    background-color: transparent !important;
}

.btn-outline-primary:hover {
    background-color: var(--theme-button-primary) !important;
    border-color: var(--theme-button-primary) !important;
    color: var(--theme-text-color) !important;
}

.btn-outline-secondary {
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
    background-color: transparent !important;
}

.btn-outline-secondary:hover {
    background-color: var(--theme-button-secondary) !important;
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

.btn-outline-success {
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
    background-color: transparent !important;
}

.btn-outline-success:hover {
    background-color: var(--theme-button-success) !important;
    border-color: var(--theme-button-success) !important;
    color: var(--theme-text-color) !important;
}

.btn-outline-danger {
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
    background-color: transparent !important;
}

.btn-outline-danger:hover {
    background-color: var(--theme-button-danger) !important;
    border-color: var(--theme-button-danger) !important;
    color: var(--theme-text-color) !important;
}

.btn-outline-warning {
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
    background-color: transparent !important;
}

.btn-outline-warning:hover {
    background-color: var(--theme-button-warning) !important;
    border-color: var(--theme-button-warning) !important;
    color: var(--theme-text-color) !important;
}

.btn-outline-info {
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
    background-color: transparent !important;
}

.btn-outline-info:hover {
    background-color: var(--theme-button-info) !important;
    border-color: var(--theme-button-info) !important;
    color: var(--theme-text-color) !important;
}

.btn-outline-light {
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
    background-color: transparent !important;
}

.btn-outline-light:hover {
    background-color: color-mix(in srgb, var(--theme-card-bg) 80%, white) !important;
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

.btn-light {
    background-color: color-mix(in srgb, var(--theme-card-bg) 80%, white) !important;
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

.btn-light:hover {
    background-color: color-mix(in srgb, var(--theme-card-bg) 70%, white) !important;
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

/* Alerts - Dark Theme */
.alert {
    border: 1px solid var(--theme-border-color) !important;
}

.alert-success {
    background-color: color-mix(in srgb, var(--theme-button-success) 30%, transparent) !important;
    border-color: var(--theme-button-success) !important;
    color: var(--theme-text-color) !important;
}

.alert-danger {
    background-color: color-mix(in srgb, var(--theme-button-danger) 30%, transparent) !important;
    border-color: var(--theme-button-danger) !important;
    color: var(--theme-text-color) !important;
}

.alert-warning {
    background-color: color-mix(in srgb, var(--theme-button-warning) 30%, transparent) !important;
    border-color: var(--theme-button-warning) !important;
    color: var(--theme-text-color) !important;
}

.alert-info {
    background-color: color-mix(in srgb, var(--theme-button-info) 30%, transparent) !important;
    border-color: var(--theme-button-info) !important;
    color: var(--theme-text-color) !important;
}

.alert-secondary {
    background-color: var(--theme-card-bg) !important;
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

/* Badges - Dark Theme */
.badge {
    border: 1px solid var(--theme-border-color) !important;
}

.bg-success {
    background-color: var(--theme-button-success) !important;
    color: var(--theme-text-color) !important;
}

.bg-danger {
    background-color: var(--theme-button-danger) !important;
    color: var(--theme-text-color) !important;
}

.bg-primary {
    background-color: var(--theme-button-primary) !important;
    color: var(--theme-text-color) !important;
}

/* Stat cards - ensure bg-* classes override .card and .card-body theme overrides */
.card.bg-primary,
.card.bg-primary .card-body,
.card.bg-primary .card-header,
.card.bg-primary .card-footer {
    background-color: var(--theme-button-primary) !important;
    color: var(--theme-text-color) !important;
}

.card.bg-success,
.card.bg-success .card-body,
.card.bg-success .card-header,
.card.bg-success .card-footer {
    background-color: var(--theme-button-success) !important;
    color: var(--theme-text-color) !important;
}

.card.bg-danger,
.card.bg-danger .card-body,
.card.bg-danger .card-header,
.card.bg-danger .card-footer {
    background-color: var(--theme-button-danger) !important;
    color: var(--theme-text-color) !important;
}

.card.bg-secondary,
.card.bg-secondary .card-body,
.card.bg-secondary .card-header,
.card.bg-secondary .card-footer {
    background-color: var(--theme-button-secondary) !important;
    color: var(--theme-text-color) !important;
}

.bg-secondary {
    background-color: var(--theme-button-secondary) !important;
    color: var(--theme-text-color) !important;
}

.bg-warning {
    background-color: var(--theme-button-warning) !important;
    color: var(--theme-text-color) !important;
}

.bg-info {
    background-color: var(--theme-button-info) !important;
    color: var(--theme-text-color) !important;
}

.bg-dark {
    background-color: var(--theme-bg-color) !important;
    color: var(--theme-text-color) !important;
}

/* Modals - Dark Theme */
.modal-content {
    background-color: var(--theme-card-bg) !important;
    border: 1px solid var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

.modal-header {
    border-bottom: 1px solid var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

.modal-footer {
    border-top: 1px solid var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

.modal-title {
    color: var(--theme-text-color) !important;
}

.btn-close {
    filter: invert(1);
}

/* Navbar - Dark Theme */
.navbar-dark {
    background-color: var(--theme-bg-color) !important;
    border-bottom: 1px solid var(--theme-border-color) !important;
}

.navbar-dark .navbar-nav .nav-link {
    color: var(--theme-text-color) !important;
}

.navbar-dark .navbar-nav .nav-link:hover {
    color: rgba(255, 255, 255, 0.8) !important;
}

.navbar-dark .navbar-brand {
    color: var(--theme-text-color) !important;
}

.navbar-menu-toggle::after {
    display: none;
}

.navbar-menu-chevron {
    flex-shrink: 0;
    opacity: 0.85;
    vertical-align: -0.1em;
    transition: transform 0.15s ease-in-out;
}

.navbar-menu-toggle.show .navbar-menu-chevron {
    transform: rotate(180deg);
}

.navbar-nav-divider {
    width: 1px;
    align-self: stretch;
    margin: 0.45rem 0.35rem;
    background-color: var(--theme-border-color, currentColor);
    opacity: 0.45;
    pointer-events: none;
}

@media (max-width: 991.98px) {
    .navbar-nav-divider {
        width: auto;
        height: 1px;
        align-self: stretch;
        margin: 0.35rem 0.75rem;
    }
}

/* Pagination - Dark Theme */
.page-link {
    background-color: var(--theme-card-bg) !important;
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

.page-link:hover {
    opacity: 0.9;
    filter: brightness(1.1);
}

.page-item.active .page-link {
    background-color: var(--theme-button-primary) !important;
    border-color: var(--theme-button-primary) !important;
    color: var(--theme-text-color) !important;
}

.page-item.disabled .page-link {
    background-color: var(--theme-card-bg) !important;
    border-color: rgba(255, 255, 255, 0.3) !important;
    color: rgba(255, 255, 255, 0.3) !important;
}

/* Text Colors */
.text-muted {
    color: rgba(255, 255, 255, 0.6) !important;
}

.text-white {
    color: var(--theme-text-color) !important;
}

h1, h2, h3, h4, h5, h6 {
    color: var(--theme-text-color) !important;
}

p {
    color: var(--theme-text-color) !important;
}

/* Links */
a {
    color: var(--theme-text-color) !important;
}

a:hover {
    color: rgba(255, 255, 255, 0.8) !important;
}

/* Dropdowns */
.dropdown-menu {
    background-color: var(--theme-card-bg) !important;
    border: 1px solid var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

.dropdown-item {
    color: var(--theme-text-color) !important;
}

.dropdown-item:hover {
    background-color: rgba(255, 255, 255, 0.1) !important;
    color: var(--theme-text-color) !important;
}

.dropdown-item.active {
    background-color: var(--theme-button-primary) !important;
    color: var(--theme-text-color) !important;
}

/* List Groups */
.list-group-item {
    background-color: var(--theme-card-bg) !important;
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

.list-group-item.active {
    background-color: var(--theme-button-primary) !important;
    border-color: var(--theme-button-primary) !important;
    color: var(--theme-text-color) !important;
}

/* Input Groups */
.input-group-text {
    background-color: var(--theme-card-bg) !important;
    border-color: var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

/* Table Filters */
.table-filters {
    background-color: var(--theme-card-bg) !important;
    border-color: var(--theme-border-color) !important;
}

.table-filters th,
.table-filters td {
    padding: 0.5rem;
    border-color: var(--theme-border-color) !important;
}

.table-filters input {
    border: 1px solid var(--theme-border-color) !important;
    background-color: var(--theme-card-bg) !important;
    color: var(--theme-text-color) !important;
    font-size: 0.875rem;
}

/* Sanitized rich text (notes, scope) in admin */
.rich-text-content {
    word-break: break-word;
}
.rich-text-content p:last-child,
.rich-text-content ul:last-child,
.rich-text-content ol:last-child {
    margin-bottom: 0;
}
.rich-text-content a {
    color: var(--theme-button-primary, #6ea8fe);
    text-decoration: underline;
    cursor: pointer;
    pointer-events: auto;
}

/* Projects list: inline status/stage selects sized to dropdown */
.projects-inline-select-col {
    width: 1%;
    white-space: nowrap;
}
.projects-inline-select {
    width: auto;
    min-width: 0;
    display: inline-block;
}

/* Project scope/notes: raw HTML and line breaks as entered */
.project-html-content {
    word-break: break-word;
    white-space: pre-wrap;
}
.project-html-content a {
    color: var(--theme-button-primary, #6ea8fe);
    text-decoration: underline;
    cursor: pointer;
    pointer-events: auto;
}

.project-scope-field {
    min-height: 240px;
}

.projects-scope-col {
    width: 18rem;
    max-width: 18rem;
    min-width: 18rem;
    white-space: normal !important;
    word-break: break-word;
    vertical-align: top;
}

.projects-date-col {
    width: 5.5rem;
    max-width: 5.5rem;
    white-space: nowrap;
    font-size: 0.8125rem;
    padding-left: 0.35rem !important;
    padding-right: 0.35rem !important;
}

.projects-scope-col .js-project-scope-open {
    text-decoration: none;
    white-space: normal;
    word-break: break-word;
    line-height: 1.35;
}
.projects-scope-col .js-project-scope-open:hover {
    text-decoration: underline;
}

/* Stats Grid */
.stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 1.5rem;
    margin-bottom: 2rem;
}

.stat-card {
    background: var(--theme-card-bg) !important;
    border: 1px solid var(--theme-border-color) !important;
    border-radius: 8px;
    box-shadow: 0 2px 4px color-mix(in srgb, var(--theme-border-color) 10%, transparent);
    padding: 1.5rem;
    color: var(--theme-text-color) !important;
}

.stat-card h3 {
    color: color-mix(in srgb, var(--theme-text-color) 80%, transparent) !important;
    font-size: 0.875rem;
    text-transform: uppercase;
    margin-bottom: 0.5rem;
}

.stat-card .stat-value {
    font-size: 2rem;
    font-weight: bold;
    color: var(--theme-text-color) !important;
}

/* Auth Pages - Dark Theme */
.auth-container {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    background-color: var(--theme-bg-color);
}

.auth-box {
    background: var(--theme-card-bg) !important;
    border: 1px solid var(--theme-border-color) !important;
    padding: 2rem;
    border-radius: 8px;
    box-shadow: 0 4px 6px color-mix(in srgb, var(--theme-border-color) 10%, transparent);
    width: 100%;
    max-width: 400px;
    color: var(--theme-text-color) !important;
}

.auth-box h1 {
    margin-bottom: 1.5rem;
    color: var(--theme-text-color) !important;
    text-align: center;
}

.auth-links {
    text-align: center;
    margin-top: 1rem;
}

.auth-links a {
    color: var(--theme-text-color) !important;
    text-decoration: none;
}

.auth-links a:hover {
    color: rgba(255, 255, 255, 0.8) !important;
    text-decoration: underline;
}

/* Footer */
footer {
    background-color: var(--theme-bg-color) !important;
    border-top: 1px solid var(--theme-border-color) !important;
    color: var(--theme-text-color) !important;
}

/* Utility Classes */
.text-truncate-50 {
    max-width: 300px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.text-truncate-200 {
    max-width: 200px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ============================================
   END DARK THEME
   ============================================ */

/* Full width layout */
.main-content {
    flex: 1;
    padding: 2rem 0;
}

/* Page Header */
.page-header {
    margin-bottom: 2rem;
}

.page-header h1 {
    margin-bottom: 0.5rem;
}

/* Admin dashboard — two-column layout & typography */
.admin-dashboard .dashboard-main-title {
    font-size: clamp(1.75rem, 2.5vw, 2.125rem);
    font-weight: 600;
    letter-spacing: -0.02em;
    line-height: 1.2;
}

.admin-dashboard .dashboard-page-lead {
    font-size: 0.95rem;
    line-height: 1.55;
    max-width: 42rem;
}

.admin-dashboard .dashboard-section-title {
    font-size: 1.125rem;
    font-weight: 600;
    letter-spacing: -0.015em;
    margin-bottom: 0.5rem;
}

.admin-dashboard .dashboard-section-intro {
    font-size: 0.875rem;
    line-height: 1.55;
    max-width: 48rem;
    margin-bottom: 1.25rem;
    color: var(--bs-secondary-color);
}

.admin-dashboard .dashboard-section-head {
    margin-bottom: 0.25rem;
}

.admin-dashboard .dashboard-client-sort-select {
    width: auto;
    min-width: 10.5rem;
}

.admin-dashboard .dashboard-client-cards {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.75rem;
}

@media (min-width: 576px) {
    .admin-dashboard .dashboard-client-cards {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (min-width: 768px) {
    .admin-dashboard .dashboard-client-cards {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

@media (min-width: 992px) {
    .admin-dashboard .dashboard-client-cards {
        grid-template-columns: repeat(6, minmax(0, 1fr));
    }
}

.admin-dashboard .dashboard-client-chip {
    color: inherit;
    margin-bottom: 0;
    border: 1px solid var(--theme-border-color) !important;
    border-radius: 0.5rem;
    overflow: hidden;
    transition: transform 0.12s ease, box-shadow 0.12s ease;
}

.admin-dashboard .dashboard-client-chip .card-body {
    min-height: 5.5rem;
    border-radius: 0.5rem;
}

.admin-dashboard .dashboard-client-chip:hover,
.admin-dashboard .dashboard-client-chip:focus-visible {
    color: inherit;
    transform: translateY(-1px);
    box-shadow: 0 0.35rem 0.85rem rgba(0, 0, 0, 0.18) !important;
}

.admin-dashboard .dashboard-client-chip-name {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    width: 100%;
    font-size: 0.9375rem;
    font-weight: 600;
    line-height: 1.3;
    word-break: break-word;
}

.admin-dashboard .dashboard-client-chip .dashboard-retainer-badge {
    font-size: 0.6875rem;
    font-weight: 600;
    padding: 0.2rem 0.5rem;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.admin-dashboard .dashboard-card-head {
    background: linear-gradient(180deg, rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), 0.05), transparent);
    border-bottom: 1px solid var(--bs-border-color);
}

.admin-dashboard .dashboard-workload-card .card-body,
.admin-dashboard .dashboard-clients-card .card-body {
    font-size: 0.875rem;
}

.admin-dashboard .dashboard-card-email {
    font-size: 0.9375rem;
    font-weight: 600;
    line-height: 1.35;
}

.admin-dashboard .dashboard-card-role {
    font-size: 0.65rem;
    font-weight: 600;
    letter-spacing: 0.07em;
    margin-top: 0.35rem;
    color: var(--bs-secondary-color);
}

.admin-dashboard .dashboard-subheading {
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--bs-secondary-color);
}

.admin-dashboard .dashboard-card-action-link {
    color: #fff;
    font-size: 0.9375rem;
    font-weight: 600;
    letter-spacing: normal;
    text-transform: none;
    text-decoration: underline;
    text-underline-offset: 0.18em;
}

.admin-dashboard .dashboard-subheading-trigger {
    cursor: pointer;
    border-radius: 0.25rem;
}

.admin-dashboard .dashboard-card-section-trigger:hover .dashboard-card-action-link {
    color: #fff;
    text-decoration: underline;
    opacity: 0.92;
}

.admin-dashboard .dashboard-tickets-modal-list li:last-child {
    border-bottom: none !important;
    padding-bottom: 0 !important;
    margin-bottom: 0 !important;
}

.admin-dashboard .dashboard-inline-link {
    font-size: 0.8125rem;
    font-weight: 600;
    text-decoration: none;
}

.admin-dashboard .dashboard-inline-link:hover {
    text-decoration: underline;
}

.admin-dashboard .dashboard-ticket-item,
.admin-dashboard .dashboard-project-item {
    font-size: 0.8125rem;
    line-height: 1.45;
    padding: 0.2rem 0;
}

.admin-dashboard .dashboard-card-panel-title {
    font-size: 1rem;
    font-weight: 600;
    letter-spacing: -0.01em;
}

.admin-dashboard .dashboard-client-name {
    font-weight: 600;
    font-size: 0.9375rem;
    line-height: 1.35;
}

.admin-dashboard .dashboard-client-row .dashboard-client-name {
    font-size: 0.875rem;
    line-height: 1.25;
    flex: 0 1 auto;
    min-width: 0;
}

.admin-dashboard .dashboard-client-email {
    color: var(--bs-secondary-color);
}

.admin-dashboard .dashboard-client-row .dashboard-client-email {
    font-size: 0.75rem;
    line-height: 1.25;
    flex: 1 1 0;
    min-width: 0;
}

.admin-dashboard .dashboard-retainer-badge {
    font-weight: 500;
    font-size: 0.7rem;
}

/* Responsive adjustments */
@media (max-width: 768px) {
    .stats-grid {
        grid-template-columns: 1fr;
    }
    
    .table-responsive {
        font-size: 0.875rem;
    }
}

/* Remove spin buttons from number inputs globally */
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

input[type="number"] {
    -moz-appearance: textfield;
    appearance: textfield;
}

/* Billing profiles & Projects: status tabs (scoped — white labels on dark strip) */
#billingProfilesTabs.nav-tabs,
#projectsTabs.nav-tabs {
    flex-wrap: wrap;
    gap: 0.25rem;
    padding: 0.35rem 0.35rem 0;
    border-bottom: 0;
    border-radius: 0.375rem 0.375rem 0 0;
    background-color: #3f3f3f;
}

#billingProfilesTabs .nav-link,
#projectsTabs .nav-link {
    display: block;
    padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);
    font-size: var(--bs-nav-link-font-size);
    font-weight: var(--bs-nav-link-font-weight);
    color: #ffffff;
    text-decoration: none;
    background: transparent;
    border: 0;
    transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;
}

#billingProfilesTabs .nav-link:hover,
#billingProfilesTabs .nav-link:focus-visible,
#projectsTabs .nav-link:hover,
#projectsTabs .nav-link:focus-visible {
    color: #ffffff;
    opacity: 0.92;
}

#billingProfilesTabs .nav-link.active,
#projectsTabs .nav-link.active {
    color: #ffffff;
    background-color: var(--theme-card-bg, #fff);
    border: 1px solid var(--theme-border-color, #dee2e6);
    border-bottom-color: transparent;
    margin-bottom: -1px;
    border-radius: 0.375rem 0.375rem 0 0;
}

#billingProfilesTabs .nav-link.active:hover,
#billingProfilesTabs .nav-link.active:focus-visible,
#projectsTabs .nav-link.active:hover,
#projectsTabs .nav-link.active:focus-visible {
    color: #ffffff;
    opacity: 1;
}

#billingProfilesTabs .nav-link:not(.active) .badge,
#projectsTabs .nav-link:not(.active) .badge {
    background-color: rgba(255, 255, 255, 0.28) !important;
    color: #fff;
}

/* Billing profiles list: main row + child line rows share one grid */
.billing-profiles-scroll {
    overflow-x: auto;
    max-width: 100%;
    -webkit-overflow-scrolling: touch;
}
table.billing-profiles-grid {
    table-layout: auto;
    width: max-content;
    min-width: 100%;
}
table.billing-profiles-grid th,
table.billing-profiles-grid td {
    white-space: nowrap;
    vertical-align: middle;
}
table.billing-profiles-grid col.billing-col-toggle {
    width: 2.75rem;
}
table.billing-profiles-grid col.billing-col-name {
    width: 14rem;
}
table.billing-profiles-grid col.billing-col-client {
    width: 14rem;
}
table.billing-profiles-grid col.billing-col-linked {
    width: 12rem;
}
table.billing-profiles-grid col.billing-col-type {
    width: 8rem;
}
table.billing-profiles-grid col.billing-col-money {
    width: 8rem;
}
table.billing-profiles-grid col.billing-col-int {
    width: 7.5rem;
}
table.billing-profiles-grid col.billing-col-out {
    width: 8rem;
}
table.billing-profiles-grid col.billing-col-status {
    width: 9rem;
}
table.billing-profiles-grid col.billing-col-action {
    width: 6rem;
}
table.billing-profiles-grid .form-control,
table.billing-profiles-grid .form-select {
    min-width: 7rem;
}
table.billing-profiles-grid .js-inline-root-list[data-field="client_id"] {
    min-width: 12rem;
}
table.billing-profiles-grid .js-inline-root-list[data-field="profile_status"] {
    min-width: 8.5rem;
}
table.billing-profiles-grid tbody tr.billing-line-item-row > td {
    vertical-align: middle;
    /* Distinct from profile root rows; overrides .table td !important */
    background-color: color-mix(in srgb, var(--theme-button-primary) 24%, var(--theme-card-bg)) !important;
}
table.billing-profiles-grid tbody tr.billing-line-item-row:hover > td {
    background-color: color-mix(in srgb, var(--theme-button-primary) 34%, var(--theme-card-bg)) !important;
}
/* Alternating tint for main (root) profile rows only */
table.billing-profiles-grid tbody tr.js-sort-root.billing-root-stripe-a > td {
    background-color: color-mix(in srgb, var(--theme-border-color) 14%, var(--theme-card-bg)) !important;
}
table.billing-profiles-grid tbody tr.js-sort-root.billing-root-stripe-b > td {
    background-color: color-mix(in srgb, var(--theme-border-color) 6%, var(--theme-card-bg)) !important;
}
table.billing-profiles-grid tbody tr.js-sort-root:hover > td {
    background-color: color-mix(in srgb, var(--theme-button-primary) 16%, var(--theme-card-bg)) !important;
}
table.billing-profiles-grid tbody tr.js-sort-root:hover > td.billing-highlight-budget {
    background-color: #fff !important;
}
table.billing-profiles-grid tbody tr.js-sort-root:hover > td.billing-highlight-outstanding {
    background-color: color-mix(in srgb, var(--theme-button-warning, #8a7a30) 30%, var(--theme-card-bg)) !important;
}
table.billing-profiles-grid tr.billing-line-item-row td.billing-line-indent {
    border-left: 3px solid var(--theme-border-color, #dee2e6);
    padding-left: 0.35rem;
}

/* Billing profiles list: budget column white / black text; outstanding stays tinted */
table.billing-profiles-grid th.billing-highlight-budget,
table.billing-profiles-grid td.billing-highlight-budget {
    background-color: #fff !important;
    color: #000 !important;
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1);
}
table.billing-profiles-grid td.billing-highlight-budget .form-control {
    background-color: #fff !important;
    color: #000 !important;
}
table.billing-profiles-grid td.billing-highlight-budget [data-metric="profileBudgetHint"] {
    display: inline-block;
    max-width: 100%;
    margin-top: 0.125rem;
    padding: 0.1rem 0.4rem;
    border-radius: 0.25rem;
    font-weight: 600;
    color: #0a0a0a !important;
    background-color: #facc15;
}
table.billing-profiles-grid th.billing-highlight-outstanding,
table.billing-profiles-grid td.billing-highlight-outstanding {
    background-color: color-mix(in srgb, var(--theme-button-warning, #8a7a30) 26%, var(--theme-card-bg)) !important;
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--theme-button-warning, #8a7a30) 45%, transparent);
}
table.billing-profiles-grid tbody tr.billing-line-item-row > td.billing-highlight-budget {
    background-color: #fff !important;
    color: #000 !important;
}
table.billing-profiles-grid tbody tr.billing-line-item-row > td.billing-highlight-outstanding {
    background-color: color-mix(in srgb, var(--theme-button-warning, #8a7a30) 34%, var(--theme-card-bg)) !important;
}
table.billing-profiles-grid tbody tr.billing-line-item-row:hover > td.billing-highlight-budget {
    background-color: #fff !important;
}
table.billing-profiles-grid tbody tr.billing-line-item-row:hover > td.billing-highlight-outstanding {
    background-color: color-mix(in srgb, var(--theme-button-warning, #8a7a30) 42%, var(--theme-card-bg)) !important;
}

table.billing-profile-money-grid th.billing-highlight-budget,
table.billing-profile-money-grid td.billing-highlight-budget {
    background-color: color-mix(in srgb, var(--theme-button-primary) 20%, var(--theme-card-bg)) !important;
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--theme-button-primary) 38%, transparent);
}

.billing-highlight-outstanding-callout {
    background-color: color-mix(in srgb, var(--theme-button-warning, #8a7a30) 28%, var(--theme-card-bg)) !important;
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--theme-button-warning, #8a7a30) 42%, transparent);
}

#billing-profile-totals .billing-highlight-budget-pill,
#billing-profile-totals .billing-highlight-outstanding-pill {
    display: inline-block;
    padding: 0.12rem 0.5rem;
    border-radius: 0.3rem;
    font-weight: 600;
}
#billing-profile-totals .billing-highlight-budget-pill {
    background-color: color-mix(in srgb, var(--theme-button-primary) 35%, transparent);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--theme-button-primary) 55%, transparent);
}
#billing-profile-totals .billing-highlight-outstanding-pill {
    background-color: color-mix(in srgb, var(--theme-button-warning, #8a7a30) 38%, transparent);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--theme-button-warning, #8a7a30) 55%, transparent);
}

/* Name / client / linked project / billing type stay on one line so the grid can scroll sideways */
table.billing-profiles-grid > thead > tr > th:nth-child(n+2):nth-child(-n+5),
table.billing-profiles-grid > tbody > tr > td:nth-child(n+2):nth-child(-n+5) {
    white-space: nowrap;
    word-break: normal;
    overflow-wrap: normal;
    vertical-align: middle;
}

.billing-profile-status-badge {
    font-size: 0.7rem;
    font-weight: 600;
    vertical-align: middle;
}

/* Figures (Xero profit & loss) */
.figures-ytd-card .card-body {
    padding: 1.25rem 1.5rem;
}

.figures-ytd-label {
    font-size: 1rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.figures-ytd-period {
    margin-top: 0.25rem;
}

.figures-ytd-amount {
    font-size: 2rem;
    font-weight: 700;
    line-height: 1.1;
    font-variant-numeric: tabular-nums;
}

.figures-ytd-stat-label {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--theme-muted, #6c757d);
    margin-bottom: 0.2rem;
}

.figures-ytd-projected {
    font-size: 1.75rem;
    opacity: 0.95;
}

.figures-ytd-amount.is-negative {
    color: #f87171;
}

.figures-label {
    font-weight: 700;
    font-size: 1.1rem;
    margin-bottom: 0.25rem;
}

.figures-value {
    font-size: 1rem;
}

.figures-grid {
    display: grid;
    grid-template-columns: minmax(10rem, 2fr) auto minmax(12rem, 4fr);
    gap: 1rem 1.25rem;
    align-items: center;
}

.figures-grid-label {
    font-weight: 700;
    font-size: 1.1rem;
}

.figures-grid-divider {
    grid-column: 1 / -1;
    height: 1px;
    margin: 0.25rem 0;
    background: color-mix(in srgb, var(--theme-border-color, #dee2e6) 80%, transparent);
}

.figures-grid-symbol {
    font-weight: 700;
    font-size: 1.1rem;
    text-align: right;
}

.figures-readonly {
    background-color: color-mix(in srgb, var(--theme-card-bg) 85%, #888);
    cursor: default;
}

.figures-payrun-previous {
    margin-top: 0.35rem;
}

.figures-payrun-ignore {
    margin-top: 0.5rem;
}

.figures-payrun-ignore .form-check-label {
    font-size: 0.875rem;
}

.figures-payrun-cost.is-ignored {
    text-decoration: line-through;
    opacity: 0.65;
}

.figures-invoices-table th,
.figures-invoices-table td {
    vertical-align: middle;
}

.figures-invoices-total-row th {
    border-top-width: 2px;
}

@media (max-width: 767.98px) {
    .figures-grid {
        grid-template-columns: 1fr auto;
    }

    .figures-grid-field {
        grid-column: 1 / -1;
    }
}

/* Page-based scope builder and reader. Scope surfaces stay light in dark themes. */
.scope-light-page,
.scope-light-page .main-content,
.scope-public-page,
.scope-public-shell {
    background: #eef2f7 !important;
    color: #172033 !important;
}

.scope-light-page .main-content {
    min-height: calc(100vh - 4.25rem);
}

/* The share view has no chrome of its own, so it owns the full viewport. */
.scope-public-shell {
    min-height: 100vh;
}

.scope-preview-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem 1rem;
    padding: 0.75rem 1rem;
    margin-bottom: 1rem;
    color: #172033;
    background: #fff8e1;
    border: 1px solid #f0d78c;
    border-radius: 0.75rem;
    box-shadow: 0 0.35rem 1rem rgba(15, 23, 42, 0.08);
}

.scope-preview-bar span {
    display: block;
    color: #4b5563;
}

.scope-admin-page {
    width: 100%;
    max-width: none;
    margin-inline: 0;
}

.scope-admin-deck {
    display: grid;
    grid-template-columns: minmax(16rem, 0.95fr) minmax(28rem, 2.5fr) minmax(17rem, 1fr);
    gap: 1rem;
    align-items: stretch;
    min-height: calc(100vh - 13rem);
}

.scope-deck-nav,
.scope-comment-rail,
.scope-drafting-canvas,
.scope-admin-management,
.scope-reader-nav,
.scope-reader-canvas {
    background: #f8fafc;
    color: #172033;
    border: 1px solid #d8e0ea;
    border-radius: 0.75rem;
    box-shadow: 0 0.25rem 1rem rgba(15, 23, 42, 0.08);
}

.scope-admin-management {
    margin-top: 1rem;
    padding: 1rem 1rem 0;
}

.scope-deck-nav,
.scope-comment-rail {
    position: sticky;
    top: 1rem;
    max-height: calc(100vh - 2rem);
    overflow: auto;
    padding: 0.875rem;
}

.scope-deck-nav {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    min-height: 0;
}

.scope-overview-card {
    flex: 0 0 auto;
}

.scope-overview-card .form-label {
    margin-bottom: 0.15rem;
    font-size: 0.78rem;
}

.scope-overview-card .form-text {
    font-size: 0.72rem;
}

.scope-page-explorer {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
    overflow: auto;
}

.scope-drafting-canvas {
    min-width: 0;
    min-height: calc(100vh - 13rem);
    padding: 1rem;
}

.scope-drafting-canvas > form {
    display: flex;
    flex-direction: column;
    min-height: 100%;
}

.scope-drafting-canvas .scope-deck-page {
    flex: 1 0 auto;
    min-height: 30rem;
    box-shadow: 0 0.35rem 1.15rem rgba(15, 23, 42, 0.1);
}

.scope-drafting-canvas .card,
.scope-admin-management .card,
.scope-reader .card,
.scope-reader-canvas,
.scope-overview-card {
    background: #fff !important;
    color: #172033 !important;
    border-color: #d8e0ea !important;
}

.scope-drafting-canvas .scope-deck-page .card-body,
.scope-admin-management .card-body,
.scope-admin-management .table {
    background: #fff !important;
    color: #172033 !important;
}

.scope-drafting-canvas label,
.scope-drafting-canvas .form-text,
.scope-admin-management label,
.scope-admin-management th,
.scope-admin-management td,
.scope-overview-card label,
.scope-overview-card .form-text {
    color: #334155 !important;
}

.scope-admin-management .table > :not(caption) > * > * {
    color: #334155 !important;
    background: #fff !important;
    border-color: #d8e0ea !important;
}

.scope-drafting-canvas .card-header,
.scope-admin-management .card-header,
.scope-reader .card-header,
.scope-overview-card .card-header {
    background: #f1f5f9 !important;
    color: #172033 !important;
    border-color: #d8e0ea !important;
}

.scope-drafting-canvas .form-control,
.scope-drafting-canvas .form-select,
.scope-admin-management .form-control,
.scope-comment-rail .form-control,
.scope-reader .form-control {
    background: #fff !important;
    color: #172033 !important;
    border-color: #aebbc9 !important;
}

.scope-drafting-canvas .scope-section,
.scope-drafting-canvas .scope-point,
.scope-reader .scope-point {
    background-color: #fff !important;
    border-color: #d8e0ea !important;
}

.scope-drafting-canvas .text-muted,
.scope-admin-management .text-muted,
.scope-admin-management table,
.scope-comment-rail .text-muted,
.scope-reader .text-muted {
    color: #5b6779 !important;
}

.scope-metric {
    padding: 0.75rem;
    background: #f1f5f9;
    border: 1px solid #d8e0ea;
    border-radius: 0.5rem;
}

.scope-metric strong {
    display: block;
    font-size: 1.35rem;
}

.scope-canvas-footer {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid #d8e0ea;
}

.scope-deck-page {
    margin-bottom: 0;
}

.scope-rail-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
    font-weight: 700;
}

.scope-page-list {
    display: grid;
    gap: 0.35rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.scope-page-order-item,
.scope-page-item:has(.scope-toggle-hidden) {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
}

.scope-page-order-controls {
    display: inline-flex;
}

.scope-page-tab {
    display: grid;
    grid-template-columns: 1.75rem minmax(0, 1fr) auto;
    gap: 0.5rem;
    align-items: center;
    width: 100%;
    padding: 0.55rem;
    color: #334155;
    text-align: left;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 0.5rem;
}

.scope-page-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 0.2rem;
    justify-content: flex-end;
}

.scope-page-item.is-client-hidden .scope-page-tab {
    opacity: 0.72;
}

.scope-toggle-hidden {
    white-space: nowrap;
}

.scope-page-tab:hover,
.scope-page-tab.is-active {
    color: #0b4f8a;
    background: #e8f2fb;
    border-color: #9bc5e8;
}

.scope-page-tab:focus-visible,
.scope-page-controls button:focus-visible,
.scope-comment-rail button:focus-visible {
    outline: 3px solid #2b7bbb;
    outline-offset: 2px;
}

.scope-page-number {
    display: inline-grid;
    place-items: center;
    width: 1.65rem;
    height: 1.65rem;
    font-size: 0.78rem;
    font-weight: 700;
    background: #e2e8f0;
    border-radius: 50%;
}

.scope-page-controls {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem;
    margin-top: 0.75rem;
}

.scope-deck-page[hidden],
.scope-page-item[hidden],
.scope-page-comments[hidden],
.scope-reader-page[hidden],
.scope-drafting-canvas [data-document-types][hidden] {
    display: none !important;
}

.scope-comment-thread-group h3 {
    margin: 1rem 0 0.5rem;
    font-size: 0.9rem;
}

.scope-comment-thread {
    margin-bottom: 0.75rem;
    padding: 0.75rem;
    background: #fff;
    border: 1px solid #d8e0ea;
    border-radius: 0.5rem;
}

.scope-comment-thread.is-resolved {
    opacity: 0.68;
    border-left: 0.25rem solid #198754;
}

.scope-comment-meta {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 0.35rem;
    font-size: 0.75rem;
}

.scope-comment-meta time {
    color: #64748b;
}

.scope-comment-thread p {
    margin: 0.4rem 0;
    overflow-wrap: anywhere;
}

.scope-comment-reply {
    margin: 0.5rem 0 0.5rem 0.6rem;
    padding: 0.5rem;
    background: #f1f5f9;
    border-left: 0.2rem solid #8bb8de;
}

.scope-comment-edited {
    font-size: 0.7rem;
    color: #64748b;
}

.scope-comment-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem 0.5rem;
}

.scope-comment-actions .btn-link {
    padding: 0;
    font-size: 0.75rem;
    text-decoration: none;
}

.scope-comment-actions .btn-link:hover {
    text-decoration: underline;
}

.scope-comment-edit-form {
    margin-top: 0.5rem;
}

.scope-comment-edit-buttons {
    display: flex;
    gap: 0.5rem;
    margin-top: 0.5rem;
}

.scope-rail-management {
    margin: -0.875rem -0.875rem 1rem;
    padding: 0.875rem;
    border-bottom: 1px solid #d8e0ea;
}

.scope-rail-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.5rem 0;
    border-top: 1px solid #e2e8f0;
}

.scope-share-form {
    margin-bottom: 0.75rem;
}

.scope-fee-table > :not(caption) > * > * {
    color: #172033 !important;
    background: #fff !important;
    border-color: #d8e0ea !important;
}

.scope-reader {
    color: #172033;
}

.scope-reader > .scope-page-heading {
    padding: 1rem;
    color: #172033;
    background: #fff;
    border: 1px solid #d8e0ea;
    border-radius: 0.75rem;
}

.scope-reader > .scope-page-heading h1,
.scope-reader-page,
.scope-reader-page h1,
.scope-reader-page h2,
.scope-reader-page h3,
.scope-reader-page p,
.scope-reader-page .scope-copy {
    color: #172033 !important;
}

.scope-reader-deck {
    display: grid;
    grid-template-columns: minmax(12rem, 0.7fr) minmax(26rem, 2.7fr) minmax(17rem, 1fr);
    gap: 1rem;
    align-items: stretch;
    min-height: calc(100vh - 14rem);
}

.scope-reader-nav {
    position: sticky;
    top: 1rem;
    padding: 0.875rem;
}

.scope-reader-canvas {
    display: flex;
    flex-direction: column;
    min-height: calc(100vh - 14rem);
    padding: clamp(1rem, 3vw, 2.5rem);
}

.scope-reader-page {
    flex: 1 0 auto;
}

/* Pages are focused programmatically when paging, so suppress the focus ring. */
.scope-reader-page:focus,
.scope-reader-page:focus-visible {
    outline: none;
}

.scope-reader-page > h2 {
    margin-bottom: 0.75rem;
}

.scope-reader-page > .scope-copy {
    margin-bottom: 1.5rem;
}

.scope-reader .scope-point .card-body {
    padding: 1rem 1.25rem;
}

.scope-point-header {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem 1rem;
    margin-bottom: 0.5rem;
}

.scope-point-duration {
    flex: 0 0 auto;
    padding: 0.15rem 0.6rem;
    font-size: 0.8125rem;
    font-weight: 600;
    color: #3b4a5f;
    white-space: nowrap;
    background: #eef2f7;
    border-radius: 999px;
}

.scope-reader-comments {
    align-self: start;
}

/* Scope surfaces use the standard Bootstrap palette rather than the muted global theme colours. */
.scope-surface :is(h1, h2, h3, h4, h5, h6),
.scope-surface .modal-title {
    color: #172033 !important;
}

.scope-surface a:not(.btn) {
    color: #0d6efd !important;
}

.scope-surface a:not(.btn):hover {
    color: #0a58ca !important;
}

.scope-surface p,
.scope-surface label,
.scope-surface .form-label,
.scope-surface .col-form-label,
.scope-surface .form-check-label,
.scope-surface .list-group-item {
    color: #172033 !important;
}

.scope-surface .text-muted,
.scope-surface .form-text,
.scope-surface .scope-comment-meta time {
    color: #5b6779 !important;
}

.scope-surface .form-control::placeholder {
    color: #6c757d !important;
    opacity: 1;
}

.scope-surface .list-group-item {
    background-color: #fff !important;
    border-color: #d8e0ea !important;
}

.scope-surface .input-group-text {
    color: #172033 !important;
    background-color: #f1f5f9 !important;
    border-color: #aebbc9 !important;
}

.scope-surface .btn-primary {
    color: #fff !important;
    background-color: #0d6efd !important;
    border-color: #0d6efd !important;
}

.scope-surface .btn-primary:hover,
.scope-surface .btn-primary:focus {
    background-color: #0b5ed7 !important;
    border-color: #0a58ca !important;
}

.scope-surface .btn-secondary {
    color: #fff !important;
    background-color: #6c757d !important;
    border-color: #6c757d !important;
}

.scope-surface .btn-secondary:hover,
.scope-surface .btn-secondary:focus {
    background-color: #5c636a !important;
    border-color: #565e64 !important;
}

.scope-surface .btn-success {
    color: #fff !important;
    background-color: #198754 !important;
    border-color: #198754 !important;
}

.scope-surface .btn-success:hover,
.scope-surface .btn-success:focus {
    background-color: #157347 !important;
    border-color: #146c43 !important;
}

.scope-surface .btn-danger {
    color: #fff !important;
    background-color: #dc3545 !important;
    border-color: #dc3545 !important;
}

.scope-surface .btn-danger:hover,
.scope-surface .btn-danger:focus {
    background-color: #bb2d3b !important;
    border-color: #b02a37 !important;
}

.scope-surface .btn-warning {
    color: #000 !important;
    background-color: #ffc107 !important;
    border-color: #ffc107 !important;
}

.scope-surface .btn-warning:hover,
.scope-surface .btn-warning:focus {
    background-color: #ffca2c !important;
    border-color: #ffc720 !important;
}

.scope-surface .btn-info {
    color: #000 !important;
    background-color: #0dcaf0 !important;
    border-color: #0dcaf0 !important;
}

.scope-surface .btn-info:hover,
.scope-surface .btn-info:focus {
    background-color: #31d2f2 !important;
    border-color: #25cff2 !important;
}

.scope-surface .btn-outline-primary {
    color: #0d6efd !important;
    border-color: #0d6efd !important;
}

.scope-surface .btn-outline-primary:hover,
.scope-surface .btn-outline-primary:focus {
    color: #fff !important;
    background-color: #0d6efd !important;
}

.scope-surface .btn-outline-secondary {
    color: #6c757d !important;
    border-color: #6c757d !important;
}

.scope-surface .btn-outline-secondary:hover,
.scope-surface .btn-outline-secondary:focus {
    color: #fff !important;
    background-color: #6c757d !important;
}

.scope-surface .btn-outline-success {
    color: #198754 !important;
    border-color: #198754 !important;
}

.scope-surface .btn-outline-success:hover,
.scope-surface .btn-outline-success:focus {
    color: #fff !important;
    background-color: #198754 !important;
}

.scope-surface .btn-outline-danger {
    color: #dc3545 !important;
    border-color: #dc3545 !important;
}

.scope-surface .btn-outline-danger:hover,
.scope-surface .btn-outline-danger:focus {
    color: #fff !important;
    background-color: #dc3545 !important;
}

.scope-surface .btn-outline-warning {
    color: #b8860b !important;
    border-color: #ffc107 !important;
}

.scope-surface .btn-outline-warning:hover,
.scope-surface .btn-outline-warning:focus {
    color: #000 !important;
    background-color: #ffc107 !important;
}

.scope-surface .btn-outline-info {
    color: #087990 !important;
    border-color: #0dcaf0 !important;
}

.scope-surface .btn-outline-info:hover,
.scope-surface .btn-outline-info:focus {
    color: #000 !important;
    background-color: #0dcaf0 !important;
}

.scope-surface :is(.btn-outline-primary, .btn-outline-secondary, .btn-outline-success,
    .btn-outline-danger, .btn-outline-warning, .btn-outline-info) {
    background-color: transparent !important;
}

.scope-surface .btn:hover,
.scope-surface .btn:focus {
    filter: none;
    opacity: 1;
}

.scope-surface .btn:disabled,
.scope-surface .btn.disabled {
    opacity: 0.65;
}

.scope-surface .btn-link {
    color: #0d6efd !important;
    background-color: transparent !important;
    border-color: transparent !important;
}

.scope-admin-page.scope-surface .btn-link {
    color: #ffc107 !important;
}

.scope-admin-page.scope-surface .btn-link.text-danger {
    color: #dc3545 !important;
}

.scope-surface .btn-close {
    filter: none;
}

.scope-surface .modal-content,
.scope-surface .card,
.scope-surface .card-body,
.scope-surface .card-footer {
    color: #172033 !important;
    background-color: #fff !important;
    border-color: #d8e0ea !important;
}

.scope-surface .card-header {
    color: #172033 !important;
    background-color: #f1f5f9 !important;
    border-color: #d8e0ea !important;
}

.scope-surface :is(.modal-header, .modal-footer) {
    border-color: #d8e0ea !important;
}

.scope-surface .alert {
    border-width: 1px !important;
}

.scope-surface .alert-success {
    color: #0f5132 !important;
    background-color: #d1e7dd !important;
    border-color: #badbcc !important;
}

.scope-surface .alert-danger {
    color: #842029 !important;
    background-color: #f8d7da !important;
    border-color: #f5c2c7 !important;
}

.scope-surface .alert-warning {
    color: #664d03 !important;
    background-color: #fff3cd !important;
    border-color: #ffecb5 !important;
}

.scope-surface .alert-info {
    color: #055160 !important;
    background-color: #cff4fc !important;
    border-color: #b6effb !important;
}

.scope-surface .badge {
    border-color: transparent !important;
}

.scope-surface .badge.bg-primary {
    color: #fff !important;
    background-color: #0d6efd !important;
}

.scope-surface .badge.bg-secondary {
    color: #fff !important;
    background-color: #6c757d !important;
}

.scope-surface .badge.bg-success {
    color: #fff !important;
    background-color: #198754 !important;
}

.scope-surface .badge.bg-danger {
    color: #fff !important;
    background-color: #dc3545 !important;
}

.scope-surface .badge.bg-warning {
    color: #000 !important;
    background-color: #ffc107 !important;
}

.scope-surface .badge.bg-info {
    color: #000 !important;
    background-color: #0dcaf0 !important;
}

.scope-surface :is(.form-control, .form-select) {
    color: #172033 !important;
    background-color: #fff !important;
    border-color: #aebbc9 !important;
}

.scope-surface :is(.form-control, .form-select):focus {
    border-color: #86b7fe !important;
    box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}

.scope-surface .table > :not(caption) > * > * {
    color: #172033 !important;
    background-color: #fff !important;
    border-color: #d8e0ea !important;
}

.scope-reader-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 1.25rem;
    padding-top: 1rem;
    color: #172033 !important;
    background: #f8fafc !important;
    border-top: 1px solid #d8e0ea;
}

@media (max-width: 1199.98px) {
    .scope-admin-deck,
    .scope-reader-deck {
        grid-template-columns: 1fr;
    }

    .scope-comment-rail,
    .scope-deck-nav,
    .scope-reader-nav {
        position: static;
        grid-column: 1 / -1;
        max-height: none;
    }
}

@media (max-width: 767.98px) {
    .scope-admin-deck,
    .scope-reader-deck {
        grid-template-columns: 1fr;
    }

    .scope-deck-nav,
    .scope-reader-nav {
        position: static;
        max-height: none;
    }

    .scope-page-list {
        grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
    }

    .scope-drafting-canvas,
    .scope-reader-canvas {
        padding: 0.75rem;
    }
}

/* Scope administration, client portal, and authorized public shares */
.scope-page {
    width: 100%;
    max-width: 1180px;
    margin-inline: auto;
}

/* Readers use the same full-bleed deck as the admin editor. */
.scope-page.scope-reader,
.scope-public-shell {
    width: 100%;
    max-width: none;
    margin-inline: 0;
}

.scope-page-heading > :first-child {
    min-width: 0;
}

.scope-page-heading h1 {
    overflow-wrap: anywhere;
}

.scope-rich-editor {
    min-height: 8rem;
    max-height: 65vh;
    overflow: auto;
    line-height: 1.6;
}

.scope-rich-editor-large {
    min-height: 20rem;
}

.scope-wysiwyg-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
    align-items: center;
    padding: 0.375rem;
    background: #f8fafc;
    border: 1px solid #ced4da;
    border-bottom: 0;
    border-radius: 0.375rem 0.375rem 0 0;
}

.scope-wysiwyg-toolbar + .scope-rich-editor {
    border-top-left-radius: 0;
    border-top-right-radius: 0;
}

.scope-media-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr));
    gap: 0.75rem;
}

.scope-media-item {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    min-width: 0;
    padding: 0.5rem;
    color: #172033;
    text-align: left;
    background: #fff;
    border: 1px solid #d8e0ea;
    border-radius: 0.5rem;
}

.scope-media-item:hover,
.scope-media-item:focus-visible {
    border-color: #2b7bbb;
    box-shadow: 0 0 0 0.2rem rgba(43, 123, 187, 0.18);
}

.scope-media-item img {
    width: 100%;
    height: 7rem;
    margin: 0;
    object-fit: cover;
    border-radius: 0.35rem;
}

.scope-media-name {
    overflow: hidden;
    font-weight: 600;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.scope-media-item small {
    color: #64748b;
}

.scope-rich-editor:focus-visible,
.scope-wysiwyg-toolbar .btn:focus-visible,
.scope-page a:focus-visible,
.scope-admin-page a:focus-visible,
.scope-public-page a:focus-visible {
    outline: 3px solid color-mix(in srgb, var(--theme-button-info) 70%, white);
    outline-offset: 2px;
}

.scope-rich-editor img,
.scope-copy img {
    display: block;
    max-width: 100%;
    height: auto;
    margin: 1rem auto;
    border-radius: 0.375rem;
}

.scope-copy {
    line-height: 1.65;
    overflow-wrap: anywhere;
}

.scope-copy pre {
    max-width: 100%;
    overflow: auto;
    padding: 0.75rem;
    border: 1px solid var(--theme-border-color);
    border-radius: 0.375rem;
}

.scope-section,
.scope-point {
    background-color: color-mix(in srgb, var(--theme-card-bg) 96%, var(--theme-text-color)) !important;
    border-color: color-mix(in srgb, var(--theme-border-color) 55%, transparent) !important;
}

.scope-point-title {
    overflow-wrap: anywhere;
}

.scope-jump-highlight {
    animation: scope-jump-highlight 1.8s ease-out;
}

@keyframes scope-jump-highlight {
    0%,
    35% {
        border-color: #0d6efd !important;
        box-shadow: 0 0 0 0.3rem rgba(13, 110, 253, 0.25);
    }
    100% {
        border-color: inherit;
        box-shadow: none;
    }
}

.scope-public-shell {
    flex: 1 0 auto;
    padding: 2rem 1.5rem 3rem;
}

@media (max-width: 767.98px) {
    .scope-page {
        max-width: 100%;
    }

    .scope-page-heading .btn,
    .scope-page-heading form,
    .scope-page-heading form .btn {
        width: 100%;
    }

    .scope-rich-editor {
        min-height: 15rem;
    }

    .scope-section,
    .scope-point {
        padding-inline: 0.75rem !important;
    }

    .scope-public-shell {
        padding: 1.25rem 0.75rem 2.5rem;
    }
}

/*
 * Desk-sized viewports: the scope deck fills the window exactly, so the page itself never
 * scrolls. Each column scrolls on its own instead. Short viewports keep normal page
 * scrolling, otherwise the chrome could squeeze the deck to nothing with no way to reach it.
 */
.scope-library-layout {
    display: grid;
    grid-template-columns: minmax(20rem, 0.85fr) minmax(24rem, 1.35fr);
    gap: 1rem;
    align-items: start;
}

.scope-library-column .card-body {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.scope-library-item {
    padding: 1rem;
    background: #fff;
    border: 1px solid #d8e0ea;
    border-radius: 0.75rem;
    box-shadow: 0 0.15rem 0.6rem rgba(15, 23, 42, 0.06);
}

.scope-library-add {
    background: #f8fafc;
    border-style: dashed;
}

.scope-library-group-title {
    margin: 0.75rem 0 0;
    font-size: 0.95rem;
    font-weight: 600;
    color: #172033;
}

.scope-wysiwyg-toolbar .btn {
    min-width: 2rem;
        color: #172033 !important;
        background: #fff !important;
        border-color: #ced4da !important;
}

.scope-wysiwyg-toolbar .btn:hover,
.scope-wysiwyg-toolbar .btn:focus {
    color: #172033 !important;
    background: #eef2f7 !important;
    border-color: #adb5bd !important;
}

.scope-rich-editor-compact {
    min-height: 5rem;
}

@media (max-width: 991.98px) {
    .scope-library-layout {
        grid-template-columns: 1fr;
    }
}

@media (min-width: 1200px) and (min-height: 600px) {
    body.scope-light-page:not(.scope-library-page),
    body.scope-public-page {
        height: 100vh;
        min-height: 100vh;
        overflow: hidden;
    }

    .scope-light-page:not(.scope-library-page) .main-content {
        display: flex;
        flex: 1 1 auto;
        flex-direction: column;
        min-height: 0;
        padding: 1rem 0;
        overflow: hidden;
    }

    .scope-light-page:not(.scope-library-page) .main-content > .container-fluid,
    .scope-light-page:not(.scope-library-page) .scope-admin-page,
    .scope-public-shell,
    .scope-page.scope-reader {
        display: flex;
        flex: 1 1 auto;
        flex-direction: column;
        min-height: 0;
    }

    .scope-public-shell {
        overflow: hidden;
        padding-bottom: 1.5rem;
    }

    /* Headings, alerts and the site footer keep their natural height. */
    .scope-light-page .main-content > .container-fluid > :not(.scope-admin-page):not(.scope-page),
    .scope-light-page .scope-admin-page > .scope-page-heading,
    .scope-light-page .scope-admin-page > .alert,
    .scope-reader > .scope-page-heading,
    .scope-reader > .alert,
    .scope-public-shell > .scope-preview-bar,
    .scope-canvas-footer,
    .scope-reader-footer {
        flex: 0 0 auto;
    }

    .scope-light-page > .navbar {
        flex: 0 0 auto;
    }

    .scope-light-page > footer {
        flex: 0 0 auto;
        margin-top: 0 !important;
    }

    .scope-admin-deck,
    .scope-reader-deck {
        flex: 1 1 auto;
        min-height: 0;
        overflow: hidden;
    }

    .scope-deck-nav,
    .scope-comment-rail,
    .scope-reader-nav,
    .scope-reader-comments {
        position: static;
        align-self: stretch;
        min-height: 0;
        max-height: none;
        overflow: hidden;
    }

    .scope-page-explorer {
        flex: 1 1 auto;
        min-height: 0;
        overflow: auto;
    }

    .scope-drafting-canvas,
    .scope-reader-canvas {
        display: flex;
        flex-direction: column;
        min-height: 0;
        overflow: hidden;
    }

    .scope-drafting-canvas > form {
        flex: 1 1 auto;
        min-height: 0;
    }

    /* Only the card body scrolls, so the section header and Save action stay in view. */
    .scope-drafting-canvas .scope-deck-page {
        display: flex;
        flex: 1 1 auto;
        flex-direction: column;
        min-height: 0;
    }

    .scope-drafting-canvas .scope-deck-page > .card-body {
        flex: 1 1 auto;
        min-height: 0;
        overflow: auto;
    }

    .scope-reader-page {
        flex: 1 1 auto;
        min-height: 0;
        overflow: auto;
    }

    .scope-rich-editor {
        max-height: none;
    }
}

.search-select {
    position: relative;
}

.search-select-results {
    position: absolute;
    z-index: 20;
    top: 100%;
    left: 0;
    right: 0;
    max-height: 240px;
    overflow: auto;
    background: var(--theme-card-bg, #2a2a2a);
    border: 1px solid var(--theme-border-color, #666);
    border-radius: 0.375rem;
    margin-top: 2px;
}

.search-select-option,
.search-select-empty {
    display: block;
    width: 100%;
    text-align: left;
    background: transparent;
    border: 0;
    color: inherit;
    padding: 0.5rem 0.75rem;
}

.search-select-option small,
.search-select-empty {
    display: block;
    color: var(--theme-text-color, #ccc);
    opacity: 0.75;
}

.search-select-option:hover,
.search-select-option:focus {
    background: rgba(255, 255, 255, 0.08);
}

.tag-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    margin: 0 0.25rem 0.25rem 0;
}

.tag-chip-remove {
    border: 0;
    background: transparent;
    color: inherit;
    line-height: 1;
    padding: 0;
}

.form-control.tag-multiselect-inline {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
    height: auto;
    min-height: calc(1.5em + 0.75rem + 2px);
    padding: 0.25rem 0.5rem;
    background-color: var(--theme-card-bg, #2a2a2a);
}

.tag-multiselect-inline .tag-chip-wrap {
    display: contents;
}

.tag-multiselect-inline .tag-chip {
    margin: 0;
}

.accordion-button .fw-normal {
    font-weight: 400;
}

@media (min-width: 992px) {
    .related-record-sidebar {
        position: sticky;
        top: calc(var(--record-toolbar-height, 7.5rem) + 1rem);
        max-height: calc(100vh - var(--record-toolbar-height, 7.5rem) - 2rem);
        overflow: auto;
    }
}

.related-record-sidebar dl.row {
    --bs-gutter-x: 0.5rem;
}

.related-record-sidebar dt {
    font-weight: 600;
}

.related-record-sidebar dd {
    margin-bottom: 0.35rem;
}

.note-rich-editor {
    min-height: 12rem;
}

body.record-page .main-content {
    padding-top: 0;
}

body.record-page .h1,
body.record-page h1 {
    font-size: 30px;
}

body.record-page .breadcrumb {
    --bs-breadcrumb-divider: "/";
    --bs-breadcrumb-divider-color: rgb(107 107 107 / 75%);
    --bs-breadcrumb-item-active-color: rgb(107 107 107 / 75%);
}

body.record-page .breadcrumb-item.active {
    color: rgb(107 107 107 / 75%);
}

body.record-page .breadcrumb-item + .breadcrumb-item::before {
    content: "/";
    float: none;
    padding-right: 0.5rem;
    color: rgb(107 107 107 / 75%);
}

.record-page-toolbar {
    position: sticky;
    top: 0;
    z-index: 1020;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 1rem 1.25rem;
    width: auto;
    margin-left: calc(-0.5 * var(--bs-gutter-x, 1.5rem));
    margin-right: calc(-0.5 * var(--bs-gutter-x, 1.5rem));
    padding: 1.25rem calc(0.5 * var(--bs-gutter-x, 1.5rem) + 1.25rem);
    background-color: var(--theme-bg-color, #1a1a1a);
    border-bottom: 1px solid var(--theme-border-color, rgba(255, 255, 255, 0.2));
}

.record-page-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
    margin-left: auto;
    padding-top: 0.15rem;
}

.tag-multiselect-inline input[type="text"] {
    flex: 1 1 8rem;
    min-width: 7rem;
    width: auto;
    border: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    padding: 0.15rem 0;
    color: inherit;
}

/* Secure file vault */
body.files-page .main-content > .container-fluid {
    display: flex;
    flex-direction: column;
    min-height: calc(100vh - 10rem);
}

body.files-page footer {
    margin-top: 1rem !important;
}

.files-workspace {
    display: grid;
    grid-template-columns: 16rem minmax(0, 1fr);
    gap: 1rem;
    align-items: stretch;
    min-height: 70vh;
}

.files-workspace.has-props {
    grid-template-columns: 16rem minmax(0, 1fr) 18rem;
}

.files-workspace > .card {
    margin-bottom: 0;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.files-workspace .card-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
}

.files-tree-nav {
    display: flex;
    flex-direction: column;
    padding: 0.35rem 0;
}

.files-tree-node {
    display: flex;
    flex-direction: column;
}

.files-tree-row {
    display: flex;
    align-items: stretch;
    padding-left: calc(0.35rem + (var(--depth, 0) * 0.85rem));
}

.files-tree-toggle {
    flex: 0 0 1.35rem;
    width: 1.35rem;
    border: 0;
    background: transparent;
    color: inherit;
    padding: 0;
    position: relative;
}

.files-tree-toggle::before {
    content: "";
    display: block;
    width: 0;
    height: 0;
    margin: 0 auto;
    border-style: solid;
    border-width: 0.28rem 0 0.28rem 0.4rem;
    border-color: transparent transparent transparent currentColor;
    opacity: 0.7;
    transition: transform 0.12s ease;
}

.files-tree-node.is-open > .files-tree-row .files-tree-toggle::before {
    transform: rotate(90deg);
}

.files-tree-toggle.is-empty {
    visibility: hidden;
    pointer-events: none;
}

.files-tree-children {
    display: flex;
    flex-direction: column;
}

.files-tree-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex: 1 1 auto;
    min-width: 0;
    width: 100%;
    border: 0;
    background: transparent;
    color: inherit;
    text-align: left;
    padding: 0.4rem 0.85rem 0.4rem 0.2rem;
}

.files-tree-item.files-tree-root {
    padding: 0.4rem 0.85rem;
}

.files-tree-name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.files-tree-row:hover,
.files-tree-item:hover,
.files-tree-item:focus,
.files-tree-toggle:hover,
.files-tree-toggle:focus {
    background: rgba(255, 255, 255, 0.06);
}

.files-tree-item.is-active {
    background: rgba(255, 255, 255, 0.12);
}

.files-tree-meta {
    flex: 0 0 auto;
    margin-left: 0.5rem;
    opacity: 0.55;
    font-size: 0.75rem;
}

.files-dropzone {
    min-height: 22rem;
}

.files-dropzone.is-dragover {
    outline: 2px dashed var(--theme-border-color, #fff);
    outline-offset: -0.75rem;
}

.files-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(9.5rem, 1fr));
    gap: 0.75rem;
}

.files-tile {
    position: relative;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--theme-border-color, #666);
    border-radius: 0.4rem;
    background: transparent;
    color: inherit;
    min-height: 10.5rem;
    overflow: hidden;
}

.files-tile.is-folder,
.files-tile-open {
    border: 0;
    background: transparent;
    color: inherit;
    width: 100%;
    text-align: left;
    padding: 0;
}

.files-tile.is-folder {
    border: 1px solid var(--theme-border-color, #666);
    padding-bottom: 0.6rem;
}

.files-tile.is-selected,
.files-tile.is-active,
tr.files-file-row.is-selected,
tr.files-file-row.is-active {
    outline: 2px solid var(--theme-button-primary, #4a5568);
    outline-offset: -1px;
}

.files-tile-check {
    position: absolute;
    top: 0.4rem;
    left: 0.4rem;
    z-index: 2;
    margin: 0;
}

.files-tile-preview {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 7rem;
    background: rgba(0, 0, 0, 0.18);
    overflow: hidden;
}

.files-tile-preview img,
.files-props-preview {
    display: block;
    width: 100%;
    height: 7rem;
    object-fit: cover;
}

.files-props-preview {
    border-radius: 0.35rem;
    margin-bottom: 1rem;
}

.files-icon-folder,
.files-ext {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 7rem;
    font-size: 0.8rem;
    letter-spacing: 0.04em;
    opacity: 0.85;
}

.files-icon-folder::before {
    content: "Folder";
}

.files-tile-name,
.files-tile-meta {
    display: block;
    padding: 0.35rem 0.55rem 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.files-tile-meta {
    font-size: 0.75rem;
    opacity: 0.7;
    padding-bottom: 0.5rem;
}

.files-props-list {
    margin: 0 0 1rem;
}

.files-props-list dt {
    font-size: 0.75rem;
    opacity: 0.7;
}

.files-props-list dd {
    margin: 0 0 0.65rem;
    word-break: break-word;
}

@media (max-width: 991.98px) {
    .files-workspace,
    .files-workspace.has-props {
        grid-template-columns: 1fr;
    }
}
