/**
 * @file plugins/themes/lumina/styles/components/core-components.bundle.css
 *
 * Copyright (c) 2026 Lumina Project contributors
 * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
 *
 * @brief Lumina Core Component Layer
 *        Generated deterministically by Lumina ContextualBundleBuilder.
 *        DO NOT EDIT DIRECTLY. Source modules remain in individual stylesheet files.
 */

/* ==========================================================================
   MODULE: styles/components/surfaces.css
   ========================================================================== */
.lm-surface-page {
    background-color: var(--lm-surface-page);
    color: var(--lm-text-primary);
}

.lm-surface-card {
    background-color: var(--lm-surface-card);
    border: 1px solid var(--lm-border);
}

.lm-surface-muted {
    background-color: var(--lm-surface-muted);
    color: var(--lm-text-secondary);
}

.lm-surface-footer {
    background-color: var(--lm-surface-footer);
    color: var(--lm-text-inverse);
    border-top: 4px solid var(--lm-link);
}

/* ==========================================================================
   MODULE: styles/components/utilities.css
   ========================================================================== */
/* Vertical Stack Gap Utilities */
.lm-stack-sm {
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
}

.lm-stack-md {
    display: flex;
    flex-direction: column;
    gap: var(--space-md);
}

.lm-stack-lg {
    display: flex;
    flex-direction: column;
    gap: var(--space-lg);
}

/* Flex Utilities */
.lm-flex {
    display: flex;
}

.lm-align-center {
    align-items: center;
}

.lm-justify-between {
    justify-content: space-between;
}

/* Grid Layout Utilities */
.lm-grid {
    display: grid;
}

.lm-grid-auto-sm {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}

.lm-grid-auto-md {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

.lm-grid-auto-lg {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));
}

/* ==========================================================================
   MODULE: styles/components/cards.css
   ========================================================================== */
.lm-card {
    display: flex;
    flex-direction: column;
    background-color: var(--lm-surface-card);
    border: 1px solid var(--lm-border);
    border-radius: var(--lm-portal-radius);
    padding: var(--space-lg);
    transition: var(--lm-portal-transition);
    box-sizing: border-box;
}

.lm-card--interactive {
    cursor: pointer;
}

.lm-card--interactive:hover {
    transform: translateY(-3px);
    border-color: var(--lm-border-hover);
    box-shadow: var(--lm-portal-shadow-hover);
}

.lm-card--flat {
    box-shadow: none;
}

.lm-card--elevated {
    box-shadow: var(--lm-portal-shadow-md);
}

/* ==========================================================================
   MODULE: styles/components/buttons.css
   ========================================================================== */
.lm-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-family: inherit;
    font-size: var(--lm-font-size-sm);
    font-weight: var(--lm-weight-semibold);
    line-height: var(--lm-lh-tight);
    padding: var(--space-sm) var(--space-lg);
    border: 1px solid transparent;
    border-radius: var(--lm-portal-radius);
    cursor: pointer;
    transition: var(--lm-portal-transition);
    text-decoration: none;
    box-sizing: border-box;
}

.lm-btn:focus-visible {
    outline: 2px solid var(--lm-focus-ring);
    outline-offset: 2px;
}

.lm-btn:disabled,
.lm-btn.disabled {
    opacity: 0.6;
    cursor: not-allowed;
    pointer-events: none;
}

.lm-btn-primary {
    background-color: var(--lm-button-primary);
    color: var(--lm-button-text);
    border-color: var(--lm-button-primary);
}

.lm-btn-primary:hover {
    background-color: var(--lm-button-primary-hover);
    border-color: var(--lm-button-primary-hover);
    color: var(--lm-button-text);
    text-decoration: none;
}

.lm-btn-primary:active {
    opacity: 0.9;
}

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

.lm-btn-secondary:hover {
    background-color: var(--lm-button-secondary-hover);
    border-color: var(--lm-button-secondary-hover);
    color: var(--lm-button-text-secondary);
    text-decoration: none;
}

.lm-btn-secondary:active {
    opacity: 0.9;
}

.lm-btn-ghost {
    background-color: transparent;
    color: var(--lm-button-text-secondary);
    border-color: transparent;
}

.lm-btn-ghost:hover {
    background-color: var(--lm-button-secondary);
    color: var(--lm-button-text-secondary);
    text-decoration: none;
}

.lm-btn-ghost:active {
    background-color: var(--lm-button-secondary-hover);
}

/* ==========================================================================
   MODULE: styles/components/badges.css
   ========================================================================== */
.lm-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: var(--space-xs) var(--space-sm);
    border-radius: var(--lm-radius-sm);
    font-size: var(--lm-font-size-xs);
    font-weight: var(--lm-weight-semibold);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    line-height: 1;
    border: 1px solid transparent;
    box-sizing: border-box;
}

.lm-badge-accent {
    background-color: var(--lm-accent-50);
    color: var(--lm-link);
    border-color: var(--lm-accent-200);
}

.lm-badge-muted {
    background-color: var(--lm-surface-muted);
    color: var(--lm-text-secondary);
    border-color: var(--lm-border);
}

/* ==========================================================================
   MODULE: styles/components/article-card.css
   ========================================================================== */
/* Dividers removed — whitespace rhythm used instead */

.lm-zenith-toc-container {
    background-color: var(--lm-surface-card);
    border: 1px solid var(--lm-border);
    border-radius: var(--lm-radius-lg);
    box-shadow: var(--lm-shadow-md);
    padding: 0;
    overflow: clip;
}

/* ==========================================================================
   Featured Issue — card styling reset handled in zenith.css
   ========================================================================== */

/* Article Item — compact premium editorial tray */
.obj_article_summary.lm-art-summary {
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
    position: relative;
    z-index: 1;
    padding: var(--space-sm) var(--space-md);
    border: 1px solid var(--lm-border);
    border-radius: var(--lm-radius-md);
    background-color: var(--lm-surface-card);
    box-shadow: var(--lm-shadow-sm);
    transition: background-color var(--lm-duration-fast) var(--lm-ease-snappy),
                box-shadow var(--lm-duration-fast) var(--lm-ease-snappy);
}

