/**
 * Lantern Library: presentation-only theme for the shared application shell.
 *
 * Loaded after component styles so workflows, responsive breakpoints, route
 * attributes and access checks stay owned by their existing modules.
 */

/* One palette for modules, Bootstrap widgets and third-party input controls. */
:root {
    color-scheme: light;
    --lantern-canvas: #f3efe4;
    --lantern-paper: #fffdf7;
    --lantern-ink: #263a2e;
    --lantern-muted: #5e6c61;
    --lantern-line: #d9d8c9;
    --lantern-soft: #e8eee3;
    --lantern-forest: #28523c;
    --lantern-action: #28523c;
    --lantern-action-ink: #fffdf5;
    --lantern-brass: #886329;
    --lantern-gold: #dfbf83;
    --lantern-header: #0c1b28;
    --lantern-header-ink: #f6f0df;
    --lantern-header-muted: #d4dfd1;
    --lantern-danger: #883b38;
    --lantern-danger-soft: #f8e9e3;
    --lantern-warning: #705219;
    --lantern-warning-soft: #f5ead0;
    --lantern-focus: rgb(40 82 60 / 28%);
    --lantern-shadow: 0 .3rem 1.1rem rgb(38 58 46 / 6%);
    --lantern-heading: Georgia, 'Times New Roman', serif;
    --lantern-scene: url('../images/lantern-library-scene-v1.webp');
    --app-navy-950: #162b20;
    --app-navy-900: var(--lantern-header);
    --app-navy-800: #365640;
    --app-blue-600: var(--lantern-forest);
    --app-blue-100: var(--lantern-soft);
    --app-surface: var(--lantern-paper);
    --app-canvas: var(--lantern-canvas);
    --app-border: var(--lantern-line);
    --app-text: var(--lantern-ink);
    --app-muted: var(--lantern-muted);
    --bs-body-color: var(--lantern-ink);
    --bs-body-bg: var(--lantern-canvas);
    --bs-border-color: var(--lantern-line);
    --bs-secondary-color: var(--lantern-muted);
    --bs-secondary-bg: var(--lantern-soft);
    --bs-tertiary-bg: var(--lantern-canvas);
    --bs-emphasis-color: var(--lantern-ink);
    --bs-body-color-rgb: 38, 58, 46;
    --bs-secondary-color-rgb: 94, 108, 97;
    --bs-emphasis-color-rgb: 38, 58, 46;
    --bs-primary-rgb: 40, 82, 60;
    --bs-success-rgb: 45, 98, 63;
    --bs-info-rgb: 55, 91, 69;
    --bs-danger-rgb: 136, 59, 56;
    --bs-link-color: var(--lantern-forest);
    --bs-link-hover-color: var(--lantern-brass);
    --bs-link-color-rgb: 40, 82, 60;
    --bs-link-hover-color-rgb: 112, 78, 24;
    --bs-border-radius: .65rem;
    --bs-border-radius-lg: 1rem;
}

:root[data-app-theme="dark"] {
    color-scheme: dark;
    --lantern-canvas: #08131d;
    --lantern-paper: #102230;
    --lantern-ink: #f4ead8;
    --lantern-muted: #b6c4cc;
    --lantern-line: #405463;
    --lantern-soft: #193342;
    --lantern-forest: #a7d8c4;
    --lantern-action: #dfbf83;
    --lantern-action-ink: #152633;
    --lantern-brass: #dfbf83;
    --lantern-header: #08131d;
    --lantern-header-muted: #c0ccd3;
    --lantern-danger: #efb7b1;
    --lantern-danger-soft: #49302c;
    --lantern-warning: #ecd49c;
    --lantern-warning-soft: #463b25;
    --lantern-focus: rgb(223 191 131 / 30%);
    --lantern-shadow: 0 .6rem 1.6rem rgb(0 0 0 / 22%);
    --bs-body-color-rgb: 244, 234, 216;
    --bs-secondary-color-rgb: 182, 196, 204;
    --bs-emphasis-color-rgb: 244, 234, 216;
    --bs-link-color-rgb: 167, 216, 196;
    --bs-link-hover-color-rgb: 223, 191, 131;
}

body.theme-lantern-library {
    background: var(--lantern-canvas) !important;
    color: var(--lantern-ink);
    font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    line-height: 1.6;
}

.theme-lantern-library :is(h1, h2, h3, .modal-title, .card-title, .journey-dashboard-card__content > strong) {
    color: var(--lantern-ink);
    font-family: var(--lantern-heading);
    font-weight: 500;
    letter-spacing: -.02em;
    line-height: 1.25;
    overflow-wrap: anywhere;
}

.theme-lantern-library h1.h4 { font-size: clamp(1.65rem, 2.7vw, 2.25rem); }
.theme-lantern-library h1.h3 { font-size: clamp(1.8rem, 3vw, 2.5rem); }
.theme-lantern-library a { color: var(--lantern-forest); }
.theme-lantern-library a:hover { color: var(--lantern-brass); }
.theme-lantern-library :focus-visible { outline-color: var(--lantern-forest); }
.theme-lantern-library :is(.text-muted, .form-text, .text-secondary) { color: var(--lantern-muted) !important; }
.theme-lantern-library :is(.text-body, .text-dark) { color: var(--lantern-ink) !important; }
.theme-lantern-library :is(.text-primary, .text-success, .text-info) { color: var(--lantern-forest) !important; }
.theme-lantern-library .text-danger { color: var(--lantern-danger) !important; }
.theme-lantern-library :is(.bg-white, .bg-light) { background-color: var(--lantern-paper) !important; }

