/* Generated by scripts/build-commulingo-list-css.js; edit commulingo.css. */
.commulingo-page .container {
    max-width: var(--content-frame);
}

.commulingo-shell {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.commu-sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
}

.commulingo-hero {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 12px 18px;
    border-left: 4px solid var(--accent);
}
.commulingo-hero--home {
    align-items: stretch;
    flex-direction: column;
    gap: 12px;
    padding-bottom: 16px;
}

.commulingo-hero-main {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
}

.commulingo-hero-dict {
    border-top: 1px solid var(--border);
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding-top: 12px;
}

.commulingo-hero-dict-label {
    color: var(--text-muted);
    font-size: 0.8rem;
    font-weight: var(--weight-emphasis);
    letter-spacing: 0.03em;
}

.commulingo-hero h1 {
    color: var(--text-primary);
    font-size: 1.35rem;
    margin-bottom: 4px;
}

.commulingo-hero p:last-child {
    color: var(--text-secondary);
    line-height: var(--leading-normal);
}

.commulingo-total {
    flex: 0 0 auto;
    width: 78px;
    height: 78px;
    border: 1px solid var(--border);
    background: var(--bg-surface);
    display: grid;
    align-content: center;
    justify-items: center;
    row-gap: 2px;
    text-align: center;
}

.commulingo-total span {
    display: block;
    color: var(--accent);
    font-size: 1.15rem;
    font-weight: var(--weight-emphasis);
}

.commulingo-total small {
    color: var(--text-muted);
    font-size: 0.72rem;
}

.commulingo-status {
    border: 1px solid var(--border);
    background: var(--card-bg);
    color: var(--text-muted);
    font-size: 0.88rem;
    padding: 10px 14px;
}