.obj_article_summary.lm-art-summary::before {
    content: '';
    position: absolute;
    left: var(--space-xs);
    top: var(--space-xs);
    bottom: var(--space-xs);
    width: 2px;
    background-color: var(--lm-border);
    border-radius: 2px;
    transition: background-color var(--lm-duration-fast) var(--lm-ease-snappy);
}

.obj_article_summary.lm-art-summary:hover {
    background-color: var(--lm-state-hover-tint);
    box-shadow: var(--lm-shadow-md);
}

/* Hover: soft palette tint + 2px logical-start precision beam + elevation */
.cmp_article_list.articles > li:hover {
    background-color: var(--lm-state-hover-tint);
}

.cmp_article_list.articles > li:hover .obj_article_summary.lm-art-summary {
    background-color: var(--lm-state-hover-tint);
    box-shadow: var(--lm-shadow-md);
}

.obj_issue_toc > .sections {
    background: transparent;
    border: none;
    border-radius: 0;
    box-shadow: none;
    padding: 0;
    overflow: visible;
}

/* Section heading inside collection — compact micro-accent */
.obj_issue_toc .section > .lm-section-heading {
    padding: var(--space-xs) var(--space-md) 0;
    font-size: var(--lm-font-size-sm);
    font-weight: var(--lm-weight-semibold);
    color: var(--lm-text-primary);
    margin: 0 0 var(--space-xs);
    border-bottom: 1px solid var(--lm-border);
}

/* ==========================================================================
   View All Issues — no long horizontal divider, use whitespace rhythm
   ========================================================================== */

.lm-view-all-issues-container {
    padding: var(--space-sm) var(--space-md);
    margin: 0;
    border-top: 1px solid var(--lm-border);
}

/* Divider line removed — whitespace rhythm used instead */

/* ==========================================================================
   Article List Reset
   ========================================================================== */

.cmp_article_list.articles {
    list-style: none;
    margin: 0;
    padding: 0;
}

.cmp_article_list.articles > li {
    position: relative;
    list-style: none;
    margin: 0;
    padding: 0;
}

/* Hover: soft tint + precision beam */
.cmp_article_list.articles > li:hover {
    background-color: var(--lm-state-hover-tint);
}

.cmp_article_list.articles > li:hover .obj_article_summary.lm-art-summary {
    background-color: var(--lm-state-hover-tint);
    box-shadow: var(--lm-shadow-md);
}

/* ==========================================================================
   Article Item — interactive list item
   ========================================================================== */

    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
    position: relative;
    z-index: 1;
    padding: var(--space-sm) var(--space-md);
    border: 1px solid var(--lm-border);
    border-radius: var(--lm-radius-md);
    background-color: var(--lm-surface-card);
    box-shadow: var(--lm-shadow-sm);
    transition: background-color var(--lm-duration-fast) var(--lm-ease-snappy),
                box-shadow var(--lm-duration-fast) var(--lm-ease-snappy);
}

.obj_article_summary.lm-art-summary:hover {
    background-color: var(--lm-state-hover-tint);
    box-shadow: var(--lm-shadow-md);
}

.obj_article_summary.lm-art-summary:hover::before {
    content: none;
}

.obj_article_summary.lm-art-summary:hover .lm-art-title a {
    color: var(--lm-link);
}

/* Cover Image Column */
.obj_article_summary .lm-art-cover {
    width: 100%;
    flex-shrink: 0;
}

.obj_article_summary .lm-art-cover a {
    display: block;
    width: 100%;
    text-decoration: none;
}

.obj_article_summary .lm-art-img {
    width: 100%;
    height: 180px;
    object-fit: cover;
    border-radius: var(--lm-radius-lg);
    border: 1px solid var(--lm-border);
    display: block;
    transition: transform var(--lm-duration-fast) var(--lm-ease-standard);
}

.obj_article_summary:hover .lm-art-img {
    transform: scale(1.02);
}

.obj_article_summary .lm-art-cover-fallback {
    width: 100%;
    height: 180px;
    border: 1px solid var(--lm-border);
    border-radius: var(--lm-radius-lg);
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    transition: transform var(--lm-duration-fast) var(--lm-ease-snappy);
    background:
        repeating-linear-gradient(
            45deg,
            transparent,
            transparent 3px,
            rgba(var(--lm-primary-rgb), 0.04) 3px,
            rgba(var(--lm-primary-rgb), 0.04) 5px
        ),
        linear-gradient(
            135deg,
            rgba(var(--lm-primary-rgb), 0.08) 0%,
            rgba(var(--lm-primary-rgb), 0.02) 50%,
            transparent 100%
        ),
        var(--lm-surface-alt);
}

.obj_article_summary .lm-art-cover-fallback span {
    font-weight: var(--lm-weight-bold);
    font-size: var(--lm-font-size-2xl);
    color: var(--lm-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    opacity: 0.7;
}

.obj_article_summary:hover .lm-art-cover-fallback {
    transform: scale(1.02);
}

/* Content Column */
.obj_article_summary .lm-art-content {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    flex-grow: 1;
    min-width: 0;
}

/* Title */
.obj_article_summary .lm-art-title {
    font-size: var(--lm-font-size-md, 1.125rem);
    font-weight: var(--lm-weight-bold);
    margin: 0;
    line-height: var(--lm-lh-tight);
    letter-spacing: -0.01em;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.obj_article_summary .lm-art-title a {
    color: var(--lm-text-primary);
    text-decoration: none;
    transition: color var(--lm-duration-fast) var(--lm-ease-standard);
}

/* Meta Area */
.obj_article_summary .lm-art-meta {
    display: flex;
    flex-direction: column;
    gap: var(--space-xs, 0.375rem);
}

.obj_article_summary .lm-art-authors {
    font-size: var(--lm-font-size-sm, 0.875rem);
    font-weight: var(--lm-weight-medium);
    color: var(--lm-text-primary);
    display: flex;
    align-items: center;
    gap: var(--space-xs, 0.375rem);
}

.obj_article_summary .lm-art-authors .fa {
    color: var(--lm-text-muted);
    font-size: 0.75rem;
    width: 1em;
    text-align: center;
}

.obj_article_summary .lm-art-affiliations {
    font-size: var(--lm-font-size-xs, 0.8125rem);
    color: var(--lm-text-muted);
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    padding-left: var(--space-md, 1.25rem);
}

/* Legacy Extra Meta */
.lm-art-extra-meta {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-md, 1rem);
    font-size: var(--lm-font-size-xs, 0.8125rem);
    color: var(--lm-text-secondary);
    margin-top: var(--space-xs, 0.25rem);
    margin-bottom: var(--space-sm, 0.5rem);
}

.lm-art-extra-meta span {
    display: flex;
    align-items: center;
    gap: var(--space-xs, 0.25rem);
}

/* Author Row Split */
.lm-art-author-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--space-xs, 0.5rem);
}