/* Keep the mobile navigation overlay and all existing active-route markers. */
.theme-lantern-library .app-navbar {
    background: var(--lantern-header);
    border-bottom-color: rgb(223 191 131 / 25%);
    box-shadow: 0 .3rem 1rem rgb(22 43 32 / 12%);
}
.theme-lantern-library .app-navbar__brand-copy strong { font: 500 1.25rem/1.1 var(--lantern-heading); color: var(--lantern-header-ink); }
.theme-lantern-library .app-navbar__brand-copy small { color: var(--lantern-header-muted); font-weight: 400; }
.lantern-brand-mark {
    display: inline-grid;
    place-items: center;
    width: 2.65rem;
    height: 2.65rem;
    flex: 0 0 auto;
    border: 1px solid var(--lantern-gold);
    border-radius: 1rem 1rem .3rem .3rem;
    color: var(--lantern-gold);
    background: var(--lantern-header);
    font-size: 1.05rem;
}
.theme-lantern-library .app-nav-link { color: var(--lantern-header-muted) !important; font-weight: 500; }
.theme-lantern-library .app-nav-link:is(.active, .show) {
    background: #223c4c !important;
    border-color: #9c8051 !important;
    color: var(--lantern-header-ink) !important;
    box-shadow: none;
}
.theme-lantern-library .app-nav-link:is(:hover, :focus-visible) { color: var(--lantern-header-ink) !important; }
.theme-lantern-library .app-account-trigger { color: var(--lantern-header-ink) !important; }
.theme-lantern-library .app-account-trigger__avatar { color: var(--lantern-gold); background: #223c4c; }
.theme-lantern-library .app-account-trigger__copy small { color: var(--lantern-header-muted); }
.theme-lantern-library .app-nav-count { background: var(--lantern-gold); color: #203d2d; }
.theme-lantern-library :is(.dropdown-menu, .offcanvas, .modal-content, .file-library-dialog, .swal2-popup) {
    background: var(--lantern-paper);
    color: var(--lantern-ink);
    border-color: var(--lantern-line);
}
.theme-lantern-library :is(.dropdown-item, .app-menu-item) { color: var(--lantern-ink); }
.theme-lantern-library :is(.dropdown-item, .app-menu-item):is(:hover, :focus, .active) { background: var(--lantern-soft); color: var(--lantern-forest); }
.theme-lantern-library .app-menu-item__icon { background: var(--lantern-soft); color: var(--lantern-forest); }
.theme-lantern-library .app-menu-item__copy small { color: var(--lantern-muted); }
.theme-lantern-library .app-footer { background: var(--lantern-paper) !important; border-color: var(--lantern-line) !important; }
.theme-lantern-library .app-footer a { color: var(--lantern-muted); }

/* Surfaces are deliberately plain: ornament belongs to book covers, not forms. */
.theme-lantern-library .card {
    background-color: var(--lantern-paper);
    color: var(--lantern-ink);
    border-color: var(--lantern-line);
    --bs-card-color: var(--lantern-ink);
    --bs-card-bg: var(--lantern-paper);
    --bs-card-border-color: var(--lantern-line);
    --bs-card-cap-color: var(--lantern-ink);
    --bs-card-cap-bg: var(--lantern-paper);
    border-radius: 1rem;
    box-shadow: var(--lantern-shadow) !important;
}
.theme-lantern-library .card-header { background: var(--lantern-paper) !important; border-radius: 1rem 1rem 0 0 !important; }
.theme-lantern-library :is(.modal-header, .modal-footer, .offcanvas-header) { border-color: var(--lantern-line); }
.theme-lantern-library .modal-content { border-radius: 1rem; }
.theme-lantern-library .btn { font-weight: 500; letter-spacing: 0; }
.theme-lantern-library :is(.btn-primary, .btn-success) {
    --bs-btn-color: var(--lantern-action-ink);
    --bs-btn-bg: var(--lantern-action);
    --bs-btn-border-color: var(--lantern-action);
    --bs-btn-hover-color: var(--lantern-action-ink);
    --bs-btn-hover-bg: var(--lantern-action);
    --bs-btn-hover-border-color: var(--lantern-brass);
    --bs-btn-active-color: var(--lantern-action-ink);
    --bs-btn-active-bg: var(--lantern-action);
    --bs-btn-active-border-color: var(--lantern-brass);
    --bs-btn-disabled-color: var(--lantern-action-ink);
    --bs-btn-disabled-bg: var(--lantern-action);
    --bs-btn-disabled-border-color: var(--lantern-action);
}
.theme-lantern-library :is(.btn-secondary, .btn-light, .btn-info) {
    --bs-btn-color: var(--lantern-ink);
    --bs-btn-bg: var(--lantern-soft);
    --bs-btn-border-color: var(--lantern-line);
    --bs-btn-hover-color: var(--lantern-forest);
    --bs-btn-hover-bg: var(--lantern-paper);
    --bs-btn-hover-border-color: var(--lantern-forest);
    --bs-btn-active-color: var(--lantern-forest);
    --bs-btn-active-bg: var(--lantern-soft);
    --bs-btn-active-border-color: var(--lantern-forest);
    --bs-btn-disabled-color: var(--lantern-muted);
    --bs-btn-disabled-bg: var(--lantern-soft);
    --bs-btn-disabled-border-color: var(--lantern-line);
}
.theme-lantern-library :is(.btn-outline-primary, .btn-outline-success, .btn-outline-secondary, .btn-outline-info) {
    --bs-btn-color: var(--lantern-forest);
    --bs-btn-border-color: var(--lantern-line);
    --bs-btn-hover-color: var(--lantern-action-ink);
    --bs-btn-hover-bg: var(--lantern-action);
    --bs-btn-hover-border-color: var(--lantern-action);
    --bs-btn-active-color: var(--lantern-action-ink);
    --bs-btn-active-bg: var(--lantern-action);
    --bs-btn-active-border-color: var(--lantern-action);
    --bs-btn-disabled-color: var(--lantern-muted);
    --bs-btn-disabled-bg: transparent;
    --bs-btn-disabled-border-color: var(--lantern-line);
}
.theme-lantern-library .btn-link { --bs-btn-color: var(--lantern-forest); --bs-btn-hover-color: var(--lantern-brass); }
/* The vendored Bootstrap build predates button/pagination CSS variables.
 * Explicit properties keep that build and newer builds visually equivalent. */
.theme-lantern-library :is(.btn-primary, .btn-success) { color: var(--lantern-action-ink); background-color: var(--lantern-action); border-color: var(--lantern-action); }
.theme-lantern-library :is(.btn-secondary, .btn-light, .btn-info) { color: var(--lantern-ink); background-color: var(--lantern-soft); border-color: var(--lantern-line); }
.theme-lantern-library :is(.btn-outline-primary, .btn-outline-success, .btn-outline-secondary, .btn-outline-info) { color: var(--lantern-forest); background-color: transparent; border-color: var(--lantern-line); }
.theme-lantern-library :is(.btn-primary, .btn-success, .btn-secondary, .btn-light, .btn-info, .btn-outline-primary, .btn-outline-success, .btn-outline-secondary, .btn-outline-info):is(:hover, :active, :focus-visible) { color: var(--lantern-action-ink); background-color: var(--lantern-action); border-color: var(--lantern-brass); }
.theme-lantern-library a.btn:is(.btn-primary, .btn-success) { color: var(--lantern-action-ink); }
.theme-lantern-library .btn-link { color: var(--lantern-forest); }
.theme-lantern-library .btn-link:hover { color: var(--lantern-brass); }
.theme-lantern-library .btn:focus-visible { box-shadow: 0 0 0 .2rem var(--lantern-focus); }
:root[data-app-theme="dark"] .theme-lantern-library .btn-close { filter: invert(1) grayscale(1) brightness(2); }
.theme-lantern-library .swal2-styled.swal2-confirm { background: var(--lantern-action); color: var(--lantern-action-ink); }
.theme-lantern-library .swal2-styled.swal2-cancel { background: var(--lantern-soft); color: var(--lantern-ink); }

/* Inputs retain native date controls, validation and the shared FilePond hooks. */
.theme-lantern-library :is(.form-control, .form-select, .input-group-text, .password-guidance) {
    background-color: var(--lantern-paper);
    color: var(--lantern-ink);
    border-color: var(--lantern-line);
}
.theme-lantern-library :is(.form-control, .form-select)::placeholder { color: var(--lantern-muted); opacity: 1; }
.theme-lantern-library :is(.form-control, .form-select):focus { border-color: var(--lantern-forest); box-shadow: 0 0 0 .2rem var(--lantern-focus); }
.theme-lantern-library :is(.form-control, .form-select):disabled { background: var(--lantern-soft); color: var(--lantern-muted); }
:root[data-app-theme="dark"] .theme-lantern-library .form-select { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23b8c7b9' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); }
.theme-lantern-library .form-check-input { background-color: var(--lantern-paper); border-color: var(--lantern-muted); }
.theme-lantern-library .form-check-input:checked { background-color: #28523c; border-color: #28523c; }
.theme-lantern-library .form-check-input:focus { box-shadow: 0 0 0 .2rem var(--lantern-focus); }
.theme-lantern-library .form-control.is-invalid { border-color: var(--lantern-danger); }
.theme-lantern-library :is(.invalid-feedback, .password-guidance__requirements .is-unmet) { color: var(--lantern-danger); }
.theme-lantern-library .password-control__toggle { color: var(--lantern-muted); }
.theme-lantern-library .password-control__toggle:hover { background: var(--lantern-soft); color: var(--lantern-forest); }
.theme-lantern-library .password-guidance__meter { background: var(--lantern-line); }
.theme-lantern-library .password-guidance__requirements .is-met { color: var(--lantern-forest); }
.theme-lantern-library .select2-container--default :is(.select2-selection--single, .select2-selection--multiple, .select2-search__field) { background: var(--lantern-paper); color: var(--lantern-ink); border-color: var(--lantern-line); }
.theme-lantern-library .select2-container--default :is(.select2-selection__rendered, .select2-selection__choice__display) { color: var(--lantern-ink); }
.theme-lantern-library .select2-dropdown { background: var(--lantern-paper); color: var(--lantern-ink); border-color: var(--lantern-line); }
.theme-lantern-library .select2-results__option--selected { background: var(--lantern-soft); }
.theme-lantern-library .select2-container--default .select2-results__option--highlighted[aria-selected] { background: #28523c; color: #fffdf5; }
.theme-lantern-library .select2-selection__choice { background: var(--lantern-soft); border-color: var(--lantern-line); }
.theme-lantern-library .select2-selection__choice__remove { color: var(--lantern-muted); border-color: var(--lantern-line); }
.theme-lantern-library .filepond--panel-root { background: var(--lantern-soft); border: 1px dashed var(--lantern-line); }
.theme-lantern-library .filepond--drop-label { color: var(--lantern-ink); }
.theme-lantern-library .file-library-choice__preview { background: var(--lantern-soft); }

/* Semantic status colors remain distinct and readable in both appearances. */
.theme-lantern-library :is(.text-bg-primary, .text-bg-info, .text-bg-success) { background: var(--lantern-soft) !important; color: var(--lantern-forest) !important; border-color: var(--lantern-line); }
.theme-lantern-library :is(.text-bg-light, .text-bg-secondary) { background: var(--lantern-canvas) !important; color: var(--lantern-muted) !important; border-color: var(--lantern-line); }
.theme-lantern-library .text-bg-warning { background: var(--lantern-warning-soft) !important; color: var(--lantern-warning) !important; }
.theme-lantern-library .text-bg-danger { background: var(--lantern-danger-soft) !important; color: var(--lantern-danger) !important; }
.theme-lantern-library :is(.alert-info, .alert-success, .alert-primary) { color: var(--lantern-ink); background: var(--lantern-soft); border-color: var(--lantern-line); }
.theme-lantern-library :is(.alert-light, .alert-secondary) { color: var(--lantern-ink); background: var(--lantern-paper); border-color: var(--lantern-line); }
.theme-lantern-library .alert-warning { color: var(--lantern-warning); background: var(--lantern-warning-soft); border-color: var(--lantern-gold); }
.theme-lantern-library .alert-danger { color: var(--lantern-danger); background: var(--lantern-danger-soft); border-color: var(--lantern-danger); }
.theme-lantern-library :is(.journey-badge, .journey-book-chip, .user-badge, .group-membership-badge) { background: var(--lantern-soft); color: var(--lantern-forest); border-color: var(--lantern-line); }
.theme-lantern-library :is(.journey-badge--private, .journey-badge--lifecycle-archived, .user-badge--status-inactive) { background: var(--lantern-canvas); color: var(--lantern-muted); }
.theme-lantern-library :is(.journey-badge--pending, .journey-badge--lifecycle-draft, .journey-badge--approval-pending, .user-badge--account-dependant) { background: var(--lantern-warning-soft); color: var(--lantern-warning); }
.theme-lantern-library .journey-badge--approval-rejected { background: var(--lantern-danger-soft); color: var(--lantern-danger); }
.theme-lantern-library .progress { --bs-progress-bg: var(--lantern-line); --bs-progress-bar-bg: var(--lantern-action); }
.theme-lantern-library .progress-bar { background-color: var(--lantern-action); }

/* Reusable book-cover fallback: real protected uploads are never replaced. */
.lantern-book-cover {
    position: relative;
    display: flex;
    width: 100%;
    height: 100%;
    min-height: 10rem;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: .55rem;
    padding: 2rem 1.5rem;
    overflow: hidden;
    background: #28523c;
    color: #fffdf5;
    text-align: center;
}
.lantern-book-cover::before { content: ''; position: absolute; inset: .8rem; border: 1px solid #bfa16b; border-radius: 3.5rem 3.5rem .4rem .4rem; pointer-events: none; }
.lantern-book-cover::after { content: ''; position: absolute; width: 4rem; height: 4rem; top: 1.5rem; border: 1px solid rgb(223 191 131 / 20%); border-radius: 50%; pointer-events: none; }
.lantern-book-cover__title { position: relative; max-width: 100%; font: 500 clamp(1.3rem, 2.5vw, 1.8rem)/1.2 var(--lantern-heading); letter-spacing: .08em; overflow-wrap: anywhere; }
.lantern-book-cover__subtitle { position: relative; max-width: 100%; font-size: .8rem; color: #f6f0df; overflow-wrap: anywhere; }
.lantern-template-cover { height: 11rem; min-height: 11rem; flex: 0 0 11rem; }
.lantern-template-cover .badge { position: relative; }
.theme-lantern-library .journey-dashboard-card { background: var(--lantern-paper); border-color: var(--lantern-line); border-radius: 1rem; box-shadow: var(--lantern-shadow); }
.theme-lantern-library .journey-dashboard-card:hover { border-color: var(--lantern-brass); box-shadow: var(--lantern-shadow); }
.theme-lantern-library .journey-dashboard-card__banner { height: 10.5rem; background: var(--lantern-soft); }
.theme-lantern-library .journey-dashboard-card__status { background: var(--lantern-paper); color: var(--lantern-forest); box-shadow: none; }
.theme-lantern-library .journey-dashboard-card__status--draft { color: var(--lantern-warning); }
.theme-lantern-library .journey-dashboard-card__content > strong { font-size: 1.35rem; }
.theme-lantern-library .journey-dashboard-card__content > small { color: var(--lantern-muted); }
.theme-lantern-library .journey-dashboard-card__footer { border-color: var(--lantern-line); color: var(--lantern-muted); }
.theme-lantern-library :is(.journey-dashboard-card__relationship, .journey-dashboard-card__relationship--collaborating) { background: var(--lantern-soft); color: var(--lantern-forest); }
.theme-lantern-library .active-journey-card__image { height: 10.5rem; background: var(--lantern-soft); }
.theme-lantern-library .active-journey-card__details dt { color: var(--lantern-muted); }
.theme-lantern-library .active-journey-card__details dt i { color: var(--lantern-forest); }
.theme-lantern-library .journey-overview__banner { background: var(--lantern-soft); }
.theme-lantern-library .journey-search-toolbar { background: var(--lantern-paper); box-shadow: var(--lantern-shadow); }
.theme-lantern-library .journey-category-section__heading { border-color: var(--lantern-line); }
.theme-lantern-library :is(.journey-filter-icon, .journey-filter-avatar, .profile-avatar, .member-picker__avatar, .users-notifications__icon) { color: var(--lantern-forest); background: var(--lantern-soft); }
.theme-lantern-library :is(.journey-filter-item, .journey-list-item, .group-list-item, .audit-user-item) { color: var(--lantern-ink); border-color: var(--lantern-line); }
.theme-lantern-library .journey-filter-item { background: var(--lantern-paper); }
.theme-lantern-library .journey-filter-item.is-active { box-shadow: inset .22rem 0 0 var(--lantern-brass); }
.theme-lantern-library :is(.journey-filter-item small, .journey-stat small, .journey-visibility-option small) { color: var(--lantern-muted); }
.theme-lantern-library .journey-stat { border-color: var(--lantern-line); }
.theme-lantern-library .journey-date-filter__field { color: var(--lantern-muted); }
.theme-lantern-library .journey-filter-card h2 { font-family: inherit; font-weight: 600; font-size: 1rem; }
.theme-lantern-library .list-group-item { background: var(--lantern-paper); color: var(--lantern-ink); border-color: var(--lantern-line); }
.theme-lantern-library .accordion-item { background: var(--lantern-paper); color: var(--lantern-ink); border-color: var(--lantern-line); }
.theme-lantern-library .card-footer { background: var(--lantern-paper); border-color: var(--lantern-line); }
.theme-lantern-library :is(.journey-filter-item, .journey-list-item, .group-list-item, .audit-user-item):is(:hover, .is-active) { background: var(--lantern-soft); color: var(--lantern-forest); border-color: var(--lantern-line); }
.theme-lantern-library :is(.journey-stat > i, .audit-detail-placeholder > i, .group-detail-placeholder > i) { color: var(--lantern-forest); }
.theme-lantern-library :is(.journey-visibility-option, .private-note-thread__body, .audit-snapshot, .member-picker__item.is-selected, .notification-history__item.is-unread) { background: var(--lantern-soft); color: var(--lantern-ink); border-color: var(--lantern-line); }

/* Read notifications need the same surface/text pair as unread ones: the
 * component's hard-coded white background otherwise hides dark-theme text. */
.theme-lantern-library .notification-history__item {
    background: var(--lantern-paper);
    color: var(--lantern-ink);
    border-color: var(--lantern-line);
    overflow-wrap: anywhere;
}
.theme-lantern-library .notification-history__item.is-unread {
    background: var(--lantern-soft);
    border-inline-start-color: var(--lantern-brass);
}

/* Calm reading surfaces for personal answers and shared discussion. */
.theme-lantern-library .accordion { --bs-accordion-bg: var(--lantern-paper); --bs-accordion-color: var(--lantern-ink); --bs-accordion-border-color: var(--lantern-line); --bs-accordion-btn-bg: var(--lantern-paper); --bs-accordion-btn-color: var(--lantern-ink); --bs-accordion-active-bg: var(--lantern-soft); --bs-accordion-active-color: var(--lantern-forest); --bs-accordion-btn-focus-box-shadow: 0 0 0 .2rem var(--lantern-focus); }
.theme-lantern-library .accordion-button { background: var(--lantern-paper); color: var(--lantern-ink); }
.theme-lantern-library .accordion-button:not(.collapsed) { background: var(--lantern-soft); color: var(--lantern-forest); box-shadow: inset 0 -1px 0 var(--lantern-line); }
.theme-lantern-library .accordion-button:focus { border-color: var(--lantern-forest); box-shadow: 0 0 0 .2rem var(--lantern-focus); }
:root[data-app-theme="dark"] .theme-lantern-library .accordion-button::after { filter: grayscale(1) brightness(2); }
.theme-lantern-library :is(.session-question-accordion, .my-notes-workspace) .accordion-button:not(.collapsed) { background: var(--lantern-soft); color: var(--lantern-forest); }
.theme-lantern-library .session-question-card { background: var(--lantern-paper); border-color: var(--lantern-line); border-radius: 1rem; box-shadow: var(--lantern-shadow); }
.theme-lantern-library .session-question-card__number { background: var(--lantern-soft); color: var(--lantern-forest); }
.theme-lantern-library .session-group-icon { background: var(--lantern-soft); color: var(--lantern-forest); }
.theme-lantern-library .session-answer-review { background: var(--lantern-soft); color: var(--lantern-ink); border-color: var(--lantern-line); }
.theme-lantern-library .session-answer-workspace textarea { min-height: 8rem; line-height: 1.7; }
.theme-lantern-library .session-question-card__content > label { line-height: 1.65; }
.theme-lantern-library .session-question-card__content .badge { font-weight: 500; }

/* DataTables keeps its responsive details renderer, search and pagination. */
.theme-lantern-library .table { color: var(--lantern-ink); border-color: var(--lantern-line); --bs-table-color: var(--lantern-ink); --bs-table-bg: var(--lantern-paper); --bs-table-border-color: var(--lantern-line); --bs-table-striped-bg: var(--lantern-canvas); --bs-table-striped-color: var(--lantern-ink); --bs-table-hover-bg: var(--lantern-soft); --bs-table-hover-color: var(--lantern-ink); --bs-table-active-bg: var(--lantern-soft); --bs-table-active-color: var(--lantern-ink); }
.theme-lantern-library .table > thead > tr > th { background: var(--lantern-canvas); color: var(--lantern-muted); font-weight: 600; }
.theme-lantern-library .app-data-table .dtr-title { color: var(--lantern-forest); }
.theme-lantern-library .pagination { --bs-pagination-bg: var(--lantern-paper); --bs-pagination-color: var(--lantern-forest); --bs-pagination-border-color: var(--lantern-line); --bs-pagination-hover-bg: var(--lantern-soft); --bs-pagination-hover-color: var(--lantern-forest); --bs-pagination-hover-border-color: var(--lantern-line); --bs-pagination-active-bg: var(--lantern-action); --bs-pagination-active-color: var(--lantern-action-ink); --bs-pagination-active-border-color: var(--lantern-action); --bs-pagination-disabled-bg: var(--lantern-canvas); --bs-pagination-disabled-color: var(--lantern-muted); --bs-pagination-disabled-border-color: var(--lantern-line); }
.theme-lantern-library .page-link { color: var(--lantern-forest); background: var(--lantern-paper); border-color: var(--lantern-line); }
.theme-lantern-library .page-link:hover { color: var(--lantern-forest); background: var(--lantern-soft); }
.theme-lantern-library .page-item.active .page-link { color: var(--lantern-action-ink); background: var(--lantern-action); border-color: var(--lantern-action); }
.theme-lantern-library .page-item.disabled .page-link { color: var(--lantern-muted); background: var(--lantern-canvas); border-color: var(--lantern-line); }

/* Popups, guides and the calendar belong to the same visual vocabulary. */
.theme-lantern-library .help-centre__hero { background: var(--lantern-soft); }
.theme-lantern-library .help-centre__eyebrow { color: var(--lantern-brass); }
.theme-lantern-library .help-guide-card__icon { color: var(--lantern-forest); background: var(--lantern-soft); }
.theme-lantern-library .help-step-number { background: var(--lantern-action); color: var(--lantern-action-ink); }
.theme-lantern-library .help-tour__shade { background: rgb(15 30 22 / 72%); }
.theme-lantern-library .help-tour__popover { background: var(--lantern-paper); color: var(--lantern-ink); }
.theme-lantern-library .help-tour__progress { color: var(--lantern-muted); }
.theme-lantern-library .help-tour__focus { box-shadow: 0 0 0 4px var(--lantern-gold), 0 0 20px rgb(223 191 131 / 35%); }
.theme-lantern-library :is(.journey-calendar-day, .journey-calendar-event-details) { background: var(--lantern-paper); border-color: var(--lantern-line); }
.theme-lantern-library .journey-calendar-day--empty { background: var(--lantern-canvas); }
.theme-lantern-library :is(.journey-calendar-weekday, .journey-calendar-date) { color: var(--lantern-muted); }
.theme-lantern-library .journey-calendar-date { background: var(--lantern-soft); }
.theme-lantern-library .journey-calendar-date[aria-pressed="true"] { background: var(--lantern-action); color: var(--lantern-action-ink); }
.theme-lantern-library .journey-calendar-event { color: var(--lantern-forest); background: var(--lantern-soft); }
.theme-lantern-library .journey-calendar-icon { color: var(--lantern-forest); background: var(--lantern-soft); }
.theme-lantern-library :is(.journey-calendar-count, .journey-calendar-more) { color: var(--lantern-muted); }
.theme-lantern-library .journey-calendar-event--end { color: var(--lantern-warning); background: var(--lantern-warning-soft); }
.theme-lantern-library .page-loader { background: rgb(20 37 27 / 96%); }
.theme-lantern-library .journey-loader__traveller { color: var(--lantern-gold); filter: drop-shadow(0 0 8px rgb(223 191 131 / 35%)); }
.theme-lantern-library .journey-loader__road-line { stroke: var(--lantern-gold); }

/* Public access pages: book-arch artwork beside an ordinary, readable form. */
.theme-lantern-library.public-auth-page { background: var(--lantern-canvas) !important; }
/* Auto cross-axis margins centre short welcome panels but collapse to zero
 * for tall forms, so the first heading never becomes unreachable above scroll. */
.theme-lantern-library .public-auth { align-items: flex-start; }
.theme-lantern-library .public-auth__shell { margin-block: auto; flex-shrink: 0; background: var(--lantern-paper); background-image: none; border-color: var(--lantern-line); box-shadow: var(--lantern-shadow); }
.theme-lantern-library .public-auth__artwork { display: flex; align-items: center; justify-content: center; min-height: 32rem; padding: 3rem; background: #203d2d; color: #f6f0df; position: relative; }
.theme-lantern-library .public-auth__artwork::before { content: ''; position: absolute; inset: 1.6rem; border: 1px solid #886e42; border-radius: 9rem 9rem .7rem .7rem; pointer-events: none; }
.lantern-welcome { max-width: 24rem; text-align: center; position: relative; }
.lantern-welcome > i { display: block; font-size: 2rem; color: #dfbf83; margin-bottom: 2rem; }
.theme-lantern-library .lantern-welcome h2 { color: #f6f0df; font-size: clamp(2rem, 3.5vw, 3rem); }
.lantern-welcome p { color: #d4dfd1; line-height: 1.8; }
.lantern-welcome__eyebrow { color: #dfbf83; font-size: .8rem; letter-spacing: .09em; text-transform: uppercase; }
.theme-lantern-library .public-auth__content { background: var(--lantern-paper); color: var(--lantern-ink); padding: 2rem 1rem; }
.theme-lantern-library .public-auth__card { border: 0 !important; background: var(--lantern-paper); box-shadow: none !important; }
.theme-lantern-library .public-auth__card :is(.text-muted, .form-text) { color: var(--lantern-muted) !important; }
.theme-lantern-library .public-auth__card a { color: var(--lantern-forest); }
.theme-lantern-library .public-brand__name { font-family: var(--lantern-heading); color: var(--lantern-forest); }

/* A quiet printed record, independent of the selected on-screen appearance. */
.theme-lantern-library .print-document { background: var(--lantern-paper); color: var(--lantern-ink); border-color: var(--lantern-line); box-shadow: var(--lantern-shadow); }
.theme-lantern-library .print-document__header { border-color: var(--lantern-brass); }
.theme-lantern-library :is(.print-document__eyebrow, .print-answer-group__heading, .print-completed-mark) { color: var(--lantern-forest); }
.theme-lantern-library :is(.print-document__meta, .print-answer__value) { background: var(--lantern-soft); border-color: var(--lantern-line); }
.theme-lantern-library :is(.print-document__meta span, .print-answer__guidance, .print-document__footer) { color: var(--lantern-muted); }
.theme-lantern-library .print-answer__number { background: var(--lantern-soft); color: var(--lantern-forest); }

@media (max-width: 1199.98px) {
    .theme-lantern-library .app-navbar .navbar-collapse { background: var(--lantern-header); }
}
@media (min-width: 992px) {
    /* Bootstrap's d-lg-flex utility takes precedence over the original grid;
     * stack both filter panels rather than squeezing them into one narrow row. */
    .theme-lantern-library .journey-dashboard__sidebar { flex-direction: column; }
    .theme-lantern-library .journey-dashboard__sidebar > .journey-filter-card { flex: 1 1 0; }
}
@media (max-width: 991.98px) {
    .theme-lantern-library .public-auth { align-items: flex-start; }
    .theme-lantern-library .public-auth__shell { background: var(--lantern-paper); background-image: none; }
    .theme-lantern-library .public-auth__artwork { min-height: 12rem; aspect-ratio: auto; padding: 2rem; }
    .theme-lantern-library .public-auth__artwork::before { inset: .8rem; border-radius: 3rem 3rem .4rem .4rem; }
    .lantern-welcome > i { display: none; }
    .theme-lantern-library .lantern-welcome h2 { font-size: 1.8rem; }
    .lantern-welcome p { margin-bottom: 0; }
}
@media (max-width: 575.98px) {
    .theme-lantern-library .app-navbar__brand { min-width: 0; margin-right: .5rem; }
    .theme-lantern-library .app-navbar__brand-copy strong { font-size: 1.1rem; }
    .theme-lantern-library .lantern-brand-mark { width: 2.25rem; height: 2.25rem; }
    .theme-lantern-library .public-auth__artwork { min-height: 10rem; padding: 1.5rem; }
    .lantern-welcome__eyebrow { display: none; }
    .theme-lantern-library .public-auth__content { padding: .5rem; }
    .theme-lantern-library .public-auth__card > .card-body { padding: 1.25rem !important; }
    .theme-lantern-library .session-question-card { padding: 1rem; }
    .theme-lantern-library .session-question-card__number { flex-basis: 1.8rem; width: 1.8rem; height: 1.8rem; }
    .theme-lantern-library :is(.form-control, .form-select, .select2-search__field) { font-size: 1rem; }
    .theme-lantern-library :is(.journey-dashboard-card__banner, .active-journey-card__image) { height: 9rem; }
    .lantern-book-cover { min-height: 9rem; padding: 1.5rem 1rem; }
}
@media (pointer: coarse) {
    .theme-lantern-library :is(.btn, .app-nav-link, .dropdown-item, .password-control__toggle) { min-height: 44px; }
}
@media (prefers-reduced-motion: reduce) {
    .theme-lantern-library *, .theme-lantern-library *::before, .theme-lantern-library *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }
}
/* Enchanted library: local, reusable artwork is decorative only. Strong navy
 * overlays keep live HTML legible; forms and personal answers stay untextured. */
.theme-lantern-library > main {
    background-image: radial-gradient(ellipse at 80% 0%, rgb(63 105 134 / 12%), transparent 55%), radial-gradient(ellipse at 5% 90%, rgb(223 191 131 / 5%), transparent 50%);
}
.theme-lantern-library .lantern-action-icon { margin-inline-end: .45em; font-size: .9em; pointer-events: none; }
.theme-lantern-library .journey-calendar-date .lantern-action-icon { margin-inline-end: .2em; font-size: .65em; }
.theme-lantern-library .btn, .theme-lantern-library .journey-dashboard-card {
    transition: border-color 180ms ease, background-color 180ms ease, box-shadow 180ms ease;
}
.theme-lantern-library .btn { border-radius: .6rem; }
.theme-lantern-library :focus-visible { outline: 2px solid var(--lantern-brass); outline-offset: 3px; }
.theme-lantern-library .lantern-catalogue-hero {
    position: relative;
    overflow: hidden;
    border-color: var(--lantern-brass) !important;
}
.theme-lantern-library .lantern-library-header,
.theme-lantern-library .public-auth__artwork {
    background-color: #0c1b28;
    background-image: linear-gradient(90deg, rgb(8 19 29 / 93%), rgb(8 19 29 / 75%) 58%, rgb(8 19 29 / 38%)), var(--lantern-scene);
    background-size: cover;
    background-position: center, center 57%;
    color: #f4ead8;
}
.theme-lantern-library .lantern-library-header { position: relative; border: 1px solid #9c8051 !important; border-radius: 1rem; overflow: hidden; }
.theme-lantern-library .lantern-library-header::before { content: ''; position: absolute; inset: .55rem; border: 1px solid rgb(223 191 131 / 30%); border-radius: .6rem; pointer-events: none; }
.theme-lantern-library .lantern-library-header > .card-body { position: relative; padding: 2rem; min-height: 10rem; }
.theme-lantern-library .lantern-library-header :is(h1, h2) { color: #ebd5a7; }
.theme-lantern-library .lantern-library-header :is(.text-muted, .lead) { color: #e1e4dc !important; max-width: 44rem; }
.theme-lantern-library .lantern-library-header :is(.lantern-eyebrow, .help-centre__eyebrow) { color: #dfbf83; }
.theme-lantern-library .lantern-catalogue-intro { border-radius: 1rem 1rem 0 0; border: 0 !important; }
.theme-lantern-library .lantern-catalogue-intro > .card-body { min-height: 12rem; }
.theme-lantern-library .lantern-library-header--compact > .card-body { min-height: 0; }
.theme-lantern-library .lantern-library-header--compact .journey-stat small { color: #e1e4dc; }
.theme-lantern-library .lantern-library-header--compact .journey-stat strong { color: #f4ead8; }
.theme-lantern-library .lantern-library-header--compact .journey-stat { border-color: rgb(223 191 131 / 25%); }
.theme-lantern-library .journey-dashboard__statistics { border-color: var(--lantern-line); }
.lantern-eyebrow { display: flex; align-items: center; gap: .6rem; color: var(--lantern-brass); font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; margin-bottom: .6rem; }
.lantern-eyebrow::after { content: ''; height: 1px; width: 4rem; background: linear-gradient(90deg, var(--lantern-brass), transparent); }
.lantern-book-cover { background-image: linear-gradient(0deg, rgb(8 19 29 / 80%), rgb(8 19 29 / 65%)), var(--lantern-scene); background-size: cover; background-position: center, left 80%; }
.lantern-book-cover__sigil { position: relative; color: #dfbf83; font-size: 1rem; }
.lantern-book-cover::after { width: 5rem; height: 1px; top: auto; bottom: .8rem; border: 0; background: linear-gradient(90deg, transparent, #dfbf83, transparent); }
.lantern-template-cover { height: 12.5rem; min-height: 12.5rem; flex-basis: 12.5rem; }
.theme-lantern-library .lantern-template-card { border-color: var(--lantern-line) !important; }
.theme-lantern-library .lantern-template-card:hover { border-color: var(--lantern-brass) !important; }
/* Parchment belongs to catalogue cards only. Local semantic tokens keep their
 * metadata, badges and buttons readable in both appearances. */
.theme-lantern-library .lantern-template-card > .card-body {
    --lantern-paper: #f4e8d0;
    --lantern-ink: #29352e;
    --lantern-muted: #5e665c;
    --lantern-soft: #e9dcc2;
    --lantern-line: #cabb9d;
    --lantern-forest: #2c513f;
    --lantern-brass: #73511e;
    --lantern-action: #dfbf83;
    --lantern-action-ink: #152633;
    background: var(--lantern-paper);
    color: var(--lantern-ink);
}
:root[data-app-theme="dark"] .theme-lantern-library .app-navbar { background: linear-gradient(110deg, #08131d, #142b3b); border-bottom-color: #665137; }
:root[data-app-theme="dark"] .theme-lantern-library .app-nav-link:is(.active, .show) { background: #223c4c !important; border-color: #9c8051 !important; box-shadow: inset 0 -2px #dfbf83; color: #f6f0df !important; }
:root[data-app-theme="dark"] .theme-lantern-library .app-account-trigger__avatar { background: #223c4c; }
:root[data-app-theme="dark"] .theme-lantern-library .lantern-brand-mark { background: #142b3b; box-shadow: 0 0 18px rgb(223 191 131 / 12%); }
:root[data-app-theme="dark"] .theme-lantern-library .card-header { background: linear-gradient(110deg, #142b3b, #102230) !important; }
:root[data-app-theme="dark"] .theme-lantern-library h1 { color: #ebd5a7; }
:root[data-app-theme="dark"] .theme-lantern-library .lantern-book-cover::before { border-color: #9c8051; }
:root[data-app-theme="dark"] .theme-lantern-library .progress-bar { background: linear-gradient(90deg, #b79959, #dfbf83); }
.theme-lantern-library .lantern-library-header--compact .journey-stat > i,
:root[data-app-theme="dark"] .theme-lantern-library .journey-stat > i { display: inline-grid; place-items: center; width: 2rem; min-width: 2rem; height: 2rem; flex: 0 0 2rem; color: #dfbf83; background: #193342; border: 1px solid #665137; border-radius: .7rem; padding: 0; }
:root[data-app-theme="dark"] .theme-lantern-library .session-question-card__number { color: #dfbf83; background: #193342; border: 1px solid #665137; }
.theme-lantern-library .public-auth__artwork { background-position: center, 62% center; }
.theme-lantern-library .lantern-welcome { max-width: 29rem; padding: 1.5rem .5rem; text-shadow: 0 2px 12px #08131d; }
.theme-lantern-library .lantern-welcome h2 { color: #ebd5a7; }
.theme-lantern-library .lantern-welcome p { color: #e1e4dc; }
:root[data-app-theme="dark"] .theme-lantern-library .public-auth__artwork::before { border-color: #9c8051; box-shadow: inset 0 0 3rem rgb(223 191 131 / 5%); }
:root[data-app-theme="dark"] .theme-lantern-library .page-loader { background: rgb(8 19 29 / 96%); }
:root[data-app-theme="dark"] .theme-lantern-library .help-tour__shade { background: rgb(8 19 29 / 75%); }
@media (min-width: 1200px) {
    .theme-lantern-library .lantern-catalogue-hero .card-body { padding: 1.5rem; }
}
@media (max-width: 575.98px) {
    .theme-lantern-library .lantern-library-header--compact .journey-stat > i,
    :root[data-app-theme="dark"] .theme-lantern-library .journey-stat > i { width: 1.6rem; min-width: 1.6rem; height: 1.6rem; }
    .theme-lantern-library .lantern-library-header > .card-body { min-height: 0; padding: 1.4rem; }
    .theme-lantern-library .lantern-library-header--compact > .card-body { padding: .75rem 1rem !important; }
    .theme-lantern-library .lantern-catalogue-hero .card-body { padding: 1rem; }
    .lantern-eyebrow { font-size: .65rem; letter-spacing: .1em; }
    /* Keep legal links available without taking a large slice of the study area. */
    .theme-lantern-library .app-footer > div { padding-block: .55rem !important; gap: .35rem !important; }
    .theme-lantern-library .app-footer nav { gap: .2rem .65rem !important; font-size: .75rem; line-height: 1.4; }
    .theme-lantern-library .app-footer small { font-size: .75rem; }
}
@media (max-width: 767.98px) {
    :root { --lantern-scene: url('../images/lantern-library-scene-mobile-v1.webp'); }
    .theme-lantern-library .lantern-library-header { background-position: center, 60% center; }
    .theme-lantern-library .lantern-library-header,
    .theme-lantern-library .public-auth__artwork { background-image: linear-gradient(90deg, rgb(8 19 29 / 94%), rgb(8 19 29 / 80%)), var(--lantern-scene); }
}
@media (prefers-reduced-motion: reduce) {
    .theme-lantern-library .btn, .theme-lantern-library .journey-dashboard-card { transition: none; }
}
@media print {
    :root, :root[data-app-theme="dark"] { color-scheme: light; --lantern-canvas: #fff; --lantern-paper: #fff; --lantern-ink: #263a2e; --lantern-muted: #4d5e51; --lantern-line: #d9d8c9; --lantern-soft: #f4f5ef; --lantern-forest: #28523c; --lantern-action: #28523c; --lantern-brass: #886329; }
    body.theme-lantern-library { background: #fff !important; }
    .theme-lantern-library > main { background-image: none; }
    :root[data-app-theme="dark"] .theme-lantern-library h1 { color: #263a2e; }
    .theme-lantern-library .print-document { background: #fff; box-shadow: none; }
    .theme-lantern-library .print-document .lantern-brand-mark { background: #fff; color: #28523c; border-color: #886329; }
}