.commulingo-resume {
    align-items: center;
    border: 1px solid var(--border);
    border-left: 4px solid var(--accent);
    background: var(--card-bg);
    color: var(--text-primary);
    display: flex;
    flex-wrap: wrap;
    gap: 6px 12px;
    padding: 14px 16px;
    text-decoration: none;
    transition: background-color 0.15s;
}
.commulingo-resume:hover {
    background: var(--accent, #214d2e);
    border-color: var(--accent, #214d2e);
    color: var(--clr-cream, #f8edca);
    text-decoration: none;
}
.commulingo-resume:hover .commu-resume-label { color: var(--clr-cream, #f8edca); }
.commulingo-resume:hover .commu-resume-target { color: color-mix(in srgb, var(--clr-cream, #f8edca) 72%, var(--accent, #214d2e)); }

.commu-resume-label {
    color: var(--accent);
    font-size: 0.82rem;
    font-weight: var(--weight-emphasis);
}

.commu-resume-target {
    color: var(--text-secondary);
    font-size: 0.92rem;
}

.commulingo-book-groups {
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.commu-book-group {
    border: 1px solid var(--border);
    background: var(--card-bg);
    padding: 14px;
}

.commu-book-group-title {
    border-left: 4px solid var(--accent);
    color: var(--text-primary);
    font-size: 1.1rem;
    font-weight: var(--weight-emphasis);
    margin: 0 0 12px;
    padding: 2px 0 2px 10px;
}

.commulingo-books {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.commu-book-card {
    border: 1px solid var(--border);
    border-left: 4px solid var(--accent);
    background: var(--card-bg);
    color: var(--text-primary);
    display: flex;
    flex-direction: column;
    gap: 12px;
    min-height: 188px;
    padding: 16px 18px;
    text-decoration: none;
    transition: background-color 0.15s, border-color 0.15s;
}
.commu-book-card:hover {
    background: var(--accent, #214d2e);
    border-color: var(--accent, #214d2e);
    color: var(--clr-cream, #f8edca);
    text-decoration: none;
}
.commu-book-card:hover .commu-book-badge { background: var(--clr-cream, #f8edca); color: var(--accent, #214d2e); }
.commu-book-card:hover .commu-book-desc,
.commu-book-card:hover .commu-book-meta,
.commu-book-card:hover .commu-book-progress-label { color: color-mix(in srgb, var(--clr-cream, #f8edca) 72%, var(--accent, #214d2e)); }
.commu-book-card:hover .commu-book-progress-track > span { background: var(--clr-cream, #f8edca); }

.commu-book-badge {
    align-self: flex-start;
    background: var(--accent);
    color: #fff;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    margin: 0 0 8px;
    padding: 3px 9px;
    text-transform: uppercase;
}

.commu-book-card h3 {
    font-size: 1.18rem;
    line-height: var(--leading-tight);
    margin: 0 0 6px;
}

.commu-book-desc {
    color: var(--text-secondary);
    display: -webkit-box;
    font-size: 0.9rem;
    line-height: var(--leading-relaxed);
    margin: 0;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
}

.commu-book-meta {
    color: var(--text-muted);
    font-size: 0.82rem;
    margin: 6px 0 0;
}

.commu-book-progress {
    display: grid;
    gap: 6px;
    margin-top: auto;
}

.commu-book-progress-label {
    color: var(--text-secondary);
    font-size: 0.82rem;
    font-weight: 700;
}

.commu-book-progress-track {
    background: var(--bg-surface);
    border: 1px solid var(--border);
    display: block;
    height: 8px;
    overflow: hidden;
    width: 100%;
}

.commu-book-progress-track > span {
    width: 0;
    background: var(--accent);
    display: block;
    height: 100%;
    transition: width 0.2s ease;
}

.is-hidden {
    display: none !important;
}

@media (max-width: 700px) {

    .commulingo-hero {
        align-items: center;
        flex-direction: row;
        gap: 12px;
    }

    .commulingo-hero--home {
        align-items: stretch;
        flex-direction: column;
    }

    .commulingo-hero > div:first-child,
.commulingo-hero-main > div:first-child {
        min-width: 0;
    }

    .commulingo-total {
        background: transparent;
        border: 0;
        height: auto;
        min-height: 0;
        padding: 0;
        width: auto;
    }
    .commulingo-books {
        grid-template-columns: 1fr;
    }
}
.commu-person-link {
    color: inherit;
    text-decoration: none;
    border-bottom: 2px dashed var(--link, #5d7a5a);
}

.commu-person-link:hover {
    border-bottom-style: solid;
}
.commu-person-card[hidden],
.commu-people-group[hidden] {
    display: none !important;
}

.commu-people-search {
    position: relative;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 9px 0 0;
}

.commu-people-search-icon {
    position: absolute;
    left: 0.85rem;
    color: var(--text-muted);
    pointer-events: none;
    transition: color 0.15s ease;
}

.commu-people-search-icon .commu-role-icon {
    width: 18px;
    height: 18px;
}
.commu-people-search:focus-within .commu-people-search-icon {
    color: var(--link);
}

.commu-people-search-input {
    flex: 1 1 auto;
    width: 100%;
    padding: 0.72rem 2.4rem 0.72rem 2.5rem;
    font: inherit;
    color: var(--text-primary);
    background: var(--card-bg);
    border: 1px solid var(--border);
    border-radius: 0;
    outline: none;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.commu-people-search-input:hover {
    border-color: color-mix(in srgb, var(--text-muted) 55%, var(--border));
}

.commu-people-search-input:focus {
    border-color: var(--link);
    box-shadow: inset 0 -2px 0 0 var(--link);
}

.commu-people-search-input::-webkit-search-cancel-button { display: none; }

.commu-people-search-clear {
    position: absolute;
    right: 0.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.9rem;
    height: 1.9rem;
    padding: 0;
    color: var(--text-muted);
    background: none;
    border: none;
    border-radius: 0;
    cursor: pointer;
}

.commu-people-search-clear .commu-role-icon {
    width: 15px;
    height: 15px;
}

.commu-people-search-clear:hover {
    color: var(--text-primary);
    background: color-mix(in srgb, var(--link) 16%, transparent);
}
.commu-people-results {
    margin-top: 24px;
}

.commu-people-result-section + .commu-people-result-section {
    margin-top: 30px;
}

.commu-people-result-head {
    display: flex;
    align-items: baseline;
    gap: 10px;
    border-bottom: 1px solid var(--border);
    border-left: 4px solid var(--accent);
    padding: 8px 12px;
    margin-bottom: 14px;
}

.commu-people-result-section#commu-people-result-role .commu-people-result-head {
    border-left-color: var(--link);
}

.commu-people-result-section#commu-people-result-desc .commu-people-result-head {
    border-left-color: var(--text-muted);
}
.commu-search-hl {
    background: color-mix(in srgb, var(--link) 34%, transparent);
    color: inherit;
    padding: 0 1px;
    border-radius: 0;
}

.commu-people-result-label {
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--text-primary);
    letter-spacing: 0.02em;
}

.commu-people-result-count {
    font-family: 'Courier New', monospace;
    font-size: 0.82rem;
    color: var(--text-muted);
}

.commu-people-result-empty {
    margin: 8px 0 0;
    padding: 18px 12px;
    color: var(--text-muted);
    font-size: 0.95rem;
    border: 1px dashed var(--border);
}
.commu-dict-search-count {
    position: absolute;
    right: 2.6rem;
    padding-left: 8px;
    color: var(--text-muted);
    font-size: 0.82rem;
    white-space: nowrap;
    pointer-events: none;
    background: var(--card-bg);
}
.commu-dict-search-status {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

.commu-dict-search-status.is-empty {
    position: static;
    width: auto;
    height: auto;
    overflow: visible;
    clip: auto;
    white-space: normal;
    margin: 16px 0 0;
    padding: 18px 12px;
    color: var(--text-muted);
    font-size: 0.95rem;
    border: 1px dashed var(--border);
}

.commu-event-card[hidden] {
    display: none !important;
}

.commu-people-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 12px;
}
.commu-office-index {
    margin-top: 9px;
}

.commu-office-index-head {
    background: color-mix(in srgb, var(--bg-surface) 72%, transparent);
    border: 1px solid var(--border);
    border-left: 4px solid var(--accent);
    cursor: pointer;
    display: block;
    list-style: none;
    padding: 12px 38px 12px 14px;
    position: relative;
    transition: background-color 0.16s ease, border-color 0.16s ease, color 0.16s ease;
}

.commu-office-index-head::-webkit-details-marker {
    display: none;
}

.commu-office-index-head:hover,
.commu-office-index-head:focus-visible {
    background: var(--bg-surface-hover);
    border-color: var(--link);
}

.commu-office-index-head:focus-visible {
    outline: 2px solid color-mix(in srgb, var(--link) 40%, transparent);
    outline-offset: 2px;
}

.commu-office-index-head::after {
    color: var(--text-muted);
    content: '›';
    font-size: 1.5rem;
    line-height: var(--leading-none);
    position: absolute;
    right: 14px;
    top: 50%;
    transform: translateY(-50%) rotate(90deg);
    transition: color 0.16s ease, transform 0.16s ease;
}

.commu-office-index-head:hover::after,
.commu-office-index-head:focus-visible::after {
    color: var(--link);
}

.commu-office-index[open] .commu-office-index-head {
    margin-bottom: 14px;
}

.commu-office-index[open] .commu-office-index-head::after {
    transform: translateY(-50%) rotate(-90deg);
}

.commu-office-index-head h2 {
    color: var(--text-primary);
    font-size: 1.3rem;
    margin: 2px 0 4px;
}

.commu-office-grid {
    display: grid;
    gap: 14px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.commu-office-card {
    background: var(--card-bg);
    border: 1px solid var(--border);
    border-radius: 0;
    min-width: 0;
    overflow: hidden;
}

.commu-office-card[open] {
    border-color: color-mix(in srgb, var(--link) 42%, var(--border));
}

.commu-role-category-link {
    align-items: center;
    background: var(--bg-surface);
    color: var(--text-primary);
    display: flex;
    gap: 12px;
    min-height: 76px;
    padding: 12px 14px;
    position: relative;
    text-decoration: none;
}

.commu-role-category-link:hover,
.commu-role-category-link:focus-visible {
    background: var(--bg-surface-hover);
    border-color: var(--link);
}

.commu-role-category-link:focus-visible {
    outline: 2px solid var(--link);
    outline-offset: 2px;
}

.commu-role-category-link .commu-office-icon-link {
    flex: 0 0 auto;
    left: auto;
    position: static;
    top: auto;
}

.commu-role-category-copy {
    min-width: 0;
}

.commu-role-category-copy h3 {
    font-size: 1.02rem;
    line-height: var(--leading-tight);
    margin: 0 0 5px;
}

.commu-role-category-copy p {
    color: var(--text-muted);
    font-size: 0.82rem;
    margin: 0;
}

.commu-role-category-arrow {
    color: var(--link);
    font-size: 1.15rem;
    font-weight: var(--weight-emphasis);
    margin-left: auto;
}

.commu-office-card-head {
    background: var(--bg-surface);
    cursor: pointer;
    display: block;
    list-style: none;
    padding: 13px 44px 12px 58px;
    position: relative;
}

.commu-office-card[open] .commu-office-card-head {
    border-bottom: 1px solid var(--border);
}

.commu-office-icon-link {
    align-items: center;
    border: 1px solid var(--border);
    color: var(--text-secondary);
    display: flex;
    height: 32px;
    justify-content: center;
    left: 14px;
    position: absolute;
    text-decoration: none;
    top: 14px;
    width: 32px;
}

.commu-office-icon-link:hover,
.commu-office-icon-link:focus-visible {
    background: var(--bg-surface-hover);
    border-color: var(--link);
    color: var(--link);
}

.commu-office-icon-link:focus-visible {
    outline: 2px solid var(--link);
    outline-offset: 2px;
}

.commu-office-card-head::-webkit-details-marker {
    display: none;
}

.commu-office-card-head::after {
    align-items: center;
    border: 1px solid var(--border);
    color: var(--link);
    content: '+';
    display: flex;
    font-size: 1rem;
    font-weight: var(--weight-emphasis);
    height: 24px;
    justify-content: center;
    position: absolute;
    right: 13px;
    top: 13px;
    width: 24px;
}

.commu-office-card[open] .commu-office-card-head::after {
    content: '-';
}

.commu-office-range {
    color: var(--text-muted);
    display: block;
    font-family: 'Courier New', monospace;
    font-size: 0.76rem;
    letter-spacing: 0.05em;
    margin-bottom: 4px;
}

.commu-office-card-head h3 {
    color: var(--text-primary);
    font-size: 1.02rem;
    line-height: var(--leading-tight);
    margin: 0 0 5px;
}

.commu-office-card-head p {
    color: var(--text-muted);
    font-size: 0.82rem;
    line-height: var(--leading-snug);
    margin: 0;
}

.commu-office-rows {
    list-style: none;
    margin: 0;
    padding: 0;
}

.commu-office-rows li {
    display: grid;
    gap: 12px;
    grid-template-columns: 112px minmax(0, 1fr);
    padding: 10px 14px;
}

.commu-office-rows li + li {
    border-top: 1px solid var(--border);
}

.commu-office-years {
    color: var(--text-muted);
    font-family: 'Courier New', monospace;
    font-size: 0.76rem;
    line-height: var(--leading-snug);
    overflow-wrap: anywhere;
}

.commu-office-lineage {
    list-style: none;
    margin: 0;
    padding: 0;
}

.commu-lineage-step {
    border-left: 3px solid var(--accent);
    margin-left: 8px;
    padding: 2px 0 14px 16px;
    position: relative;
}

.commu-lineage-step:last-child {
    padding-bottom: 2px;
}

.commu-lineage-step::before {
    background: var(--accent);
    border-radius: 50%;
    content: '';
    height: 9px;
    left: -6px;
    position: absolute;
    top: 6px;
    width: 9px;
}

.commu-lineage-node {
    align-items: baseline;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.commu-lineage-node strong {
    color: var(--text-primary);
    font-size: 0.95rem;
    font-weight: var(--weight-emphasis);
}

.commu-lineage-step p {
    color: var(--text-muted);
    font-size: 0.84rem;
    line-height: var(--leading-normal);
    margin: 4px 0 0;
}

.commu-office-main {
    display: grid;
    gap: 3px;
    min-width: 0;
}

.commu-office-main a,
.commu-office-main strong {
    color: var(--text-primary);
    font-size: 0.88rem;
    font-weight: var(--weight-emphasis);
    line-height: var(--leading-tight);
    text-decoration: none;
}

.commu-office-main a:hover {
    color: var(--link);
}

.commu-office-main small,
.commu-office-main em {
    color: var(--text-secondary);
    font-size: 0.78rem;
    font-style: normal;
    line-height: var(--leading-snug);
}

.commu-office-main em {
    color: var(--text-muted);
}

.commu-office-page-link {
    border-top: 1px solid var(--border);
    color: var(--text-primary);
    display: block;
    font-size: 0.82rem;
    font-weight: var(--weight-emphasis);
    padding: 10px 14px 12px;
    text-decoration: none;
}

.commu-office-page-link:hover {
    background: var(--bg-surface-hover);
    color: var(--text-primary);
    text-decoration: none;
}

.commu-people-group {
    margin-top: 17px;
}

.commu-people-group-head {
    background: color-mix(in srgb, var(--bg-surface) 72%, transparent);
    border: 1px solid var(--border);
    border-left: 4px solid var(--border);
    cursor: pointer;
    display: block;
    list-style: none;
    padding: 12px 38px 12px 14px;
    position: relative;
    transition: background-color 0.16s ease, border-color 0.16s ease, color 0.16s ease;
}

.commu-people-group-head:hover,
.commu-people-group-head:focus-visible {
    background: var(--bg-surface-hover);
    border-color: var(--link);
}

.commu-people-group-head:focus-visible {
    outline: 2px solid color-mix(in srgb, var(--link) 40%, transparent);
    outline-offset: 2px;
}

.commu-people-group-head::-webkit-details-marker {
    display: none;
}

.commu-people-group-head::after {
    color: var(--text-muted);
    content: '›';
    font-size: 1.5rem;
    line-height: var(--leading-none);
    position: absolute;
    right: 14px;
    top: 50%;
    transform: translateY(-50%) rotate(90deg);
    transition: color 0.16s ease, transform 0.16s ease;
}

.commu-people-group-head:hover::after,
.commu-people-group-head:focus-visible::after {
    color: var(--link);
}
.commu-people-group { scroll-margin-top: 4.5rem; }
.commu-people-group > [data-commu-list-pager] .pagination { margin: 12px 0 4px; }
.commu-people-group[open] .commu-people-group-head {
    margin-bottom: 14px;
}

.commu-people-group[open] .commu-people-group-head::after {
    transform: translateY(-50%) rotate(-90deg);
}

.commu-people-group.is-old-regime .commu-people-group-head { border-left-color: #b08d3f; }
.commu-people-group.is-bolshevik .commu-people-group-head { border-left-color: #c0453c; }
.commu-people-group.is-world-before-1917 .commu-people-group-head { border-left-color: #7b5ea7; }
.commu-people-group.is-world-interwar .commu-people-group-head { border-left-color: #9c2d3f; }
.commu-people-group.is-world-cold-war .commu-people-group-head { border-left-color: #b0603a; }
.commu-people-group.is-stalin-era .commu-people-group-head { border-left-color: #8a93a6; }
.commu-people-group.is-thaw .commu-people-group-head { border-left-color: #4d8fc4; }
.commu-people-group.is-perestroika .commu-people-group-head { border-left-color: #4aa578; }
.commu-people-group.is-china-old-regime .commu-people-group-head { border-left-color: #9a7b4f; }
.commu-people-group.is-china-revolution .commu-people-group-head { border-left-color: #d1473a; }
.commu-people-group.is-china-mao-era .commu-people-group-head { border-left-color: #8c2f2f; }
.commu-people-group.is-china-reform .commu-people-group-head { border-left-color: #3f9a8a; }
.commu-people-group.is-france-revolution .commu-people-group-head { border-left-color: #3b5ba5; }
.commu-people-shelf {
    background: var(--card-bg);
    border: 1px solid var(--border);
    margin-top: 9px;
    padding: 14px;
}

.commu-people-shelf-head {
    border-left: 4px solid var(--accent);
    color: var(--text-primary);
    font-size: 1.1rem;
    font-weight: var(--weight-emphasis);
    margin: 0;
    padding: 2px 0 2px 10px;
}
@media (max-width: 768px) {
    .commu-people-shelf {
        border-left: 0;
        border-right: 0;
        padding: 14px 0;
    }

    .commu-people-shelf-head {
        margin: 0 14px;
    }
}
.commu-people-group-list-link {
    position: absolute; right: 38px; top: 12px;
    font-size: 0.8rem; color: var(--text-muted); text-decoration: none; white-space: nowrap;
}
.commu-people-group-list-link:hover,
.commu-people-group-list-link:focus-visible { color: var(--text-primary); text-decoration: none; }
.commu-people-list-page .commu-hub-head h1 .commu-people-group-count { font-size: 0.7em; font-weight: 400; color: var(--text-muted); margin-left: .3rem; }

.commu-people-range {
    font-family: 'Courier New', monospace;
    font-size: 0.8rem;
    color: var(--text-muted);
    letter-spacing: 0.06em;
}
.commu-people-loading {
    grid-column: 1 / -1;
    margin: 6px 0;
    color: var(--text-muted);
    font-size: 0.9rem;
}
.commu-people-skeleton {
    display: contents;
}

.commu-person-skel {
    background: var(--card-bg);
    border: 1px solid var(--border);
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.commu-person-skel span {
    display: block;
    height: 11px;
    background: color-mix(in srgb, var(--text-muted) 20%, transparent);
    animation: commu-skel-pulse 1.4s ease-in-out infinite;
}

.commu-person-skel .is-name {
    height: 15px;
    width: 42%;
    margin-bottom: 2px;
}

.commu-person-skel .is-line { width: 94%; }
.commu-person-skel .is-line-mid { width: 82%; }
.commu-person-skel .is-line-short { width: 58%; }

.commu-person-skel:nth-child(2) span { animation-delay: 0.15s; }
.commu-person-skel:nth-child(3) span { animation-delay: 0.3s; }
.commu-person-skel:nth-child(4) span { animation-delay: 0.45s; }

@keyframes commu-skel-pulse {
    0%, 100% { opacity: 0.45; }
    50% { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
    .commu-person-skel span { animation: none; opacity: 0.6; }
}
.commu-people-search-skel {
    margin: 10px 0;
}

.commu-people-noscript-list {
    grid-column: 1 / -1;
    margin: 6px 0;
    padding-left: 18px;
    columns: 2;
    font-size: 0.92rem;
}

.commu-people-group-head h2 {
    margin: 2px 0 4px;
    font-size: 1.25rem;
    color: var(--text-primary);
}

.commu-people-group-head p {
    margin: 0;
    font-size: 0.92rem;
    color: var(--text-secondary);
}

.commu-people-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    align-items: start;
}

.commu-person-card {
    background: var(--card-bg);
    border: 1px solid var(--border);
    border-radius: 0;
    cursor: default;
    padding: 16px;
    position: relative;
    scroll-margin-top: 80px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    transition: border-color 0.16s ease, box-shadow 0.16s ease, transform 0.16s ease;
}

.commu-person-card::after {
    color: var(--text-muted);
    content: '→';
    font-size: 1rem;
    font-weight: var(--weight-emphasis);
    opacity: 0;
    pointer-events: none;
    position: absolute;
    right: 12px;
    top: 10px;
    transition: color 0.16s ease, opacity 0.16s ease, transform 0.16s ease;
}

.commu-person-card:has(.commu-person-top:hover):not(:has(.commu-person-medal:hover)),
.commu-person-card:has(.commu-person-idbox a:focus-visible) {
    border-color: color-mix(in srgb, var(--link) 72%, var(--border));
}

.commu-person-card:has(.commu-person-top:hover):not(:has(.commu-person-medal:hover))::after,
.commu-person-card:has(.commu-person-idbox a:focus-visible)::after {
    color: var(--link);
    opacity: 1;
    transform: translateX(2px);
}

.commu-person-card.is-focused {
    border-color: var(--link);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--link) 35%, transparent);
}

.commu-person-top {
    cursor: pointer;
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin: -16px -16px -10px;
    padding: 16px 16px 10px;
    transition: background-color 0.16s ease;
}

.commu-person-top:hover:not(:has(.commu-person-medal:hover)),
.commu-person-top:has(.commu-person-idbox a:focus-visible) {
    background: color-mix(in srgb, var(--link) 7%, transparent);
}

.commu-person-medal {
    align-items: center;
    background: var(--bg-surface);
    border: 2px solid var(--border);
    border-radius: 0;
    color: var(--text-secondary);
    display: flex;
    flex: 0 0 auto;
    height: 46px;
    justify-content: center;
    text-decoration: none;
    width: 46px;
}

.commu-person-medal,
.commu-person-more,
.commu-person-scenes {
    cursor: auto;
}

.commu-person-medal[href]:hover {
    background: var(--bg-surface-hover);
    border-color: var(--link);
    color: var(--link);
}

.commu-person-medal[href] {
    cursor: pointer;
}
[class*="pos-"] { --pos-ink: #faf2da; }
.pos-red-soviet { --pos: #b3261e; }
.pos-red-china { --pos: #c4381f; }
.pos-red { --pos: #8f2a33; }
.pos-western-marxist { --pos: #7d3c6b; }
.pos-socialist { --pos: #c25a7c; --pos-ink: #0b0d0a; }
.pos-left-opposition { --pos: #c4692c; --pos-ink: #0b0d0a; }
.pos-national-liberation { --pos: #c39a2e; --pos-ink: #0b0d0a; }
.pos-narodnik { --pos: #6f7a32; }
.pos-revolutionary-democrat { --pos: #a39a5a; --pos-ink: #0b0d0a; }
.pos-jacobin { --pos: #31519a; }
.pos-dissident { --pos: #5878a8; --pos-ink: #0b0d0a; }
.pos-reform { --pos: #4b9670; --pos-ink: #0b0d0a; }
.pos-fascist { --pos: #6e4b2e; }
.pos-white { --pos: #fbfaf6; --pos-ink: #0b0d0a; }
[data-theme="light"] .pos-white { --pos-wash: 100%; }
.pos-anarchist { --pos: #111; }
.pos-liberal-republican { --pos: var(--commu-position-liberal); }
.pos-conservative { --pos: var(--commu-position-conservative); }
.pos-monarchist { --pos: var(--commu-position-monarchist); }
.pos-agrarian { --pos: var(--commu-position-agrarian); }
.pos-nationalist { --pos: var(--commu-position-nationalist); }
.pos-revolutionary-socialist { --pos: var(--commu-position-revolutionary-socialist); }
.commu-person-card[class*="pos-"]::before {
    content: '';
    position: absolute;
    top: -1px;
    left: -1px;
    right: -1px;
    height: 4px;
    background: var(--pos);
    pointer-events: none;
}
.commu-person-card[class*="pos-"] .commu-person-top {
    background-image: linear-gradient(180deg, color-mix(in srgb, var(--pos) var(--pos-wash, 16%), transparent), transparent 90%);
}
.commu-person-card[class*="pos-"] .commu-person-top { padding-top: 19px; }
.commu-person-card.pos-white::before {
    box-shadow: 0 1px 0 var(--text-muted);
}
.commu-person-card.pos-anarchist::before {
    background: repeating-linear-gradient(135deg, #111 0 7px, var(--text-muted) 7px 9px);
}
.commu-person-card.pos-anarchist .commu-person-top {
    background-image: linear-gradient(180deg, color-mix(in srgb, var(--text-muted) 12%, transparent), transparent 90%);
}
.commu-person-position {
    display: inline-flex;
    align-items: center;
    max-width: 100%;
    padding: 2px 8px;
    background: var(--pos);
    color: var(--pos-ink);
    font-size: 0.74rem;
    font-weight: 700;
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.commu-person-position .commu-role-icon {
    width: 13px;
    height: 13px;
    flex-shrink: 0;
    margin-right: 4px;
}
.pos-white .commu-person-position,
.pos-anarchist .commu-person-position {
    box-shadow: inset 0 0 0 1px var(--text-muted);
}
.commu-person-position.is-secondary {
    background: transparent;
    box-shadow: inset 0 0 0 1px var(--pos, var(--border));
    color: var(--text-secondary);
    font-weight: 600;
}
.commu-person-position.is-secondary.pos-white,
.commu-person-position.is-secondary.pos-anarchist {
    box-shadow: inset 0 0 0 1px var(--text-muted);
}
a.commu-person-position.is-secondary:hover,
a.commu-person-position.is-secondary:focus-visible {
    color: var(--text-primary);
}
a.commu-person-position:hover,
a.commu-person-position:focus-visible {
    color: var(--pos-ink);
    text-decoration: underline;
    outline: 2px solid var(--link);
    outline-offset: 1px;
}

.commu-person-idbox {
    flex: 1 1 auto;
    min-width: 0;
}

.commu-person-idbox h3 {
    margin: 0;
    font-size: 1.05rem;
    color: var(--text-primary);
    line-height: var(--leading-tight);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.commu-person-idbox h3 a {
    color: inherit;
    text-decoration: none;
    transition: color 0.16s ease;
}

.commu-person-top:hover:not(:has(.commu-person-medal:hover)) .commu-person-idbox h3 a,
.commu-person-top:hover:not(:has(.commu-person-medal:hover)) .commu-person-cyr,
.commu-person-top:has(.commu-person-idbox a:focus-visible) .commu-person-idbox h3 a,
.commu-person-top:has(.commu-person-idbox a:focus-visible) .commu-person-cyr {
    color: var(--link);
}

.commu-person-cyr {
    display: block;
    font-family: Georgia, 'Times New Roman', serif;
    font-size: 0.82rem;
    color: var(--text-muted);
    font-style: italic;
    transition: color 0.16s ease;
}
.commu-person-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 8px;
}

.commu-person-sidebox {
    flex: 0 0 auto;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 8px;
}

.commu-person-years {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-family: 'Courier New', monospace;
    font-size: 0.78rem;
    color: var(--text-muted);
}
.commu-flag-link {
    display: inline-flex;
    align-items: center;
    border-radius: 2px;
    line-height: var(--leading-none);
}

.commu-flag-link:hover,
.commu-flag-link:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

.commu-flag {
    height: 0.86em;
    width: auto;
    border-radius: 0;
    box-shadow: 0 0 0 0.5px rgba(0, 0, 0, 0.28);
    vertical-align: middle;
    object-fit: contain;
    flex: 0 0 auto;
}

.commu-fate {
    display: inline-block;
    font-size: 0.74rem;
    font-weight: 600;
    line-height: var(--leading-none);
    padding: 4px 8px;
    border-radius: 999px;
    border: 1px solid var(--border);
    color: var(--text-muted);
    white-space: nowrap;
}

.commu-fate.is-executed,
.commu-fate.is-assassinated,
.commu-fate.is-murdered,
.commu-fate.is-suicide,
.commu-fate.is-killed {
    border-color: color-mix(in srgb, #d05252 60%, transparent);
    color: #d05252;
    background: color-mix(in srgb, #d05252 10%, transparent);
}

.commu-fate.is-deposed {
    border-color: color-mix(in srgb, #d09040 60%, transparent);
    color: #c07f2d;
    background: color-mix(in srgb, #d09040 10%, transparent);
}

.commu-fate.is-exile {
    border-color: color-mix(in srgb, #9d7bd8 60%, transparent);
    color: #9d7bd8;
    background: color-mix(in srgb, #9d7bd8 10%, transparent);
}

.commu-fate.is-natural {
    border-color: var(--border);
    color: var(--text-muted);
    background: var(--bg-surface);
}

.commu-person-epithet {
    margin: 0;
    font-size: 0.95rem;
    font-weight: 700;
    line-height: var(--leading-snug);
    color: var(--text-primary);
}
.commu-person-role-tag {
    display: inline-block;
    max-width: 100%;
    margin: 0;
    padding: 2px 8px;
    font-size: 0.74rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    text-decoration: none;
    color: var(--text-secondary);
    background: color-mix(in srgb, var(--bg-surface) 60%, transparent);
    border: 1px solid var(--border);
    border-left-width: 3px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
a.commu-person-role-tag:hover { color: var(--text-primary); border-color: var(--link); }

.commu-people-group-count {
    font-family: 'Courier New', monospace;
    font-size: 0.8rem;
    font-weight: 400;
    color: var(--text-muted);
}

.commu-person-moment {
    border-left: 3px solid color-mix(in srgb, var(--link) 72%, var(--border));
    color: color-mix(in srgb, var(--text-secondary) 82%, var(--text-muted));
    font-size: 0.9rem;
    font-style: italic;
    line-height: var(--leading-relaxed);
    margin: 0;
    padding-left: 10px;
}

.commu-person-bio {
    margin: 0;
    font-size: 0.88rem;
    line-height: var(--leading-relaxed);
    color: var(--text-secondary);
}
.commu-person-moment,
.commu-person-bio {
    text-align: justify;
    word-break: normal;
    hyphens: auto;
}

.commu-person-more {
    border-top: 1px dashed var(--border);
    margin-inline: calc(-1 * var(--space-4));
}

.commu-person-more:last-child {
    margin-bottom: calc(-1 * var(--space-4));
}

.commu-person-more > summary {
    box-sizing: border-box;
    display: flex;
    align-items: center;
    gap: var(--space-1);
    min-height: var(--control-height);
    padding: var(--space-3) var(--space-4);
    cursor: pointer;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--link);
    list-style: none;
}

.commu-person-more > summary:hover {
    background: var(--bg-surface-hover);
}

.commu-person-more > summary:focus-visible {
    outline: 2px solid var(--link);
    outline-offset: -2px;
}

.commu-person-more > .commu-person-career {
    margin: 0;
    padding: var(--space-2) var(--space-4) var(--space-4);
}

.commu-person-more summary::before {
    content: '+ ';
}

.commu-person-more[open] > summary::before {
    content: '− ';
}

.commu-person-more summary::-webkit-details-marker {
    display: none;
}

.commu-person-career {
    list-style: none;
    margin: 10px 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 7px;
}

.commu-person-career li {
    display: flex;
    gap: 10px;
    align-items: baseline;
    font-size: 0.84rem;
    line-height: var(--leading-normal);
}

.commu-career-year {
    flex: 0 0 84px;
    font-family: 'Courier New', monospace;
    font-size: 0.76rem;
    color: var(--text-muted);
    white-space: nowrap;
}

.commu-career-role {
    color: var(--text-secondary);
}

.commu-person-scenes {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    margin-top: auto;
    padding-top: 4px;
}

.commu-person-scenes-label {
    font-size: 0.74rem;
    color: var(--text-muted);
    margin-right: 2px;
}

.commu-scene-chip {
    display: inline-block;
    font-size: 0.76rem;
    line-height: var(--leading-none);
    padding: 5px 9px;
    border-radius: 999px;
    border: 1px solid var(--border);
    color: var(--link);
    text-decoration: none;
    background: var(--bg-surface);
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.commu-scene-chip:hover {
    border-color: var(--link);
}

.commu-hub-head {
    background: var(--card-bg);
    border: 1px solid var(--border);
    border-left: 4px solid var(--border);
    border-radius: 0;
    margin-top: 18px;
    padding: 18px;
}

.commu-hub-section {
    border-top: 1px solid var(--border);
    margin-top: 12px;
    padding-top: 20px;
    padding-inline: var(--content-inset);
    scroll-margin-top: 82px;
}

.commu-hub-section h2 {
    color: var(--text-primary);
    font-size: 1.24rem;
    line-height: var(--leading-tight);
    margin: 0 0 12px;
}
.commulingo-page footer {
    margin-top: 8px;
}

.commu-hub-head {
    border-left-color: var(--link);
}

.commu-hub-head h1 {
    color: var(--text-primary);
    font-size: clamp(1.55rem, 3vw, 2.3rem);
    letter-spacing: 0;
    line-height: var(--leading-tight);
    margin: 2px 0 7px;
}

.commu-hub-head p {
    color: var(--text-secondary);
    font-size: 0.95rem;
    line-height: var(--leading-normal);
    margin: 0;
}

.commu-hub-section {
    margin-top: 26px;
}

.commu-hub-section h2 {
    margin-bottom: 14px;
}
.commu-book-group-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
    flex-wrap: wrap;
}
.commu-book-group-head .commu-dict-nav {
    flex: 1 1 100%;
}

@media (max-width: 720px) {
    .commu-office-grid {
        grid-template-columns: 1fr;
    }

    .commu-office-rows li {
        grid-template-columns: 92px minmax(0, 1fr);
    }
}

@media (max-width: 540px) {
    .commu-people-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .commu-office-rows li {
        grid-template-columns: 1fr;
        gap: 4px;
    }

    .commu-person-top {
        flex-wrap: wrap;
    }

    .commu-person-page .commu-person-sidebox {
        width: 100%;
    }
}
.commu-dict-tab { min-height: var(--control-height); padding: .7rem .4rem; font-size: clamp(0.82rem, 1.9vw, 1rem); overflow: hidden; }
.commu-dict-tab span { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.commu-dict-tab .commu-role-icon { width: 17px; height: 17px; flex: 0 0 auto; color: inherit; }
@media (max-width: 560px) {
    .commu-dict-tab { padding: .6rem .15rem; font-size: .85rem; gap: .25rem; }
    .commu-dict-tab .commu-role-icon { width: 14px; height: 14px; }
    .commu-dict-tab span[data-short] { font-size: 0; }
    .commu-dict-tab span[data-short]::after { content: attr(data-short); font-size: .85rem; }
}
.commu-event-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr)); gap: 1rem; margin-top: .5rem; }
.commu-event-card { display: block; border: 1px solid var(--border, #555); border-radius: 0; padding: 1.1rem; color: inherit; text-decoration: none; background: var(--surface, rgba(255,255,255,.03)); }
.commu-event-card:hover { background: var(--accent, #214d2e); border-color: var(--accent, #214d2e); color: var(--clr-cream, #f8edca); text-decoration: none; }
.commu-event-card:hover .commu-event-period,
.commu-event-card:hover .commu-event-original { color: color-mix(in srgb, var(--clr-cream, #f8edca) 72%, var(--accent, #214d2e)); }
.commu-event-card:hover .commu-event-category { color: var(--clr-cream, #f8edca); background: transparent; border-color: color-mix(in srgb, var(--clr-cream, #f8edca) 45%, var(--accent, #214d2e)); }
.commu-event-card h2,
.commu-event-card h3 { margin: .1rem 0 .15rem; font-size: 1.05rem; }
.commu-event-card p { line-height: var(--leading-normal); }
.commu-event-card p { margin: .45rem 0 0; font-size: .88rem; line-height: var(--leading-normal); }
.commu-event-card .commu-event-period { font-size: .78rem; }
.commu-event-meta {
    display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px;
    margin-bottom: .1rem;
}
.commu-event-meta .commu-event-period { margin: 0; }
.commu-event-original {
    display: block;
    font-family: Georgia, 'Times New Roman', serif;
    font-size: .82rem; font-style: italic; color: var(--text-muted);
}
.commu-event-category {
    padding: 2px 8px; font-size: .74rem; font-weight: 600; letter-spacing: .01em;
    color: var(--text-secondary);
    background: color-mix(in srgb, var(--bg-surface) 60%, transparent);
    border: 1px solid var(--border); border-left-width: 3px;
    white-space: nowrap;
}
.commu-event-period { display: block; color: var(--text-muted); font-weight: 700; letter-spacing: .04em; }
.commu-event-card-link { font-weight: 700; }
.commu-terms-page .commu-event-grid,
.commu-events-page .commu-event-grid { align-items: start; }
.commu-terms-page .commu-event-card p,
.commu-events-page .commu-event-card p {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    overflow: hidden;
}
.commu-terms-page .commu-event-grid.is-filtering .commu-event-card p,
.commu-events-page .commu-event-grid.is-filtering .commu-event-card p {
    display: block;
    overflow: visible;
}
.commu-dict-toolbar {
    display: flex; flex-wrap: wrap; align-items: baseline;
    justify-content: flex-end; gap: .5rem 1rem; margin-top: .3rem;
}
.commu-dict-sort { display: flex; gap: .5rem; font-size: .9rem; }
.commu-dict-sort a {
    padding: .2rem .6rem; border: 1px solid var(--border);
    color: var(--text-muted); text-decoration: none;
}
.commu-dict-sort a:hover { background: var(--accent, #214d2e); border-color: var(--accent, #214d2e); color: var(--clr-cream, #f8edca); text-decoration: none; }
.commu-dict-sort a.is-active {
    color: var(--text-primary); font-weight: 700;
    background: color-mix(in srgb, var(--accent) 30%, transparent);
}
.commu-dict-chips { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .4rem; }
.commu-dict-chip {
    padding: .3rem .7rem; border: 1px solid var(--border);
    background: transparent; color: var(--text-muted); font: inherit;
    font-size: .86rem; cursor: pointer;
}
.commu-dict-chip span { color: var(--text-muted); opacity: .75; margin-left: .15rem; }
.commu-dict-chip:hover { background: var(--accent, #214d2e); border-color: var(--accent, #214d2e); color: var(--clr-cream, #f8edca); }
.commu-dict-chip:hover span { color: color-mix(in srgb, var(--clr-cream, #f8edca) 72%, var(--accent, #214d2e)); }
.commu-dict-chip.is-active {
    color: var(--clr-cream, #f8edca); font-weight: 700;
    background: var(--accent, #214d2e); border-color: var(--accent, #214d2e);
}
.commu-dict-chip.is-active span { color: color-mix(in srgb, var(--clr-cream, #f8edca) 72%, var(--accent, #214d2e)); }
a.commu-dict-chip { display: inline-block; text-decoration: none; line-height: var(--leading-tight); }
a.commu-dict-chip:hover { text-decoration: none; }

.commu-events-page .commu-event-grid { scroll-margin-top: 4.5rem; }
.commu-dict-index { display: flex; flex-wrap: wrap; gap: .3rem; margin-top: .4rem; }
.commu-dict-index a {
    min-width: 2rem; padding: .2rem .4rem; border: 1px solid var(--border);
    color: var(--text-muted); text-decoration: none; text-align: center;
    font-size: .85rem;
}
.commu-dict-index a:hover { background: var(--accent, #214d2e); border-color: var(--accent, #214d2e); color: var(--clr-cream, #f8edca); text-decoration: none; }

.commu-term-group-head {
    grid-column: 1 / -1; margin: 1.2rem 0 0; padding-bottom: .3rem;
    border-bottom: 1px solid var(--border);
    font-size: 1rem; color: var(--text-muted); letter-spacing: .04em;
    scroll-margin-top: 4.5rem;
}
.commu-term-group-head:first-child { margin-top: 0; }
.commu-event-grid.is-filtering .commu-term-group-head,
.commu-event-grid.is-ungrouped .commu-term-group-head { display: none; }
.commu-term-link,
.commu-event-link {
    color: inherit; text-decoration: none;
    border-bottom: 2px dashed var(--link, #5d7a5a);
}
.commu-term-link:hover,
.commu-event-link:hover { border-bottom-style: solid; }

.commu-doc-link {
    color: inherit; text-decoration: none;
    border-bottom: 2px dotted var(--link, #5d7a5a);
}
.commu-doc-link:hover { border-bottom-style: solid; }
.commu-topic-link {
    color: inherit; text-decoration: none;
    border-bottom: 2px dotted var(--link, #5d7a5a);
}
.commu-topic-link:hover { border-bottom-style: solid; }
.commu-person-bio a:not([class]) {
    color: inherit; text-decoration: none;
    border-bottom: 2px dotted var(--link, #5d7a5a);
}
.commu-person-bio a:not([class]):hover { border-bottom-style: solid; }

.commu-term-chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.commu-term-chip { display: inline-block; padding: .3rem .8rem; border: 1px solid var(--border, #555); border-radius: 0; color: inherit; text-decoration: none; font-size: .95rem; }
.commu-term-chip:hover { background: var(--accent, #214d2e); border-color: var(--accent, #214d2e); color: var(--clr-cream, #f8edca); text-decoration: none; }
.commu-term-chip.is-child { font-size: .88rem; opacity: .85; border-style: dashed; }
.commu-book-dictionary { margin-bottom: 1.5rem; }
.commu-book-dictionary h3 {
    margin: 1rem 0 .5rem;
    font-size: .9rem;
    font-weight: 600;
    opacity: .75;
}
.commu-book-dictionary h3:first-of-type { margin-top: .75rem; }

.commu-drill-promo {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    justify-content: space-between;
    margin-bottom: 20px;
}

.commu-drill-promo h2 {
    font-size: 1.08rem;
    margin: 0 0 6px;
}

.commu-drill-promo p {
    color: var(--text-secondary);
    font-size: 0.9rem;
    line-height: var(--leading-snug);
    margin: 0;
}
.commu-person-politburo-stints {
    list-style: none;
    margin: 10px 0 0;
    padding: 10px 12px;
    background: var(--bg-surface);
    border: 1px solid var(--border);
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.commu-person-politburo-stints li {
    font-size: 0.84rem;
    line-height: var(--leading-snug);
    white-space: nowrap;
}

.commu-person-politburo-note {
    color: var(--text-muted);
    font-size: 0.84rem;
    line-height: var(--leading-snug);
    margin: 8px 0 0;
}

.commu-resume-review {
    display: block;
    margin-top: 4px;
    font-size: 0.85rem;
    color: var(--link);
}
.commu-updates {
    padding: 0;
    scroll-margin-top: 80px;
}
.commu-updates-toggle,
.commu-updates-group > summary {
    padding: 12px 16px;
    cursor: pointer;
    color: var(--text-secondary);
    font-size: 0.88rem;
    font-weight: 700;
}
.commu-updates summary:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: -3px;
}
.commu-updates[open] > summary {
    color: var(--text-primary);
    border-bottom: 1px solid var(--border);
}
.commu-updates-body {
    padding: 0 16px 12px;
}
.commu-updates-description {
    margin: 12px 0;
    color: var(--text-muted);
    font-size: 0.82rem;
    line-height: var(--leading-normal);
}
.commu-updates-group {
    border-top: 1px solid var(--border);
}
.commu-updates-group > summary {
    padding-inline: 0;
}
.commu-updates time {
    color: var(--text-muted);
    font-size: 0.75rem;
    font-weight: 400;
    white-space: nowrap;
}
.commu-updates-group > summary time {
    margin-inline-start: 12px;
}
.commu-updates-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.commu-updates-list li {
    padding: 12px 0;
    border-top: 1px solid var(--border);
    overflow-wrap: anywhere;
}
.commu-updates-list li > time {
    display: block;
    margin-bottom: 4px;
}
.commu-updates-list a {
    font-size: 0.9rem;
    font-weight: 700;
}
.commu-updates-excerpt {
    margin-top: 6px;
    color: var(--text-secondary);
    font-size: 0.82rem;
    line-height: var(--leading-normal);
}
.commulingo-home {
    gap: 12px;
}
.commulingo-home .commulingo-hero--home {
    padding: 0;
    gap: 0;
}
.commulingo-home .commulingo-hero-main {
    padding: 18px 18px 0;
    gap: 12px;
}
.commulingo-home .commulingo-hero h1 {
    margin: 0;
    font-size: 1.5rem;
    letter-spacing: var(--tracking-home-title);
}
.commulingo-home-description {
    padding: 4px 18px 16px;
    margin: 0;
    color: var(--text-secondary);
    font-size: 0.88rem;
    line-height: var(--leading-normal);
    word-break: keep-all;
    overflow-wrap: anywhere;
}
.commulingo-home .commulingo-hero-dict {
    padding-top: 12px;
    gap: 10px;
}
.commulingo-home .commulingo-hero-dict-label {
    padding-inline: 18px;
}
.commulingo-home .commu-dict-nav {
    border-inline: 0;
    border-bottom: 0;
}
.commulingo-home .commu-dict-tab {
    min-height: 54px;
}
.commulingo-home .commu-updates {
    border-top: 1px solid var(--border);
}
.commulingo-home .commu-drill-promo {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px 18px;
    padding: 18px;
    margin: 0;
}
.commulingo-home .commu-drill-promo p {
    word-break: keep-all;
    overflow-wrap: anywhere;
}
.commulingo-home .commulingo-book-groups {
    gap: 28px;
    margin-top: 12px;
}
.commulingo-home .commu-book-group {
    border: 0;
    background: transparent;
    padding: 0;
}
.commulingo-home .commu-book-group-title {
    font-size: 1.2rem;
    line-height: var(--leading-snug);
    margin-bottom: 14px;
}
.commulingo-home .commu-book-card {
    border-color: color-mix(in srgb, var(--border) 45%, transparent);
    border-left-color: var(--accent);
}
.commulingo-home .commu-book-card:hover {
    border-color: var(--accent);
}
.commulingo-home .commu-book-card h3 {
    font-size: 1.05rem;
    line-height: var(--leading-snug);
}
@media (max-width: 560px) {
    .commulingo-home .commulingo-hero-main {
        padding: 14px 12px 0;
    }
    .commulingo-home-description {
        padding: 4px 12px 14px;
        font-size: 0.82rem;
    }
    .commulingo-home .commulingo-hero-dict-label {
        padding-inline: 12px;
    }
    .commulingo-home .commu-dict-tab {
        flex-direction: column;
        gap: 6px;
        padding: 10px 2px;
        min-height: 64px;
    }
    .commulingo-home .commu-dict-tab .commu-role-icon {
        width: 18px;
        height: 18px;
    }
    .commulingo-home .commu-drill-promo {
        padding: 14px 12px;
        grid-template-columns: minmax(0, 1fr);
    }
    .commulingo-home .commu-drill-promo .btn {
        text-align: center;
        min-height: 44px;
    }
    .commulingo-home .commu-book-card {
        padding: 14px;
    }
}

.commu-updates-group-label {
    display: inline-block;
    min-width: 5.5em;
}
.commu-updates-latest {
    display: block;
    margin: 5px 0 0 16px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--text-muted);
    font-size: 0.8rem;
    font-weight: 400;
}
.commulingo-home-progress {
    flex: 0 0 116px;
    display: grid;
    gap: 7px;
}
.commulingo-home-progress-label {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
    white-space: nowrap;
}
.commulingo-home-progress-label label {
    color: var(--text-muted);
    font-size: 0.72rem;
}
.commulingo-home-progress-label span {
    color: var(--text-primary);
    font-size: 0.9rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}
.commulingo-home-progress progress {
    display: block;
    appearance: none;
    width: 100%;
    height: 3px;
    border: 0;
    background: color-mix(in srgb, var(--text-muted) 24%, transparent);
    color: var(--text-secondary);
}
.commulingo-home-progress progress::-webkit-progress-bar {
    background: color-mix(in srgb, var(--text-muted) 24%, transparent);
}
.commulingo-home-progress progress::-webkit-progress-value {
    background: var(--text-secondary);
}
.commulingo-home-progress progress::-moz-progress-bar {
    background: var(--text-secondary);
}
.commu-person-office-link {
    color: var(--text-primary);
    text-decoration: underline; text-decoration-thickness: 1px;
    text-underline-offset: .2em;
    text-decoration-color: color-mix(in srgb, var(--text-primary) 45%, transparent);
}
.commu-person-office-link:hover { color: var(--text-primary); text-decoration-color: currentColor; }
.commu-person-affiliation { display: inline-flex; align-items: center; gap: var(--space-1); color: var(--text-secondary); font-size: var(--text-sm); }
.commu-person-affiliation .commu-role-icon { width: 16px; height: 16px; flex-shrink: 0; }