.lm-art-pages {
    display: inline-flex;
    align-items: center;
    gap: var(--space-xs, 0.375rem);
    font-size: var(--lm-font-size-xs, 0.75rem);
    color: var(--lm-text-secondary);
    font-weight: var(--lm-weight-semibold);
}

.lm-art-pages .fa {
    color: var(--lm-text-muted);
    font-size: 0.75rem;
    width: 1em;
    text-align: center;
}

/* Published Date */
.lm-art-date-published {
    font-size: var(--lm-font-size-xs, 0.75rem);
    color: var(--lm-text-secondary);
    display: inline-flex;
    align-items: center;
    gap: var(--space-xs, 0.375rem);
    margin-top: var(--space-xs, 0.25rem);
}

.lm-art-date-published .fa {
    color: var(--lm-text-muted);
    font-size: 0.75rem;
    width: 1em;
    text-align: center;
}

/* Metrics Row */
.lm-art-metrics-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--space-xs, 0.375rem) var(--space-md, 1rem);
    font-size: var(--lm-font-size-xs, 0.75rem);
    color: var(--lm-text-secondary);
    margin-top: var(--space-sm, 0.5rem);
    margin-bottom: var(--space-xs, 0.25rem);
}

.lm-art-metric-left,
.lm-art-metric-right {
    display: inline-flex;
    align-items: center;
    gap: var(--space-xs, 0.375rem);
}

.lm-art-metric-left .fa,
.lm-art-metric-right .fa {
    color: var(--lm-text-muted);
    font-size: 0.75rem;
    width: 1em;
    text-align: center;
}

.lm-art-metric-left .lm-label,
.lm-art-metric-right .lm-label {
    color: var(--lm-text-secondary);
}

.lm-art-metric-left .lm-val,
.lm-art-metric-right .lm-val {
    font-weight: var(--lm-weight-semibold);
    color: var(--lm-text-primary);
}

/* Footer (Galleys & DOI) */
.obj_article_summary .lm-art-footer {
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
    margin-top: auto;
    padding-top: var(--space-sm);
    border-top: 1px dashed var(--lm-border);
}

/* Galley Links — Metadata Action (Outline Button pattern) */
.obj_article_summary .lm-art-galleys {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-xs);
    list-style: none;
    margin: 0;
    padding: 0;
}

.obj_article_summary .lm-art-galleys a {
    display: inline-flex;
    align-items: center;
    gap: var(--space-xs);
    padding: var(--space-xs) var(--space-sm);
    border: 1px solid var(--lm-link);
    border-radius: var(--lm-radius-sm);
    font-size: var(--lm-font-size-xs);
    font-weight: var(--lm-weight-semibold);
    text-decoration: none;
    color: var(--lm-link);
    background-color: transparent;
    transition: background-color var(--lm-duration-fast) var(--lm-ease-snappy),
                color var(--lm-duration-fast) var(--lm-ease-snappy),
                border-color var(--lm-duration-fast) var(--lm-ease-snappy),
                transform var(--lm-duration-fast) var(--lm-ease-snappy);
}

.obj_article_summary .lm-art-galleys a:hover {
    background-color: var(--lm-state-hover-tint);
    color: var(--lm-link-hover);
    border-color: var(--lm-link-hover);
    transform: var(--lm-elevation-sm);
}

.obj_article_summary .lm-art-galleys a:focus-visible {
    outline: var(--lm-focus-ring);
    outline-offset: var(--lm-focus-offset);
}

.obj_article_summary .lm-art-galleys a:active {
    transform: var(--lm-elevation-flat);
}

.obj_article_summary .lm-art-galleys a:disabled,
.obj_article_summary .lm-art-galleys a.disabled {
    opacity: var(--lm-state-disabled-opacity);
    cursor: not-allowed;
    pointer-events: none;
}

/* DOI Badge — unified pill */
.obj_article_summary .lm-art-doi {
    display: flex;
    align-items: center;
}

.obj_article_summary .lm-art-doi-link {
    display: inline-flex;
    align-items: center;
    text-decoration: none;
    font-size: var(--lm-font-size-xs);
    border-radius: var(--lm-radius-full);
    overflow: hidden;
    border: 1px solid var(--lm-accent);
    transition: border-color var(--lm-duration-fast) var(--lm-ease-snappy);
}

.obj_article_summary .lm-art-doi-link .doi-label {
    background: var(--lm-accent);
    color: var(--lm-text-inverse);
    font-weight: var(--lm-weight-bold);
    padding: 0.125rem 0.5rem;
    font-size: var(--lm-font-size-xs);
}

.obj_article_summary .lm-art-doi-link .doi-val {
    background: var(--lm-surface-card);
    color: var(--lm-text-secondary);
    padding: 0.125rem 0.5rem;
    font-size: var(--lm-font-size-xs);
}

.obj_article_summary .lm-art-doi-link:hover {
    border-color: var(--lm-link);
}

.obj_article_summary .lm-art-doi-link:hover .doi-val {
    color: var(--lm-link);
}

/* ==========================================================================
   Pagination — inside Editorial Collection
   ========================================================================== */

.obj_issue_toc .cmp_pagination,
.obj_issue_toc .pagination {
    border-top: 1px solid var(--lm-border);
    padding: var(--space-lg) var(--space-xl);
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: var(--space-xs, 0.25rem);
    font-size: var(--lm-font-size-sm, 0.875rem);
}

.obj_issue_toc .cmp_pagination a,
.obj_issue_toc .pagination a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2rem;
    height: 2rem;
    padding: 0 var(--space-xs, 0.375rem);
    border: 1px solid var(--lm-border);
    border-radius: var(--lm-radius-sm, 4px);
    color: var(--lm-text-primary);
    text-decoration: none;
    transition: background-color var(--lm-duration-fast) var(--lm-ease-standard),
                border-color var(--lm-duration-fast) var(--lm-ease-standard);
}

.obj_issue_toc .cmp_pagination a:hover {
    background-color: var(--lm-state-hover-tint);
    border-color: var(--lm-primary);
}

.obj_issue_toc .cmp_pagination strong,
.obj_issue_toc .cmp_pagination .current,
.obj_issue_toc .pagination .current {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2rem;
    height: 2rem;
    padding: 0 var(--space-xs, 0.375rem);
    border: 1px solid var(--lm-primary);
    border-radius: var(--lm-radius-sm, 4px);
    background-color: var(--lm-primary);
    color: var(--lm-text-inverse);
    font-weight: var(--lm-weight-bold, 700);
}

/* ==========================================================================
   Progressive Disclosure — Zenith Issue View only
   ========================================================================== */

.lm-zenith-toc-container .lm-art-hidden {
    display: none;
}

.lm-zenith-toc-container .lm-art-revealed {
    animation: lmFadeUp 0.35s cubic-bezier(0.16, 1, 0.3, 1) both;
}

@keyframes lmFadeUp {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.lm-zenith-toc-container .lm-progressive-btn-wrap {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: var(--space-lg) var(--space-xl);
    border-top: 1px dashed var(--lm-border);
}

.lm-zenith-toc-container .lm-progressive-btn {
    display: inline-flex;
    align-items: center;
    gap: var(--space-xs);
    padding: var(--space-sm) var(--space-lg);
    border: 1px solid var(--lm-border);
    border-radius: var(--lm-radius-sm);
    background-color: var(--lm-surface-card);
    color: var(--lm-text-primary);
    font-family: var(--lm-font-sans);
    font-size: var(--lm-font-size-sm);
    font-weight: var(--lm-weight-semibold);
    line-height: var(--lm-lh-tight);
    cursor: pointer;
    transition: background-color var(--lm-duration-fast) var(--lm-ease-snappy),
                border-color var(--lm-duration-fast) var(--lm-ease-snappy),
                color var(--lm-duration-fast) var(--lm-ease-snappy);
}

.lm-zenith-toc-container .lm-progressive-btn:hover {
    background-color: var(--lm-state-hover-tint);
    border-color: var(--lm-link);
    color: var(--lm-link);
}

.lm-zenith-toc-container .lm-progressive-btn:focus-visible {
    outline: var(--lm-focus-ring);
    outline-offset: var(--lm-focus-offset);
}

.lm-zenith-toc-container .lm-progressive-btn:disabled {
    opacity: var(--lm-state-disabled-opacity);
    cursor: default;
    pointer-events: none;
}

.lm-zenith-toc-container .lm-progressive-complete {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: var(--space-md) var(--space-xl);
    color: var(--lm-text-muted);
    font-size: var(--lm-font-size-sm);
    gap: var(--space-xs);
}

/* Responsive side-by-side row layout for tablet/desktop */
@media (min-width: 640px) {
    .obj_article_summary.lm-art-summary {
        flex-direction: row;
        align-items: flex-start;
        gap: var(--space-lg, 1.5rem);
    }

    .obj_article_summary .lm-art-cover {
        width: 180px;
    }

    .obj_article_summary .lm-art-img,
    .obj_article_summary .lm-art-cover-fallback {
        height: 112px;
    }

    .obj_article_summary .lm-art-footer {
        flex-direction: row;
        justify-content: space-between;
        align-items: center;
        border-top: none;
        padding-top: 0;
        margin-top: auto;
    }
}

/* ==========================================================================
   MODULE: styles/core.css
   ========================================================================== */
/* Baseline Page Wrapper */
.lumina_layout_wrapper {
    background-color: var(--lm-cmp-card-bg, #ffffff);
    color: var(--lm-sem-text-dark, #111827);
    font-family: var(--lm-font-sans);
    line-height: var(--lm-lh-normal);
}

/* Composition Blocks Structural Layout */
.lumina_section_block {
    padding: var(--space-xl) var(--space-md);
    border-bottom: 1px solid var(--lm-cmp-card-border, #e5e7eb);
}

.lumina_primary_btn {
    background-color: var(--lm-primary);
    color: var(--lm-text-inverse, #ffffff);
    border: none;
    padding: var(--space-sm) var(--space-md);
    border-radius: var(--lm-radius-sm);
    cursor: pointer;
    transition: var(--lm-interaction-transition, background-color 0.2s ease);
}

.lumina_primary_btn:hover {
    background-color: var(--lm-primary-dark);
}

.lumina_accent_badge {
    /* Visual styles migrated to .lm-badge primitives */
}

/* Sidebar Responsive Layout */
.lumina_main_grid {
    display: grid;
    gap: 2rem;
    grid-template-columns: 1fr;
}

@media (min-width: 768px) {
    .lumina_main_grid.has_sidebar {
        grid-template-columns: 3fr 1fr;
    }
}

/* Dynamic Footer Variant Grid */
.lumina_footer {
    background-color: var(--lm-sem-surface-bg, #f9fafb);
    padding: 3rem 1.5rem;
    border-top: 1px solid var(--lm-cmp-card-border, #e5e7eb);
}

.lumina_footer_grid {
    display: grid;
    gap: 2rem;
}

.lumina_footer_grid.columns {
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}

.lumina_footer_grid.compact {
    grid-template-columns: 1fr;
    text-align: center;
}

.lumina_footer_grid.verbose {
    grid-template-columns: 1fr 2fr;
}

/* ==========================================================================
   MODULE: styles/components/footer.css
   ========================================================================== */
.lm-footer {
    width: 100%;
    box-sizing: border-box;
    background-color: var(--lm-footer-bg, #0f172a);
    color: var(--lm-footer-text, #cbd5e1);
    padding-block: var(--space-2xl) var(--space-xl);
    font-family: var(--lm-font-sans);
    border-top: 1px solid var(--lm-footer-border, rgba(255, 255, 255, 0.08));
}

/* ==========================================================================
   FOOTER LAYOUT CONTRACT (SPR-FTR-01A Section 4.5)
   Single owner: .lm-footer-container and its width modifiers live ONLY here.
   No other file may define container or modifier rules (R-4, R-7).
   ========================================================================== */

/* 4.5.2 Content Container — centered content column inside the band.
   Owns: max-width (capped default), padding-inline, margin-inline: auto. */
.lm-footer-container {
    width: 100%;
    max-width: 1280px;
    margin-inline: auto;
    padding-inline: var(--space-lg);
    box-sizing: border-box;
}

/* 4.5.3 Width Modifiers — all three states explicit; no state by omission. */
.lm-footer-container-fixed {
    max-width: var(--lm-footer-max-width, 1280px);
}

.lm-footer-container-fluid {
    max-width: none;
    width: 100%;
    margin-inline: auto;
    padding-inline: var(--space-lg);
}

.lm-footer-container-full {
    max-width: none;
    width: 100%;
    margin-inline: 0;
    padding-inline: 0;
}

/* ==========================================================================
   GRID BALANCE (SPR-FTR-03A Rev.2 §5, GB-1)
   Proportions are positional: the first grid child (the identity column) is
   always the widest track. Applied to the runtime region (zenith footer.tpl)
   and the Layer A fallback grid (presentation_footer.tpl).
   ========================================================================== */

.lm-footer-grid,
.lm-footer-region-main {
    display: grid;
    grid-template-columns: 1.5fr 1fr 1fr; /* grid-3 default */
    gap: var(--space-xl);
    align-items: start;
}

.lm-footer-grid.lm-footer-grid-2,
.lm-footer-grid.lm-footer-grid-2cols,
.lm-footer-region-main.lm-footer-grid-2 {
    grid-template-columns: 1.25fr 1fr;
}

.lm-footer-grid.lm-footer-grid-3,
.lm-footer-grid.lm-footer-grid-3cols,
.lm-footer-region-main.lm-footer-grid-3 {
    grid-template-columns: 1.5fr 1fr 1fr;
}

.lm-footer-grid.lm-footer-grid-4,
.lm-footer-grid.lm-footer-grid-4cols,
.lm-footer-region-main.lm-footer-grid-4 {
    grid-template-columns: 1.4fr 1fr 1fr 1fr;
}

/* SPR-FTR-05A: Layer 1 with Quick Links — Branding | Resources | Contact |
   Quick Links (4 columns, identity track still the widest). Applied when the
   unified footer detects quick-links data; without it the grid stays -3. */
.lm-footer-grid.lm-footer-grid-quicklinks {
    grid-template-columns: 1.4fr 1fr 1fr 1fr;
}

/* Quick Links column (SPR-FTR-05A Layer 1) — same list language as the
   Resources menu column (LN-1/LN-3/LN-4), with a leading accent icon. */
.lm-footer-quicklinks-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.lm-footer-quicklinks-item {
    display: block;
}

.lm-footer-quicklinks-link {
    display: inline-flex;
    align-items: center;
    gap: var(--space-sm);
    color: var(--lm-footer-text, #cbd5e1);
    text-decoration: none;
    font-size: var(--lm-font-size-sm, 0.875rem);
    font-weight: var(--lm-weight-normal, 400);
    line-height: var(--lm-lh-normal, 1.5);
    transition: color 0.2s ease;
}

.lm-footer .lm-footer-quicklinks-link:hover {
    color: var(--lm-footer-link, #38bdf8);
}

.lm-footer-quicklinks-icon {
    color: var(--lm-footer-link);
    font-size: 0.875rem;
    width: 16px;
    text-align: center;
}

.lm-footer-col {
    display: flex;
    flex-direction: column;
    gap: var(--space-md);
}

/* Col 1: Identity */
.lm-footer-logo-container {
    display: flex;
    align-items: center;
    min-height: 50px;
}

.lm-footer-logo {
    max-height: 48px;
    max-width: 100%;
    object-fit: contain;
}

.lm-footer-journal-name-fallback {
    font-size: var(--lm-font-size-xl, 1.25rem);
    font-weight: var(--lm-weight-extrabold, 800);
    font-family: var(--lm-font-sans);
    color: var(--lm-footer-heading, #ffffff);
    letter-spacing: -0.02em;
    line-height: var(--lm-lh-tight, 1.25);
    text-decoration: none;
}

.lm-footer-branding-details {
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
}

.lm-footer-identity-details {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.lm-footer-journal-name {
    font-size: var(--lm-font-size-md, 1rem);
    font-weight: 600;
    color: var(--lm-footer-heading, #ffffff);
    margin: 0;
}

.lm-footer-publisher {
    font-size: var(--lm-font-size-sm, 0.875rem);
    color: var(--lm-footer-text, #cbd5e1);
    margin: 0;
    line-height: 1.5;
}

.lm-footer-issn-group {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    font-size: var(--lm-font-size-xs, 0.75rem);
    color: var(--lm-footer-text-muted, #94a3b8);
}

.lm-footer-identity-license {
    margin-top: 0.5rem;
}

.lm-footer .lm-footer-license-text-link {
    font-size: var(--lm-font-size-xs, 0.75rem);
    color: var(--lm-footer-link, #38bdf8);
    text-decoration: none;
    font-weight: 500;
    transition: color 0.2s ease;
}

.lm-footer .lm-footer-license-text-link:hover {
    color: var(--lm-footer-link-hover, #ffffff);
    text-decoration: underline;
}

/* Header Base */
.lm-footer-col-heading {
    font-size: var(--lm-font-size-xs, 0.75rem);
    font-weight: var(--lm-weight-semibold);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--lm-footer-heading, #ffffff);
    margin: 0 0 0.5rem 0;
    line-height: 1.2;
}

/* Col 2: Navigation Menu (L3 — §3.1; hover color + underline only, LN-1/LN-3/LN-4) */
.lm-footer-menu-items {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.lm-footer-menu-items a {
    color: var(--lm-footer-text, #cbd5e1);
    text-decoration: none;
    font-size: var(--lm-font-size-sm, 0.875rem);
    font-weight: var(--lm-weight-normal, 400);
    line-height: var(--lm-lh-normal, 1.5);
    transition: color 0.2s ease, border-color 0.2s ease, background-color 0.2s ease;
    display: inline-block;
}

.lm-footer-menu-items a:hover {
    color: var(--lm-footer-link, #38bdf8);
}

.lm-footer-submenu {
    list-style: none;
    margin: 0.25rem 0 0 0;
    padding: 0 0 0 var(--space-sm);
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

/* Col 3: Contact (icons: 16px outline accent, fixed 16px gutter — §6 IC-2) */
.lm-footer-contact-details {
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
}

.lm-footer-contact-item {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    font-size: var(--lm-font-size-sm, 0.875rem);
    line-height: var(--lm-lh-normal, 1.5);
    margin: 0;
}

.lm-footer-contact-item .fa {
    color: var(--lm-footer-link);
    font-size: 1rem;
    width: 16px;
    text-align: center;
    margin-top: 3px;
}

.lm-footer-contact-email-link {
    color: var(--lm-footer-text, #cbd5e1);
    text-decoration: none;
    font-weight: var(--lm-weight-medium, 500);
    transition: color 0.2s ease;
}

.lm-footer-contact-email-link:hover {
    color: var(--lm-footer-link, #38bdf8);
    text-decoration: underline;
}

.lm-footer-address-content {
    font-style: normal;
    color: var(--lm-footer-text, #cbd5e1);
}

/* Col 4: Accreditation / Recognition (L4 — §3.1; trust logos grayscale at rest, §9 LG-3) */
.lm-footer-accreditation-description {
    font-size: var(--lm-font-size-sm, 0.875rem);
    font-weight: var(--lm-weight-normal, 400);
    line-height: var(--lm-lh-relaxed, 1.625);
    color: var(--lm-footer-text, #cbd5e1);
    margin: 0;
    text-wrap: pretty;
}

.lm-footer-custom-page-footer {
    font-size: var(--lm-font-size-xs, 0.75rem);
    line-height: var(--lm-lh-normal, 1.5);
    color: var(--lm-footer-text-muted, #94a3b8);
}

.lm-footer-custom-page-footer img {
    max-width: 100%;
    height: auto;
    filter: grayscale(0.4) brightness(0.9);
    transition: filter 0.3s ease;
    margin-bottom: 0.5rem;
}

.lm-footer-custom-page-footer img:hover {
    filter: grayscale(0) brightness(1);
}

/* Bottom Footer (SPR-FTR-04C — remaining legal/system information):
   license statement, then the platform & theme credit line. The copyright
   block is not here — it lives in the trust strip above. */
.lm-footer-bottom {
    border-top: 1px solid var(--lm-footer-border, rgba(255, 255, 255, 0.08));
    padding-top: var(--space-md);
    margin-top: var(--space-md);
}

.lm-footer-bottom-container {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-md);
    font-size: var(--lm-font-size-xs, 0.75rem);
}

.lm-footer-legal-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-sm);
}

.lm-footer-copyright-text {
    color: var(--lm-footer-text-muted, #94a3b8);
    font-size: var(--lm-font-size-xs, 0.75rem);
    line-height: var(--lm-lh-normal, 1.5);
    margin: 0;
}

.lm-footer-legal-journal-name {
    font-size: var(--lm-font-size-sm, 0.875rem);
    font-weight: var(--lm-weight-medium, 500);
    line-height: var(--lm-lh-normal, 1.5);
    color: var(--lm-footer-text, #cbd5e1);
    margin: 0;
}

.lm-footer-bottom-license {
    display: inline-flex;
    align-items: center;
}

.lm-footer-cc-badge {
    height: 31px;
    width: 88px;
    object-fit: contain;
    border-radius: 3px;
    opacity: 0.85;
    transition: opacity 0.2s ease;
}

.lm-footer-cc-badge:hover {
    opacity: 1;
}

/* Shared legal-column language (copyright/attribution block templates;
   also applied by the trust-strip copyright column in Layer A) */
.lm-footer-legal-col {
    flex-direction: column;
    align-items: center;
    gap: var(--space-md);
    text-align: center;
}

.lm-footer-legal-col .lm-footer-col-heading {
    margin: 0;
}

.lm-footer-legal-col .lm-footer-col-heading::after {
    content: "";
    display: block;
    width: 2.5rem;
    height: 2px;
    margin: var(--space-sm) auto 0;
    border-radius: 1px;
    background: var(--lm-footer-link, #38bdf8);
}

.lm-footer-license-name {
    font-size: var(--lm-font-size-sm, 0.875rem);
    font-weight: var(--lm-weight-medium, 500);
    line-height: var(--lm-lh-normal, 1.5);
    color: var(--lm-footer-text, #cbd5e1);
    margin: 0;
    text-wrap: pretty;
}

.lm-footer-license-link {
    font-size: var(--lm-font-size-xs, 0.75rem);
    font-weight: var(--lm-weight-medium, 500);
    color: var(--lm-footer-link, #38bdf8);
    text-decoration: none;
    transition: color 0.2s ease;
}

.lm-footer .lm-footer-license-link:hover {
    color: var(--lm-footer-text, #cbd5e1);
    text-decoration: underline;
}

/* License information row — SPR-FTR-05B: the License section content is ONE
   centered horizontal flex row: CC license name · View License Terms ·
   Open Journal Systems · Theme by Lumina V2. The title stays vertically
   separated (accent divider under the heading); only the content underneath
   is horizontal. Desktop: single row. Tablet: centered wrap. Mobile:
   centered stack (separators hidden). */
.lm-footer-col-license .lm-footer-legal-content {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: var(--space-sm) 0;
    width: 100%;
    font-size: var(--lm-font-size-xs, 0.75rem);
}

.lm-footer-col-license .lm-footer-legal-content > * {
    display: inline-flex;
    align-items: center;
    gap: var(--space-sm);
    margin: 0;
}

/* Subtle bullet separators between the row items (SPR-FTR-05B) */
.lm-footer-col-license .lm-footer-legal-content > *:not(:first-child)::before {
    content: "\2022";
    color: var(--lm-footer-text-muted, #94a3b8);
    opacity: 0.5;
    font-size: 0.625rem;
    line-height: 1;
    margin-inline: calc(var(--space-sm) * 1.25);
}

.lm-footer .lm-footer-col-license .lm-footer-pkp-link,
.lm-footer .lm-footer-col-license .lm-footer-lumina-link {
    color: var(--lm-footer-text-muted, #94a3b8);
    text-decoration: none;
    font-weight: var(--lm-weight-medium, 500);
    transition: color 0.2s ease;
}

.lm-footer .lm-footer-col-license .lm-footer-pkp-link:hover,
.lm-footer .lm-footer-col-license .lm-footer-lumina-link:hover {
    color: var(--lm-footer-text, #cbd5e1);
    text-decoration: underline;
}

.lm-footer .lm-footer-col-license .lm-footer-theme-credit {
    color: var(--lm-footer-text-muted, #94a3b8);
}

/* ==========================================================================
   TRUST STRIP (SPR-FTR-04D — THREE columns: AKREDITASI | FOLLOW US |
   COPYRIGHT on one row; copyright is the THIRD COLUMN of the strip, never
   a new footer layer. Centered column content, accent divider under
   headings, horizontal social row with icon-before-label. Spacing uses the
   Lumina scale only. Desktop: three EQUAL columns, EQUAL heights; tablet:
   2 + 1 only when space is insufficient (portrait); mobile: stack.)
   .lm-footer-region-secondary is the historical name kept for Layer B and
   audit probes; .lm-footer-trust-strip is the SPR-FTR-04D contract name.
   ========================================================================== */

.lm-footer-region-secondary,
.lm-footer-trust-strip {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--space-xl) var(--space-lg);
    margin-top: var(--space-lg);
    padding-top: var(--space-sm);
    border-top: 1px solid var(--lm-footer-border, rgba(255, 255, 255, 0.08));
}

/* A lone trust column (e.g. copyright only) spans the full width */
.lm-footer-region-secondary > :only-child,
.lm-footer-trust-strip > :only-child {
    grid-column: 1 / -1;
}

.lm-footer-region-secondary .lm-footer-col,
.lm-footer-trust-strip .lm-footer-col {
    flex-direction: column;
    align-items: center;
    gap: var(--space-md);
    text-align: center;
}

.lm-footer-region-secondary .lm-footer-col-heading,
.lm-footer-trust-strip .lm-footer-col-heading {
    margin: 0;
}

/* Accent divider: heading → divider → content (SPR-FTR-04B) */
.lm-footer-region-secondary .lm-footer-col-heading::after,
.lm-footer-trust-strip .lm-footer-col-heading::after {
    content: "";
    display: block;
    width: 2.5rem;
    height: 2px;
    margin: var(--space-sm) auto 0;
    border-radius: 1px;
    background: var(--lm-footer-link, #38bdf8);
}

/* Accreditation: centered stack with the logo as the primary visual element */
.lm-footer-region-secondary .lm-footer-accreditation-content,
.lm-footer-trust-strip .lm-footer-accreditation-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-sm);
}

.lm-footer-region-secondary .lm-footer-accreditation-logo-wrapper,
.lm-footer-trust-strip .lm-footer-accreditation-logo-wrapper {
    order: -1;
}

.lm-footer-region-secondary .lm-footer-accreditation-logo,
.lm-footer-trust-strip .lm-footer-accreditation-logo {
    max-height: 48px;
    max-width: 140px;
}

.lm-footer-region-secondary .lm-footer-accreditation-description,
.lm-footer-trust-strip .lm-footer-accreditation-description {
    font-size: var(--lm-font-size-sm, 0.875rem);
    line-height: var(--lm-lh-normal, 1.5);
    color: var(--lm-footer-text-muted, #94a3b8);
}

/* Follow Us: one horizontal social row, centered, icon before label.
   Deliberately not a navigation menu: no hover underline; icons regain
   their color on hover only (trust & engagement, not wayfinding). */
.lm-footer-social-items {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    list-style: none;
    margin: 0;
    padding: 0;
    gap: var(--space-sm) var(--space-md);
}

.lm-footer-social-link {
    gap: var(--space-sm);
}

.lm-footer-social-icon-wrapper {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.lm-footer-social-icon {
    width: 18px;
    height: 18px;
    object-fit: contain;
    filter: grayscale(1) opacity(0.75);
    transition: filter 0.2s ease;
}

.lm-footer-social-link:hover .lm-footer-social-icon,
.lm-footer-social-link:focus-visible .lm-footer-social-icon {
    filter: grayscale(0) opacity(1);
}

.lm-footer-region-secondary .lm-footer-social-link:hover,
.lm-footer-region-secondary .lm-footer-social-link:focus-visible,
.lm-footer-trust-strip .lm-footer-social-link:hover,
.lm-footer-trust-strip .lm-footer-social-link:focus-visible {
    text-decoration: none;
}

.lm-footer-social-label {
    font-size: var(--lm-font-size-sm, 0.875rem);
    font-weight: var(--lm-weight-medium, 500);
    line-height: var(--lm-lh-normal, 1.5);
    color: var(--lm-footer-text, #cbd5e1);
}

/* ==========================================================================
   HEADING SYSTEM (LE-4 / LS-5 — SPR-FTR-03A Rev.1 §5.3, Rev.2 §3)
   ONE scale (L2 small-caps base above); per-layout typeface/weight flavor only.
   ========================================================================== */

/* Pinnacle flavor: scholarly serif (name + column headings) */
.lm-footer-pinnacle .lm-footer-col-heading,
.lm-footer-pinnacle .lm-footer-journal-name-fallback {
    font-family: var(--lm-font-heading);
}

/* Vanguard flavor: corporate compact (tighter heading tracking) */
.lm-footer-vanguard .lm-footer-col-heading {
    letter-spacing: 0.08em;
}

/* Zenith + IndexSite: default sans editorial (base system, no override) */
body.lm-layout-indexsite .lm-footer-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: var(--space-xl);
    align-items: start;
}

/* IndexSite Cohesive Legal Strip */
body.lm-layout-indexsite .lm-footer-indexsite-legal {
    margin-top: var(--space-2xl);
    padding-top: var(--space-xl);
    border-top: 1px solid var(--lm-footer-border);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.75rem;
    box-sizing: border-box;
    width: 100%;
}

body.lm-layout-indexsite .lm-footer-indexsite-legal-primary {
    font-size: 0.875rem;
    color: var(--lm-footer-text);
    margin: 0;
    line-height: 1.5;
}

body.lm-layout-indexsite .lm-footer-indexsite-legal-links {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.5rem 0.75rem;
    font-size: 0.8125rem;
    color: var(--lm-footer-text-muted);
    line-height: 1.4;
}

body.lm-layout-indexsite .lm-footer-indexsite-legal-links a {
    color: var(--lm-footer-link);
    text-decoration: none;
    transition: var(--lm-portal-transition);
}

body.lm-layout-indexsite .lm-footer-indexsite-legal-links a:hover {
    color: var(--lm-portal-accent-hover, var(--lm-footer-link));
    text-decoration: underline;
}

body.lm-layout-indexsite .lm-footer-indexsite-legal-sep {
    color: var(--lm-footer-text-muted);
    opacity: 0.5;
    user-select: none;
}

body.lm-layout-indexsite .lm-footer-cc-badge {
    height: 22px;
    width: auto;
    vertical-align: middle;
}

/* ==========================================================================
   RESPONSIVE DESIGN (Rev.2 §12 — RB-1: no reordering, grid count + scale only)
   ========================================================================== */

@media (max-width: 1024px) {
    .lm-footer {
        padding-block: 3rem 2rem;
    }

    .lm-footer-container:not(.lm-footer-container-full):not(.lm-footer-container-fluid) {
        padding-inline: 1.5rem;
    }

    /* Tablet: identity anchors full-width; support columns 2-up.
       Selectors carry (0,2,0) so they outrank the grid-variant rules
       (.lm-footer-grid-2/-3/-4) declared earlier in this file. */
    .lm-footer .lm-footer-grid,
    .lm-footer .lm-footer-region-main {
        grid-template-columns: repeat(2, 1fr);
        gap: var(--space-xl);
    }

    .lm-footer .lm-footer-grid > :first-child,
    .lm-footer .lm-footer-region-main > :first-child {
        grid-column: 1 / -1;
    }
}

/* Trust strip (SPR-FTR-04D): the strip keeps its three columns for as long
   as the space allows (landscape tablet +). Only when space is insufficient
   (portrait tablet, ≤960px) does it fall back to 2 + 1 — accreditation and
   follow us side by side, copyright full width below. */
@media (max-width: 960px) {
    .lm-footer .lm-footer-region-secondary,
    .lm-footer .lm-footer-trust-strip {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .lm-footer .lm-footer-region-secondary .lm-footer-col-copyright,
    .lm-footer .lm-footer-trust-strip .lm-footer-col-copyright {
        grid-column: 1 / -1;
    }
}

@media (max-width: 768px) {
    .lm-footer {
        padding-block: 2rem 1.5rem;
    }

    .lm-footer .lm-footer-grid,
    .lm-footer .lm-footer-region-main {
        grid-template-columns: 1fr;
        gap: 2rem;
    }

    .lm-footer .lm-footer-bottom-container {
        gap: var(--space-md);
    }

    .lm-footer .lm-footer-col-license .lm-footer-legal-content {
        flex-direction: column;
        gap: var(--space-sm);
    }

    .lm-footer .lm-footer-col-license .lm-footer-legal-content > *:not(:first-child)::before {
        display: none;
    }

    .lm-footer .lm-footer-region-secondary,
    .lm-footer .lm-footer-trust-strip {
        grid-template-columns: 1fr;
    }

    .lm-footer .lm-footer-social-icon {
        width: 20px;
        height: 20px;
    }

    /* Touch Target Compliance: 44px minimum vertical targets for active links */
    .lm-footer-menu-items a,
    .lm-footer-contact-email-link,
    .lm-footer-license-text-link,
    .lm-footer-license-link,
    .lm-footer .lm-footer-col-license .lm-footer-legal-content a {
        min-height: 44px;
        display: inline-flex;
        align-items: center;
        padding: 8px 4px;
        box-sizing: border-box;
    }
}

/* ==========================================================================
   HYPERLINK LANGUAGE (Rev.2 §8 — LN-1…LN-4)
   ========================================================================== */

.lm-footer a,
.lm-footer a:visited {
    color: var(--lm-footer-text, #cbd5e1);
    text-decoration: none;
    transition: color 0.2s ease, border-color 0.2s ease, background-color 0.2s ease;
}

.lm-footer a:hover,
.lm-footer a:active {
    color: var(--lm-footer-link, #38bdf8);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-decoration-color: currentColor;
}

.lm-footer a:focus {
    outline: 2px solid var(--lm-footer-link, #38bdf8);
    outline-offset: 4px;
}

/* ==========================================================================
   MOTION (Rev.2 §13/§14 — reduced-motion disables all footer transitions)
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
    .lm-footer *,
    .lm-footer *::before,
    .lm-footer *::after {
        transition: none !important;
        animation: none !important;
    }
}

/* ==========================================================================
   PARTNERS & NEWSLETTER SHARED FOOTER BLOCKS
   ========================================================================== */

.lm-footer-col-partners {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.lm-footer-partners-grid {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
}

.lm-footer-partner-item {
    display: flex;
    align-items: center;
    justify-content: center;
}

.lm-footer-partner-logo {
    max-height: 32px;
    max-width: 140px;
    width: auto;
    height: auto;
    object-fit: contain;
    filter: grayscale(0.4) brightness(0.9);
    transition: filter 0.3s ease;
}

.lm-footer-partner-item:hover .lm-footer-partner-logo {
    filter: grayscale(0) brightness(1);
}

.lm-footer-newsletter {
    display: flex;
    flex-direction: column;
}

.lm-footer-newsletter-form {
    display: flex;
    width: 100%;
}

.lm-footer-newsletter-input {
    border: 1px solid var(--lm-border);
    outline: none;
    transition: border-color 0.2s ease;
}

.lm-footer-newsletter-submit {
    border: none;
    cursor: pointer;
    transition: background-color 0.2s ease, color 0.2s ease;
}

