/* === Theme Variables === */
:root {
    --bg-page: #f5f5f5;
    --bg-card: #fff;
    --bg-header: #1a1a2e;
    --bg-statsbar: #16213e;
    --bg-input: #fff;
    --bg-thead: #f8f9fa;
    --bg-hover-row: #f8faff;
    --bg-abstract: #fafbff;
    --bg-badge-top: #e8f0fe;
    --bg-badge-tier-a: #f0f7ee;
    --bg-badge-other: #f0f0f0;
    --bg-yr-btn: #f5f5f5;
    --bg-yr-btn-active: #2d3748;
    --bg-pagination-active: #1a1a2e;
    --bg-tl-btn-active: #2563eb;
    --bg-metric: #f8f9fa;
    --bg-inst-tag: #f1f5f9;
    --bg-export-btn: #f1f5f9;
    --bg-toast: #1e293b;
    --bg-search-highlight: #fef08a;
    --bg-summary-active: #f0f7ff;
    --bg-abs-tier: #fafafa;
    --bg-abs-tier-active: #e8f2ff;

    --text-primary: #333;
    --text-secondary: #555;
    --text-muted: #6b6b6b;
    --text-faint: #999;
    --text-link: #2563eb;
    --text-header: #1a1a2e;
    --text-badge-top: #1a56db;
    --text-badge-tier-a: #2d6a2e;
    --text-badge-other: #555;
    --text-statsbar: #ccc;
    --text-statsbar-label: #8888aa;
    --text-tab: #8888aa;
    --text-tab-active: #fff;

    --border-light: #ddd;
    --border-row: #f0f0f0;
    --border-section: #e9ecef;
    --border-card: #e0e0e0;
    --border-inst-tag: #e2e8f0;
    --border-export: #cbd5e1;

    --accent: #4a9eff;
    --accent-hover: #1d4ed8;
    --shadow-card: 0 1px 3px rgba(0,0,0,0.08);

    --badge-utd-bg: #fef3c7;
    --badge-utd-text: #92400e;
    --badge-ft-bg: #dbeafe;
    --badge-ft-text: #1e40af;
    --badge-abs-bg: #f0fdf4;
    --badge-abs-text: #166534;
    --badge-abs4star-bg: #dcfce7;
    --badge-abs4star-text: #14532d;

    /* Legacy alias variables: several component rules reference shorthand
       custom-property names that were never declared (e.g. --border, --text,
       --card-bg). An undefined var() makes the whole declaration invalid, so
       borders fell back to currentColor (near-white in dark mode) and
       backgrounds to transparent. Alias them to the canonical tokens; because
       var() resolves lazily, these inherit the active theme's values. */
    --border: var(--border-light);
    --border-input: var(--border-light);
    --card-bg: var(--bg-card);
    --bg: var(--bg-page);
    --bg-secondary: var(--bg-metric);
    --bg-summary: var(--bg-card);
    --bg-subtle: var(--bg-metric);
    --text: var(--text-primary);
    --surface: var(--bg-card);
}

[data-theme="dark"] {
    --bg-page: #0f1117;
    --bg-card: #1a1d27;
    --bg-header: #0d0d1a;
    --bg-statsbar: #0d1020;
    --bg-input: #232636;
    --bg-thead: #1e2130;
    --bg-hover-row: #22253a;
    --bg-abstract: #1e2030;
    --bg-badge-top: #1e2d50;
    --bg-badge-tier-a: #1e3a1e;
    --bg-badge-other: #2a2d3a;
    --bg-yr-btn: #232636;
    --bg-yr-btn-active: #4a9eff;
    --bg-pagination-active: #4a9eff;
    --bg-tl-btn-active: #4a9eff;
    --bg-metric: #232636;
    --bg-inst-tag: #232636;
    --bg-export-btn: #232636;
    --bg-toast: #2d3748;
    --bg-search-highlight: #854d0e;
    --bg-summary-active: #1e2d50;
    --bg-abs-tier: #232636;
    --bg-abs-tier-active: #1e2d50;

    --text-primary: #e0e0e8;
    --text-secondary: #b0b0c0;
    --text-muted: #808098;
    --text-faint: #8a8aaa;
    --text-link: #6db3ff;
    --text-header: #e8e8f0;
    --text-badge-top: #6db3ff;
    --text-badge-tier-a: #7dcc7d;
    --text-badge-other: #a0a0b0;
    --text-statsbar: #b0b0c0;
    --text-statsbar-label: #8a8aaa;
    --text-tab: #8a8aaa;
    --text-tab-active: #fff;

    --border-light: #333648;
    --border-row: #252838;
    --border-section: #2a2d3e;
    --border-card: #333648;
    --border-inst-tag: #333648;
    --border-export: #333648;

    --accent: #4a9eff;
    --accent-hover: #6db3ff;
    --shadow-card: 0 1px 3px rgba(0,0,0,0.3);

    --badge-utd-bg: #3b2f1a;
    --badge-utd-text: #fbbf24;
    --badge-ft-bg: #1e2d50;
    --badge-ft-text: #6db3ff;
    --badge-abs-bg: #1a2e1a;
    --badge-abs-text: #6ee7b7;
    --badge-abs4star-bg: #1a331a;
    --badge-abs4star-text: #6ee7b7;
}

/* === Base === */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    background: var(--bg-page);
    color: var(--text-primary);
    line-height: 1.5;
}

header {
    background: var(--bg-header);
    color: #fff;
    padding: 2rem 1.5rem;
    text-align: center;
}

header h1 {
    font-size: 2.2rem;
    font-weight: 700;
    letter-spacing: 0.5px;
}

.header-right {
    position: absolute;
    right: 1.5rem;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    align-items: center;
}

.header-content {
    position: relative;
}

.subtitle {
    color: #c4c4e0;
    margin-top: 0.3rem;
    font-size: 1rem;
}

/* Theme toggle */
.theme-toggle {
    background: none;
    border: 1px solid rgba(255,255,255,0.2);
    border-radius: 6px;
    padding: 0.4rem 0.6rem;
    cursor: pointer;
    font-size: 1.1rem;
    color: #c4c4e0;
    transition: all 0.2s;
    line-height: 1;
}
.theme-toggle:hover {
    background: rgba(255,255,255,0.1);
    color: #fff;
}
.dice-btn {
    background: none;
    border: 1px solid rgba(255,255,255,0.2);
    border-radius: 6px;
    padding: 0.4rem 0.6rem;
    margin-right: 0.4rem;
    cursor: pointer;
    font-size: 1.1rem;
    color: #c4c4e0;
    transition: all 0.2s;
    line-height: 1;
}
.dice-btn:hover { background: rgba(255,255,255,0.1); color: #fff; transform: rotate(-12deg); }

/* Stats bar */
.stats-bar {
    background: var(--bg-statsbar);
    padding: 0.6rem 1.5rem;
    display: flex;
    justify-content: center;
    gap: 2rem;
    flex-wrap: wrap;
}

.stat-item {
    text-align: center;
    color: var(--text-statsbar);
    font-size: 0.82rem;
}

.stat-item .stat-value {
    font-size: 1.15rem;
    font-weight: 700;
    color: #fff;
    display: block;
    font-variant-numeric: tabular-nums;
}

.stat-item .stat-label {
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-statsbar-label);
}

/* Nav tabs */
nav {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 0;
    background: var(--bg-statsbar);
    padding: 0 1.5rem;
    border-top: 1px solid rgba(255,255,255,0.05);
}

.tab {
    background: none;
    border: none;
    color: var(--text-tab);
    padding: 0.8rem 1.5rem;
    cursor: pointer;
    font-size: 0.95rem;
    border-bottom: 3px solid transparent;
    transition: all 0.2s;
}

.tab:hover {
    color: #ccc;
}

.tab.active {
    color: var(--text-tab-active);
    border-bottom-color: var(--accent);
}

/* Main */
main {
    max-width: 1200px;
    margin: 0 auto;
    padding: 1.5rem;
}

.controls {
    background: var(--bg-card);
    border-radius: 8px;
    padding: 1rem 1.5rem;
    margin-bottom: 1rem;
    box-shadow: var(--shadow-card);
}

.control-row {
    display: flex;
    gap: 1rem;
    align-items: center;
    flex-wrap: wrap;
}

.search-box {
    flex: 1;
    min-width: 200px;
    position: relative;
}

.search-box input {
    width: 100%;
    padding: 0.5rem 2.2rem 0.5rem 0.8rem;
    border: 1px solid var(--border-light);
    border-radius: 6px;
    font-size: 0.9rem;
    outline: none;
    transition: border-color 0.2s;
    background: var(--bg-input);
    color: var(--text-primary);
}

.search-box input:focus {
    border-color: var(--accent);
}

.search-clear {
    position: absolute;
    right: 6px;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    font-size: 1.1rem;
    color: var(--text-muted);
    cursor: pointer;
    padding: 0 4px;
    line-height: 1;
    display: none;
}

.search-clear:hover {
    color: var(--text-primary);
}

.search-box.has-value .search-clear {
    display: block;
}

.search-box.has-value .search-shortcut,
.search-box input:focus ~ .search-shortcut {
    display: none;
}

.search-shortcut {
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    gap: 2px;
    pointer-events: none;
}

.search-shortcut kbd {
    font-size: 0.65rem;
    padding: 1px 4px;
    border: 1px solid var(--border-light);
    border-radius: 3px;
    background: var(--bg-thead);
    color: var(--text-muted);
    font-family: inherit;
    line-height: 1.4;
}

.filter-group {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.filter-group label {
    font-size: 0.85rem;
    color: var(--text-muted);
    white-space: nowrap;
}

.filter-group select,
.filter-group input[type="number"] {
    padding: 0.4rem 0.6rem;
    border: 1px solid var(--border-light);
    border-radius: 6px;
    font-size: 0.85rem;
    background: var(--bg-input);
    color: var(--text-primary);
    outline: none;
}
.filter-group input[type="number"] {
    width: 70px;
    -moz-appearance: textfield;
}
.filter-group input[type="number"]::-webkit-inner-spin-button,
.filter-group input[type="number"]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

.year-shortcuts {
    display: inline-flex;
    gap: 2px;
    margin-left: 6px;
}
.yr-btn {
    padding: 0.25rem 0.5rem;
    font-size: 0.75rem;
    border: 1px solid var(--border-light);
    border-radius: 4px;
    background: var(--bg-yr-btn);
    color: var(--text-secondary);
    cursor: pointer;
    line-height: 1;
}
.yr-btn:hover { background: var(--bg-hover-row); }
.yr-btn-active {
    background: var(--bg-yr-btn-active);
    color: #fff;
    border-color: var(--bg-yr-btn-active);
}
.yr-btn-active:hover { opacity: 0.9; }

.stats {
    margin-top: 0.8rem;
    font-size: 0.85rem;
    color: var(--text-muted);
}

/* View visibility */
.view-hidden {
    display: none;
}

/* Citation Explorer */
.citation-explorer {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.ce-header,
.ce-controls,
.ce-entity-header,
.ce-panel {
    background: var(--bg-card);
    border: 1px solid var(--border-card);
    border-radius: 8px;
    box-shadow: var(--shadow-card);
}

.ce-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.25rem;
}

.ce-header h2,
.ce-entity-header h3 {
    color: var(--text-header);
    font-size: 1.25rem;
    letter-spacing: 0;
}

.ce-header p,
.ce-entity-header p {
    color: var(--text-muted);
    font-size: 0.88rem;
    margin-top: 0.2rem;
}

.ce-mode-tabs {
    display: inline-flex;
    gap: 0.25rem;
    padding: 0.25rem;
    background: var(--bg-thead);
    border: 1px solid var(--border-section);
    border-radius: 8px;
}

.ce-mode-btn {
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: var(--text-secondary);
    cursor: pointer;
    font-size: 0.85rem;
    padding: 0.45rem 0.75rem;
}

.ce-mode-btn.active {
    background: var(--bg-card);
    color: var(--text-header);
    box-shadow: var(--shadow-card);
}

.ce-controls {
    display: flex;
    align-items: center;
    gap: 0.8rem;
    flex-wrap: wrap;
    padding: 0.9rem 1rem;
}

.ce-search-box {
    min-width: 280px;
}

.ce-compare-box {
    min-width: 210px;
}

.ce-workbench {
    align-items: start;
    display: grid;
    gap: 1rem;
    grid-template-columns: 260px minmax(0, 1fr);
}

.ce-main-workspace {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    min-width: 0;
}

.ce-facets {
    background: var(--bg-card);
    border: 1px solid var(--border-card);
    border-radius: 8px;
    box-shadow: var(--shadow-card);
    padding: 0.85rem;
    position: sticky;
    top: 0.75rem;
}

.ce-facet-head {
    align-items: center;
    display: flex;
    justify-content: space-between;
}

.ce-facet-head strong {
    color: var(--text-header);
}

.ce-facet-head button {
    background: transparent;
    border: 0;
    color: var(--text-link);
    cursor: pointer;
    font-size: 0.78rem;
}

.ce-active-query {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin: 0.7rem 0;
}

.ce-active-query span {
    background: var(--bg-thead);
    border: 1px solid var(--border-row);
    border-radius: 999px;
    color: var(--text-secondary);
    font-size: 0.72rem;
    padding: 0.22rem 0.45rem;
}

.ce-active-query .ce-muted {
    border-style: dashed;
    color: var(--text-muted);
}

.ce-facet-group {
    border-top: 1px solid var(--border-row);
    margin-top: 0.65rem;
    padding-top: 0.55rem;
}

.ce-facet-group h5 {
    color: var(--text-secondary);
    font-size: 0.74rem;
    margin-bottom: 0.35rem;
    text-transform: uppercase;
}

.ce-facet-option {
    align-items: center;
    background: transparent;
    border: 0;
    border-radius: 6px;
    color: var(--text-primary);
    cursor: pointer;
    display: flex;
    gap: 0.45rem;
    justify-content: space-between;
    padding: 0.36rem 0.4rem;
    text-align: left;
    width: 100%;
}

.ce-facet-option:hover,
.ce-facet-option.active {
    background: var(--bg-hover-row);
}

.ce-facet-option.active {
    color: var(--text-link);
    font-weight: 600;
}

.ce-facet-option span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ce-facet-option strong {
    color: var(--text-muted);
    font-size: 0.72rem;
    font-variant-numeric: tabular-nums;
}

.ce-suggestion-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 0.6rem;
}

.ce-candidate-groups {
    display: grid;
    gap: 0.85rem;
}

.ce-candidate-group h4 {
    color: var(--text-secondary);
    font-size: 0.82rem;
    margin-bottom: 0.35rem;
}

.ce-intro {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.ce-intro-grid {
    display: grid;
    gap: 0.7rem;
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.ce-intro-card {
    background: var(--bg-card);
    border: 1px solid var(--border-card);
    border-radius: 8px;
    box-shadow: var(--shadow-card);
    padding: 0.9rem;
}

.ce-intro-card strong {
    color: var(--text-header);
    display: block;
    font-size: 1.35rem;
    font-variant-numeric: tabular-nums;
}

.ce-intro-card span {
    color: var(--text-muted);
    display: block;
    font-size: 0.78rem;
    margin-top: 0.2rem;
}

.ce-intro-panels {
    display: grid;
    gap: 1rem;
    grid-template-columns: minmax(0, 1fr) minmax(300px, 0.75fr);
}

.ce-quick-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
}

.ce-quick-actions button {
    background: var(--bg-thead);
    border: 1px solid var(--border-card);
    border-radius: 6px;
    color: var(--text-link);
    cursor: pointer;
    font-size: 0.84rem;
    padding: 0.42rem 0.65rem;
}

.ce-quick-actions button:hover {
    background: var(--bg-hover-row);
    border-color: var(--accent);
}

.ce-discovery {
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.ce-chip-grid {
    display: grid;
    gap: 0.45rem;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
}

.ce-chip {
    align-items: center;
    background: var(--bg-thead);
    border: 1px solid var(--border-row);
    border-radius: 6px;
    color: var(--text-primary);
    cursor: pointer;
    display: flex;
    gap: 0.45rem;
    justify-content: space-between;
    min-height: 34px;
    padding: 0.45rem 0.55rem;
    text-align: left;
}

.ce-chip:hover {
    background: var(--bg-hover-row);
    border-color: var(--accent);
}

.ce-chip span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ce-chip strong {
    color: var(--text-muted);
    font-size: 0.75rem;
    font-variant-numeric: tabular-nums;
}

.ce-suggestion {
    text-align: left;
    background: var(--bg-card);
    border: 1px solid var(--border-card);
    border-radius: 8px;
    color: var(--text-primary);
    cursor: pointer;
    padding: 0.8rem;
    box-shadow: var(--shadow-card);
}

.ce-suggestion:hover {
    border-color: var(--accent);
    background: var(--bg-hover-row);
}

.ce-suggestion-title,
.ce-suggestion-meta {
    display: block;
}

.ce-suggestion-title {
    font-weight: 650;
    line-height: 1.25;
}

.ce-suggestion-meta {
    color: var(--text-muted);
    font-size: 0.8rem;
    margin-top: 0.35rem;
}

.ce-results {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.ce-entity-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.25rem;
}

.ce-kicker {
    color: var(--accent);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.7px;
    text-transform: uppercase;
}

.ce-stat-grid {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 0.7rem;
}

.ce-stat {
    background: var(--bg-card);
    border: 1px solid var(--border-card);
    border-radius: 8px;
    padding: 0.8rem;
    box-shadow: var(--shadow-card);
}

.ce-stat-value {
    display: block;
    color: var(--text-header);
    font-size: 1.15rem;
    font-weight: 750;
    font-variant-numeric: tabular-nums;
}

.ce-stat-label {
    color: var(--text-muted);
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.4px;
}

.ce-two-col,
.ce-grid {
    display: grid;
    gap: 1rem;
}

.ce-two-col {
    grid-template-columns: minmax(0, 1.15fr) minmax(320px, 0.85fr);
}

.ce-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.ce-wide {
    grid-column: 1 / -1;
}

.ce-analysis-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}

.ce-analysis-tabs a {
    background: var(--bg-card);
    border: 1px solid var(--border-card);
    border-radius: 6px;
    color: var(--text-link);
    font-size: 0.82rem;
    padding: 0.35rem 0.6rem;
    text-decoration: none;
}

.ce-analysis-tabs a:hover {
    background: var(--bg-hover-row);
}

.ce-three-col {
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.ce-panel {
    padding: 1rem;
    overflow: hidden;
}

.ce-panel h4 {
    color: var(--text-header);
    font-size: 0.95rem;
    margin-bottom: 0.75rem;
}

.ce-panel h5 {
    color: var(--text-secondary);
    font-size: 0.78rem;
    letter-spacing: 0.3px;
    margin: 0.8rem 0 0.4rem;
    text-transform: uppercase;
}

.ce-interpretation {
    color: var(--text-secondary);
    font-size: 0.92rem;
    line-height: 1.55;
    margin-bottom: 0.9rem;
}

.ce-network {
    min-height: 320px;
}

.ce-network-shell {
    display: grid;
    gap: 0.8rem;
}

.ce-network-head {
    align-items: center;
    background: var(--bg-summary);
    border: 1px solid var(--border-row);
    border-radius: 8px;
    color: var(--text-secondary);
    display: grid;
    font-size: 0.78rem;
    gap: 0.45rem;
    grid-template-columns: minmax(0, 1fr) auto auto minmax(0, 1fr) auto;
    padding: 0.55rem 0.7rem;
}

.ce-network-head span {
    color: var(--text-primary);
    font-weight: 650;
}

.ce-network-head strong {
    background: var(--bg-card);
    border: 1px solid var(--border-row);
    border-radius: 999px;
    color: var(--text-header);
    font-size: 0.75rem;
    padding: 0.2rem 0.45rem;
}

.ce-network-head em {
    color: var(--text-faint);
    font-style: normal;
    text-align: center;
    text-transform: uppercase;
}

.ce-network-svg {
    background:
        linear-gradient(90deg, rgba(59, 130, 246, 0.06), transparent 34%, transparent 66%, rgba(16, 185, 129, 0.06)),
        var(--bg-card);
    border: 1px solid var(--border-row);
    border-radius: 8px;
    overflow-x: auto;
    padding: 0.25rem;
}

.ce-network-svg svg {
    display: block;
    min-width: 680px;
    width: 100%;
}

.ce-flow-label {
    fill: var(--text-faint);
    font-size: 11px;
    text-transform: uppercase;
}

.ce-flow-edge {
    fill: none;
    opacity: 0.52;
    stroke-linecap: round;
}

.ce-flow-edge-source {
    stroke: #3b82f6;
}

.ce-flow-edge-impact {
    stroke: #10b981;
}

.ce-flow-node rect:first-child {
    fill: var(--bg-card);
    stroke: var(--border-row);
}

.ce-flow-node:hover rect:first-child {
    fill: var(--bg-hover-row);
    stroke: var(--text-link);
}

.ce-flow-node-source .ce-flow-node-bar {
    fill: #3b82f6;
}

.ce-flow-node-impact .ce-flow-node-bar {
    fill: #10b981;
}

.ce-flow-node-title {
    fill: var(--text-primary);
    font-size: 12px;
    font-weight: 650;
}

.ce-flow-node-count {
    fill: var(--text-muted);
    font-size: 10.5px;
}

.ce-flow-center rect {
    fill: var(--text-header);
    stroke: rgba(255, 255, 255, 0.22);
}

.ce-flow-center-title {
    fill: #fff;
    font-size: 13px;
    font-weight: 750;
}

.ce-flow-center-meta {
    fill: rgba(255, 255, 255, 0.78);
    font-size: 11px;
}

.ce-network-evidence {
    display: grid;
    gap: 0.75rem;
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.ce-network-evidence-card {
    background: var(--bg-summary);
    border: 1px solid var(--border-row);
    border-radius: 8px;
    min-width: 0;
    padding: 0.7rem;
}

.ce-network-evidence-card h5 {
    margin-top: 0;
}

.ce-network-evidence-card button {
    align-items: center;
    background: transparent;
    border: 0;
    border-bottom: 1px solid var(--border-row);
    color: var(--text-secondary);
    cursor: pointer;
    display: grid;
    gap: 0.5rem;
    grid-template-columns: minmax(0, 1fr) auto;
    padding: 0.42rem 0;
    text-align: left;
    width: 100%;
}

.ce-network-evidence-card button:hover span {
    color: var(--text-link);
}

.ce-network-evidence-card button:last-child {
    border-bottom: 0;
}

.ce-network-evidence-card span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ce-network-evidence-card strong {
    color: var(--text-header);
    font-variant-numeric: tabular-nums;
}

.ce-hit-list,
.ce-entity-rows {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

.ce-hit {
    display: grid;
    grid-template-columns: 28px minmax(0, 1fr) auto;
    align-items: center;
    gap: 0.6rem;
    padding: 0.5rem 0;
    border-bottom: 1px solid var(--border-row);
}

.ce-rank {
    color: var(--text-faint);
    font-variant-numeric: tabular-nums;
    text-align: right;
}

.ce-hit-main {
    min-width: 0;
}

.ce-hit-main a {
    color: var(--text-link);
    display: block;
    font-size: 0.88rem;
    line-height: 1.25;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ce-hit-main span {
    color: var(--text-muted);
    display: block;
    font-size: 0.76rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ce-hit-count {
    color: var(--text-muted);
    font-size: 0.76rem;
    font-variant-numeric: tabular-nums;
}

.ce-entity-row {
    position: relative;
    display: flex;
    justify-content: space-between;
    gap: 0.8rem;
    border: 1px solid var(--border-row);
    border-radius: 6px;
    background: var(--bg-thead);
    color: var(--text-primary);
    cursor: pointer;
    overflow: hidden;
    padding: 0.5rem 0.65rem;
    text-align: left;
}

.ce-entity-row:hover {
    border-color: var(--accent);
}

.ce-entity-row span,
.ce-entity-row strong {
    position: relative;
    z-index: 1;
}

.ce-entity-row span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ce-entity-row strong {
    color: var(--text-muted);
    font-size: 0.8rem;
    font-variant-numeric: tabular-nums;
}

.ce-entity-row i {
    position: absolute;
    inset: 0 auto 0 0;
    background: rgba(74, 158, 255, 0.13);
}

.ce-loading,
.ce-empty {
    background: var(--bg-card);
    border: 1px solid var(--border-card);
    border-radius: 8px;
    color: var(--text-muted);
    padding: 1rem;
    text-align: center;
}

.ce-empty-small {
    color: var(--text-muted);
    font-size: 0.85rem;
    padding: 0.4rem 0;
}

.ce-list-caption {
    color: var(--text-muted);
    font-size: 0.74rem;
    margin: -0.15rem 0 0.35rem;
}

.ce-expand-list {
    border-top: 1px solid var(--border-row);
    margin-top: 0.45rem;
    padding-top: 0.45rem;
}

.ce-expand-list summary {
    color: var(--text-link);
    cursor: pointer;
    font-size: 0.82rem;
    margin-bottom: 0.45rem;
    user-select: none;
}

.ce-expand-list summary:hover {
    color: var(--accent);
}

.ce-mini-timeline {
    align-items: end;
    background: var(--bg-thead);
    border: 1px solid var(--border-row);
    border-radius: 6px;
    display: flex;
    gap: 1px;
    height: 110px;
    padding: 0.45rem;
}

.ce-mini-timeline span {
    background: var(--accent);
    border-radius: 2px 2px 0 0;
    flex: 1;
    min-width: 2px;
    opacity: 0.85;
}

.ce-mini-timeline-labels {
    color: var(--text-muted);
    display: flex;
    font-size: 0.72rem;
    justify-content: space-between;
    margin: 0.25rem 0 0.65rem;
}

.ce-journal-dynamics {
    border-left: 3px solid var(--accent);
}

.ce-journal-stat-grid {
    margin-bottom: 1rem;
}

.ce-journal-timelines {
    align-items: start;
    margin-bottom: 0.35rem;
}

.ce-journal-slices {
    border-top: 1px solid var(--border-row);
    margin-top: 0.75rem;
    padding-top: 0.4rem;
}

.ce-static-row {
    cursor: default;
}

.ce-static-row:hover {
    background: transparent;
}

.ce-edge-list {
    display: grid;
    gap: 0.55rem;
}

.ce-edge-row {
    align-items: center;
    background: var(--bg-card);
    border: 1px solid var(--border-row);
    border-radius: 6px;
    display: grid;
    gap: 0.65rem;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    padding: 0.65rem;
}

.ce-edge-row a {
    color: var(--text-link);
    display: block;
    font-size: 0.82rem;
    line-height: 1.35;
    text-decoration: none;
}

.ce-edge-row span {
    color: var(--text-muted);
    display: block;
    font-size: 0.72rem;
    margin-top: 0.2rem;
}

.ce-edge-row strong {
    background: var(--bg-summary-active);
    border-radius: 999px;
    color: var(--text-header);
    font-size: 0.75rem;
    padding: 0.25rem 0.45rem;
}

.ce-table-tabs {
    display: grid;
    gap: 0.7rem;
}

.ce-table-tabs summary {
    color: var(--text-link);
    cursor: pointer;
    font-size: 0.88rem;
    margin-bottom: 0.5rem;
}

.ce-table-wrap {
    border: 1px solid var(--border-row);
    border-radius: 6px;
    max-height: 420px;
    overflow: auto;
}

.ce-data-table {
    border-collapse: collapse;
    font-size: 0.82rem;
    width: 100%;
}

.ce-data-table th,
.ce-data-table td {
    border-bottom: 1px solid var(--border-row);
    padding: 0.45rem 0.55rem;
    text-align: left;
    vertical-align: top;
}

.ce-data-table th {
    background: var(--bg-thead);
    color: var(--text-secondary);
    cursor: pointer;
    position: sticky;
    top: 0;
    z-index: 1;
}

.ce-data-table th[data-sort-dir="asc"]::after {
    content: " ↑";
    color: var(--text-link);
}

.ce-data-table th[data-sort-dir="desc"]::after {
    content: " ↓";
    color: var(--text-link);
}

.ce-table-tools {
    align-items: center;
    display: flex;
    gap: 0.6rem;
    justify-content: space-between;
    margin-bottom: 0.45rem;
}

.ce-table-tools input {
    background: var(--bg-input);
    border: 1px solid var(--border-input);
    border-radius: 6px;
    color: var(--text-primary);
    font-size: 0.82rem;
    min-width: 180px;
    padding: 0.38rem 0.55rem;
}

.ce-table-tools span {
    color: var(--text-muted);
    font-size: 0.76rem;
}

@media (max-width: 900px) {
    .ce-network-head {
        grid-template-columns: minmax(0, 1fr) auto;
    }

    .ce-network-head em {
        display: none;
    }

    .ce-network-evidence {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 560px) {
    .ce-network-evidence {
        grid-template-columns: 1fr;
    }

    .ce-table-tools {
        align-items: stretch;
        flex-direction: column;
    }

    .ce-table-tools input {
        width: 100%;
    }
}

.ce-data-table tr {
    cursor: pointer;
}

.ce-data-table tr:hover {
    background: var(--bg-hover-row);
}

.ce-data-table td span {
    color: var(--text-muted);
    display: block;
    font-size: 0.72rem;
    margin-top: 0.12rem;
}

.ce-external-list {
    display: grid;
    gap: 0.45rem;
}

.ce-external-row {
    background: var(--bg-thead);
    border: 1px solid var(--border-row);
    border-radius: 6px;
    color: var(--text-secondary);
    font-size: 0.82rem;
    padding: 0.55rem;
}

.ce-compare-grid {
    display: grid;
    gap: 0.75rem;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin-bottom: 1rem;
}

.ce-compare-card {
    background: var(--bg-thead);
    border: 1px solid var(--border-row);
    border-radius: 6px;
    display: grid;
    gap: 0.55rem;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    padding: 0.75rem;
}

.ce-compare-card h5 {
    grid-column: 1 / -1;
    margin: 0;
    text-transform: none;
}

.ce-compare-card strong {
    color: var(--text-header);
    display: block;
    font-size: 1rem;
}

.ce-compare-card span {
    color: var(--text-muted);
    font-size: 0.72rem;
}

@media (max-width: 980px) {
    .ce-workbench,
    .ce-discovery,
    .ce-compare-grid {
        grid-template-columns: 1fr;
    }

    .ce-facets {
        position: static;
    }
}

.ce-bridge-score {
    align-items: baseline;
    background: var(--bg-summary-active);
    border: 1px solid var(--border-card);
    border-radius: 8px;
    display: flex;
    gap: 0.6rem;
    padding: 0.8rem;
}

.ce-bridge-score strong {
    color: var(--text-header);
    font-size: 1.8rem;
}

.ce-bridge-score span {
    color: var(--text-muted);
    font-size: 0.8rem;
    text-transform: uppercase;
}

/* Table view (cross) */
#table-container {
    background: var(--bg-card);
    border-radius: 8px;
    overflow: hidden;
    box-shadow: var(--shadow-card);
}

table {
    width: 100%;
    border-collapse: collapse;
}

thead th {
    background: var(--bg-thead);
    padding: 0.7rem 0.8rem;
    text-align: left;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    border-bottom: 2px solid var(--border-section);
    position: sticky;
    top: 0;
    z-index: 1;
}

th.sortable {
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
}

th.sortable:hover {
    background: var(--bg-hover-row);
}

th.active-sort {
    color: var(--text-header);
    border-bottom: 2px solid var(--accent);
}

.sort-arrow {
    font-size: 0.65rem;
    margin-left: 4px;
    opacity: 0.35;
}

th.active-sort .sort-arrow {
    opacity: 1;
    color: var(--accent);
}

tbody tr {
    border-bottom: 1px solid var(--border-row);
    transition: background 0.15s, box-shadow 0.15s;
    cursor: pointer;
}

tbody tr:hover {
    background: var(--bg-hover-row);
    box-shadow: inset 3px 0 0 var(--accent);
}

td {
    padding: 0.6rem 0.8rem;
    font-size: 0.88rem;
}

.col-rank {
    width: 50px;
    text-align: center;
    color: var(--text-faint);
}

.col-title {
    min-width: 300px;
}

td.col-title a {
    color: var(--text-link);
    text-decoration: none;
}

td.col-title a:hover {
    text-decoration: underline;
}

.col-authors {
    min-width: 140px;
    color: var(--text-secondary);
}

.col-journal {
    width: 100px;
}

.journal-badge {
    display: inline-block;
    padding: 0.15rem 0.5rem;
    border-radius: 4px;
    font-size: 0.78rem;
    font-weight: 600;
}

.journal-badge.top {
    background: var(--bg-badge-top);
    color: var(--text-badge-top);
}

.journal-badge.tier-a {
    background: var(--bg-badge-tier-a, #f0f7ee);
    color: var(--text-badge-tier-a, #2d6a2e);
}

.journal-badge.tier-b {
    background: var(--bg-badge-other);
    color: var(--text-badge-other);
}

.journal-badge.clickable {
    cursor: pointer;
    transition: filter 0.12s ease;
}

.journal-badge.clickable:hover {
    filter: brightness(0.94);
    text-decoration: underline;
}

.pd-ci-link {
    margin-top: 0.4rem;
    font-size: 0.85rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem 1.2rem;
}

.pd-ci-link a {
    color: var(--accent, #1a6dcc);
    cursor: pointer;
}

.pd-ci-link a:hover {
    text-decoration: underline;
}

.col-year {
    width: 60px;
    text-align: center;
}

.col-citations {
    width: 90px;
    text-align: right;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

.col-cpy {
    width: 75px;
    text-align: right;
    font-variant-numeric: tabular-nums;
    color: var(--text-secondary);
    font-size: 0.88rem;
}

.col-indb {
    width: 85px;
    text-align: right;
    font-variant-numeric: tabular-nums;
    color: var(--text-secondary);
    font-size: 0.88rem;
}

/* Abstract row */
.abstract-row {
    animation: abstractSlideIn 0.2s ease-out;
}

@keyframes abstractSlideIn {
    from { opacity: 0; transform: translateY(-8px); }
    to { opacity: 1; transform: translateY(0); }
}

.abstract-row td {
    padding: 0.4rem 0.8rem 0.8rem 50px;
    background: var(--bg-abstract);
    border-bottom: 2px solid var(--border-section);
    cursor: default;
}

.abstract-text {
    font-size: 0.84rem;
    color: var(--text-secondary);
    line-height: 1.6;
    max-width: 800px;
}

.abstract-authors {
    font-size: 0.85rem;
    color: var(--text-primary);
    margin-bottom: 0.5rem;
    line-height: 1.5;
}

.abstract-label {
    font-weight: 600;
    color: var(--text-primary);
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.3px;
    margin-bottom: 0.3rem;
}

.abstract-meta {
    font-size: 0.82rem;
    color: var(--text-muted);
    margin-bottom: 0.5rem;
    line-height: 1.6;
}

.abstract-meta a {
    color: var(--text-link);
    text-decoration: none;
}

.abstract-meta a:hover {
    text-decoration: underline;
}

.no-abstract {
    color: var(--text-faint);
    font-style: italic;
    font-size: 0.84rem;
}

/* Pagination */
.pagination {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
    padding: 1rem;
}

.pagination button {
    padding: 0.4rem 0.8rem;
    border: 1px solid var(--border-light);
    border-radius: 6px;
    background: var(--bg-card);
    color: var(--text-primary);
    cursor: pointer;
    font-size: 0.85rem;
}

.pagination button:hover {
    background: var(--bg-hover-row);
}

.pagination button.active {
    background: var(--bg-pagination-active);
    color: #fff;
    border-color: var(--bg-pagination-active);
}

.pagination button:disabled {
    opacity: 0.4;
    cursor: default;
}

.page-info {
    font-size: 0.85rem;
    color: var(--text-muted);
}

/* By Journal view */
.journal-cards {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
}

.journal-card {
    background: var(--bg-card);
    border-radius: 8px;
    box-shadow: var(--shadow-card);
    overflow: hidden;
}

.journal-card-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 1.5rem;
    background: var(--bg-thead);
    border-bottom: 2px solid var(--border-section);
}

.journal-card-header h2 {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--text-header);
    display: flex;
    align-items: center;
    gap: 0.6rem;
}

.journal-card-stats {
    display: flex;
    gap: 1.2rem;
    font-size: 0.82rem;
    color: var(--text-muted);
}

.journal-card-stats span {
    white-space: nowrap;
}

.journal-card-stats strong {
    color: var(--text-primary);
}

.journal-card table {
    width: 100%;
    border-collapse: collapse;
}

.journal-card thead th {
    position: static;
    font-size: 0.75rem;
    padding: 0.5rem 0.8rem;
}

.journal-card tbody td {
    font-size: 0.85rem;
    padding: 0.5rem 0.8rem;
}

.journal-card .col-rank {
    width: 40px;
}

.show-more-row td {
    text-align: center;
    padding: 0.6rem;
}

.show-more-btn {
    background: none;
    border: 1px solid var(--border-light);
    border-radius: 6px;
    padding: 0.3rem 1rem;
    cursor: pointer;
    font-size: 0.82rem;
    color: var(--text-link);
}

.show-more-btn:hover {
    background: var(--bg-summary-active);
}

/* By Year view */
.year-overview {
    background: var(--bg-card);
    border-radius: 8px;
    box-shadow: var(--shadow-card);
    padding: 1.5rem;
    margin-bottom: 1.5rem;
}

.year-overview h2 {
    font-size: 1rem;
    font-weight: 600;
    color: var(--text-header);
    margin-bottom: 1rem;
}

.decade-groups {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
}

.decade-card {
    background: var(--bg-card);
    border-radius: 8px;
    box-shadow: var(--shadow-card);
    overflow: hidden;
}

.decade-card-header {
    padding: 0.8rem 1.5rem;
    background: var(--bg-thead);
    border-bottom: 2px solid var(--border-section);
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.decade-card-header h3 {
    font-size: 1rem;
    font-weight: 700;
    color: var(--text-header);
}

.decade-card-header .decade-stats {
    font-size: 0.82rem;
    color: var(--text-muted);
}

.decade-card table {
    width: 100%;
    border-collapse: collapse;
}

.decade-card thead th {
    position: static;
    font-size: 0.75rem;
    padding: 0.5rem 0.8rem;
}

.decade-card tbody td {
    font-size: 0.85rem;
    padding: 0.5rem 0.8rem;
}

/* Journal Lists view */
.lists-header {
    text-align: center;
    margin-bottom: 1.2rem;
}

.lists-header h2 {
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--text-header);
}

.lists-subtitle {
    color: var(--text-muted);
    font-size: 0.9rem;
    margin-top: 0.3rem;
}

.lists-controls {
    background: var(--bg-card);
    border-radius: 8px;
    padding: 0.8rem 1.2rem;
    margin-bottom: 1rem;
    box-shadow: var(--shadow-card);
}

.lists-filter-row {
    display: flex;
    align-items: center;
    gap: 1.2rem;
    flex-wrap: wrap;
}

.lists-filter-group {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.lists-filter-group label {
    font-size: 0.85rem;
    color: var(--text-muted);
    white-space: nowrap;
}

.lists-filter-group select {
    padding: 0.4rem 0.6rem;
    border: 1px solid var(--border-light);
    border-radius: 6px;
    font-size: 0.85rem;
    background: var(--bg-input);
    color: var(--text-primary);
    outline: none;
}

.lists-count {
    margin-left: auto;
    font-size: 0.85rem;
    color: var(--text-muted);
}

.lists-summary-cards {
    display: flex;
    gap: 0.8rem;
    margin-bottom: 1.2rem;
    flex-wrap: wrap;
}

.summary-card {
    flex: 1;
    min-width: 100px;
    background: var(--bg-card);
    border-radius: 8px;
    padding: 1rem;
    text-align: center;
    box-shadow: var(--shadow-card);
    cursor: pointer;
    transition: all 0.2s;
    border: 2px solid transparent;
}

.summary-card:hover {
    border-color: var(--accent);
    transform: translateY(-1px);
}

.summary-card.active {
    border-color: var(--accent);
    background: var(--bg-summary-active);
}

.summary-card-value {
    font-size: 1.6rem;
    font-weight: 700;
    color: var(--text-header);
}

.summary-card-label {
    font-size: 0.78rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-top: 0.2rem;
}

.summary-card.abs-group {
    cursor: default;
    flex: 1.5;
    padding: 0.6rem 1rem;
}

.summary-card.abs-group:hover {
    border-color: transparent;
    transform: none;
}

.abs-group-title {
    margin-bottom: 0.4rem;
}

.abs-tiers {
    display: flex;
    gap: 0.4rem;
    justify-content: center;
}

.abs-tier {
    flex: 1;
    padding: 0.35rem 0.3rem;
    border-radius: 6px;
    cursor: pointer;
    text-align: center;
    transition: all 0.2s;
    border: 1.5px solid var(--border-card);
    background: var(--bg-abs-tier);
}

.abs-tier:hover {
    border-color: var(--accent);
    background: var(--bg-summary-active);
}

.abs-tier.active {
    border-color: var(--accent);
    background: var(--bg-abs-tier-active);
}

.abs-tier-value {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--text-header);
    display: block;
}

.abs-tier-label {
    font-size: 0.68rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

.lists-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
}

.discipline-heading {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--text-header);
    margin-bottom: 0.8rem;
    padding-bottom: 0.4rem;
    border-bottom: 2px solid var(--border-section);
}

.disc-count {
    font-weight: 400;
    color: var(--text-faint);
    font-size: 0.9rem;
}

.journal-list-cards {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 0.7rem;
}

.journal-list-card {
    background: var(--bg-card);
    border-radius: 8px;
    padding: 0.9rem 1.1rem;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
    border-left: 3px solid var(--border-light);
    transition: all 0.15s;
}

.journal-list-card.has-data {
    border-left-color: var(--accent);
}

.journal-list-card:hover {
    box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}

.jl-card-top {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.3rem;
}

.jl-card-name {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--text-header);
}

.jl-card-name a {
    color: var(--text-link);
    text-decoration: none;
}

.jl-card-name a:hover {
    text-decoration: underline;
}

.jl-card-badges {
    display: flex;
    gap: 0.3rem;
    flex-wrap: wrap;
}

.list-badge {
    display: inline-block;
    padding: 0.12rem 0.45rem;
    border-radius: 4px;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.3px;
    white-space: nowrap;
}

.list-badge.utd {
    background: var(--badge-utd-bg);
    color: var(--badge-utd-text);
}

.list-badge.ft {
    background: var(--badge-ft-bg);
    color: var(--badge-ft-text);
}

.list-badge.abs {
    background: var(--badge-abs-bg);
    color: var(--badge-abs-text);
}

.list-badge.abs-4star {
    background: var(--badge-abs4star-bg);
    color: var(--badge-abs4star-text);
    font-weight: 700;
}

.list-badge.abs-3 {
    background: var(--bg-badge-other);
    color: var(--text-badge-other);
}

.jl-card-full {
    font-size: 0.82rem;
    color: var(--text-muted);
    margin-bottom: 0.3rem;
}

.jl-card-meta {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    font-size: 0.75rem;
}

.jl-subfield {
    color: var(--text-faint);
}

.jl-data-tag {
    color: var(--accent);
    font-weight: 500;
}

.jl-card-details {
    margin-top: 0.6rem;
    padding-top: 0.6rem;
    border-top: 1px solid var(--border-row);
}

.jl-card-info {
    margin-bottom: 0.5rem;
}

.jl-info-row {
    display: flex;
    gap: 0.5rem;
    font-size: 0.78rem;
    line-height: 1.5;
}

.jl-info-label {
    color: var(--text-faint);
    min-width: 70px;
    flex-shrink: 0;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.jl-info-value {
    color: var(--text-secondary);
}

.jl-card-metrics {
    display: flex;
    gap: 0.8rem;
    flex-wrap: wrap;
    margin: 0.5rem 0;
}

.jl-metric {
    text-align: center;
    background: var(--bg-metric);
    border-radius: 6px;
    padding: 0.35rem 0.6rem;
    min-width: 70px;
}

.jl-metric-value {
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--text-primary);
}

.jl-metric-label {
    font-size: 0.65rem;
    color: var(--text-faint);
    text-transform: uppercase;
    letter-spacing: 0.02em;
}

.jl-card-links {
    display: flex;
    gap: 0.6rem;
    margin-top: 0.4rem;
}

.jl-link {
    font-size: 0.75rem;
    color: var(--accent);
    text-decoration: none;
    padding: 0.2rem 0.5rem;
    border: 1px solid var(--accent);
    border-radius: 4px;
    transition: background 0.2s, color 0.2s;
}

.jl-link:hover {
    background: var(--accent);
    color: #fff;
}


/* Editorial Board */
.jl-editorial-board {
    margin-top: 0.75rem;
    border-top: 1px solid var(--border-card);
    padding-top: 0.5rem;
}
.jl-eb-toggle {
    display: flex;
    align-items: center;
    cursor: pointer;
    padding: 0.4rem 0;
    user-select: none;
}
.jl-eb-toggle:hover { opacity: 0.7; }
.jl-eb-title {
    font-weight: 600;
    font-size: 0.85rem;
    color: var(--text-primary);
}
.jl-eb-count {
    margin-left: 0.5rem;
    font-size: 0.75rem;
    color: var(--text-muted);
}
.jl-eb-arrow {
    margin-left: auto;
    font-size: 0.7rem;
    color: var(--text-faint);
    transition: transform 0.2s;
}
.jl-eb-content {
    padding: 0.25rem 0 0.5rem;
}
.jl-eb-section {
    margin-bottom: 0.6rem;
}
.jl-eb-role {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--text-secondary);
    margin-bottom: 0.25rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}
.jl-eb-members {
    display: flex;
    flex-wrap: wrap;
    gap: 0.15rem 0.75rem;
}
.jl-eb-member {
    font-size: 0.8rem;
    line-height: 1.5;
}
.jl-eb-name {
    color: var(--text-primary);
}
.jl-eb-affil {
    color: var(--text-muted);
    font-size: 0.72rem;
    margin-left: 0.25rem;
}
.jl-eb-affil::before {
    content: "(";
}
.jl-eb-affil::after {
    content: ")";
}
.jl-eb-source {
    font-size: 0.7rem;
    color: var(--text-faint);
    margin-top: 0.5rem;
    border-top: 1px solid var(--border-row);
    padding-top: 0.35rem;
}
.jl-eb-source a {
    color: var(--accent);
    text-decoration: none;
}

/* Journal card scope & social */
.jl-card-scope {
    font-size: 0.82rem;
    color: var(--text-secondary);
    line-height: 1.4;
    margin: 4px 0 2px;
    font-style: italic;
}
.jl-social-link {
    color: var(--text-link);
    text-decoration: none;
    font-size: 0.85rem;
}
.jl-social-link:hover { text-decoration: underline; }

.jl-eb-linked {
    color: var(--text-link);
    text-decoration: none;
    cursor: pointer;
}
.jl-eb-linked:hover {
    text-decoration: underline;
}

/* Journal detail modal */
.jl-eb-link {
    font-size: 0.85rem;
    margin-top: 4px;
    display: inline-block;
}
.jd-overlay {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(0,0,0,0.5);
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
}
.jd-modal {
    background: var(--bg-card);
    border-radius: 12px;
    max-width: 750px;
    width: 100%;
    max-height: 85vh;
    overflow-y: auto;
    padding: 28px 32px;
    position: relative;
    box-shadow: 0 8px 30px rgba(0,0,0,0.25);
}
.jd-close {
    position: absolute;
    top: 12px; right: 16px;
    background: none;
    border: none;
    font-size: 1.6rem;
    cursor: pointer;
    color: var(--text-muted);
    line-height: 1;
}
.jd-close:hover { color: var(--text-primary); }
.jd-header {
    margin-bottom: 16px;
    font-size: 1.1rem;
    font-weight: 600;
}
.jd-title { margin-left: 6px; }

/* Author views */
.authors-header {
    margin-bottom: 1rem;
}

.authors-header h2 {
    font-size: 1.3rem;
    font-weight: 700;
    color: var(--text-header);
}

.authors-subtitle {
    color: var(--text-muted);
    font-size: 0.88rem;
    margin-top: 0.3rem;
}

.authors-controls {
    background: var(--bg-card);
    border-radius: 8px;
    padding: 1rem 1.5rem;
    margin-bottom: 1rem;
    box-shadow: var(--shadow-card);
}

#authors-table-container {
    background: var(--bg-card);
    border-radius: 8px;
    overflow: hidden;
    box-shadow: var(--shadow-card);
}

.col-author-name {
    min-width: 200px;
}

.col-author-name a {
    color: var(--text-link);
    text-decoration: none;
    font-weight: 500;
}

.col-author-name a:hover {
    text-decoration: underline;
}

.col-papers {
    width: 70px;
}

.col-hindex {
    width: 70px;
}

.col-journals {
    min-width: 120px;
}

.col-years {
    width: 90px;
}

/* Author detail */
.author-detail {
    max-width: 1200px;
}

.author-detail-header {
    margin-bottom: 1.5rem;
}

.author-detail-header h2 {
    font-size: 1.6rem;
    font-weight: 700;
    color: var(--text-header);
    margin-top: 0.5rem;
}

.back-btn {
    background: none;
    border: 1px solid var(--border-light);
    border-radius: 6px;
    padding: 0.4rem 1rem;
    cursor: pointer;
    font-size: 0.85rem;
    color: var(--text-link);
}

.back-btn:hover {
    background: var(--bg-summary-active);
}

.author-stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.author-stat {
    background: var(--bg-card);
    border-radius: 8px;
    padding: 1rem;
    text-align: center;
    box-shadow: var(--shadow-card);
}

.author-stat .stat-value {
    font-size: 1.3rem;
    font-weight: 700;
    color: var(--text-header);
    display: block;
    font-variant-numeric: tabular-nums;
}

.author-stat .stat-label {
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-muted);
}

.author-section {
    background: var(--bg-card);
    border-radius: 8px;
    box-shadow: var(--shadow-card);
    padding: 1.5rem;
    margin-bottom: 1.5rem;
}

.author-section h3 {
    font-size: 1rem;
    font-weight: 600;
    color: var(--text-header);
    margin-bottom: 1rem;
}

.journal-dist {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.journal-dist-row {
    display: flex;
    align-items: center;
    gap: 0.8rem;
}

.journal-dist-name {
    width: 120px;
    flex-shrink: 0;
    text-align: right;
}

.journal-dist-bar-bg {
    flex: 1;
    height: 20px;
    background: var(--bg-badge-other);
    border-radius: 4px;
    overflow: hidden;
}

.journal-dist-bar {
    height: 100%;
    background: var(--accent);
    border-radius: 4px;
    min-width: 2px;
}

.journal-dist-count {
    width: 30px;
    text-align: right;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--text-secondary);
}

.author-section table {
    width: 100%;
    border-collapse: collapse;
}

.author-section thead th {
    position: static;
}

/* Footer */
footer {
    text-align: center;
    padding: 2rem;
    color: var(--text-faint);
    font-size: 0.82rem;
}

/* ---- Detail Views: Timeline Chart ---- */
.timeline-chart {
    padding: 0.5rem 0;
}
.tl-bars {
    display: flex;
    align-items: flex-end;
    height: 100px;
    gap: 1px;
    padding: 0 2px;
    border-bottom: 1px solid var(--border-light);
}
.tl-bar-wrap {
    flex: 1;
    height: 100%;
    display: flex;
    align-items: flex-end;
    cursor: pointer;
}
.tl-bar {
    width: 100%;
    background: var(--text-link);
    border-radius: 1px 1px 0 0;
    transition: background 0.15s;
}
.tl-bar-wrap:hover .tl-bar {
    background: var(--accent-hover);
}
.tl-labels {
    display: flex;
    justify-content: space-between;
    font-size: 0.75rem;
    color: var(--text-faint);
    padding: 2px 2px 0;
}
.tl-toggle {
    display: flex;
    gap: 4px;
    margin-bottom: 0.5rem;
}
.tl-btn {
    padding: 3px 10px;
    font-size: 0.78rem;
    border: 1px solid var(--border-light);
    background: var(--bg-card);
    border-radius: 4px;
    cursor: pointer;
    color: var(--text-secondary);
    transition: all 0.15s;
}
.tl-btn.active {
    background: var(--bg-tl-btn-active);
    color: #fff;
    border-color: var(--bg-tl-btn-active);
}
.tl-btn:hover:not(.active) {
    background: var(--bg-hover-row);
}

/* ---- Detail Views: Two-Column Layout ---- */
.detail-two-col {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.5rem;
    margin-bottom: 1rem;
}

.detail-col {
    min-width: 0;
}

/* ---- Detail Views: Institution Tags ---- */
.inst-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.inst-tag {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 10px;
    background: var(--bg-inst-tag);
    border: 1px solid var(--border-inst-tag);
    border-radius: 12px;
    font-size: 0.82rem;
    color: var(--text-secondary);
    text-decoration: none;
    transition: all 0.15s;
}
.inst-tag:hover {
    background: var(--bg-summary-active);
    border-color: var(--accent);
    color: var(--text-link);
}
.inst-tag-count {
    font-size: 0.72rem;
    color: var(--text-faint);
    font-weight: 500;
}

/* ---- Detail Views: Top Authors List ---- */
.top-authors-list {
    display: flex;
    flex-direction: column;
    gap: 4px;
    max-height: 180px;
    overflow-y: auto;
}
.top-author-row {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 3px 4px;
    font-size: 0.85rem;
    border-radius: 4px;
}
.top-author-row:hover {
    background: var(--bg-hover-row);
}
.top-author-rank {
    color: var(--text-faint);
    font-size: 0.75rem;
    min-width: 1.5em;
    text-align: right;
}
.top-author-name {
    flex: 1;
    color: var(--text-link);
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.top-author-name:hover {
    text-decoration: underline;
}
.top-author-stat {
    font-size: 0.75rem;
    color: var(--text-muted);
    white-space: nowrap;
}

/* ---- Detail Views: Paper Filters ---- */
.detail-filters {
    margin-bottom: 0.75rem;
}
.detail-filters .control-row {
    display: flex;
    gap: 0.8rem;
    align-items: center;
    flex-wrap: wrap;
}
.detail-filters .search-box {
    flex: 1;
    min-width: 150px;
}
.detail-filters .search-box input {
    width: 100%;
    padding: 6px 10px;
    border: 1px solid var(--border-light);
    border-radius: 4px;
    font-size: 0.85rem;
    background: var(--bg-input);
    color: var(--text-primary);
}
.detail-filters .filter-group {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 0.85rem;
}
.detail-filters .filter-group label {
    color: var(--text-muted);
    font-size: 0.8rem;
}
.detail-filters .filter-group select {
    padding: 5px 8px;
    border: 1px solid var(--border-light);
    border-radius: 4px;
    font-size: 0.83rem;
    background: var(--bg-input);
    color: var(--text-primary);
}
.section-count {
    font-weight: normal;
    color: var(--text-faint);
    font-size: 0.9rem;
}


/* === Search Highlight === */
mark.search-highlight {
    background: var(--bg-search-highlight);
    color: inherit;
    padding: 0 1px;
    border-radius: 2px;
}

/* === Export Buttons === */
.export-row {
    display: flex;
    gap: 0.5rem;
    margin-top: 0.5rem;
    flex-wrap: wrap;
}
.export-btn {
    background: var(--bg-export-btn);
    border: 1px solid var(--border-export);
    padding: 0.35rem 0.75rem;
    border-radius: 6px;
    font-size: 0.82rem;
    cursor: pointer;
    transition: all 0.15s;
    color: var(--text-secondary);
}
.export-btn:hover {
    background: var(--bg-hover-row);
    border-color: var(--text-muted);
}
.export-btn.copied {
    background: #dcfce7;
    border-color: #86efac;
    color: #166534;
}

/* === Sort Arrow Indicators === */
th.sortable .sort-arrow {
    display: inline-block;
    width: 1em;
    text-align: center;
    opacity: 0.3;
    font-size: 0.75em;
    margin-left: 2px;
}
th.sortable.active-sort .sort-arrow {
    opacity: 1;
}

/* === Toast Notification === */
.toast {
    position: fixed;
    bottom: 2rem;
    left: 50%;
    transform: translateX(-50%) translateY(100px);
    background: var(--bg-toast);
    color: white;
    padding: 0.75rem 1.5rem;
    border-radius: 8px;
    font-size: 0.9rem;
    z-index: 9999;
    opacity: 0;
    transition: all 0.3s ease;
    pointer-events: none;
}
.toast.show {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}

/* === Institutions table container === */
#institutions-table-container {
    background: var(--bg-card);
    border-radius: 8px;
    overflow: hidden;
    box-shadow: var(--shadow-card);
}

/* === Mobile Responsive === */
@media (max-width: 768px) {
    .ce-header,
    .ce-entity-header {
        align-items: stretch;
        flex-direction: column;
    }

    .ce-mode-tabs,
    .ce-controls {
        width: 100%;
    }

    .ce-mode-tabs {
        display: grid;
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .ce-controls > *,
    .ce-search-box {
        width: 100%;
        min-width: 0;
    }

    .ce-stat-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .ce-two-col,
    .ce-grid,
    .ce-three-col,
    .ce-intro-grid,
    .ce-intro-panels {
        grid-template-columns: 1fr;
    }

    .ce-hit {
        grid-template-columns: 24px minmax(0, 1fr);
    }

    .ce-hit-count {
        grid-column: 2;
    }

    header .header-content {
        padding: 1rem;
    }
    header h1 {
        font-size: 1.5rem;
    }
    .subtitle {
        font-size: 0.85rem;
    }
    .header-right {
        position: static;
        transform: none;
        justify-content: center;
        margin-top: 0.5rem;
    }
    .stats-bar {
        flex-wrap: wrap;
        gap: 0.5rem;
        padding: 0.75rem;
    }
    .stats-bar .stat-item {
        font-size: 0.8rem;
    }
    #nav-tabs {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        white-space: nowrap;
        padding: 0 0.5rem;
    }
    #nav-tabs .tab {
        font-size: 0.82rem;
        padding: 0.5rem 0.75rem;
        flex-shrink: 0;
        min-height: 44px;
    }
    .controls {
        padding: 0.75rem;
    }
    .control-row {
        flex-direction: column;
        gap: 0.5rem;
    }
    .search-box {
        width: 100%;
    }
    .search-box input {
        width: 100%;
    }
    .filter-group {
        width: 100%;
    }
    .filter-group select, .filter-group input {
        width: 100%;
        max-width: none;
    }
    .export-row {
        justify-content: stretch;
    }
    .export-btn {
        flex: 1;
        text-align: center;
    }
    /* Table mobile: hide less important columns */
    #papers-table .col-rank {
        display: none;
    }
    .col-authors {
        max-width: 100px;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }
    .col-journal {
        max-width: 70px;
    }
    .col-title {
        max-width: none;
        min-width: 150px;
    }
    .col-year {
        font-size: 0.8rem;
    }
    .col-citations {
        font-size: 0.8rem;
    }
    .col-cpy {
        display: none;
    }
    .col-indb {
        display: none;
    }
    main {
        padding: 0;
    }
    #table-container {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
    .journal-cards, .decade-groups {
        padding: 0 0.5rem;
    }
    .journal-card, .decade-card {
        margin: 0.5rem 0;
        overflow-x: auto;
    }
    .pagination {
        flex-wrap: wrap;
        justify-content: center;
    }
    .abstract-row td {
        padding: 0.75rem !important;
    }
    .abstract-text {
        font-size: 0.85rem;
        line-height: 1.5;
    }
    footer {
        padding: 1rem;
        font-size: 0.8rem;
    }
    /* Lists view mobile */
    .lists-summary-cards {
        flex-wrap: wrap;
        gap: 0.5rem;
    }
    .summary-card {
        min-width: 70px;
        padding: 0.7rem 0.5rem;
    }
    .summary-card-value {
        font-size: 1.2rem;
    }
    .journal-list-cards {
        grid-template-columns: 1fr !important;
    }
    .lists-filter-row {
        flex-direction: column;
        align-items: stretch;
    }
    .lists-count {
        margin-left: 0;
    }
    /* Authors / Institutions mobile */
    .authors-controls .control-row {
        flex-direction: column;
    }
    /* Detail two-col */
    .detail-two-col {
        grid-template-columns: 1fr;
    }
    .journal-card-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.5rem;
    }
}

@media (max-width: 480px) {
    #papers-table .col-journal {
        display: none;
    }
    .col-authors {
        max-width: 80px;
    }
}

/* === Loading skeleton === */
.skeleton-row td {
    padding: 0.8rem;
}

.skeleton-line {
    height: 16px;
    background: linear-gradient(90deg, var(--bg-thead) 25%, var(--bg-hover-row) 50%, var(--bg-thead) 75%);
    background-size: 200% 100%;
    animation: shimmer 1.5s infinite;
    border-radius: 4px;
    width: 80%;
}

.skeleton-row:nth-child(even) .skeleton-line { width: 65%; }
.skeleton-row:nth-child(3n) .skeleton-line { width: 90%; }

@keyframes shimmer {
    0% { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* === Loading progress bar === */
.load-progress {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 3px;
    z-index: 9999;
    background: transparent;
    pointer-events: none;
    opacity: 1;
    transition: opacity 0.4s;
}

.load-progress.done {
    opacity: 0;
}

.load-progress-bar {
    height: 100%;
    width: 0%;
    background: var(--accent);
    transition: width 0.3s ease;
    border-radius: 0 2px 2px 0;
}

/* === Empty state === */
.empty-state {
    text-align: center;
    padding: 3rem 1rem;
    color: var(--text-muted);
}

.empty-state-icon {
    font-size: 2.5rem;
    margin-bottom: 0.8rem;
    opacity: 0.5;
}

.empty-state-title {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--text-secondary);
    margin-bottom: 0.3rem;
}

.empty-state-hint {
    font-size: 0.85rem;
}

/* === Keyboard hints in footer === */
.keyboard-hints {
    font-size: 0.75rem;
    color: var(--text-muted);
    margin-top: 0.3rem;
}

.keyboard-hints kbd {
    font-size: 0.7rem;
    padding: 1px 5px;
    border: 1px solid var(--border-light);
    border-radius: 3px;
    background: var(--bg-thead);
    color: var(--text-secondary);
    font-family: inherit;
}

/* === Stats bar filter context === */
.stats-filter-context {
    color: var(--text-muted);
    font-size: 0.85rem;
}

/* === Author field/keyword tags === */
.author-tags-section {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
    padding: 0.5rem 0;
}

.author-tags-group {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    flex-wrap: wrap;
}

.tags-label {
    font-size: 0.82rem;
    color: var(--text-secondary);
    font-weight: 500;
}

.field-tag {
    display: inline-block;
    font-size: 0.75rem;
    padding: 2px 8px;
    border-radius: 10px;
    background: #e0e7ff;
    color: #3730a3;
    font-weight: 500;
}

.keyword-tag {
    display: inline-block;
    font-size: 0.73rem;
    padding: 2px 7px;
    border-radius: 10px;
    background: #f0fdf4;
    color: #166534;
    border: 1px solid #bbf7d0;
}

.field-tag-sm {
    display: inline-block;
    font-size: 0.65rem;
    padding: 1px 5px;
    border-radius: 8px;
    background: #e0e7ff;
    color: #3730a3;
    margin-right: 2px;
}

.author-field-badges {
    margin-top: 2px;
}

/* === Coauthor institution in detail view === */
.coauthor-inst {
    font-size: 0.75rem;
    color: var(--text-muted);
    max-width: 180px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ===== Enrichment Views (Trending, Cross-Discipline) ===== */
.enrichment-view {
    max-width: 1200px;
    margin: 0 auto;
    padding: 1.5rem 0;
}
.ev-title {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 0.25rem;
}
.ev-subtitle {
    color: var(--text-secondary);
    font-size: 0.95rem;
    margin: 0 0 1.5rem;
}
.ev-section {
    margin-bottom: 2.5rem;
}
.ev-section-title {
    font-size: 1.15rem;
    font-weight: 600;
    color: var(--text-primary);
    margin: 0 0 1rem;
    padding-bottom: 0.5rem;
    border-bottom: 2px solid var(--border);
}
.ev-note {
    color: var(--text-secondary);
    font-size: 0.85rem;
    margin: -0.5rem 0 1rem;
}

/* Cross-discipline workbench */
.cd-workbench {
    max-width: 1320px;
    min-width: 0;
}
.cd-header,
.cd-controls,
.cd-grid,
.cd-query-grid,
.cd-score-grid,
.cd-facets {
    display: grid;
    gap: 1rem;
}
.cd-header {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
}
.cd-api-status {
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: 0.35rem 0.6rem;
    font-size: 0.78rem;
    color: var(--text-secondary);
    background: var(--card-bg);
    white-space: nowrap;
}
.cd-api-status.online {
    border-color: #059669;
    color: #047857;
}
.cd-controls {
    grid-template-columns: 180px 180px minmax(240px, 1fr) auto auto auto;
    align-items: end;
    margin-bottom: 1rem;
}
.cd-controls label,
.cd-query-grid label {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    min-width: 0;
}
.cd-controls span,
.cd-query-grid span {
    font-size: 0.78rem;
    color: var(--text-secondary);
    font-weight: 600;
}
.cd-controls select,
.cd-controls input,
.cd-query-grid select,
.cd-query-grid input {
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--card-bg);
    color: var(--text-primary);
    padding: 0.48rem 0.55rem;
    font-size: 0.86rem;
    min-width: 0;
}
.cd-controls button,
.cd-query-grid button,
.cd-op-open {
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--card-bg);
    color: var(--text-primary);
    padding: 0.48rem 0.7rem;
    font-size: 0.84rem;
    cursor: pointer;
    white-space: nowrap;
}
.cd-controls button:hover,
.cd-query-grid button:hover,
.cd-op-open:hover {
    border-color: var(--accent);
    color: var(--accent-hover);
}
.cd-grid {
    grid-template-columns: minmax(420px, 1fr) minmax(360px, 0.9fr);
    align-items: start;
}
.cd-panel {
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--card-bg);
    padding: 1rem;
    margin-bottom: 1rem;
    min-width: 0;
}
.cd-panel h3 {
    margin: 0 0 0.75rem;
    font-size: 1rem;
    color: var(--text-primary);
}
.cd-matrix-wrap {
    overflow-x: auto;
    max-width: 100%;
    -webkit-overflow-scrolling: touch;
}
.cd-matrix {
    width: 100%;
    min-width: 720px;
    border-collapse: separate;
    border-spacing: 3px;
    font-size: 0.75rem;
}
.cd-matrix th {
    color: var(--text-secondary);
    font-weight: 600;
    white-space: nowrap;
    max-width: 74px;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cd-matrix td {
    padding: 0;
}
.cd-cell {
    width: 100%;
    min-width: 38px;
    height: 30px;
    border: 1px solid transparent;
    border-radius: 4px;
    color: #111827;
    font-size: 0.68rem;
    font-variant-numeric: tabular-nums;
    cursor: pointer;
}
.cd-cell.active {
    outline: 2px solid var(--accent);
    outline-offset: 1px;
}
.cd-diag {
    background: var(--bg-secondary);
    opacity: 0.45;
    border-radius: 4px;
}
.cd-s0 { background: var(--bg-secondary); color: var(--text-muted); }
.cd-s1 { background: #eef2f7; }
.cd-s2 { background: #d7dde6; }
.cd-s3 { background: #b5bdca; }
.cd-s4 { background: #8792a3; color: #fff; }
.cd-s5 { background: #4b5563; color: #fff; }
.cd-legend {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    margin-top: 0.5rem;
    color: var(--text-muted);
    font-size: 0.76rem;
}
.cd-legend i {
    width: 20px;
    height: 8px;
    border-radius: 3px;
    display: inline-block;
}
.cd-pair-title {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
    align-items: center;
    margin-bottom: 0.75rem;
}
.cd-pair-title strong {
    color: var(--text-primary);
}
.cd-pair-title span {
    font-size: 0.78rem;
    color: var(--text-secondary);
    text-transform: capitalize;
}
.cd-score-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}
.cd-metric {
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: 0.55rem;
}
.cd-metric strong {
    display: block;
    color: var(--text-primary);
    font-size: 1.05rem;
    font-variant-numeric: tabular-nums;
}
.cd-metric span {
    display: block;
    color: var(--text-secondary);
    font-size: 0.72rem;
    margin-bottom: 0.35rem;
}
.cd-metric i {
    display: block;
    height: 4px;
    background: var(--bg-secondary);
    border-radius: 3px;
    overflow: hidden;
}
.cd-metric b {
    display: block;
    height: 100%;
    background: var(--accent);
}
.cd-detail-tabs {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
    margin-top: 1rem;
}
.cd-detail-tabs h4,
.cd-facets h4 {
    margin: 0 0 0.45rem;
    color: var(--text-secondary);
    font-size: 0.82rem;
}
.cd-topic-list {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}
.cd-topic {
    border: 1px solid var(--border);
    border-radius: 999px;
    background: var(--bg-secondary);
    color: var(--text-primary);
    padding: 0.25rem 0.55rem;
    font-size: 0.78rem;
    cursor: pointer;
    text-transform: capitalize;
}
.cd-topic span {
    color: var(--text-muted);
    margin-left: 0.35rem;
}
.cd-topic:hover {
    border-color: var(--accent);
}
.cd-paper-list {
    margin: 0;
    padding-left: 1.15rem;
}
.cd-paper-list li {
    margin-bottom: 0.55rem;
}
.cd-paper-link,
.cd-author-row,
.cd-journal-row {
    border: 0;
    background: transparent;
    color: var(--text-primary);
    padding: 0;
    text-align: left;
    cursor: pointer;
    font: inherit;
}
.cd-paper-link:hover,
.cd-author-row:hover span,
.cd-journal-row:hover span {
    color: var(--accent-hover);
    text-decoration: underline;
}
.cd-paper-list li > span {
    display: block;
    color: var(--text-muted);
    font-size: 0.76rem;
    line-height: 1.35;
}
.cd-row-list {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}
.cd-author-row,
.cd-journal-row {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
    border-bottom: 1px solid var(--border);
    padding-bottom: 0.25rem;
}
.cd-author-row strong,
.cd-journal-row strong {
    color: var(--text-muted);
    font-variant-numeric: tabular-nums;
}
.cd-query-grid {
    grid-template-columns: repeat(4, minmax(150px, 1fr)) repeat(4, minmax(110px, 0.75fr));
    align-items: end;
}
.cd-api-note,
.cd-empty,
.cd-empty-small {
    color: var(--text-secondary);
    font-size: 0.84rem;
}
.cd-api-note {
    margin-top: 0.75rem;
    padding: 0.75rem;
    border: 1px dashed var(--border);
    border-radius: 6px;
}
.cd-api-results {
    margin-top: 1rem;
}
.cd-api-summary {
    margin-bottom: 0.75rem;
    color: var(--text-secondary);
}
.cd-api-summary strong {
    color: var(--text-primary);
    font-variant-numeric: tabular-nums;
}
.cd-api-title {
    color: var(--text-primary) !important;
    font-size: 0.88rem !important;
}
.cd-facets {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin-bottom: 1rem;
}
.cd-facets span {
    display: flex;
    justify-content: space-between;
    gap: 0.5rem;
    color: var(--text-secondary);
    font-size: 0.76rem;
    border-bottom: 1px solid var(--border);
    padding: 0.2rem 0;
}
.cd-facets strong {
    color: var(--text-muted);
}
.cd-op-table td:last-child {
    white-space: nowrap;
}
.cd-legacy {
    margin-top: 1rem;
    color: var(--text-secondary);
}
.cd-legacy summary {
    cursor: pointer;
    font-weight: 600;
    margin-bottom: 1rem;
}
@media (max-width: 980px) {
    .cd-header,
    .cd-controls,
    .cd-grid,
    .cd-query-grid,
    .cd-detail-tabs,
    .cd-facets {
        grid-template-columns: 1fr;
    }
    .cd-score-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .cd-controls button,
    .cd-query-grid button {
        width: 100%;
    }
    .cd-workbench,
    .cd-panel {
        width: 100%;
    }
}

/* Trending cards */
.trending-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
    gap: 0.75rem;
}
.trending-card {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.75rem 1rem;
    background: var(--card-bg);
    border: 1px solid var(--border);
    border-radius: 8px;
}
.trending-card.clickable, .kw-chip.clickable, tr.clickable {
    cursor: pointer;
}
.trending-card.clickable:hover {
    border-color: var(--accent);
    box-shadow: 0 2px 8px rgba(37,99,235,0.1);
}
tr.clickable:hover td {
    background: rgba(37,99,235,0.06);
}
.kw-chip.clickable:hover {
    background: var(--accent);
    color: #fff;
}
.trending-link-icon {
    font-size: 0.75rem;
    opacity: 0.3;
    margin-left: 2px;
    transition: opacity 0.15s;
}
.clickable:hover .trending-link-icon {
    opacity: 0.8;
}
/* Trending filter controls */
.trending-controls {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin: 0.75rem 0 1rem;
    flex-wrap: wrap;
}
.trending-filter-label {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--text-secondary);
}
.trending-filter-select {
    padding: 0.4rem 0.75rem;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--card-bg);
    color: var(--text-primary);
    font-size: 0.88rem;
    min-width: 180px;
    cursor: pointer;
}
.trending-filter-select:focus {
    outline: none;
    border-color: var(--accent);
}
.trending-rank {
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--text-secondary);
    min-width: 24px;
    text-align: center;
    padding-top: 2px;
}
.trending-info {
    flex: 1;
    min-width: 0;
}
.trending-keyword {
    font-weight: 600;
    font-size: 0.95rem;
    color: var(--text-primary);
    text-transform: capitalize;
    margin-bottom: 0.35rem;
}
.trending-bar-container {
    height: 6px;
    background: var(--bg-secondary);
    border-radius: 3px;
    margin-bottom: 0.3rem;
    overflow: hidden;
}
.trending-bar {
    height: 100%;
    border-radius: 3px;
    transition: width 0.5s ease;
}
.rising-bar { background: #059669; }
.declining-bar { background: #dc2626; }
.trending-stats {
    font-size: 0.82rem;
    color: var(--text-secondary);
}
.trending-growth {
    color: #059669;
    font-weight: 600;
}
.trending-decline {
    color: #dc2626;
    font-weight: 600;
}
.trending-counts {
    font-variant-numeric: tabular-nums;
}

/* Discipline keyword cards */
.disc-kw-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 1rem;
}
.disc-kw-card {
    background: var(--card-bg);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 1rem;
}
.disc-kw-title {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--text-primary);
    margin: 0 0 0.75rem;
}
.disc-kw-list {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}
.kw-chip {
    display: inline-block;
    padding: 0.2rem 0.5rem;
    background: var(--bg-secondary);
    border-radius: 12px;
    font-size: 0.78rem;
    color: var(--text-secondary);
    text-transform: capitalize;
}
.kw-chip small {
    opacity: 0.7;
}

/* Discipline overview table */
.disc-table-wrapper, .cross-kw-table-wrapper {
    overflow-x: auto;
    border-radius: 8px;
    border: 1px solid var(--border);
}
.disc-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}
.disc-table th {
    background: var(--bg-secondary);
    padding: 0.6rem 0.75rem;
    text-align: left;
    font-weight: 600;
    font-size: 0.82rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--text-secondary);
    border-bottom: 2px solid var(--border);
    white-space: nowrap;
}
.disc-table td {
    padding: 0.55rem 0.75rem;
    border-bottom: 1px solid var(--border);
    color: var(--text-primary);
}
.disc-table td.num {
    text-align: right;
    font-variant-numeric: tabular-nums;
}
.disc-table td.disc-name, .disc-table td.kw-name {
    font-weight: 600;
    text-transform: capitalize;
}
.disc-table td.heat {
    font-size: 0.82rem;
    text-align: center;
    min-width: 40px;
}
.disc-table th.disc-col {
    text-align: center;
    min-width: 40px;
    padding: 0.6rem 0.4rem;
}

/* Discipline trend chart */
.disc-trend-chart {
    background: var(--card-bg);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 1.25rem;
}
.disc-trend-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin-bottom: 1rem;
    font-size: 0.82rem;
    color: var(--text-secondary);
}
.legend-item {
    display: flex;
    align-items: center;
    gap: 0.3rem;
}
.legend-dot {
    width: 10px;
    height: 10px;
    border-radius: 2px;
    display: inline-block;
}
.disc-trend-bars {
    display: flex;
    align-items: flex-end;
    gap: 1.5rem;
    height: 150px;
    padding-top: 10px;
    overflow-x: auto;
}
.decade-group {
    display: flex;
    flex-direction: column;
    align-items: center;
    min-width: 70px;
}
.decade-bars {
    display: flex;
    align-items: flex-end;
    gap: 2px;
    height: 130px;
}
.decade-bar {
    width: 8px;
    border-radius: 2px 2px 0 0;
    min-height: 2px;
    cursor: default;
}
.decade-label {
    font-size: 0.75rem;
    color: var(--text-secondary);
    margin-top: 0.35rem;
    text-align: center;
}

/* ===== Mobile card layout for papers (<=600px) ===== */
@media (max-width: 600px) {
    #papers-table thead { display: none; }
    #papers-table tbody tr:not(.abstract-row) {
        display: block;
        padding: 0.75rem;
        margin-bottom: 0.5rem;
        border: 1px solid var(--border);
        border-radius: 8px;
        background: var(--card-bg);
    }
    #papers-table tbody tr:not(.abstract-row) td {
        display: block;
        padding: 0.15rem 0;
        border: none;
        text-align: left !important;
    }
    #papers-table .col-rank { display: none; }
    #papers-table .col-cpy { display: none; }
    #papers-table .col-indb { display: none; }
    #papers-table .col-title {
        font-size: 0.95rem;
        font-weight: 600;
        max-width: none;
        white-space: normal;
        margin-bottom: 0.3rem;
    }
    #papers-table .col-authors {
        max-width: none;
        white-space: normal;
        font-size: 0.85rem;
        color: var(--text-secondary);
    }
    #papers-table .col-journal {
        display: inline-block;
    }
    #papers-table .col-year {
        display: inline-block;
        margin-left: 0.5rem;
    }
    #papers-table .col-citations {
        display: inline-block;
        margin-left: 0.5rem;
    }
    .abstract-row td {
        display: block !important;
    }
    /* Enrichment views mobile */
    .trending-grid {
        grid-template-columns: 1fr;
    }
    .disc-kw-grid {
        grid-template-columns: 1fr;
    }
    .disc-trend-bars {
        gap: 0.75rem;
    }
    .decade-bar {
        width: 5px;
    }
    .cross-kw-table-wrapper {
        font-size: 0.75rem;
    }
    .disc-table td.heat {
        min-width: 28px;
        padding: 0.3rem 0.2rem;
    }
}

/* === Back to top button === */
.back-to-top {
    position: fixed;
    bottom: 2rem;
    right: 2rem;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--bg-card);
    color: var(--text-secondary);
    border: 1px solid var(--border-light);
    box-shadow: 0 2px 8px rgba(0,0,0,0.12);
    cursor: pointer;
    font-size: 1.2rem;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s, transform 0.3s;
    z-index: 100;
    transform: translateY(10px);
}

.back-to-top.visible {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
}

.back-to-top:hover {
    background: var(--accent);
    color: #fff;
    border-color: var(--accent);
}

/* === Page info in pagination === */
.page-info {
    font-size: 0.82rem;
    color: var(--text-muted);
    margin-left: 0.8rem;
    white-space: nowrap;
}

/* Screen-reader only (hidden selects) */
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    border: 0;
}

/* Chip bar filter system */
.chip-bar {
    margin-top: 0.75rem;
}
.cascade-select {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    margin-top: 0.5rem;
    padding-top: 0.5rem;
    border-top: 1px solid var(--border-light);
}
.cascade-label {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--text-muted);
}
.cascade-dd {
    font-size: 0.8rem;
    padding: 0.28rem 0.5rem;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--bg-card);
    color: var(--text);
    max-width: 320px;
}
.cascade-dd:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}
.cascade-arrow {
    color: var(--text-muted);
    font-size: 0.9rem;
}
.chip-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    align-items: center;
}
.chip-row-journals {
    margin-top: 0.5rem;
    padding-top: 0.5rem;
    border-top: 1px solid var(--border-light);
}
.chip-row-journals:empty {
    display: none;
}
.chip {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.3rem 0.7rem;
    border-radius: 16px;
    font-size: 0.8rem;
    border: 1px solid var(--border-light);
    background: var(--bg-input);
    color: var(--text-secondary);
    cursor: pointer;
    transition: all 0.15s ease;
    white-space: nowrap;
    user-select: none;
}
.chip:hover {
    border-color: var(--accent);
    color: var(--accent);
}
.chip.active {
    background: var(--accent);
    color: #fff;
    border-color: var(--accent);
}
.chip.active:hover {
    opacity: 0.85;
}
.chip .chip-count {
    font-size: 0.7rem;
    opacity: 0.7;
    font-weight: 500;
}
.chip.active .chip-count {
    opacity: 0.9;
}
.chip-label-all {
    font-weight: 600;
}

/* Journal sub-chips */
.chip-journal {
    padding: 0.25rem 0.6rem;
    font-size: 0.75rem;
}
.chip .chip-x {
    font-weight: 700;
    opacity: 0.85;
    margin-left: 0.1rem;
}
.chip-add-journal {
    border-style: dashed;
    font-weight: 600;
}

/* Searchable journal popover */
.journal-popover {
    position: relative;
    margin-top: 0.5rem;
    max-width: 480px;
    border: 1px solid var(--border-light);
    border-radius: 8px;
    background: var(--bg-input);
    padding: 0.5rem;
    box-shadow: 0 4px 16px rgba(0,0,0,0.12);
}
.journal-popover input[type="text"] {
    width: 100%;
    padding: 0.4rem 0.6rem;
    border: 1px solid var(--border-light);
    border-radius: 6px;
    background: var(--bg-card);
    color: var(--text-primary);
    font-size: 0.82rem;
    box-sizing: border-box;
}
.journal-popover-showall {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.72rem;
    color: var(--text-secondary);
    margin: 0.4rem 0;
    cursor: pointer;
}
.journal-popover-list {
    max-height: 260px;
    overflow-y: auto;
}
.journal-popover-item {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    padding: 0.35rem 0.5rem;
    border-radius: 6px;
    cursor: pointer;
    font-size: 0.78rem;
}
.journal-popover-item:hover {
    background: var(--bg-card);
}
.journal-popover-item.selected {
    background: var(--accent);
    color: #fff;
}
.journal-popover-item .jp-abbr {
    font-weight: 600;
    min-width: 56px;
}
.journal-popover-item .jp-full {
    flex: 1;
    color: var(--text-secondary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.journal-popover-item.selected .jp-full,
.journal-popover-item.selected .jp-disc {
    color: rgba(255,255,255,0.85);
}
.journal-popover-item .jp-disc {
    font-size: 0.68rem;
    color: var(--text-muted);
}
.journal-popover-item .jp-check {
    font-weight: 700;
}
.journal-popover-empty {
    padding: 0.6rem;
    font-size: 0.78rem;
    color: var(--text-muted);
}

/* Active filter tags */
.active-filters {
    margin-top: 0.5rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    align-items: center;
}
.active-filters:empty {
    display: none;
}
.filter-tag {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.2rem 0.5rem;
    border-radius: 12px;
    font-size: 0.72rem;
    background: var(--accent);
    color: #fff;
    white-space: nowrap;
}
/* Pinned basket journals (from "+ Add journal"): independent of the cascade
   path, shown with a lighter/outlined style to read as additive pins. */
.filter-tag-pinned {
    background: transparent;
    color: var(--accent);
    border: 1px solid var(--accent);
}
.filter-tag-remove {
    cursor: pointer;
    font-size: 0.85rem;
    line-height: 1;
    opacity: 0.8;
    margin-left: 2px;
}
.filter-tag-remove:hover {
    opacity: 1;
}
.filter-clear-all {
    font-size: 0.72rem;
    color: var(--text-muted);
    cursor: pointer;
    padding: 0.2rem 0.4rem;
    border: none;
    background: none;
}
.filter-clear-all:hover {
    color: var(--accent);
    text-decoration: underline;
}

/* ---- Paper Detail Page ---- */
.paper-detail-page {
    max-width: 900px;
    margin: 0 auto;
    padding: 1.5rem 0;
}
.pd-back {
    margin-bottom: 1rem;
}
.pd-back a {
    color: var(--text-muted);
    text-decoration: none;
    font-size: 0.85rem;
}
.pd-back a:hover {
    color: var(--accent);
}
.pd-header {
    margin-bottom: 2rem;
}
.pd-title {
    font-size: 1.5rem;
    font-weight: 700;
    line-height: 1.35;
    margin: 0 0 0.75rem 0;
    color: var(--text);
}
.pd-authors {
    font-size: 0.95rem;
    margin-bottom: 0.6rem;
    color: var(--text);
    line-height: 1.5;
}
.pd-authors .author-link {
    color: var(--accent);
}
.pd-meta {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    flex-wrap: wrap;
    margin-bottom: 1rem;
    font-size: 0.85rem;
    color: var(--text-muted);
}
.pd-journal-full {
    color: var(--text-muted);
}
.pd-stats {
    display: flex;
    gap: 1.5rem;
    margin-bottom: 1rem;
    flex-wrap: wrap;
}
.pd-stat {
    text-align: center;
    padding: 0.75rem 1.2rem;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: 8px;
    min-width: 100px;
}
.pd-stat-val {
    font-size: 1.3rem;
    font-weight: 700;
    color: var(--text);
}
.pd-stat-label {
    font-size: 0.72rem;
    color: var(--text-muted);
    margin-top: 2px;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}
.pd-doi {
    margin-bottom: 1rem;
}
.pd-doi a {
    color: var(--accent);
    font-size: 0.85rem;
    text-decoration: none;
}
.pd-doi a:hover {
    text-decoration: underline;
}
.pd-section {
    margin-bottom: 2rem;
}
.pd-section h2 {
    font-size: 1.1rem;
    font-weight: 600;
    margin: 0 0 0.75rem 0;
    padding-bottom: 0.4rem;
    border-bottom: 1px solid var(--border);
    color: var(--text);
}
.pd-section h3.pd-sub {
    font-size: 0.9rem;
    font-weight: 600;
    margin: 1rem 0 0.5rem 0;
    color: var(--text-muted);
}
.pd-count {
    font-weight: 400;
    font-size: 0.85rem;
    color: var(--text-muted);
}
.pd-abstract {
    font-size: 0.9rem;
    line-height: 1.65;
    color: var(--text);
    margin: 0;
}
.pd-no-data {
    font-size: 0.85rem;
    color: var(--text-muted);
    font-style: italic;
}
.pd-coverage-note {
    font-size: 0.85rem;
    color: var(--text-muted);
    line-height: 1.5;
    margin: 0 0 1rem;
    padding: 0.6rem 0.8rem;
    background: var(--bg-secondary, #f7f7f9);
    border-left: 3px solid var(--border, #d0d0d8);
    border-radius: 4px;
}
.pd-breakdown {
    margin: 0.5rem 0 1rem;
    padding: 0.75rem;
    background: var(--bg-secondary, #f7f7f9);
    border: 1px solid var(--border, #e2e2e8);
    border-radius: 6px;
}
.pd-bd-title {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    margin-bottom: 0.4rem;
}
.pd-bd-tabs { display: flex; flex-wrap: wrap; gap: 0.25rem; margin-bottom: 0.6rem; }
.pd-bd-tab {
    font-size: 0.8rem;
    padding: 0.22rem 0.6rem;
    border: 1px solid var(--border, #d8d8e0);
    background: var(--bg, #fff);
    color: var(--text-secondary);
    border-radius: 4px;
    cursor: pointer;
}
.pd-bd-tab:hover { border-color: var(--accent, #3b6ef0); }
.pd-bd-tab.active { background: var(--accent, #3b6ef0); color: #fff; border-color: var(--accent, #3b6ef0); }
.pd-bd-panel { display: none; }
.pd-bd-panel.active { display: block; }
.pd-bd-row { display: flex; align-items: center; gap: 0.5rem; padding: 0.12rem 0; font-size: 0.84rem; }
.pd-bd-name { flex: 0 0 38%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--text-primary); }
.pd-bd-bar { flex: 1 1 auto; height: 8px; background: var(--border, #e8e8ee); border-radius: 4px; overflow: hidden; }
.pd-bd-fill { display: block; height: 100%; background: var(--accent, #3b6ef0); border-radius: 4px; }
.pd-bd-count { flex: 0 0 auto; min-width: 2.2em; text-align: right; font-variant-numeric: tabular-nums; color: var(--text-secondary); }
.pd-bd-more { font-size: 0.78rem; color: var(--text-muted); margin-top: 0.3rem; }

.pd-cite-list {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}
.pd-cite-item {
    font-size: 0.85rem;
    line-height: 1.5;
    padding: 0.35rem 0.5rem;
    border-radius: 4px;
}
.pd-cite-item:hover {
    background: var(--bg-card);
}
.pd-hidden-item {
    display: none;
}
.pd-list-expanded .pd-hidden-item {
    display: block;
}
.pd-show-more {
    margin-top: 0.5rem;
    padding: 0.35rem 0.8rem;
    font-size: 0.8rem;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: 4px;
    color: var(--accent);
    cursor: pointer;
}
.pd-show-more:hover {
    background: var(--border);
}
.pd-ext-item {
    color: var(--text-muted);
    font-size: 0.8rem;
}
.cite-paper-link {
    color: var(--accent);
    text-decoration: none;
}
.cite-paper-link:hover {
    text-decoration: underline;
}
.cite-meta {
    font-size: 0.78rem;
    color: var(--text-muted);
}

/* Inline citations in expanded row */
.inline-cit-container {
    margin-top: 0.75rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--border);
}
.inline-cit-summary {
    font-size: 0.85rem;
}
.inline-cit-stats {
    display: flex;
    gap: 0.75rem;
    margin-bottom: 0.5rem;
    flex-wrap: wrap;
}
.inline-cit-badge {
    display: inline-block;
    padding: 0.2rem 0.6rem;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: 4px;
    font-size: 0.78rem;
    color: var(--text-muted);
}
.inline-cit-section {
    margin-top: 0.5rem;
    font-size: 0.82rem;
}
.inline-cit-items {
    margin-top: 0.25rem;
}
.inline-cit-item {
    padding: 0.2rem 0;
    font-size: 0.82rem;
    line-height: 1.45;
}
.inline-cit-more {
    margin-top: 0.3rem;
}
.inline-cit-more a {
    color: var(--accent);
    font-size: 0.8rem;
    text-decoration: none;
}
.inline-cit-more a:hover {
    text-decoration: underline;
}
.inline-cit-empty {
    font-size: 0.82rem;
    color: var(--text-muted);
    font-style: italic;
}
.inline-view-detail {
    margin-top: 0.75rem;
    padding-top: 0.5rem;
}
.inline-view-detail a {
    color: var(--accent);
    font-size: 0.82rem;
    text-decoration: none;
    font-weight: 500;
}
.inline-view-detail a:hover {
    text-decoration: underline;
}
.spinner {
    display: inline-block;
    width: 18px;
    height: 18px;
    border: 2px solid var(--border);
    border-top-color: var(--accent);
    border-radius: 50%;
    animation: spin 0.6s linear infinite;
    vertical-align: middle;
    margin-right: 0.4rem;
}
.spinner-small {
    display: inline-block;
    width: 12px;
    height: 12px;
    border: 2px solid var(--border);
    border-top-color: var(--accent);
    border-radius: 50%;
    animation: spin 0.6s linear infinite;
    vertical-align: middle;
    margin-right: 0.3rem;
}
@keyframes spin {
    to { transform: rotate(360deg); }
}
.pd-citations-loading {
    font-size: 0.85rem;
    color: var(--text-muted);
    padding: 1rem 0;
}

/* Fine-grained trending controls */
.trending-controls-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 0.75rem;
    margin: 0.75rem 0 0.5rem;
    padding: 1rem;
    background: var(--card-bg);
    border: 1px solid var(--border);
    border-radius: 8px;
}
.trending-control-group {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}
.trending-year-range {
    display: flex;
    align-items: center;
    gap: 0.3rem;
}
.trending-year-input {
    width: 80px;
    padding: 0.4rem 0.5rem;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--bg);
    color: var(--text-primary);
    font-size: 0.88rem;
    text-align: center;
}
.trending-year-input:focus {
    outline: none;
    border-color: var(--accent);
}
.trending-year-sep {
    color: var(--text-secondary);
    font-weight: 600;
}
.trending-presets {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0.4rem 0 1rem;
    flex-wrap: wrap;
}
.trending-preset-label {
    font-size: 0.85rem;
    color: var(--text-secondary);
    font-weight: 600;
    margin-right: 0.2rem;
}
.trending-preset {
    padding: 0.3rem 0.7rem;
    border: 1px solid var(--border);
    border-radius: 16px;
    background: var(--card-bg);
    color: var(--text-secondary);
    font-size: 0.8rem;
    cursor: pointer;
    transition: all 0.15s;
}
.trending-preset:hover {
    border-color: var(--accent);
    color: var(--accent);
    background: rgba(37,99,235,0.06);
}

@media (max-width: 640px) {
    .trending-controls-grid {
        grid-template-columns: 1fr 1fr;
        padding: 0.75rem;
    }
    .trending-year-input { width: 65px; }
    .trending-presets { gap: 0.3rem; }
    .trending-preset { font-size: 0.75rem; padding: 0.25rem 0.5rem; }
}

/* ---- Citation Network Graph ---- */
.cn-container {
    position: relative;
    width: 100%;
    min-height: 460px;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--bg);
    overflow: hidden;
}
/* --- Multi-level drill-down: breadcrumb, depth & expanded states --- */
.cn-breadcrumb {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px;
    padding: 7px 10px;
    margin-bottom: 8px;
    background: var(--surface, #f7f7f8);
    border: 1px solid var(--border);
    border-radius: 8px;
    font-size: 12.5px;
}
.cn-bc-label {
    color: var(--text-muted, #888);
    font-weight: 600;
    margin-right: 2px;
}
.cn-bc-link {
    background: none;
    border: none;
    color: var(--accent, #2563eb);
    cursor: pointer;
    padding: 2px 4px;
    border-radius: 4px;
    font-size: 12.5px;
    max-width: 220px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cn-bc-link:hover { background: rgba(37, 99, 235, 0.1); text-decoration: underline; }
.cn-bc-current {
    color: var(--text, #222);
    font-weight: 600;
    max-width: 260px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cn-bc-sep { color: var(--text-muted, #aaa); padding: 0 1px; }
.cn-cap-warn { color: #b45309; font-weight: 600; }

/* --- Phase 2: filter panel --- */
.cn-filter-panel {
    border: 1px solid var(--border);
    border-radius: 8px;
    margin-bottom: 8px;
    background: var(--surface, #fafafa);
    overflow: hidden;
}
.cn-filter-header {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 9px 12px;
    background: none;
    border: none;
    cursor: pointer;
    font-size: 13px;
    text-align: left;
}
.cn-filter-header:hover { background: rgba(0,0,0,0.03); }
.cn-filter-caret { color: var(--text-muted, #888); font-size: 11px; width: 12px; }
.cn-filter-title { font-weight: 600; color: var(--text, #222); }
.cn-filter-badge {
    background: var(--accent, #2563eb);
    color: #fff;
    border-radius: 10px;
    padding: 1px 7px;
    font-size: 11px;
    font-weight: 600;
}
.cn-filter-hidden { color: var(--text-muted, #999); font-size: 11.5px; margin-left: auto; }
.cn-filter-body { padding: 4px 12px 12px; border-top: 1px solid var(--border); }
.cn-filter-group { margin-top: 10px; }
.cn-filter-label {
    font-size: 11.5px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--text-muted, #888);
    margin-bottom: 5px;
}
.cn-chip-row { display: flex; flex-wrap: wrap; gap: 5px; }
.cn-chip {
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 14px;
    padding: 3px 10px;
    font-size: 12px;
    cursor: pointer;
    color: var(--text, #333);
    transition: background 0.12s, border-color 0.12s;
}
.cn-chip:hover { border-color: var(--accent, #2563eb); }
.cn-chip-on {
    background: var(--accent, #2563eb);
    border-color: var(--accent, #2563eb);
    color: #fff;
}
.cn-chip-n { opacity: 0.6; font-size: 10.5px; margin-left: 2px; }
.cn-chip-on .cn-chip-n { opacity: 0.85; }
.cn-chip-more, .cn-filter-empty { font-size: 11.5px; color: var(--text-muted, #999); align-self: center; }
button.cn-chip-more { background: none; border: none; padding: 2px 4px; cursor: pointer; text-decoration: underline; }
button.cn-chip-more:hover { color: var(--text, #333); }
.cn-filter-range .cn-range-val { font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--text, #333); }
.cn-range-row { display: flex; gap: 10px; }
.cn-slider { flex: 1; accent-color: var(--accent, #2563eb); height: 4px; cursor: pointer; }
.cn-filter-actions { margin-top: 12px; }
.cn-filter-clear { font-size: 12px; padding: 4px 12px; }

/* Deeper drilled layers fade slightly so the focal layers stay prominent. */
.cn-depth-2 { opacity: 0.82; }
.cn-depth-3 { opacity: 0.62; }

/* A node whose own citations are currently expanded gets a halo ring. */
.cn-node-expanded .cn-circle {
    stroke: var(--accent, #2563eb);
    stroke-width: 2.4px;
    filter: drop-shadow(0 0 3px rgba(37, 99, 235, 0.55));
}

/* --- Fixed axes overlay (sticky year axis on top, lane axis on left) --- */
.cn-graph-wrap {
    position: relative;
    width: 100%;
}
.cn-axis-top {
    position: absolute;
    top: 0;
    left: 0;
    pointer-events: none;
    z-index: 3;
    background: var(--bg-card, #fff);
    border-bottom: 1px solid var(--border-light, #ddd);
}
.cn-axis-left {
    position: absolute;
    left: 0;
    pointer-events: none;
    z-index: 3;
    background: var(--bg-card, #fff);
    border-right: 1px solid var(--border-light, #ddd);
}
.cn-axis-corner {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 4;
    background: var(--bg-card, #fff);
    border-right: 1px solid var(--border-light, #ddd);
    border-bottom: 1px solid var(--border-light, #ddd);
}
.cn-axis-year {
    font-size: 11px;
    fill: var(--text-muted, #64748b);
    font-weight: 600;
}

.cn-axis-lane {
    font-size: 11.5px;
    fill: var(--text-primary, #334155);
    font-weight: 600;
}

.cn-scroller {
    width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
}
.cn-scroller::-webkit-scrollbar {
    height: 9px;
}
.cn-scroller::-webkit-scrollbar-thumb {
    background: var(--border);
    border-radius: 5px;
}
.cn-svg {
    display: block;
    cursor: grab;
}
.cn-scroller.cn-grabbing,
.cn-scroller.cn-grabbing .cn-svg {
    cursor: grabbing;
}
.cn-link {
    fill: none;
    stroke: #94a3b8;
    stroke-width: 1.2;
    stroke-opacity: 0.35;
}
.cn-link-backbone {
    stroke: #e8743b;
    stroke-linecap: round;
}

/* --- Network insight bar -------------------------------------------------- */
.cn-insight-bar {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    margin: 8px 0 4px;
    padding: 10px 12px;
    background: linear-gradient(180deg, #f8fafc, #f1f5f9);
    border: 1px solid #e2e8f0;
    border-radius: 10px;
}
.cn-insight-lead {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: #64748b;
    white-space: nowrap;
}
.cn-insight-cards {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    flex: 1;
}
.cn-insight-card {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 7px 12px;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    cursor: pointer;
    text-align: left;
    transition: border-color 0.15s, box-shadow 0.15s, transform 0.1s;
    max-width: 260px;
}
.cn-insight-card:hover {
    border-color: #cbd5e1;
    box-shadow: 0 1px 6px rgba(15, 23, 42, 0.08);
}
.cn-insight-card.cn-insight-active {
    border-color: #e8743b;
    box-shadow: 0 0 0 2px rgba(232, 116, 59, 0.18);
}
.cn-insight-icon {
    font-size: 17px;
    line-height: 1;
    color: #e8743b;
    flex-shrink: 0;
}
.cn-insight-hub .cn-insight-icon { color: #2563eb; }
.cn-insight-clusters .cn-insight-icon { color: #7c3aed; }
.cn-insight-text {
    display: flex;
    flex-direction: column;
    min-width: 0;
}
.cn-insight-kicker {
    font-size: 9.5px;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: #94a3b8;
}
.cn-insight-main {
    font-size: 12.5px;
    font-weight: 600;
    color: #1e293b;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 210px;
}
.cn-insight-sub {
    font-size: 11px;
    color: #64748b;
    white-space: nowrap;
}
.cn-insight-empty {
    font-size: 12.5px;
    color: #64748b;
    font-style: italic;
}
.cn-insight-clear {
    font-size: 11px;
    color: #64748b;
    background: transparent;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    padding: 5px 10px;
    cursor: pointer;
    white-space: nowrap;
}
.cn-insight-clear:hover { background: #fff; color: #1e293b; }
.cn-link-ref {
    stroke: #3b82f6;
}
.cn-link-citedBy {
    stroke: #22c55e;
}
.cn-link-external {
    stroke: #94a3b8;
    stroke-dasharray: 4 4;
}
.cn-circle {
    cursor: pointer;
    transition: opacity 0.15s;
}
.cn-circle:hover {
    filter: brightness(1.15);
}
.cn-cluster-circle {
    stroke: #fff;
    stroke-width: 2;
    stroke-dasharray: 3 2;
}
.cn-external-node {
    cursor: pointer;
    stroke: #fff;
    stroke-width: 1.5;
    opacity: 0.88;
}
.cn-count-label {
    fill: #fff;
    font-size: 10px;
    font-weight: 700;
    pointer-events: none;
    user-select: none;
}
.cn-label {
    font-size: 10px;
    fill: var(--text-muted);
    pointer-events: none;
    user-select: none;
    transition: opacity 0.2s;
}
.cn-label-center {
    font-size: 12px;
    font-weight: 600;
    fill: var(--text-primary);
}
.cn-tooltip {
    position: absolute;
    pointer-events: none;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 0.6rem 0.8rem;
    font-size: 0.78rem;
    max-width: 290px;
    z-index: 100;
    box-shadow: 0 4px 16px rgba(0,0,0,0.12);
    line-height: 1.45;
}
.cn-floating-tooltip {
    position: fixed;
    z-index: 9999;
    box-shadow: 0 8px 28px rgba(0,0,0,0.22);
}
.cn-rich-tooltip {
    max-width: 420px;
    padding: 0.75rem 0.9rem;
}
.cn-tt-title {
    font-weight: 600;
    color: var(--text);
    margin-bottom: 3px;
    line-height: 1.3;
}
.cn-tt-authors {
    color: var(--text);
    font-size: 0.74rem;
    margin-bottom: 2px;
}
.cn-tt-meta {
    color: var(--text-muted);
    font-size: 0.72rem;
}
.cn-tt-cit {
    color: var(--accent);
    font-weight: 600;
    margin-top: 3px;
}
.cn-tt-abstract {
    color: var(--text);
    font-size: 0.72rem;
    line-height: 1.5;
    margin-top: 0.45rem;
    max-height: 170px;
    overflow: auto;
}
.cn-tt-ref-row {
    color: var(--text-muted);
    font-size: 0.7rem;
    border-top: 1px solid var(--border);
    margin-top: 4px;
    padding-top: 4px;
}
.cn-tt-rel {
    font-size: 0.7rem;
    margin-top: 4px;
    padding: 2px 6px;
    border-radius: 3px;
    display: inline-block;
}
.cn-tt-ref {
    background: #dbeafe;
    color: #1e40af;
}
.cn-tt-cby {
    background: #dcfce7;
    color: #166534;
}
.cn-tt-center {
    background: #f3f4f6;
    color: #374151;
}
.cn-tt-bridge {
    font-size: 0.68rem;
    color: #b8860b;
    margin-top: 2px;
    font-weight: 500;
}
.cn-tt-action {
    color: var(--text-muted);
    font-size: 0.68rem;
    margin-top: 3px;
}
.cn-tt-expanded {
    color: #059669;
    font-size: 0.68rem;
    margin-top: 3px;
}
.cn-controls {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.5rem 0.6rem;
    border-bottom: 1px solid var(--border);
    flex-wrap: wrap;
}
.cn-timeline-controls {
    align-items: flex-start;
}
.cn-context-controls {
    align-items: flex-start;
}
.cn-control-block {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    flex-wrap: wrap;
    margin-right: 0.4rem;
}
.cn-control-label {
    font-size: 0.68rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-weight: 600;
}
.cn-segment {
    display: inline-flex;
    gap: 0.15rem;
    padding: 0.1rem;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--bg);
}
.cn-seg-btn {
    border: none;
    background: transparent;
}
.cn-toolbar {
    display: flex;
    gap: 0.3rem;
    flex-wrap: wrap;
}
.cn-btn {
    padding: 0.25rem 0.55rem;
    font-size: 0.73rem;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: 4px;
    color: var(--text-muted);
    cursor: pointer;
    transition: all 0.15s;
}
.cn-btn:hover {
    background: var(--border);
    color: var(--text);
}
.cn-btn-active {
    background: var(--accent);
    color: #fff;
    border-color: var(--accent);
}
.cn-btn-active:hover {
    background: var(--accent);
    opacity: 0.9;
}

/* Phase 3: reset-all accent button + tooltip preview rows */
.cn-btn-reset-all {
    border-color: var(--accent);
    color: var(--accent);
    font-weight: 600;
}
.cn-btn-reset-all:hover {
    background: var(--accent);
    color: #fff;
}
.cn-tt-action-muted {
    color: var(--text-muted);
    opacity: 0.7;
    font-style: italic;
}
.cn-tt-action-sub {
    color: var(--text-muted);
    opacity: 0.8;
    font-size: 0.64rem;
    margin-top: 4px;
}
.cn-tt-dots {
    opacity: 0.6;
}
.cn-legend {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-left: auto;
    font-size: 0.7rem;
    color: var(--text-muted);
}
.cn-legend-item {
    display: inline-flex;
    align-items: center;
    gap: 3px;
}
.cn-legend-dir {
    font-weight: 500;
    color: var(--text);
}
.cn-legend-arrow {
    font-size: 0.85rem;
}
.cn-legend-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
}
.cn-dot-cluster {
    background: #1d4ed8;
    outline: 1px dashed rgba(29,78,216,0.55);
    outline-offset: 2px;
}
.cn-dot-external {
    background: #64748b;
    border-radius: 2px;
}
.cn-legend-line {
    display: inline-block;
    width: 18px;
    height: 2px;
    border-radius: 999px;
}
.cn-line-ref {
    background: #3b82f6;
}
.cn-line-cby {
    background: #22c55e;
}
.cn-summary {
    width: 100%;
    font-size: 0.72rem;
    color: var(--text);
    line-height: 1.45;
}
.cn-tip {
    width: 100%;
    font-size: 0.68rem;
    color: var(--text-muted);
    margin-top: 3px;
}
.cn-center-line {
    pointer-events: none;
}
.cn-year-guide {
    stroke: var(--border);
    stroke-width: 1;
    stroke-dasharray: 2 5;
    opacity: 0.65;
    pointer-events: none;
}
.cn-year-label {
    fill: var(--text-muted);
    font-size: 10px;
    pointer-events: none;
}
.cn-time-axis {
    stroke: var(--border);
    stroke-width: 1.4;
    pointer-events: none;
}
.cn-lane-line {
    stroke: var(--border);
    stroke-width: 1;
    opacity: 0.9;
    pointer-events: none;
}
.cn-lane-divider {
    stroke: var(--text-muted, #94a3b8);
    stroke-width: 1;
    stroke-dasharray: 5 4;
    opacity: 0.45;
    pointer-events: none;
}
.cn-lane-label {
    fill: var(--text-muted);
    font-size: 10px;
    font-weight: 600;
    pointer-events: none;
}
.cn-side-label {
    fill: var(--text-muted);
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    pointer-events: none;
}
.cn-bucket-node {
    stroke: #fff;
    stroke-width: 1.6;
    cursor: pointer;
}
.cn-link-bucket {
    stroke: #64748b;
    stroke-dasharray: 3 4;
    stroke-opacity: 0.22;
}
.cn-link-cross {
    stroke: #b45309;
    stroke-opacity: 0.4;
    stroke-width: 1.1;
}
.cn-link-context {
    stroke-opacity: 0.28;
}
.cn-rel-reference {
    stroke: #3b82f6;
}
.cn-rel-citedBy {
    stroke: #22c55e;
}
.cn-node {
    cursor: pointer;
    pointer-events: none;
}
.cn-node .cn-circle,
.cn-node .cn-bucket-node,
.cn-node .cn-external-node {
    pointer-events: all;
}
.cn-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 200px;
    color: var(--text-muted);
    font-size: 0.85rem;
}

/* ===== Trending Explorer 2.0 ===== */
.trending-explorer { }

/* search + metric row */
.ts-search-row {
    display: flex; gap: 1rem; align-items: center; flex-wrap: wrap;
    margin: 1rem 0 0.75rem;
}
.ts-search-box { position: relative; flex: 1 1 360px; min-width: 260px; }
.ts-search-input {
    width: 100%; padding: 0.6rem 0.9rem; font-size: 0.95rem;
    border: 1px solid var(--border-card); border-radius: 8px;
    background: var(--bg-input); color: var(--text-primary);
}
.ts-search-input:focus { outline: none; border-color: var(--accent); }
.ts-suggest {
    position: absolute; top: calc(100% + 4px); left: 0; right: 0; z-index: 30;
    max-height: 320px; overflow-y: auto;
    background: var(--bg-card); border: 1px solid var(--border-card);
    border-radius: 8px; box-shadow: 0 6px 24px rgba(0,0,0,0.12);
}
.ts-suggest-item {
    display: flex; justify-content: space-between; align-items: center;
    padding: 0.45rem 0.8rem; cursor: pointer; font-size: 0.9rem;
    border-bottom: 1px solid var(--border-row);
}
.ts-suggest-item:hover { background: var(--bg-hover-row); }
.ts-suggest-item.in-pool { opacity: 0.55; }
.ts-suggest-kw { color: var(--text-primary); }
.ts-suggest-count { color: var(--text-muted); font-size: 0.78rem; white-space: nowrap; }

.ts-metric-toggle { display: inline-flex; border: 1px solid var(--border-card); border-radius: 8px; overflow: hidden; }
.ts-metric-btn {
    padding: 0.5rem 0.85rem; font-size: 0.82rem; cursor: pointer;
    background: var(--bg-card); color: var(--text-secondary); border: none;
    border-right: 1px solid var(--border-card);
}
.ts-metric-btn:last-child { border-right: none; }
.ts-metric-btn.active { background: var(--bg-yr-btn-active); color: #fff; }

/* pool chips */
.ts-pool { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; margin-bottom: 1rem; }
.ts-pool-label { font-size: 0.82rem; color: var(--text-muted); }
.ts-pool-empty { font-size: 0.82rem; color: var(--text-muted); font-style: italic; }
.ts-chip {
    display: inline-flex; align-items: center; gap: 0.4rem;
    padding: 0.3rem 0.5rem 0.3rem 0.55rem; font-size: 0.84rem;
    background: var(--bg-metric); border: 1px solid var(--border-card);
    border-radius: 16px; color: var(--text-primary);
}
.ts-chip-swatch { width: 12px; height: 4px; border-radius: 2px; display: inline-block; }
.ts-chip-x {
    border: none; background: none; cursor: pointer; color: var(--text-muted);
    font-size: 1rem; line-height: 1; padding: 0 0 0 0.1rem;
}
.ts-chip-x:hover { color: var(--text-primary); }

/* tab bar */
.ts-tabbar { display: flex; flex-wrap: wrap; gap: 0.25rem; border-bottom: 2px solid var(--border-section); margin-bottom: 1.25rem; }
.ts-tab {
    padding: 0.55rem 0.95rem; font-size: 0.88rem; cursor: pointer;
    background: none; border: none; border-bottom: 2px solid transparent;
    margin-bottom: -2px; color: var(--text-secondary);
}
.ts-tab:hover { color: var(--text-primary); }
.ts-tab.active { color: var(--accent-hover); border-bottom-color: var(--accent-hover); font-weight: 600; }

/* charts */
.ts-panel { min-height: 300px; }
.ts-chart-wrap { width: 100%; overflow-x: auto; }
.ts-svg { font-family: "Times New Roman", Georgia, serif; }
.ts-axis line, .ts-axis path { stroke: var(--border-light); }
.ts-axis text { fill: var(--text-secondary); font-size: 11px; }
.ts-axis-label { fill: var(--text-secondary); font-size: 12px; }
.ts-line-label { font-size: 11px; font-weight: 600; }
.ts-point { }

/* deep dive */
.ts-deep-title { font-size: 1.2rem; color: var(--text-primary); margin: 0.5rem 0 1rem; }
.ts-deep-total { font-size: 0.85rem; color: var(--text-muted); font-weight: 400; margin-left: 0.5rem; }
.ts-deep-sub { font-size: 0.92rem; color: var(--text-secondary); margin: 0 0 0.6rem; }
.ts-deep-grid { display: grid; grid-template-columns: 1.6fr 1fr; gap: 1.5rem; align-items: start; }
@media (max-width: 760px) { .ts-deep-grid { grid-template-columns: 1fr; } }
.ts-discbars { display: flex; flex-direction: column; gap: 0.4rem; }
.ts-discbar-row { display: grid; grid-template-columns: 120px 1fr 48px; gap: 0.5rem; align-items: center; font-size: 0.8rem; }
.ts-discbar-name { color: var(--text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ts-discbar-track { background: var(--bg-metric); border-radius: 4px; height: 14px; overflow: hidden; }
.ts-discbar-fill { display: block; height: 100%; border-radius: 4px; }
.ts-discbar-val { text-align: right; color: var(--text-muted); }

.ts-deep-drill { margin-top: 1.75rem; }
.ts-drill-year { font-size: 0.82rem; color: var(--text-muted); font-weight: 400; }
.ts-drill-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 1.5rem; align-items: start; }
@media (max-width: 760px) { .ts-drill-grid { grid-template-columns: 1fr; } }
.ts-drill-h5 { font-size: 0.85rem; color: var(--text-secondary); margin: 0 0 0.5rem; }
.ts-drill-h5 small { color: var(--text-muted); font-weight: 400; }
.ts-paper-list { margin: 0; padding-left: 1.2rem; }
.ts-paper-item {
    padding: 0.4rem 0; border-bottom: 1px solid var(--border-row);
    display: grid; grid-template-columns: 1fr auto; gap: 0.5rem; align-items: start;
}
.ts-paper-main { min-width: 0; }
.ts-paper-title { display: block; font-size: 0.88rem; color: var(--text-primary); cursor: pointer; }
.ts-paper-title:hover { color: var(--accent-hover); text-decoration: underline; }
.ts-paper-meta { display: block; font-size: 0.76rem; color: var(--text-muted); margin-top: 0.15rem; }
.ts-paper-actions { display: flex; gap: 0.25rem; }
.ts-paper-expand, .ts-paper-go {
    border: 1px solid var(--border-card); background: var(--bg-card); color: var(--text-secondary);
    width: 24px; height: 24px; border-radius: 5px; cursor: pointer; font-size: 0.9rem; line-height: 1;
    padding: 0; display: flex; align-items: center; justify-content: center;
}
.ts-paper-expand:hover, .ts-paper-go:hover { border-color: var(--accent); color: var(--accent-hover); }
.ts-paper-abstract { grid-column: 1 / -1; margin-top: 0.4rem; padding: 0.5rem 0.6rem;
    background: var(--bg-secondary, rgba(0,0,0,0.03)); border-radius: 6px; font-size: 0.82rem; }
.ts-abs-authors { font-style: italic; color: var(--text-secondary); margin-bottom: 0.3rem; }
.ts-abs-text { margin: 0 0 0.4rem; color: var(--text-primary); line-height: 1.45; }
.ts-abs-doi { font-size: 0.78rem; color: var(--text-link); }

/* drill head + sort toggle */
.ts-drill-head { display: flex; align-items: center; justify-content: space-between; }
.ts-drill-sort { display: flex; gap: 0.3rem; margin-bottom: 0.5rem; }
.ts-drill-sortbtn {
    font-size: 0.76rem; padding: 0.2rem 0.55rem; border: 1px solid var(--border-card);
    background: var(--bg-card); color: var(--text-secondary); border-radius: 999px; cursor: pointer;
}
.ts-drill-sortbtn.active { background: var(--bg-yr-btn-active); color: #fff; border-color: var(--bg-yr-btn-active); }

.ts-drill-side { display: flex; flex-direction: column; gap: 1.2rem; }
.ts-author-row { cursor: pointer; }
.ts-author-row:hover .ts-author-link { color: var(--accent-hover); text-decoration: underline; }

.ts-mini-list { list-style: none; margin: 0; padding: 0; }
.ts-mini-list li { display: flex; justify-content: space-between; padding: 0.3rem 0; border-bottom: 1px solid var(--border-row); font-size: 0.82rem; }
.ts-mini-name { color: var(--text-secondary); }
.ts-mini-n { color: var(--text-muted); white-space: nowrap; }

/* bar chart race */
.ts-race-controls { display: flex; align-items: center; gap: 1rem; margin-bottom: 0.75rem; }
.ts-race-btn {
    padding: 0.45rem 0.9rem; font-size: 0.85rem; cursor: pointer;
    background: var(--bg-yr-btn-active); color: #fff; border: none; border-radius: 6px;
}
.ts-race-hint { font-size: 0.8rem; color: var(--text-muted); }
/* .ts-race-bar fill set inline by JS */
.ts-race-lbl { font-size: 12px; fill: var(--text-primary); font-family: "Times New Roman", Georgia, serif; }
.ts-race-val { font-size: 11px; fill: var(--text-secondary); }
.ts-race-year { font-size: 34px; font-weight: 700; fill: var(--border-card); font-family: "Times New Roman", Georgia, serif; }

/* enhanced race toolbar */
.ts-race-toolbar {
    display: flex; flex-wrap: wrap; gap: 0.6rem 1.2rem;
    align-items: flex-start; margin-bottom: 0.75rem;
    padding: 0.75rem; background: var(--bg-thead); border-radius: 8px;
}
.ts-race-group {
    display: flex; flex-direction: column; gap: 0.3rem;
}
.ts-race-label {
    font-size: 0.75rem; color: var(--text-muted); font-weight: 600; text-transform: uppercase; letter-spacing: 0.03em;
}
.ts-race-toggle {
    display: inline-flex; border: 1px solid var(--border-card); border-radius: 6px; overflow: hidden;
}
.ts-race-mode-btn, .ts-race-metric-btn {
    padding: 0.35rem 0.7rem; font-size: 0.82rem; cursor: pointer;
    background: var(--bg-card); color: var(--text-secondary);
    border: none; border-right: 1px solid var(--border-card);
    transition: background 0.15s, color 0.15s;
}
.ts-race-mode-btn:last-child, .ts-race-metric-btn:last-child { border-right: none; }
.ts-race-mode-btn.active, .ts-race-metric-btn.active {
    background: var(--bg-yr-btn-active); color: #fff;
}
.ts-race-speed {
    display: inline-flex; gap: 0.2rem;
}
.ts-race-spd-btn {
    padding: 0.3rem 0.5rem; font-size: 0.78rem; cursor: pointer;
    background: var(--bg-card); color: var(--text-secondary);
    border: 1px solid var(--border-card); border-radius: 4px;
    transition: background 0.15s, color 0.15s;
}
.ts-race-spd-btn.active {
    background: var(--bg-yr-btn-active); color: #fff; border-color: var(--bg-yr-btn-active);
}

/* keyword picker */
.ts-race-picker {
    flex: 1 1 280px; min-width: 200px;
}
.ts-race-picker-row {
    display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap;
}
.ts-race-search-wrap {
    position: relative; flex: 1 1 160px; min-width: 140px;
}
.ts-race-kw-input {
    width: 100%; box-sizing: border-box; font-size: 0.85rem;
    padding: 0.35rem 0.55rem; border: 1px solid var(--border-card);
    border-radius: 6px; background: var(--bg-card); color: var(--text-primary);
}
.ts-race-kw-input:focus { outline: none; border-color: var(--accent); }
.ts-race-suggest {
    position: absolute; top: 100%; left: 0; right: 0; z-index: 60;
    max-height: 200px; overflow-y: auto;
    background: var(--bg-card); border: 1px solid var(--border-card);
    border-radius: 0 0 6px 6px; box-shadow: 0 4px 16px rgba(0,0,0,0.12);
    display: none;
}
.ts-race-suggest.open { display: block; }
.ts-race-suggest-item {
    display: flex; justify-content: space-between; align-items: center;
    padding: 0.35rem 0.55rem; font-size: 0.82rem; cursor: pointer;
    color: var(--text-primary);
}
.ts-race-suggest-item:hover { background: var(--bg-hover-row); }
.ts-race-clear-btn {
    font-size: 0.78rem; padding: 0.3rem 0.55rem;
    border: 1px solid var(--border-card); border-radius: 6px;
    background: transparent; color: var(--text-secondary); cursor: pointer;
    white-space: nowrap;
}
.ts-race-clear-btn:hover { color: #e53e3e; border-color: #e53e3e; }
.ts-race-chips {
    display: flex; flex-wrap: wrap; gap: 0.35rem; margin-top: 0.35rem;
}
.ts-race-chip {
    display: inline-flex; align-items: center; gap: 0.25rem;
    font-size: 0.78rem; padding: 0.2rem 0.5rem;
    background: var(--bg-badge-top); color: var(--text-badge-top);
    border-radius: 999px;
}
.ts-race-chip.pinned {
    background: #dbeafe; color: #1e40af; font-weight: 600;
}
.ts-race-chip-x {
    border: none; background: transparent; color: inherit;
    cursor: pointer; font-size: 0.9rem; line-height: 1; padding: 0; opacity: 0.7;
}
.ts-race-chip-x:hover { opacity: 1; }

/* playback bar */
.ts-race-playbar {
    display: flex; align-items: center; gap: 0.5rem;
    margin-bottom: 0.5rem; padding: 0.4rem 0.6rem;
    background: var(--bg-thead); border-radius: 6px;
}
.ts-race-playbar .ts-race-btn {
    padding: 0.3rem 0.65rem; font-size: 0.82rem;
}
.ts-race-scrubber {
    flex: 1; min-width: 80px; cursor: pointer;
    accent-color: var(--accent);
}
.ts-race-year-label {
    font-size: 0.9rem; font-weight: 700; color: var(--text-primary);
    min-width: 3em; text-align: center;
}
.ts-race-export {
    margin-left: auto; background: var(--bg-export-btn); color: var(--text-secondary);
    border: 1px solid var(--border-export);
}
.ts-race-export:hover { border-color: var(--accent); color: var(--accent-hover); }

/* heatmap */
.ts-heatmap-note { margin-bottom: 0.75rem; }
.ts-heat-rowlabel { font-size: 11px; fill: var(--text-secondary); font-family: "Times New Roman", Georgia, serif; }
.ts-heat-collabel { font-size: 10px; fill: var(--text-muted); font-family: "Times New Roman", Georgia, serif; }

/* ===== Trending Explorer: subfilter bar ===== */
.ts-filterbar { margin: 0.5rem 0 0.25rem; }
.ts-filter-row {
    display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem;
}
.ts-filter-label { font-size: 0.85rem; color: var(--text-secondary); font-weight: 600; }
.ts-filter-select {
    font-size: 0.85rem; padding: 0.3rem 0.5rem;
    border: 1px solid var(--border-card); border-radius: 6px;
    background: var(--bg-card); color: var(--text-primary); cursor: pointer;
}
.ts-filter-select:hover { border-color: var(--accent); }
.ts-filter-year {
    width: 64px; font-size: 0.85rem; padding: 0.3rem 0.4rem;
    border: 1px solid var(--border-card); border-radius: 6px;
    background: var(--bg-card); color: var(--text-primary);
}
.ts-filter-clear {
    font-size: 0.8rem; padding: 0.3rem 0.6rem; margin-left: 0.3rem;
    border: 1px solid var(--border-card); border-radius: 6px;
    background: transparent; color: var(--text-secondary); cursor: pointer;
}
.ts-filter-clear:hover { color: var(--accent-hover); border-color: var(--accent); }

/* journal multi-select popover */
.ts-jr-wrap { position: relative; }
.ts-jr-btn { white-space: nowrap; }
.ts-jr-pop {
    position: absolute; top: 110%; left: 0; z-index: 50;
    width: 260px; max-height: 320px; display: flex; flex-direction: column;
    background: var(--bg-card); border: 1px solid var(--border-card);
    border-radius: 8px; box-shadow: 0 6px 24px rgba(0,0,0,0.18); padding: 0.5rem;
}
.ts-jr-pop-head { margin-bottom: 0.4rem; }
.ts-jr-search {
    width: 100%; box-sizing: border-box; font-size: 0.85rem; padding: 0.35rem 0.5rem;
    border: 1px solid var(--border-card); border-radius: 6px;
    background: var(--bg-card); color: var(--text-primary);
}
.ts-jr-list { overflow-y: auto; }
.ts-jr-item {
    display: flex; align-items: center; gap: 0.4rem;
    font-size: 0.85rem; padding: 0.2rem 0.25rem; border-radius: 4px;
    color: var(--text-primary); cursor: pointer;
}
.ts-jr-item:hover { background: var(--bg-yr-btn-active); color: #fff; }
.ts-jr-item input { cursor: pointer; }

/* active filter pills */
.ts-filter-pills { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.45rem; }
.ts-fpill {
    display: inline-flex; align-items: center; gap: 0.3rem;
    font-size: 0.78rem; padding: 0.2rem 0.55rem;
    background: var(--bg-yr-btn-active); color: #fff; border-radius: 999px;
}
.ts-fpill-x {
    border: none; background: transparent; color: #fff; cursor: pointer;
    font-size: 1rem; line-height: 1; padding: 0; opacity: 0.8;
}
.ts-fpill-x:hover { opacity: 1; }

/* --- Right-side paper preview panel (single-click) --- */
.cn-side-panel {
    position: fixed;
    top: 64px;
    right: 0;
    width: 360px;
    max-width: 92vw;
    height: calc(100vh - 96px);
    max-height: calc(100vh - 96px);
    background: var(--bg-card, #fff);
    border: 1px solid var(--border, #e2e8f0);
    border-radius: 10px 0 0 10px;
    box-shadow: -8px 0 28px rgba(15, 23, 42, 0.14);
    z-index: 60;
    display: flex;
    flex-direction: column;
    transform: translateX(110%);
    transition: transform 0.22s ease;
    overflow: hidden;
}
.cn-side-panel.cn-panel-open { transform: translateX(0); }
.cn-panel-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 14px;
    border-bottom: 1px solid var(--border, #e2e8f0);
    flex: 0 0 auto;
}
.cn-panel-kicker {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-muted, #64748b);
}
.cn-panel-close {
    border: none;
    background: none;
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
    color: var(--text-muted, #94a3b8);
    padding: 0 4px;
}
.cn-panel-close:hover { color: var(--text, #111); }
.cn-panel-body {
    padding: 12px 14px;
    overflow-y: auto;
    flex: 1 1 auto;
}
.cn-panel-title { font-size: 15px; font-weight: 700; line-height: 1.32; color: var(--text, #111); }
.cn-panel-authors { font-size: 12.5px; color: var(--text-muted, #475569); margin-top: 5px; }
.cn-panel-meta { font-size: 12px; color: var(--text-muted, #64748b); margin-top: 3px; }
.cn-panel-cit { font-size: 12px; font-weight: 600; color: var(--accent, #2563eb); margin-top: 4px; }
.cn-panel-section-label {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-muted, #94a3b8);
    margin: 14px 0 6px;
}
.cn-panel-abstract { font-size: 12.5px; line-height: 1.5; color: var(--text, #334155); }
.cn-rel-count {
    font-weight: 600;
    color: var(--text-muted, #94a3b8);
    background: var(--surface, #f1f5f9);
    border-radius: 9px;
    padding: 0 6px;
    margin-left: 4px;
}
.cn-rel-list { display: flex; flex-direction: column; gap: 3px; }
.cn-rel-row {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    text-align: left;
    border: 1px solid transparent;
    border-radius: 6px;
    background: var(--surface, #f8fafc);
    padding: 5px 8px;
    cursor: pointer;
    width: 100%;
}
.cn-rel-row:hover { border-color: var(--accent, #2563eb); background: #fff; }
.cn-rel-who { font-size: 12px; font-weight: 600; color: var(--text, #1e293b); }
.cn-rel-jy { font-size: 11px; color: var(--text-muted, #94a3b8); }
.cn-rel-ref { border-left: 3px solid #2563eb; }
.cn-rel-citedby { border-left: 3px solid #15803d; }
.cn-rel-more { font-size: 11.5px; color: var(--text-muted, #94a3b8); padding: 4px 2px; }
.cn-panel-rel-empty, .cn-panel-rel-loading { font-size: 12px; color: var(--text-muted, #94a3b8); }
.cn-panel-actions {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 12px 14px;
    border-top: 1px solid var(--border, #e2e8f0);
    flex: 0 0 auto;
    background: var(--bg-card, #fff);
}
.cn-panel-btn { width: 100%; justify-content: center; text-align: center; }
.cn-panel-btn-primary {
    background: var(--accent, #2563eb);
    color: #fff;
    border-color: var(--accent, #2563eb);
}
.cn-panel-btn-primary:hover { background: #1d4ed8; }

/* PageRank "Most Influential" panel in citation explorer */
.ce-panel-pagerank {
    grid-column: 1 / -1;
    background: var(--bg-card, #fff);
    border: 1px solid var(--border, #e2e8f0);
    border-radius: 8px;
}
.ce-panel-tag {
    display: inline-block;
    margin-left: 0.4rem;
    padding: 0.1rem 0.45rem;
    font-size: 0.62rem;
    font-weight: 600;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    color: var(--text-secondary, #475569);
    background: var(--bg-muted, #f1f5f9);
    border: 1px solid var(--border, #e2e8f0);
    border-radius: 999px;
    vertical-align: middle;
}
.ce-panel-note {
    color: var(--text-secondary, #475569);
    font-size: 0.8rem;
    line-height: 1.5;
    margin: -0.35rem 0 0.7rem;
}
.ce-pagerank-list {
    margin: 0;
    padding-left: 1.4rem;
    columns: 2;
    column-gap: 1.6rem;
}
.ce-pagerank-list li {
    margin-bottom: 0.5rem;
    break-inside: avoid;
    font-size: 0.86rem;
    line-height: 1.35;
}
.ce-pagerank-list a {
    color: var(--text-link, #2563eb);
    text-decoration: none;
}
.ce-pagerank-list a:hover { text-decoration: underline; }
.ce-pr-meta {
    display: block;
    color: var(--text-muted, #94a3b8);
    font-size: 0.72rem;
    margin-top: 0.1rem;
}
@media (max-width: 720px) {
    .ce-pagerank-list { columns: 1; }
}

.ce-bridge-cols {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.2rem;
}
.ce-bridge-col h5 {
    margin: 0 0 0.4rem;
    font-size: 0.82rem;
    color: var(--text-muted, #94a3b8);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}
.ce-bridge-list {
    list-style: none;
    margin: 0;
    padding: 0;
    counter-reset: bridge;
}
.ce-bridge-list li {
    display: grid;
    grid-template-columns: 1fr 70px 28px;
    align-items: center;
    gap: 0.5rem;
    padding: 0.18rem 0;
    font-size: 0.82rem;
}
.ce-bridge-list a {
    color: var(--text, #e2e8f0);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.ce-bridge-list a:hover { text-decoration: underline; }
.ce-bridge-bar {
    display: inline-block;
    height: 6px;
    background: var(--border, #334155);
    border-radius: 3px;
    overflow: hidden;
}
.ce-bridge-fill {
    display: block;
    height: 100%;
    background: var(--text-muted, #94a3b8);
}
.ce-bridge-pct {
    font-size: 0.72rem;
    color: var(--text-muted, #94a3b8);
    text-align: right;
}
@media (max-width: 720px) {
    .ce-bridge-cols { grid-template-columns: 1fr; }
}

.ce-flow-wrap {
    overflow-x: auto;
}
.ce-flow-matrix {
    border-collapse: collapse;
    font-size: 0.7rem;
    margin-top: 0.4rem;
}
.ce-flow-matrix th {
    font-weight: 500;
    color: var(--text-muted, #94a3b8);
    background: transparent;
}
.ce-flow-corner {
    text-align: left;
    white-space: nowrap;
    font-size: 0.66rem;
    font-style: italic;
}
.ce-flow-col {
    height: 84px;
    vertical-align: bottom;
    padding: 0 1px 3px;
}
.ce-flow-col a {
    display: inline-block;
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    color: var(--text-muted, #94a3b8);
    max-height: 78px;
    overflow: hidden;
    text-overflow: ellipsis;
}
.ce-flow-row {
    text-align: right;
    white-space: nowrap;
    padding-right: 6px;
    max-width: 130px;
    overflow: hidden;
    text-overflow: ellipsis;
}
.ce-flow-row a, .ce-flow-col a { cursor: pointer; }
.ce-flow-row a:hover, .ce-flow-col a:hover { text-decoration: underline; color: var(--text, #e2e8f0); }
.ce-flow-cell {
    width: 16px;
    height: 16px;
    border: 1px solid var(--bg, #0f172a);
    background: transparent;
}
.ce-flow-empty { background: transparent; }
.ce-flow-diag { background: var(--border, #334155); opacity: 0.25; }
.ce-flow-cell[onclick] { cursor: pointer; }
/* 5 discrete gray steps, log-scaled in JS. Light to dark. */
.ce-flow-s1 { background: #d9dde3; }
.ce-flow-s2 { background: #aeb4bd; }
.ce-flow-s3 { background: #828a95; }
.ce-flow-s4 { background: #565f6b; }
.ce-flow-s5 { background: #2b323c; }
.ce-flow-legend {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-top: 0.5rem;
    font-size: 0.68rem;
    color: var(--text-muted, #94a3b8);
}
.ce-flow-legend i {
    display: inline-block;
    width: 16px;
    height: 12px;
    border: 1px solid var(--bg, #0f172a);
}

.ce-selfcite {
    margin-top: 0.8rem;
}
.ce-selfcite h5 { margin: 0 0 0.3rem; }
.ce-sc-note {
    font-size: 0.74rem;
    color: var(--text-muted, #94a3b8);
    margin: 0 0 0.4rem;
}
.ce-selfcite-svg {
    width: 100%;
    height: auto;
    font-family: "Times New Roman", Times, serif;
}
.ce-sc-grid { stroke: var(--border, #334155); stroke-width: 0.5; opacity: 0.6; }
.ce-sc-ext { fill: #c2c8d0; }
.ce-sc-self { fill: #3a4150; }
.ce-sc-rate-line { fill: none; stroke: #6b7280; stroke-width: 1.5; }
.ce-sc-rate-dot { fill: #2b323c; }
.ce-sc-axis-r, .ce-sc-axis-x {
    fill: var(--text-muted, #94a3b8);
    font-size: 9px;
    font-family: "Times New Roman", Times, serif;
}
.ce-sc-axis-x { text-anchor: middle; }
.ce-sc-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin-top: 0.4rem;
    font-size: 0.72rem;
    color: var(--text-muted, #94a3b8);
}
.ce-sc-legend i {
    display: inline-block;
    width: 14px;
    height: 10px;
    vertical-align: middle;
    margin-right: 2px;
}
.ce-sc-legend i.ce-sc-self { background: #3a4150; }
.ce-sc-legend i.ce-sc-ext { background: #c2c8d0; }
.ce-sc-rate-swatch {
    display: inline-block;
    width: 14px;
    height: 0;
    border-top: 2px solid #6b7280;
    vertical-align: middle;
    margin-right: 2px;
}

.ce-cocite-note {
    font-size: 0.74rem;
    color: var(--text-muted, #94a3b8);
    margin: 0 0 0.3rem;
}
.ce-cocite-net {
    width: 100%;
    border: 1px solid var(--border, #334155);
    border-radius: 6px;
    background: var(--bg-card, #0f172a);
    margin-bottom: 0.6rem;
}
.ce-cocite-svg { width: 100%; height: auto; display: block; }
.ce-cocite-link { stroke: #8b929c; stroke-opacity: 0.55; }
.ce-cocite-node circle {
    fill: #aeb4bd;
    stroke: var(--bg-card, #0f172a);
    stroke-width: 1.5;
}
.ce-cocite-node.seed circle {
    fill: #2b323c;
    stroke: #6b7280;
    stroke-width: 2;
}
.ce-cocite-node:hover circle { fill: #6b7280; }
.ce-cocite-node.seed:hover circle { fill: #1c222b; }
.ce-cocite-label {
    fill: var(--text-muted, #94a3b8);
    font-size: 9px;
    font-family: "Times New Roman", Times, serif;
    pointer-events: none;
}
.ce-cocite-node.seed .ce-cocite-label { fill: var(--text, #e2e8f0); font-weight: 600; }

/* P2-7: time-window slider for the citation-flow network */
.ce-netwin {
    margin: 0 0 0.7rem;
    padding: 0.55rem 0.7rem;
    border: 1px solid var(--border, #334155);
    border-radius: 6px;
    background: var(--bg-subtle, #0b1220);
}
.ce-netwin-row {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    flex-wrap: wrap;
}
.ce-netwin-row label {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--text-muted, #94a3b8);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}
.ce-netwin-slider {
    flex: 1 1 160px;
    min-width: 120px;
    accent-color: #2b323c;
    cursor: pointer;
}
.ce-netwin-readout {
    font-variant-numeric: tabular-nums;
    font-size: 0.82rem;
    color: var(--text, #e2e8f0);
    min-width: 90px;
    text-align: center;
}
.ce-netwin-reset {
    font-size: 0.74rem;
    padding: 0.18rem 0.55rem;
    border: 1px solid var(--border, #334155);
    border-radius: 4px;
    background: transparent;
    color: var(--text-muted, #94a3b8);
    cursor: pointer;
}
.ce-netwin-reset:hover {
    color: var(--text, #e2e8f0);
    border-color: var(--text-muted, #94a3b8);
}
.ce-netwin-note {
    margin-top: 0.45rem;
    font-size: 0.76rem;
    line-height: 1.4;
    color: var(--text-muted, #94a3b8);
}

/* P2-8: author citation independence (self / coauthor / external) */
.ce-cb-note {
    font-size: 0.8rem;
    color: var(--text-muted, #94a3b8);
    margin: 0 0 0.5rem;
    line-height: 1.4;
}
.ce-cb-bar {
    display: flex;
    width: 100%;
    height: 22px;
    border-radius: 5px;
    overflow: hidden;
    border: 1px solid var(--border, #334155);
    margin-bottom: 0.55rem;
}
.ce-cb-seg { height: 100%; display: inline-block; }
.ce-cb-self { background: #2b323c; }
.ce-cb-coauthor { background: #6b7280; }
.ce-cb-external { background: #c2c8d0; }
.ce-cb-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 0.9rem;
    font-size: 0.8rem;
    color: var(--text, #e2e8f0);
    margin-bottom: 0.5rem;
}
.ce-cb-key { display: inline-flex; align-items: center; gap: 0.35rem; }
.ce-cb-key strong { font-variant-numeric: tabular-nums; }
.ce-cb-key em { color: var(--text-muted, #94a3b8); font-style: normal; }
.ce-cb-swatch {
    width: 12px;
    height: 12px;
    border-radius: 3px;
    display: inline-block;
    border: 1px solid var(--border, #334155);
}
.ce-cb-foot {
    font-size: 0.72rem;
    color: var(--text-muted, #94a3b8);
    line-height: 1.4;
    margin: 0 0 0.6rem;
}

/* ===== Lineage Card ===== */
.lineage-card { font-size: 0.88rem; line-height: 1.5; }
.lc-loading .lc-empty { color: #888; }
.lc-title {
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #555;
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    gap: 8px;
}
.lc-basic-tag {
    font-size: 0.62rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    background: #efefef;
    color: #888;
    border-radius: 3px;
    padding: 1px 6px;
    text-transform: none;
    cursor: help;
}
.lc-empty { color: #888; padding: 6px 0; }
.lc-metrics { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }
.lc-metric {
    font-size: 0.74rem;
    font-weight: 600;
    background: #1a1a2e;
    color: #fff;
    border-radius: 4px;
    padding: 3px 10px;
    cursor: help;
}
.lc-sec { margin-bottom: 16px; }
.lc-sec-head {
    font-weight: 600;
    color: #1a1a2e;
    margin-bottom: 6px;
    display: flex;
    align-items: baseline;
    gap: 8px;
}
.lc-sec-note { font-size: 0.74rem; font-weight: 400; color: #999; }
.lc-list { list-style: none; margin: 0; padding: 0; }
.lc-row { padding: 5px 0; border-bottom: 1px solid #f0f0f0; }
.lc-row:last-child { border-bottom: none; }
.lc-row-title { color: #1a1a2e; text-decoration: none; font-weight: 500; }
.lc-row-title:hover { text-decoration: underline; }
.lc-row-meta { display: block; color: #888; font-size: 0.74rem; margin-top: 1px; }
.lc-pill-row { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; margin-bottom: 5px; }
.lc-pill-lbl {
    font-size: 0.72rem;
    color: #999;
    min-width: 64px;
    font-weight: 500;
}
.lc-pill {
    font-size: 0.74rem;
    border-radius: 3px;
    padding: 2px 8px;
    border: 1px solid #ddd;
    background: #f7f7f7;
    color: #444;
}
.lc-pill-n { color: #999; font-size: 0.68rem; }
.lc-pill-in { border-color: #d6d6e2; background: #f3f3f8; }
.lc-pill-out { border-color: #d8e0d8; background: #f1f5f1; }
.lc-pill-disc { border-color: #cfcfcf; background: #ededed; font-weight: 600; }
.lc-caveat {
    font-size: 0.74rem;
    color: #7a6a4a;
    background: #faf6ec;
    border-left: 3px solid #d8c89a;
    padding: 7px 10px;
    margin-top: -6px;
    margin-bottom: 12px;
    border-radius: 0 4px 4px 0;
    line-height: 1.45;
}
.lc-coverage {
    font-size: 0.76rem;
    color: #666;
    background: #f7f7f7;
    border: 1px solid #ececec;
    border-radius: 5px;
    padding: 8px 11px;
    margin-top: 6px;
    line-height: 1.45;
    cursor: help;
}
.lc-cov-dot {
    display: inline-block;
    width: 8px; height: 8px;
    border-radius: 50%;
    margin-right: 6px;
    vertical-align: middle;
}
.lc-cov-hi { background: #6b8e6b; }
.lc-cov-mid { background: #b8a55c; }
.lc-cov-lo { background: #b06b6b; }
.lc-cov-none { background: #bbb; }

/* Evolution chain (trunk lineage) — vertical time-axis, oldest at top. */
.lc-chain {
    list-style: none;
    margin: 4px 0 0;
    padding: 0 0 0 6px;
    position: relative;
}
.lc-chain::before {
    content: "";
    position: absolute;
    left: 9px; top: 6px; bottom: 6px;
    width: 1px;
    background: #d8d8d8;
}
.lc-chain-node {
    position: relative;
    padding: 0 0 12px 22px;
}
.lc-chain-node:last-child { padding-bottom: 0; }
.lc-chain-dot {
    position: absolute;
    left: 5px; top: 4px;
    width: 9px; height: 9px;
    border-radius: 50%;
    background: #fff;
    border: 2px solid #999;
}
.lc-chain-seed .lc-chain-dot {
    background: #555;
    border-color: #555;
}
.lc-chain-body { display: flex; flex-direction: column; }
.lc-chain-title {
    font-weight: 600;
    color: #2a2a2a;
    text-decoration: none;
    line-height: 1.35;
}
.lc-chain-title:hover { text-decoration: underline; }
.lc-chain-here {
    font-size: 0.62rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #fff;
    background: #555;
    border-radius: 3px;
    padding: 1px 5px;
    margin-left: 4px;
    vertical-align: middle;
}
.lc-chain-meta { font-size: 0.76rem; color: #777; margin-top: 1px; }
.lc-chain-note {
    font-size: 0.74rem;
    color: #888;
    margin-top: 8px;
    line-height: 1.45;
    font-style: italic;
}
[data-theme="dark"] .lc-chain::before { background: #444; }
[data-theme="dark"] .lc-chain-dot { background: #2a2a2a; border-color: #777; }
[data-theme="dark"] .lc-chain-seed .lc-chain-dot { background: #ccc; border-color: #ccc; }
[data-theme="dark"] .lc-chain-title { color: #ddd; }
[data-theme="dark"] .lc-chain-here { background: #ccc; color: #1a1a1a; }
[data-theme="dark"] .lc-chain-meta,
[data-theme="dark"] .lc-chain-note { color: #999; }

/* --- Schools of thought (objective co-citation communities) --- */
.lc-school {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 6px 10px;
    padding: 6px 0;
    border-bottom: 1px solid #eee;
}
.lc-school:last-child { border-bottom: none; }
.lc-school-name {
    font-weight: 600;
    color: #333;
    text-decoration: none;
    border-bottom: 1px dotted #aaa;
}
.lc-school-name:hover { color: #000; border-bottom-color: #555; }
.lc-school-share {
    font-size: 0.74rem;
    color: #555;
    background: #ededed;
    border-radius: 9px;
    padding: 1px 7px;
    font-weight: 600;
}
.lc-school-meta { font-size: 0.74rem; color: #999; }
[data-theme="dark"] .lc-school { border-bottom-color: #333; }
[data-theme="dark"] .lc-school-name { color: #ddd; border-bottom-color: #666; }
[data-theme="dark"] .lc-school-name:hover { color: #fff; }
[data-theme="dark"] .lc-school-share { background: #333; color: #bbb; }
[data-theme="dark"] .lc-school-meta { color: #888; }

/* --- Stream (school) detail modal --- */
.sd-overlay {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(0,0,0,0.5);
    z-index: 1100;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: 40px 20px;
    overflow-y: auto;
}
.sd-modal {
    background: var(--bg-card);
    border: 1px solid var(--border, #e2e2e2);
    border-radius: 12px;
    max-width: 680px;
    width: 100%;
    max-height: 88vh;
    overflow-y: auto;
    padding: 28px 32px 32px;
    position: relative;
    box-shadow: 0 10px 40px rgba(0,0,0,0.28);
}
.sd-close {
    position: absolute;
    top: 12px; right: 16px;
    background: none; border: none;
    font-size: 1.7rem; line-height: 1;
    cursor: pointer;
    color: var(--text-muted);
}
.sd-close:hover { color: var(--text-primary); }
.sd-kicker {
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--text-muted);
    font-weight: 600;
}
.sd-title {
    font-size: 1.35rem;
    font-weight: 700;
    color: var(--text-header);
    margin: 2px 0 6px;
}
.sd-sub {
    font-size: 0.82rem;
    color: var(--text-muted);
    margin-bottom: 18px;
}
.sd-sec { margin-bottom: 18px; }
.sd-sec-head {
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--text-primary);
    margin-bottom: 8px;
    display: flex;
    align-items: baseline;
    gap: 8px;
    flex-wrap: wrap;
}
.sd-sec-note {
    font-size: 0.72rem;
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0;
    color: var(--text-muted);
}
.lc-stream-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.lc-stream-chip {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 0.76rem;
    color: var(--text-primary);
    background: #f0f0f0;
    border-radius: 9px;
    padding: 2px 4px 2px 9px;
}
.lc-stream-chip-n {
    font-size: 0.68rem;
    color: var(--text-muted);
    background: #e0e0e0;
    border-radius: 7px;
    padding: 0 5px;
}
.lc-stream-reps { margin: 0; padding-left: 1.3em; }
.lc-stream-rep { margin-bottom: 8px; line-height: 1.35; }
.lc-stream-rep-link {
    color: var(--text-primary);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px dotted #aaa;
}
.lc-stream-rep-link:hover { border-bottom-color: #555; }
.lc-stream-rep-unknown { color: var(--text-muted); }
.lc-stream-rep-meta {
    display: block;
    font-size: 0.74rem;
    color: var(--text-muted);
    margin-top: 1px;
}
.lc-stream-rivals { list-style: none; margin: 0; padding: 0; }
.lc-stream-rival {
    padding: 7px 0;
    border-bottom: 1px solid #eee;
}
.lc-stream-rival:last-child { border-bottom: none; }
.lc-stream-rival-link {
    color: var(--text-primary);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px dotted #aaa;
}
.lc-stream-rival-link:hover { border-bottom-color: #555; }
.lc-stream-rival-meta {
    display: block;
    font-size: 0.74rem;
    color: var(--text-muted);
    margin-top: 1px;
}
[data-theme="dark"] .sd-modal { border-color: #333; }
[data-theme="dark"] .lc-stream-chip { background: #2a2a2a; color: #ddd; }
[data-theme="dark"] .lc-stream-chip-n { background: #3a3a3a; color: #aaa; }
[data-theme="dark"] .lc-stream-rep-link,
[data-theme="dark"] .lc-stream-rival-link { color: #ddd; border-bottom-color: #666; }
[data-theme="dark"] .lc-stream-rep-link:hover,
[data-theme="dark"] .lc-stream-rival-link:hover { border-bottom-color: #999; }
[data-theme="dark"] .lc-stream-rival { border-bottom-color: #333; }

/* --- Schools (literature streams) overview surface --- */
.sv-loading { text-align: center; padding: 2rem; color: var(--text-muted); }
.sv-header { margin-bottom: 1.2rem; }
.sv-title {
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--text-header);
}
.sv-intro {
    color: var(--text-muted);
    font-size: 0.9rem;
    margin-top: 0.4rem;
    max-width: 720px;
    line-height: 1.5;
}
.sv-fields { display: flex; flex-direction: column; gap: 10px; }
.sv-field-card {
    border: 1px solid var(--border, #e2e2e2);
    border-left: 4px solid var(--sv-c, #999);
    border-radius: 10px;
    background: var(--bg-card);
    padding: 14px 18px;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.sv-field-card:hover { border-color: #bbb; box-shadow: 0 2px 10px rgba(0,0,0,0.06); }
.sv-field-card.sv-open { border-color: #999; }
.sv-field-head {
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    flex-wrap: wrap;
}
.sv-field-arrow { color: var(--text-muted); font-size: 0.8rem; width: 12px; }
.sv-field-id { display: flex; flex-direction: column; gap: 1px; flex: 1 1 auto; }
.sv-field-disc { font-weight: 700; font-size: 1.04rem; color: var(--sv-c, var(--text-primary)); }
.sv-field-desc { font-size: 0.82rem; color: var(--text-muted); }
.sv-field-stats { display: flex; gap: 14px; flex-wrap: wrap; }
.sv-field-stat {
    font-size: 0.78rem;
    color: var(--text-muted);
    white-space: nowrap;
}
.sv-field-stat b { color: var(--text-primary); }
.sv-field-sub {
    margin-top: 7px;
    padding-left: 24px;
    font-size: 0.76rem;
    color: var(--text-muted);
}
.sv-field-sub b { color: var(--text-primary); }
.sv-schools { margin-top: 4px; }
.sv-school-list {
    margin: 12px 0 2px;
    padding-left: 1.4em;
}
.sv-school { margin-bottom: 7px; line-height: 1.35; }
.sv-school-link {
    color: var(--text-primary);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px dotted #aaa;
}
.sv-school-link:hover { border-bottom-color: #555; }
.sv-school-meta {
    display: block;
    font-size: 0.74rem;
    color: var(--text-muted);
    margin-top: 1px;
}
.sv-map-toggle { margin-top: 10px; }
.sv-map-link {
    font-size: 0.8rem;
    color: var(--text-muted);
    text-decoration: none;
    border-bottom: 1px dotted #bbb;
}
.sv-map-link:hover { color: var(--text-primary); border-bottom-color: #666; }
.sv-map-host:not(:empty) {
    margin: 10px 0 4px;
    border: 1px solid var(--border, #eee);
    border-radius: 8px;
    background: var(--bg, #fafafa);
}
.sv-map-svg { display: block; }
.sv-map-edge { stroke: #c0392b; stroke-opacity: 0.4; }
.sv-map-circle { fill: #d9d9d9; stroke: #888; stroke-width: 1px; }
.sv-map-node:hover .sv-map-circle { fill: #bdbdbd; stroke: #333; }
.sv-map-label { font-size: 10px; fill: var(--text-primary); pointer-events: none; }

[data-theme="dark"] .sv-field-card { border-color: #333; }
[data-theme="dark"] .sv-field-card:hover { border-color: #555; }
[data-theme="dark"] .sv-field-card.sv-open { border-color: #666; }
[data-theme="dark"] .sv-school-link { color: #ddd; border-bottom-color: #666; }
[data-theme="dark"] .sv-school-link:hover { border-bottom-color: #999; }
[data-theme="dark"] .sv-map-host:not(:empty) { border-color: #333; background: #15171f; }
[data-theme="dark"] .sv-map-edge { stroke: #e07a6f; stroke-opacity: 0.45; }
[data-theme="dark"] .sv-map-circle { fill: #3a3a3a; stroke: #777; }
[data-theme="dark"] .sv-map-node:hover .sv-map-circle { fill: #4a4a4a; stroke: #ccc; }
[data-theme="dark"] .sv-map-label { fill: #ccc; }

/* --- Ask (retrieval Q&A) surface --- */
.ask-wrap { max-width: 760px; margin: 0 auto; }
.ask-head { margin-bottom: 1.1rem; }
.ask-title { font-size: 1.4rem; font-weight: 700; color: var(--text-header); }
.ask-intro { color: var(--text-muted); font-size: 0.9rem; margin-top: 0.4rem; line-height: 1.5; }
.ask-inline-link { color: var(--text-primary); border-bottom: 1px dotted #999; text-decoration: none; cursor: pointer; }
.ask-inline-link:hover { border-bottom-color: #555; }
.ask-box { display: flex; gap: 8px; margin-bottom: 12px; }
#ask-input {
    flex: 1 1 auto;
    padding: 11px 14px;
    font-size: 0.95rem;
    border: 1px solid var(--border, #ccc);
    border-radius: 9px;
    background: var(--bg-card);
    color: var(--text-primary);
}
#ask-input:focus { outline: none; border-color: #888; }
.ask-go {
    padding: 0 20px;
    border: 1px solid #888;
    border-radius: 9px;
    background: #333;
    color: #fff;
    font-weight: 600;
    cursor: pointer;
}
.ask-go:hover { background: #000; }
.ask-examples { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 18px; }
.ask-example {
    font-size: 0.78rem;
    color: var(--text-muted);
    background: #f2f2f2;
    border: 1px solid #e2e2e2;
    border-radius: 14px;
    padding: 4px 11px;
    cursor: pointer;
}
.ask-example:hover { color: var(--text-primary); border-color: #bbb; }
.ask-thinking { color: var(--text-muted); font-size: 0.9rem; padding: 1rem 0; }
.ask-card {
    border: 1px solid var(--border, #e2e2e2);
    border-radius: 10px;
    background: var(--bg-card);
    padding: 18px 20px;
}
.ask-card-title { font-size: 1.05rem; font-weight: 700; color: var(--text-header); margin-bottom: 12px; }
.ask-card-foot { margin-top: 12px; font-size: 0.84rem; }
.ask-p { color: var(--text-primary); font-size: 0.9rem; line-height: 1.5; margin: 6px 0; }
.ask-note { color: var(--text-muted); font-size: 0.8rem; margin-top: 8px; }
.ask-sub { font-size: 0.8rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--text-primary); margin: 14px 0 6px; }
.ask-list { margin: 0; padding-left: 1.4em; }
.ask-row { margin-bottom: 8px; line-height: 1.35; }
.ask-link { color: var(--text-primary); font-weight: 600; text-decoration: none; border-bottom: 1px dotted #aaa; cursor: pointer; }
.ask-link:hover { border-bottom-color: #555; }
.ask-row-meta { display: block; font-size: 0.74rem; color: var(--text-muted); margin-top: 1px; }
.ask-suggest { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; align-items: flex-start; }
.ask-table { width: 100%; border-collapse: collapse; font-size: 0.86rem; }
.ask-table th, .ask-table td { text-align: left; padding: 7px 10px; border-bottom: 1px solid var(--border, #eee); }
.ask-table th { font-weight: 700; color: var(--text-header); }
.ask-table-lab { color: var(--text-muted); font-size: 0.8rem; }
.ask-conn { margin: 4px 0; padding-left: 1.2em; }
.ask-conn li { font-size: 0.88rem; color: var(--text-primary); margin-bottom: 4px; line-height: 1.4; }
.ask-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0 4px; }
.ask-chip { font-size: 0.74rem; color: var(--text-primary); background: #f0f0f0; border-radius: 8px; padding: 1px 8px; }

/* Clickable function catalogue */
.ask-fn-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; margin-bottom: 16px; }
.ask-fn-card {
    display: flex; align-items: flex-start; gap: 10px; text-align: left;
    padding: 12px 14px; border: 1px solid var(--border, #e2e2e2); border-radius: 10px;
    background: var(--bg-card); cursor: pointer; transition: border-color .12s, transform .08s;
}
.ask-fn-card:hover { border-color: #888; }
.ask-fn-card:active { transform: translateY(1px); }
.ask-fn-card.ask-fn-active { border-color: #333; box-shadow: 0 0 0 1px #333 inset; }
.ask-fn-icon { font-size: 1.15rem; line-height: 1.2; color: var(--text-header); flex: 0 0 auto; }
.ask-fn-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ask-fn-title { font-weight: 700; font-size: 0.92rem; color: var(--text-header); }
.ask-fn-sub { font-size: 0.74rem; color: var(--text-muted); line-height: 1.35; }

/* Inline builder */
.ask-builder { border: 1px solid var(--border, #ddd); border-radius: 10px; background: var(--bg-card); padding: 14px 16px; margin-bottom: 18px; }
.ask-bld-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.ask-bld-title { font-weight: 700; font-size: 1rem; color: var(--text-header); }
.ask-bld-close { background: none; border: none; font-size: 1.3rem; line-height: 1; color: var(--text-muted); cursor: pointer; padding: 0 4px; }
.ask-bld-close:hover { color: var(--text-primary); }
.ask-bld-body { display: flex; flex-direction: column; gap: 12px; }
.ask-slot { display: flex; flex-direction: column; gap: 5px; }
.ask-slot-lab { font-size: 0.74rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--text-muted); }
.ask-bld-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.ask-bld-chip {
    font-size: 0.8rem; padding: 5px 12px; border-radius: 16px;
    border: 1px solid var(--border, #ddd); background: var(--bg-card); color: var(--text-primary); cursor: pointer;
}
.ask-bld-chip:hover { border-color: #999; }
.ask-bld-chip-on { background: #333; color: #fff; border-color: #333; }
.ask-bld-text {
    padding: 9px 12px; font-size: 0.9rem; border: 1px solid var(--border, #ccc); border-radius: 8px;
    background: var(--bg-input, var(--bg-card)); color: var(--text-primary);
}
.ask-bld-text:focus { outline: none; border-color: #888; }
.ask-pick { position: relative; }
.ask-pick-input {
    width: 100%; padding: 9px 12px; font-size: 0.9rem; border: 1px solid var(--border, #ccc); border-radius: 8px;
    background: var(--bg-input, var(--bg-card)); color: var(--text-primary); box-sizing: border-box;
}
.ask-pick-input:focus { outline: none; border-color: #888; }
.ask-pick-input.ask-pick-set { border-color: #2a7; background: rgba(34,170,119,.06); font-weight: 600; }
.ask-pick-menu {
    display: none; position: absolute; z-index: 30; left: 0; right: 0; top: calc(100% + 3px);
    max-height: 280px; overflow-y: auto; border: 1px solid var(--border, #ddd); border-radius: 8px;
    background: var(--bg-card); box-shadow: 0 6px 20px rgba(0,0,0,.12);
}
.ask-pick-opt { display: flex; align-items: baseline; gap: 8px; padding: 7px 11px; cursor: pointer; border-bottom: 1px solid var(--border, #f0f0f0); }
.ask-pick-opt:last-child { border-bottom: none; }
.ask-pick-opt:hover, .ask-pick-opt.ask-pick-on { background: rgba(0,0,0,.06); }
.ask-pick-head { padding: 6px 11px; font-size: 0.68rem; text-transform: uppercase; letter-spacing: .04em; color: var(--text-muted); background: rgba(0,0,0,.03); border-bottom: 1px solid var(--border, #eee); position: sticky; top: 0; }
/* Journal browser (grouped chips inside the dropdown) */
.ask-jbrowse { padding: 8px 10px; }
.ask-jgroup { margin-bottom: 10px; }
.ask-jgroup-lab { font-size: 0.68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--text-muted); margin-bottom: 4px; }
.ask-jchips { display: flex; flex-wrap: wrap; gap: 5px; }
.ask-jchip { font-size: 0.74rem; padding: 3px 9px; border-radius: 12px; border: 1px solid var(--border, #ddd); background: var(--bg-card); color: var(--text-primary); cursor: pointer; }
.ask-jchip:hover { border-color: #333; background: rgba(0,0,0,.04); }
.ask-pick-k { font-size: 0.64rem; text-transform: uppercase; letter-spacing: .04em; color: #fff; background: #999; border-radius: 4px; padding: 1px 5px; flex: 0 0 auto; }
.ask-pick-l { font-size: 0.85rem; color: var(--text-primary); flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ask-pick-m { font-size: 0.72rem; color: var(--text-muted); flex: 0 0 auto; }
.ask-bld-foot { display: flex; align-items: center; gap: 12px; margin-top: 14px; }
.ask-bld-run:disabled { opacity: .4; cursor: not-allowed; }
.ask-bld-preview { font-size: 0.82rem; color: var(--text-muted); font-style: italic; }

[data-theme="dark"] .ask-fn-card { border-color: #333; }
[data-theme="dark"] .ask-fn-card:hover { border-color: #666; }
[data-theme="dark"] .ask-fn-card.ask-fn-active { border-color: #ccc; box-shadow: 0 0 0 1px #ccc inset; }
[data-theme="dark"] .ask-builder { border-color: #333; }
[data-theme="dark"] .ask-bld-chip { border-color: #3a3a3a; }
[data-theme="dark"] .ask-bld-chip-on { background: #e0e0e0; color: #111; border-color: #e0e0e0; }
[data-theme="dark"] .ask-pick-menu { border-color: #333; }
[data-theme="dark"] .ask-pick-opt { border-bottom-color: #2a2a2a; }
[data-theme="dark"] .ask-pick-opt:hover, [data-theme="dark"] .ask-pick-opt.ask-pick-on { background: rgba(255,255,255,.07); }
[data-theme="dark"] .ask-pick-head { background: rgba(255,255,255,.04); border-bottom-color: #2a2a2a; }
[data-theme="dark"] .ask-jchip { border-color: #3a3a3a; }
[data-theme="dark"] .ask-jchip:hover { border-color: #ccc; background: rgba(255,255,255,.06); }

[data-theme="dark"] .ask-example { background: #2a2a2a; border-color: #3a3a3a; color: #aaa; }
[data-theme="dark"] .ask-example:hover { color: #ddd; border-color: #555; }

/* Ask — narrow screens */
@media (max-width: 640px) {
    .ask-fn-grid { grid-template-columns: 1fr; gap: 8px; }
    .ask-fn-card { padding: 10px 12px; }
    .ask-box { flex-wrap: wrap; }
    #ask-input { flex: 1 1 100%; }
    .ask-go { flex: 1 1 100%; padding: 10px 0; }
    .ask-bld-foot { flex-direction: column; align-items: stretch; gap: 8px; }
    .ask-bld-run { width: 100%; padding: 11px 0; }
    .ask-bld-preview { text-align: center; }
    .ask-pick-menu { max-height: 50vh; }
}
[data-theme="dark"] .ask-go { background: #e0e0e0; color: #111; border-color: #888; }
[data-theme="dark"] .ask-go:hover { background: #fff; }
[data-theme="dark"] .ask-card { border-color: #333; }
[data-theme="dark"] .ask-link { color: #ddd; border-bottom-color: #666; }
[data-theme="dark"] .ask-link:hover { border-bottom-color: #999; }
[data-theme="dark"] .ask-chip { background: #2a2a2a; color: #ddd; }
[data-theme="dark"] .ask-inline-link { color: #ddd; border-bottom-color: #666; }





/* ===== Semantic Search ===== */
.sem-wrap { max-width: 1200px; margin: 0 auto; padding: 1rem 0 3rem; }
.sem-intro { color: var(--text-muted); font-size: 0.95rem; margin-bottom: 1rem; line-height: 1.5; }
.sem-search-box { display: flex; gap: 0.5rem; margin-bottom: 0.5rem; }
.sem-search-box input {
    flex: 1; padding: 0.7rem 1rem; font-size: 1rem;
    border: 1px solid var(--border); border-radius: 8px;
    background: var(--bg-input); color: var(--text-primary);
}
.sem-search-box input:focus { outline: none; border-color: var(--accent); }
.sem-search-box button {
    padding: 0.7rem 1.4rem; font-size: 1rem; cursor: pointer;
    background: var(--accent); color: #fff; border: none; border-radius: 8px;
}
.sem-search-box button:hover { background: var(--accent-hover); }
.sem-status { color: var(--text-muted); font-size: 0.85rem; min-height: 1.2em; margin-bottom: 1rem; }
.sem-result-head { font-size: 1.1rem; font-weight: 600; margin-bottom: 1rem; color: var(--text-primary); }
.sem-grid {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(330px, 1fr));
    gap: 1rem;
}
.sem-bucket {
    background: var(--bg-card); border: 1px solid var(--border);
    border-radius: 10px; padding: 1rem 1.1rem;
}
.sem-bucket-adv { border-style: dashed; }
.sem-bucket-title { font-size: 1rem; margin: 0 0 0.2rem; color: var(--text-primary); }
.sem-badge {
    font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.05em;
    background: var(--bg-badge-other); color: var(--text-muted);
    padding: 0.1rem 0.4rem; border-radius: 4px; vertical-align: middle;
}
.sem-bucket-desc { font-size: 0.8rem; color: var(--text-muted); margin: 0 0 0.7rem; }
.sem-list { list-style: none; margin: 0; padding: 0; }
.sem-item {
    display: flex; gap: 0.5rem; padding: 0.45rem 0.3rem; cursor: pointer;
    border-radius: 6px; align-items: baseline;
}
.sem-item:hover { background: var(--bg-hover-row); }
.sem-rank { color: var(--text-muted); font-size: 0.75rem; min-width: 1.2em; }
.sem-item-body { display: flex; flex-direction: column; gap: 0.15rem; }
.sem-title { font-size: 0.88rem; color: var(--text-primary); line-height: 1.3; }
.sem-meta { font-size: 0.72rem; color: var(--text-muted); }

/* ============================================================
   Idea Genealogy — flagship deep-space visualization
   ============================================================ */
.tab-flagship {
    background: linear-gradient(90deg, #1e3a8a, #6d28d9);
    color: #fff !important;
    font-weight: 600;
    position: relative;
}
.tab-flagship::after {
    content: "✦";
    margin-left: 0.35rem;
    font-size: 0.7em;
    color: #fde68a;
}
.tab-flagship.active { box-shadow: 0 0 0 2px #a78bfa inset; }

#view-genealogy { padding: 0; }
.ig-root {
    display: flex; flex-direction: column;
    height: calc(100vh - 200px); min-height: 560px;
    background: radial-gradient(ellipse at 50% 30%, #15182e 0%, #0a0b16 70%, #06070f 100%);
    border-radius: 12px; overflow: hidden;
    color: #e2e8f0;
    box-shadow: 0 8px 40px rgba(0,0,0,0.4);
}
.ig-head {
    display: flex; align-items: center; gap: 1rem; flex-wrap: wrap;
    padding: 0.85rem 1.1rem;
    background: rgba(10,12,24,0.6); backdrop-filter: blur(6px);
    border-bottom: 1px solid rgba(148,163,184,0.12);
    position: relative; z-index: 5;
}
.ig-title { font-size: 1.05rem; font-weight: 700; color: #f1f5f9; letter-spacing: 0.2px; }
.ig-sub { font-size: 0.72rem; font-weight: 400; color: #818cf8; margin-left: 0.5rem; font-style: italic; }
.ig-scales { display: flex; gap: 0.25rem; margin-right: 0.4rem; padding-right: 0.5rem; border-right: 1px solid rgba(148,163,184,0.18); }
.ig-scale {
    background: rgba(99,102,241,0.10); border: 1px solid rgba(129,140,248,0.25);
    color: #c7d2fe; padding: 0.35rem 0.65rem; border-radius: 7px;
    font-size: 0.76rem; font-weight: 600; cursor: pointer; transition: all 0.15s;
}
.ig-scale:hover { background: rgba(99,102,241,0.2); }
.ig-scale.active { background: linear-gradient(90deg,#6366f1,#a855f7); color: #fff; border-color: transparent; }
.ig-modes { display: flex; gap: 0.3rem; }
.ig-mode {
    background: rgba(148,163,184,0.08); border: 1px solid rgba(148,163,184,0.15);
    color: #cbd5e1; padding: 0.35rem 0.7rem; border-radius: 7px;
    font-size: 0.78rem; cursor: pointer; transition: all 0.15s;
}
.ig-mode:hover { background: rgba(148,163,184,0.16); }
.ig-mode.active { background: linear-gradient(90deg,#2563eb,#7c3aed); color: #fff; border-color: transparent; }
.ig-seedbox, .ig-pathbox { position: relative; flex: 1; min-width: 220px; }
.ig-search {
    width: 100%; box-sizing: border-box;
    background: rgba(15,18,34,0.85); border: 1px solid rgba(148,163,184,0.25);
    color: #e2e8f0; padding: 0.45rem 0.7rem; border-radius: 8px; font-size: 0.82rem;
}
.ig-search:focus { outline: none; border-color: #818cf8; box-shadow: 0 0 0 2px rgba(129,140,248,0.25); }
.ig-search::placeholder { color: #64748b; }
.ig-suggest {
    display: none; position: absolute; top: 100%; left: 0; right: 0; z-index: 30;
    margin-top: 4px; max-height: 320px; overflow-y: auto;
    background: #11142a; border: 1px solid rgba(148,163,184,0.25); border-radius: 8px;
    box-shadow: 0 12px 32px rgba(0,0,0,0.5);
}
.ig-sug { display: flex; flex-direction: column; gap: 1px; padding: 0.45rem 0.6rem; cursor: pointer; border-bottom: 1px solid rgba(148,163,184,0.08); }
.ig-sug:hover { background: rgba(99,102,241,0.18); }
.ig-sug-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 6px; vertical-align: middle; }
.ig-sug-t { font-size: 0.8rem; color: #e2e8f0; }
.ig-sug-abbr { display: inline-block; font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: 0.65rem; font-weight: 600; color: #cbd5e1; background: rgba(148,163,184,0.15); border-radius: 3px; padding: 0 4px; margin-right: 6px; vertical-align: 1px; }
.ig-sug-m { font-size: 0.7rem; color: #94a3b8; }
.ig-sug-empty { padding: 0.6rem; color: #64748b; font-size: 0.8rem; }

.ig-stage { position: relative; flex: 1; overflow: hidden; }
#ig-svg { width: 100%; height: 100%; display: block; transition: opacity 0.3s; }
.ig-node-label { fill: #cbd5e1; font-size: 11px; pointer-events: none; paint-order: stroke; stroke: #06070f; stroke-width: 3px; }
.ig-path-label { fill: #e2e8f0; font-size: 12.5px; }

.ig-picker { display: none; position: absolute; inset: 0; display: flex; align-items: flex-start; justify-content: center; padding: 0.7rem 1rem 1rem; pointer-events: none; overflow-y: auto; }
.ig-picker > * { pointer-events: auto; }
.ig-picker-card {
    width: 100%; max-width: 1000px; background: transparent; text-align: left;
}
.ig-picker-bar { display: flex; align-items: center; justify-content: space-between; gap: 0.8rem; margin: 0 0 0.55rem; }
.ig-picker-hint { font-size: 0.78rem; color: #94a3b8; }
.ig-picker-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(168px,1fr)); gap: 0.45rem; }
.ig-picker-chip {
    display: flex; flex-direction: column; gap: 1px; text-align: left;
    background: rgba(148,163,184,0.07); border: 1px solid rgba(148,163,184,0.15);
    border-radius: 8px; padding: 0.45rem 0.55rem; cursor: pointer; transition: all 0.12s;
}
.ig-picker-chip:hover { background: rgba(99,102,241,0.18); border-color: #818cf8; transform: translateY(-1px); }
.ig-pc-dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; }
.ig-pc-t { font-size: 0.8rem; color: #e2e8f0; line-height: 1.3; }
.ig-pc-m { font-size: 0.7rem; color: #94a3b8; }
.ig-pc-top { display: flex; align-items: center; gap: 5px; margin-bottom: 1px; }
.ig-pc-disc { font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.04em; color: #cbd5e1; }

.ig-disc-chips { display: flex; flex-wrap: wrap; gap: 0.35rem; margin: 0 0 0.6rem; }
.ig-disc-chip {
    font-size: 0.74rem; padding: 0.3rem 0.7rem; border-radius: 999px; cursor: pointer;
    background: rgba(148,163,184,0.08); border: 1px solid rgba(148,163,184,0.2); color: #cbd5e1;
    transition: all 0.15s; --c: #818cf8;
}
.ig-disc-chip:hover { border-color: var(--c); color: #f1f5f9; }
.ig-disc-chip.active { background: var(--c); border-color: var(--c); color: #0b1020; font-weight: 600; }

.ig-picker-foot { margin-top: 1rem; text-align: center; } /* legacy, unused */
.ig-shuffle {
    font-size: 0.74rem; padding: 0.3rem 0.8rem; border-radius: 999px; cursor: pointer; white-space: nowrap;
    background: rgba(99,102,241,0.12); border: 1px solid rgba(129,140,248,0.4); color: #c7d2fe;
    transition: all 0.15s;
}
.ig-shuffle:hover { background: rgba(99,102,241,0.25); border-color: #818cf8; }
.ig-sug-empty { grid-column: 1 / -1; color: #94a3b8; font-size: 0.8rem; padding: 0.8rem; text-align: center; }

/* search keyboard highlight */
.ig-sug.active { background: rgba(99,102,241,0.28); }
/* compact picker card title/meta */
.ig-pc-t { font-size: 0.76rem; }
.ig-pc-m { font-size: 0.66rem; }
.ig-pc-disc { font-size: 0.58rem; }
/* "change paper" back button, lives in the stage */
.ig-back {
    position: absolute; top: 10px; left: 12px; z-index: 30; cursor: pointer;
    font-size: 0.76rem; padding: 0.32rem 0.7rem; border-radius: 999px;
    background: rgba(17,20,42,0.85); border: 1px solid rgba(129,140,248,0.4); color: #c7d2fe;
    backdrop-filter: blur(6px); transition: all 0.15s;
}
.ig-back:hover { background: rgba(99,102,241,0.3); border-color: #818cf8; color: #fff; }


.ig-tip {
    position: absolute; z-index: 40; max-width: 260px; pointer-events: none;
    background: rgba(8,10,20,0.95); border: 1px solid rgba(129,140,248,0.4); border-radius: 8px;
    padding: 0.55rem 0.7rem; box-shadow: 0 8px 24px rgba(0,0,0,0.6);
}
.ig-tip-t { font-size: 0.8rem; color: #f1f5f9; font-weight: 600; line-height: 1.3; margin-bottom: 2px; }
.ig-tip-m { font-size: 0.72rem; color: #cbd5e1; }
.ig-tip-r { font-size: 0.72rem; color: #94a3b8; margin-top: 3px; }
.ig-tip-hint { font-size: 0.65rem; color: #64748b; margin-top: 5px; font-style: italic; }

/* ---- Idea Genealogy side panel (node detail + how-related + jump) ---- */
.ig-side-panel {
    position: absolute;
    top: 0; right: 0;
    width: 340px; max-width: 90%;
    height: 100%;
    background: #0f172a;
    border-left: 1px solid #1e293b;
    box-shadow: -10px 0 30px rgba(0, 0, 0, 0.45);
    z-index: 30;
    display: flex; flex-direction: column;
    transform: translateX(108%);
    transition: transform 0.22s ease;
    overflow: hidden;
}
.ig-side-panel.ig-panel-open { transform: translateX(0); }
.ig-panel-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 11px 14px; border-bottom: 1px solid #1e293b; flex: 0 0 auto;
}
.ig-panel-kicker {
    font-size: 11px; font-weight: 700; text-transform: uppercase;
    letter-spacing: 0.06em; color: #60a5fa;
}
.ig-panel-close {
    background: none; border: none; color: #94a3b8; font-size: 20px;
    line-height: 1; cursor: pointer; padding: 0 4px;
}
.ig-panel-close:hover { color: #f1f5f9; }
.ig-panel-body { padding: 14px; overflow-y: auto; flex: 1 1 auto; }
.ig-panel-title { font-size: 0.95rem; font-weight: 700; color: #f1f5f9; line-height: 1.35; }
.ig-panel-authors { font-size: 0.78rem; color: #cbd5e1; margin-top: 4px; }
.ig-panel-meta { font-size: 0.74rem; color: #94a3b8; margin-top: 4px; }
.ig-panel-cit { font-size: 0.74rem; color: #94a3b8; margin-top: 4px; }
.ig-panel-section-label {
    font-size: 0.68rem; font-weight: 700; text-transform: uppercase;
    letter-spacing: 0.05em; color: #64748b; margin: 14px 0 6px;
}
.ig-rel-line { font-size: 0.8rem; color: #cbd5e1; line-height: 1.45; }
.ig-rel-line b { color: #f1f5f9; }
.ig-rel-up { border-left: 3px solid #f87171; padding-left: 8px; }
.ig-rel-down { border-left: 3px solid #34d399; padding-left: 8px; }
.ig-rel-seed { border-left: 3px solid #60a5fa; padding-left: 8px; }
.ig-rel-count { color: #64748b; font-weight: 600; }
.ig-panel-rel-empty { font-size: 0.74rem; color: #64748b; }
.ig-panel-rel-loading { font-size: 0.74rem; color: #64748b; font-style: italic; }
.ig-rel-list { display: flex; flex-direction: column; gap: 4px; }
.ig-rel-row {
    text-align: left; background: #1e293b; border: 1px solid transparent;
    border-left-width: 3px; color: #e2e8f0; font-size: 0.74rem;
    padding: 5px 8px; border-radius: 5px; cursor: pointer; line-height: 1.3;
}
.ig-rel-row:hover { background: #243049; }
.ig-rel-ref { border-left-color: #60a5fa; }
.ig-rel-citedby { border-left-color: #34d399; }
.ig-rel-yr { color: #64748b; }
.ig-panel-actions {
    display: flex; flex-direction: column; gap: 7px;
    padding: 12px 14px; border-top: 1px solid #1e293b; flex: 0 0 auto;
}
.ig-panel-btn {
    background: #1e293b; border: 1px solid #334155; color: #e2e8f0;
    font-size: 0.78rem; font-weight: 600; padding: 8px 10px;
    border-radius: 6px; cursor: pointer;
}
.ig-panel-btn:hover { background: #243049; }
.ig-panel-btn-primary {
    background: linear-gradient(90deg, #4f46e5, #7c3aed);
    border-color: transparent; color: #fff;
}
.ig-panel-btn-primary:hover { filter: brightness(1.08); }

.ig-legend { position: absolute; bottom: 12px; left: 14px; display: flex; gap: 0.9rem; flex-wrap: wrap; z-index: 6; }
.ig-leg-item { font-size: 0.72rem; color: #94a3b8; display: flex; align-items: center; gap: 5px; }
.ig-leg-dot { width: 10px; height: 10px; border-radius: 50%; box-shadow: 0 0 6px currentColor; }
.ig-leg-sym { color: #fde68a; }

.ig-timeline-ctl {
    position: absolute; bottom: 14px; left: 50%; transform: translateX(-50%); z-index: 6;
    display: flex; align-items: center; gap: 0.7rem;
    background: rgba(8,10,20,0.85); border: 1px solid rgba(148,163,184,0.2); border-radius: 30px;
    padding: 0.45rem 0.9rem; backdrop-filter: blur(6px);
}
.ig-tl-btn { background: linear-gradient(90deg,#2563eb,#7c3aed); color: #fff; border: none; border-radius: 20px; padding: 0.3rem 0.85rem; font-size: 0.78rem; cursor: pointer; }
.ig-tl-range { width: 240px; accent-color: #818cf8; }
.ig-tl-year { font-size: 0.85rem; font-weight: 700; color: #fde68a; min-width: 3ch; text-align: center; }

.ig-empty { display: flex; flex-direction: column; align-items: center; gap: 0.8rem; color: #94a3b8; font-size: 0.9rem; max-width: 460px; text-align: center; background: rgba(17,20,42,0.85); padding: 1.4rem 1.6rem; border-radius: 12px; border: 1px solid rgba(148,163,184,0.15); }
.ig-spin { width: 28px; height: 28px; border: 3px solid rgba(148,163,184,0.2); border-top-color: #818cf8; border-radius: 50%; animation: ig-spin 0.8s linear infinite; }
@keyframes ig-spin { to { transform: rotate(360deg); } }

/* ===== Fields view (cross-cutting keyword-bundle fields) ===== */
.fields-intro { color: var(--text-muted); max-width: 70ch; margin: 0.3rem 0 1.2rem; line-height: 1.5; }
.field-card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 1rem; }
.field-card { text-align: left; background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 10px; padding: 1.1rem 1.2rem; cursor: pointer; transition: box-shadow .15s, transform .15s; display: flex; flex-direction: column; gap: .5rem; }
.field-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,.10); transform: translateY(-2px); }
.field-card-label { font-size: 1.15rem; font-weight: 700; color: var(--text-primary); }
.field-card-desc { color: var(--text-muted); font-size: .85rem; line-height: 1.45; flex: 1; }
.field-card-stats { display: flex; gap: 1.2rem; font-size: .82rem; color: var(--text-muted); margin-top: .3rem; }
.field-card-stats strong { color: var(--accent-hover); }

.field-back { background: none; border: none; color: var(--accent-hover); cursor: pointer; font-size: .9rem; padding: 0; margin-bottom: .4rem; }
.field-back:hover { text-decoration: underline; }
.field-kw-box { background: var(--bg-thead); border: 1px solid var(--border-section); border-radius: 8px; padding: .7rem .9rem; font-size: .85rem; line-height: 1.9; margin: .6rem 0 1rem; }
.field-kw { display: inline-block; background: var(--bg-badge-other); border-radius: 4px; padding: .05rem .4rem; margin: 0 .15rem; font-size: .8rem; }
.field-kw.core { background: var(--bg-badge-top); color: var(--accent-hover); font-weight: 600; }
.field-summary { display: flex; gap: 1.8rem; margin-bottom: 1.2rem; font-size: .95rem; }
.field-summary strong { color: var(--accent-hover); }

.field-charts { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 1.4rem; margin-bottom: 1.6rem; }
@media (max-width: 900px) { .field-charts { grid-template-columns: 1fr; } }
.field-chart-block h3 { font-size: .95rem; margin: 0 0 .6rem; color: var(--text-primary); }
.ftrend-chart { display: flex; align-items: flex-end; gap: 3px; height: 150px; border-bottom: 1px solid var(--border-light); padding-bottom: 2px; overflow-x: auto; }
.ftrend-col { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; flex: 1 0 auto; min-width: 14px; }
.ftrend-bar { width: 70%; background: var(--accent); border-radius: 2px 2px 0 0; min-height: 2px; }
.ftrend-x { font-size: .6rem; color: var(--text-muted); margin-top: 2px; transform: rotate(-45deg); transform-origin: top left; white-space: nowrap; }
.fdist { display: flex; flex-direction: column; gap: .35rem; }
.fdist-row { display: grid; grid-template-columns: 6.5rem 1fr auto; align-items: center; gap: .5rem; font-size: .8rem; }
.fdist-label { color: var(--text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fdist-track { background: var(--bg-badge-other); border-radius: 3px; height: 11px; overflow: hidden; }
.fdist-fill { height: 100%; border-radius: 3px; }
.fdist-fill.disc { background: var(--accent); }
.fdist-fill.jrnl { background: var(--accent-hover); }
.fdist-val { color: var(--text-muted); white-space: nowrap; }
.fdist-share { color: var(--text-muted); font-size: .72rem; }

.field-section-title { font-size: 1.05rem; margin: 1.6rem 0 .7rem; color: var(--text-primary); }
.field-authors { display: grid; grid-template-columns: 1fr 1fr; gap: 1.4rem; }
@media (max-width: 700px) { .field-authors { grid-template-columns: 1fr; } }
.field-author-col h4 { font-size: .85rem; color: var(--text-muted); margin: 0 0 .4rem; text-transform: uppercase; letter-spacing: .03em; }
.field-author-col ol { margin: 0; padding-left: 1.4rem; }
.field-author-col li { font-size: .85rem; line-height: 1.7; }
.field-author-link { color: var(--accent-hover); cursor: pointer; text-decoration: none; }
.field-author-link:hover { text-decoration: underline; }
.fa-metric { color: var(--text-primary); font-weight: 600; }
.fa-sub { color: var(--text-muted); font-size: .75rem; }

.field-paper-controls { margin: .4rem 0 .6rem; font-size: .85rem; color: var(--text-muted); }
.field-sort-btn { background: var(--bg-yr-btn); border: 1px solid var(--border-light); border-radius: 5px; padding: .2rem .6rem; margin-left: .3rem; cursor: pointer; font-size: .8rem; }
.field-sort-btn.active { background: var(--bg-yr-btn-active); color: #fff; border-color: var(--bg-yr-btn-active); }
.field-paper-table { width: 100%; border-collapse: collapse; font-size: .85rem; }
.field-paper-table th { text-align: left; background: var(--bg-thead); padding: .5rem .6rem; border-bottom: 2px solid var(--border-section); font-weight: 600; }
.field-paper-row { cursor: pointer; border-bottom: 1px solid var(--border-row); }
.field-paper-row:hover { background: var(--bg-hover-row); }
.field-paper-table td { padding: .45rem .6rem; vertical-align: top; }
.fp-title { max-width: 38ch; }
.fp-title a, .field-paper-row .fp-title { color: var(--text-primary); }
.fp-aux { font-size: .65rem; background: var(--bg-badge-other); color: var(--text-muted); border-radius: 3px; padding: 0 .25rem; margin-left: .3rem; vertical-align: middle; }
.field-pager { display: flex; align-items: center; justify-content: center; gap: 1rem; margin: 1rem 0; font-size: .85rem; }
.field-pager button { background: var(--bg-yr-btn); border: 1px solid var(--border-light); border-radius: 5px; padding: .3rem .8rem; cursor: pointer; }
.field-pager button:disabled { opacity: .4; cursor: default; }

/* ===== Theories view ===== */
.theory-group-title { font-size: 1.05rem; margin: 1.6rem 0 .2rem; display: flex; align-items: center; gap: .5rem; }
.theory-disc-dot { width: 11px; height: 11px; border-radius: 50%; display: inline-block; }
.theory-group-sub { color: var(--text-muted); font-size: .85rem; margin: 0 0 .8rem; }
.theory-card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; margin-bottom: .6rem; }
.theory-card { text-align: left; background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 10px; padding: 1.1rem 1.2rem; cursor: pointer; transition: box-shadow .15s, transform .15s; display: flex; flex-direction: column; gap: .5rem; }
.theory-card:hover { box-shadow: 0 4px 14px rgba(0,0,0,.10); transform: translateY(-2px); }
.theory-card-name { font-weight: 700; font-size: 1rem; color: var(--text-primary); }
.theory-card-desc { font-size: .82rem; color: var(--text-muted); line-height: 1.45; }
.theory-card-stats { display: flex; gap: .9rem; flex-wrap: wrap; font-size: .8rem; color: var(--text-muted); margin-top: auto; align-items: center; }
.theory-xchip { background: var(--bg-badge-top); color: var(--accent-hover); font-weight: 600; font-size: .68rem; border-radius: 4px; padding: .05rem .4rem; text-transform: uppercase; letter-spacing: .03em; }
.theory-xchip.lg { font-size: .7rem; vertical-align: middle; }
.theory-mini-bar { display: flex; width: 100%; height: 8px; border-radius: 4px; overflow: hidden; background: var(--border-row); }
.theory-mini-seg { display: block; height: 100%; }

.theory-home { font-size: .85rem; color: var(--text-muted); margin: .2rem 0 .8rem; }
.theory-home-chip { display: inline-block; border: 1px solid var(--c); color: var(--c); border-radius: 5px; padding: .05rem .5rem; margin: 0 .25rem; font-size: .78rem; font-weight: 600; }
.theory-seminal { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: .7rem; margin-bottom: 1rem; }
.theory-seminal-card { background: var(--bg-thead); border: 1px solid var(--border-section); border-left: 3px solid var(--accent); border-radius: 7px; padding: .6rem .8rem; cursor: pointer; transition: background .15s; }
.theory-seminal-card:hover { background: var(--bg-hover-row); }
.theory-seminal-title { font-weight: 600; font-size: .85rem; line-height: 1.35; }
.theory-seminal-meta { font-size: .73rem; color: var(--text-muted); margin-top: .25rem; }

.theory-charts { display: grid; grid-template-columns: minmax(280px, 1fr) minmax(360px, 1.6fr); gap: 1.4rem; margin: .8rem 0 1.2rem; }
.theory-chart-block h3 { font-size: .9rem; margin: 0 0 .6rem; }
.theory-empty { color: var(--text-muted); font-size: .85rem; }
.theory-diff-legend { display: flex; flex-wrap: wrap; gap: .6rem .9rem; margin-bottom: .5rem; font-size: .72rem; color: var(--text-muted); }
.theory-legend-item { display: inline-flex; align-items: center; gap: .25rem; }
.theory-legend-dot { width: 9px; height: 9px; border-radius: 2px; display: inline-block; }
.theory-diff-chart { display: flex; align-items: flex-end; gap: 3px; height: 180px; overflow-x: auto; padding-bottom: .2rem; }
.theory-diff-col { display: flex; flex-direction: column; align-items: center; min-width: 16px; flex: 1; }
.theory-diff-stack { display: flex; flex-direction: column-reverse; width: 70%; height: 150px; justify-content: flex-start; }
.theory-diff-seg { width: 100%; }
.theory-diff-x { font-size: .6rem; color: var(--text-muted); margin-top: .25rem; white-space: nowrap; transform: rotate(-45deg); transform-origin: top right; }

.theory-bridge-authors { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: .6rem; margin-bottom: 1rem; }
.theory-bridge-author { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 8px; padding: .55rem .75rem; display: flex; flex-direction: column; gap: .2rem; font-size: .82rem; }
.theory-bspan { font-size: .72rem; color: var(--accent-hover); font-weight: 600; }
.theory-bdots { display: flex; gap: 3px; margin: .15rem 0; }
.theory-bdot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.theory-hint { font-weight: 400; font-size: .75rem; color: var(--text-muted); }
.theory-disc-tag { display: inline-block; border: 1px solid var(--c); color: var(--c); border-radius: 4px; padding: 0 .35rem; font-size: .72rem; font-weight: 600; white-space: nowrap; }
.theory-ctl-grp { margin-right: 1.2rem; }
.theory-select { background: var(--bg-yr-btn); border: 1px solid var(--border-light); border-radius: 5px; padding: .2rem .5rem; font-size: .8rem; cursor: pointer; }
.theory-count { font-size: .8rem; color: var(--text-muted); margin: .3rem 0; }

@media (max-width: 860px) {
  .theory-charts { grid-template-columns: 1fr; }
}

/* Ask — trend bars (academic black/white/grey) */
.ask-trend { list-style: none; margin: 6px 0 0; padding: 0; }
.ask-trend-row { display: grid; grid-template-columns: 84px 1fr auto; align-items: center; gap: 10px; padding: 3px 0; font-size: 0.82rem; }
.ask-trend-yr { color: var(--text-muted); font-variant-numeric: tabular-nums; }
.ask-trend-bar { height: 10px; background: var(--text-muted, #888); opacity: 0.55; border-radius: 2px; min-width: 2px; }
.ask-trend-val { color: var(--text-primary); font-variant-numeric: tabular-nums; white-space: nowrap; }
[data-theme="dark"] .ask-trend-bar { background: #9aa0b5; opacity: 0.6; }

/* Ask — live vocabulary suggestions */
.ask-suggest-box { display: none; margin-top: 4px; border: 1px solid var(--border, #e3e3e8); border-radius: 8px; background: var(--card-bg, #fff); overflow: hidden; }
.ask-sg-item { display: grid; grid-template-columns: 78px 1fr auto; align-items: center; gap: 10px; padding: 7px 12px; font-size: 0.84rem; border-bottom: 1px solid var(--border, #f0f0f3); }
.ask-sg-item:last-child { border-bottom: none; }
.ask-sg-kind { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.04em; color: var(--text-muted); }
.ask-sg-label { color: var(--text-primary); font-weight: 600; }
.ask-sg-hint { color: var(--text-muted); font-size: 0.76rem; white-space: nowrap; }
[data-theme="dark"] .ask-suggest-box { background: #1a1d27; border-color: #2a2e3c; }
[data-theme="dark"] .ask-sg-item { border-color: #23262f; }

/* ===== Ask: enriched answer cards (connect heads, clickable chips, similar links) ===== */
.ask-conn-heads { display: flex; align-items: stretch; gap: 12px; margin: 4px 0 6px; flex-wrap: wrap; }
.ask-cp { flex: 1 1 0; min-width: 220px; border: 1px solid var(--border, #e2e2e2); border-radius: 8px; padding: 10px 12px; background: var(--bg-card); }
.ask-cp-title { font-size: 0.9rem; }
.ask-cp-meta { font-size: 0.74rem; color: var(--text-muted); margin-top: 3px; }
.ask-cp-schools { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 7px; }
.ask-cp-bridge { color: var(--text-primary); font-variant-numeric: tabular-nums; }
.ask-conn-vs { align-self: center; font-size: 1.1rem; color: var(--text-muted); flex: 0 0 auto; }
.ask-chip-link { cursor: pointer; text-decoration: none; border: 1px solid transparent; }
.ask-chip-link:hover { border-color: #aaa; }
.ask-chip-shared { background: #ffe9a8; color: #5a4500; font-weight: 600; }
.ask-chip-disc { background: #e6eefc; color: #1b3a6b; }
.ask-chip-pct { opacity: 0.7; font-variant-numeric: tabular-nums; }
.ask-sim-link { font-size: 0.72rem; color: var(--text-muted); text-decoration: none; border-bottom: 1px dotted #bbb; cursor: pointer; margin-left: 4px; white-space: nowrap; }
.ask-sim-link:hover { color: var(--text-primary); border-bottom-color: #777; }
.ask-dim { color: var(--text-muted); }
[data-theme="dark"] .ask-cp { border-color: #333; }
[data-theme="dark"] .ask-chip-link:hover { border-color: #666; }
[data-theme="dark"] .ask-chip-shared { background: #5a4500; color: #ffe9a8; }
[data-theme="dark"] .ask-chip-disc { background: #1b2a44; color: #aecbf5; }
[data-theme="dark"] .ask-sim-link { border-bottom-color: #555; }
[data-theme="dark"] .ask-sim-link:hover { color: #ddd; }


/* ===== Gap Finder view ===== */
.gap-wrap { max-width: 920px; margin: 0 auto; }
.gap-head { margin-bottom: 1rem; }
.gap-title { font-size: 1.5rem; margin: 0 0 .4rem; }
.gap-intro { color: var(--text-muted); font-size: .9rem; line-height: 1.55; margin: 0; }
.gap-coverage { display: inline-block; font-size: .76rem; color: var(--text-muted); opacity: .85; }

/* ---- mode switch (Validate an idea | Emerging gaps) ---- */
.gap-modes { display: flex; gap: .5rem; margin: 1rem 0 1.2rem; border-bottom: 1px solid var(--border-section); }
.gap-mode { appearance: none; background: none; border: none; border-bottom: 2px solid transparent; padding: .55rem .2rem; margin-bottom: -1px; font-size: .95rem; font-weight: 600; color: var(--text-muted); cursor: pointer; }
.gap-mode:hover { color: var(--text-primary); }
.gap-mode.active { color: var(--accent); border-bottom-color: var(--accent); }

/* ---- idea validator ---- */
.gap-idea-lead { color: var(--text-muted); font-size: .9rem; line-height: 1.55; margin: 0 0 .9rem; }
.gap-idea-box { display: flex; gap: .6rem; align-items: flex-start; }
.gap-idea-box textarea { flex: 1; box-sizing: border-box; padding: .65rem .85rem; font-size: .92rem; line-height: 1.5; font-family: inherit; border: 1px solid var(--border-light); border-radius: 8px; background: var(--bg-card); color: var(--text-primary); resize: vertical; }
.gap-idea-box textarea:focus { outline: none; border-color: var(--accent); }
.gap-idea-box button { white-space: nowrap; padding: .65rem 1.1rem; font-size: .9rem; font-weight: 600; border: none; border-radius: 8px; background: var(--accent); color: #fff; cursor: pointer; }
.gap-idea-box button:hover { filter: brightness(1.06); }
.gap-egs { margin: .7rem 0 0; }
.gap-egs-lbl { display: block; font-size: .76rem; text-transform: uppercase; letter-spacing: .04em; color: var(--text-muted); margin: 0 0 .45rem; }
.gap-egs-row { display: flex; flex-wrap: wrap; gap: .5rem; }
.gap-eg { max-width: 100%; padding: .45rem .7rem; font-size: .84rem; line-height: 1.3; text-align: left; border: 1px solid var(--border-light); border-radius: 999px; background: var(--bg-card); color: var(--text-secondary); cursor: pointer; transition: border-color .12s, color .12s; }
.gap-eg:hover { border-color: var(--accent); color: var(--text-primary); }
.gap-idea-status { font-size: .85rem; color: var(--text-muted); padding: .6rem .2rem 0; min-height: 1rem; }
.gap-idea-result { margin-top: 1rem; }
.gap-sub { display: block; font-size: .76rem; text-transform: uppercase; letter-spacing: .05em; color: var(--text-muted); margin-bottom: .4rem; }

.gap-verdict { display: flex; gap: 1rem; align-items: flex-start; border: 1px solid var(--border-section); border-left-width: 5px; border-radius: 10px; padding: 1rem 1.15rem; margin-bottom: 1.1rem; background: var(--bg-card); }
.gap-verdict-crowded { border-left-color: #c0492b; }
.gap-verdict-seam { border-left-color: #2e7d4f; }
.gap-verdict-uncharted { border-left-color: #7a5cc0; }
.gap-verdict-badge { flex: 0 0 auto; font-size: .82rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; padding: .35rem .6rem; border-radius: 6px; color: #fff; align-self: center; }
.gap-verdict-crowded .gap-verdict-badge { background: #c0492b; }
.gap-verdict-seam .gap-verdict-badge { background: #2e7d4f; }
.gap-verdict-uncharted .gap-verdict-badge { background: #7a5cc0; }
.gap-verdict-line { font-size: .85rem; color: var(--text-muted); margin-bottom: .35rem; }
.gap-verdict-line b { color: var(--text-primary); }
.gap-verdict-blurb { font-size: .9rem; line-height: 1.55; color: var(--text-primary); margin: 0; }
.gap-verdict-vague { border-left-color: #8a8f99; }
.gap-verdict-vague .gap-verdict-badge { background: #8a8f99; }
.gap-verdict-caveat { font-size: .78rem; line-height: 1.5; color: var(--text-muted); margin: .5rem 0 0; font-style: italic; }

.gap-timeline { margin: 0 0 1.2rem; }
.gap-tl-bars { display: flex; gap: 1rem; align-items: flex-end; height: 70px; padding-left: .2rem; }
.gap-tl-col { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; flex: 1; height: 100%; }
.gap-tl-bar { width: 60%; max-width: 40px; background: var(--accent); border-radius: 3px 3px 0 0; opacity: .8; }
.gap-tl-lbl { font-size: .72rem; color: var(--text-muted); margin-top: .3rem; }
.gap-tl-n { font-size: .72rem; font-weight: 600; color: var(--text-primary); }

.gap-idea-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 1.3rem; margin-bottom: 1.2rem; }
.gap-col-h { font-size: .95rem; margin: 0 0 .6rem; color: var(--text-primary); }
.gap-hitlist { list-style: none; margin: 0; padding: 0; }
.gap-hitlist li { display: flex; gap: .6rem; padding: .5rem .2rem; border-bottom: 1px solid var(--border-row); cursor: pointer; }
.gap-hitlist li:last-child { border-bottom: none; }
.gap-hitlist li:hover { background: var(--bg-hover-row); }
.gap-hit-sim { flex: 0 0 auto; font-size: .78rem; font-weight: 700; color: var(--accent); min-width: 2.4rem; }
.gap-hit-body { display: flex; flex-direction: column; gap: .12rem; }
.gap-hit-title { font-size: .85rem; font-weight: 600; color: var(--text-primary); line-height: 1.35; }
.gap-hit-meta { font-size: .76rem; color: var(--text-muted); }
.gap-authorlist { list-style: none; margin: 0; padding: 0; }
.gap-authorlist li { padding: .45rem .2rem; border-bottom: 1px solid var(--border-row); display: flex; flex-direction: column; gap: .1rem; }
.gap-authorlist li:last-child { border-bottom: none; }
.gap-au-name { font-size: .86rem; font-weight: 600; color: var(--text-primary); }
.gap-au-meta { font-size: .76rem; color: var(--text-muted); }

.gap-enrich { border: 1px dashed var(--border-section); border-radius: 10px; padding: 1rem 1.15rem; background: var(--bg-thead); }
.gap-enrich-head { font-size: .85rem; color: var(--text-muted); line-height: 1.5; margin-bottom: .7rem; }
.gap-enrich-btn { padding: .55rem 1rem; font-size: .88rem; font-weight: 600; border: 1px solid var(--accent); border-radius: 8px; background: transparent; color: var(--accent); cursor: pointer; }
.gap-enrich-btn:hover:not(:disabled) { background: var(--accent); color: #fff; }
.gap-enrich-btn:disabled { opacity: .6; cursor: default; }
.gap-enrich-result { margin-top: .9rem; }
.gap-enrich-summary { font-size: .85rem; color: var(--text-primary); margin-bottom: .5rem; }
.gap-hitlist-online li { cursor: default; }
.gap-hit-online a { display: flex; text-decoration: none; }
.gap-hit-online a:hover .gap-hit-title { color: var(--accent); }
.gap-enrich-note { font-size: .78rem; color: var(--text-muted); line-height: 1.5; margin-top: .6rem; font-style: italic; }

/* ---- concept chips / differentiators / venues ---- */
.gap-chip-row { display: flex; flex-wrap: wrap; gap: .4rem; }
.gap-concepts, .gap-diffs, .gap-venues { margin: 0 0 1.1rem; }
.gap-concept { display: inline-flex; align-items: center; gap: .3rem; font-size: .8rem; padding: .3rem .6rem; border: 1px solid var(--border-light); border-radius: 999px; background: var(--bg-card); color: var(--text-primary); cursor: pointer; }
.gap-concept:hover { border-color: #c0492b; color: #c0492b; }
.gap-concept-x { font-weight: 700; opacity: .6; }
.gap-concept:hover .gap-concept-x { opacity: 1; }
.gap-concept-add { display: flex; gap: .5rem; margin-top: .55rem; }
.gap-concept-add input { flex: 1; max-width: 280px; box-sizing: border-box; padding: .4rem .7rem; font-size: .82rem; border: 1px solid var(--border-light); border-radius: 8px; background: var(--bg-card); color: var(--text-primary); }
.gap-concept-add input:focus { outline: none; border-color: var(--accent); }
.gap-concept-add button { padding: .4rem .85rem; font-size: .82rem; font-weight: 600; border: 1px solid var(--accent); border-radius: 8px; background: transparent; color: var(--accent); cursor: pointer; }
.gap-concept-add button:hover { background: var(--accent); color: #fff; }
.gap-diff-chip { font-size: .8rem; padding: .3rem .6rem; border-radius: 999px; background: rgba(46,125,79,.12); color: #2e7d4f; border: 1px solid rgba(46,125,79,.35); }
.gap-venue-chip { font-size: .8rem; padding: .3rem .6rem; border-radius: 6px; background: var(--bg-thead); color: var(--text-muted); border: 1px solid var(--border-row); }
.gap-venue-chip b { color: var(--text-primary); margin-left: .15rem; }

/* per-paper "find similar" action inside the hit list */
.gap-hitlist li { align-items: center; }
.gap-hit-similar { flex: 0 0 auto; margin-left: auto; align-self: center; font-size: .74rem; font-weight: 600; padding: .25rem .5rem; border: 1px solid var(--border-light); border-radius: 6px; background: transparent; color: var(--text-muted); cursor: pointer; white-space: nowrap; }
.gap-hit-similar:hover { border-color: var(--accent); color: var(--accent); }

/* clickable authors */
.gap-au-clickable { cursor: pointer; }
.gap-au-link { color: var(--accent); }
.gap-au-clickable:hover .gap-au-link { text-decoration: underline; }
.gap-au-note { font-size: .74rem; color: var(--text-muted); font-style: italic; margin-top: .5rem; }

@media (max-width: 720px) {
  .gap-idea-cols { grid-template-columns: 1fr; }
  .gap-idea-box { flex-direction: column; }
  .gap-idea-box button { align-self: stretch; }
}
.gap-search-row { position: relative; margin: 1rem 0 1.2rem; }
.gap-search { width: 100%; box-sizing: border-box; padding: .7rem 1rem; font-size: .95rem; border: 1px solid var(--border-light); border-radius: 8px; background: var(--bg-card); color: var(--text-primary); }
.gap-search:focus { outline: none; border-color: var(--accent); }
.gap-suggest { position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 30; background: var(--bg-card); border: 1px solid var(--border-light); border-radius: 8px; box-shadow: 0 8px 24px rgba(0,0,0,.12); max-height: 340px; overflow-y: auto; display: none; }
.gap-suggest.open { display: block; }
.gap-sug { padding: .55rem .8rem; cursor: pointer; border-bottom: 1px solid var(--border-row); display: flex; flex-direction: column; gap: .15rem; }
.gap-sug:last-child { border-bottom: none; }
.gap-sug:hover { background: var(--bg-hover-row); }
.gap-sug-t { font-size: .86rem; font-weight: 600; color: var(--text-primary); }
.gap-sug-m { font-size: .76rem; color: var(--text-muted); }
.gap-sug-empty, .gap-empty, .gap-loading, .gap-empty-inline { color: var(--text-muted); font-size: .88rem; padding: 1rem .2rem; }

.gap-seed { background: var(--bg-thead); border: 1px solid var(--border-section); border-left: 4px solid var(--accent); border-radius: 9px; padding: .9rem 1.1rem; margin-bottom: 1.3rem; }
.gap-seed-label { font-size: .7rem; text-transform: uppercase; letter-spacing: .05em; color: var(--text-muted); margin-bottom: .25rem; }
.gap-seed-title { font-weight: 700; font-size: 1.02rem; line-height: 1.4; color: var(--text-primary); }
.gap-seed-meta { font-size: .82rem; color: var(--text-muted); margin-top: .25rem; }
.gap-seed-stats { display: flex; gap: 1.2rem; flex-wrap: wrap; margin-top: .6rem; font-size: .8rem; color: var(--text-muted); }
.gap-seed-stats b { color: var(--text-primary); }

.gap-section { margin-bottom: 1.6rem; }
.gap-sec-title { font-size: 1.02rem; margin: 0 0 .6rem; display: flex; flex-wrap: wrap; align-items: baseline; gap: .5rem; }
.gap-sec-sub { font-weight: 400; font-size: .78rem; color: var(--text-muted); }
.gap-list { list-style: decimal; padding-left: 1.6em; margin: 0; }
.gap-list-sub { opacity: .9; }
.gap-item { padding: .5rem .2rem; border-bottom: 1px solid var(--border-row); cursor: pointer; display: flex; align-items: center; gap: 1rem; }
.gap-item:hover { background: var(--bg-hover-row); }
.gap-item-main { flex: 1 1 auto; display: flex; flex-direction: column; gap: .15rem; min-width: 0; }
.gap-item-t { font-size: .88rem; font-weight: 600; color: var(--text-primary); }
.gap-item-m { font-size: .76rem; color: var(--text-muted); }
.gap-item-why { flex: 0 0 auto; font-size: .74rem; font-weight: 600; color: var(--accent-hover); background: var(--bg-badge-top); border-radius: 5px; padding: .12rem .5rem; white-space: nowrap; }

.gap-path { list-style: decimal; padding-left: 1.6em; margin: 0; }
.gap-path-item { padding: .4rem .2rem; border-bottom: 1px solid var(--border-row); cursor: pointer; display: flex; flex-direction: column; gap: .12rem; }
.gap-path-item:hover { background: var(--bg-hover-row); }
.gap-path-t { font-size: .86rem; color: var(--text-primary); }
.gap-path-m { font-size: .75rem; color: var(--text-muted); }
.gap-path-new .gap-path-t { font-weight: 600; }
.gap-tag-new { color: #b91c1c; font-weight: 600; }

[data-theme="dark"] .gap-suggest { background: #1a1d27; border-color: #2a2e3c; }
[data-theme="dark"] .gap-tag-new { color: #f87171; }

/* Gap Finder — research white-space discovery (tabs + structural holes + debates) */
.gap-tabs { display: flex; gap: .4rem; margin: 1.1rem 0 1rem; border-bottom: 1px solid var(--border-section); }
.gap-tab { appearance: none; background: none; border: none; border-bottom: 2px solid transparent; padding: .5rem .2rem; margin-right: .8rem; font-size: .9rem; font-weight: 600; color: var(--text-muted); cursor: pointer; display: inline-flex; align-items: center; gap: .4rem; }
.gap-tab:hover { color: var(--text-primary); }
.gap-tab.active { color: var(--text-primary); border-bottom-color: var(--accent); }
.gap-tab-n { font-size: .72rem; font-weight: 600; color: var(--text-muted); background: var(--bg-badge-top); border-radius: 999px; padding: .05rem .45rem; }
.gap-tab.active .gap-tab-n { color: var(--accent-hover); }
.gap-body { margin-top: .3rem; }

.gap-filter-row { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; margin-bottom: 1rem; }
.gap-filter-lbl { font-size: .78rem; font-weight: 600; color: var(--text-muted); }
.gap-filter-sel { padding: .35rem .6rem; font-size: .84rem; border: 1px solid var(--border-light); border-radius: 6px; background: var(--bg-card); color: var(--text-primary); }
.gap-filter-note { flex: 1 1 260px; font-size: .76rem; color: var(--text-muted); line-height: 1.5; }

.gap-holes { list-style: none; margin: 0; padding: 0; }
.gap-hole { padding: .85rem 0; border-bottom: 1px solid var(--border-row); }
.gap-hole-head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
.gap-hole-pair { font-size: .98rem; font-weight: 700; color: var(--text-primary); }
.gap-hole-x { color: var(--text-muted); font-weight: 400; margin: 0 .15rem; }
.gap-hole-strength { font-size: .76rem; font-weight: 600; color: var(--text-muted); white-space: nowrap; }
.gap-hole-bar { height: 5px; border-radius: 3px; background: var(--border-row); margin: .45rem 0 .5rem; overflow: hidden; }
.gap-hole-bar span { display: block; height: 100%; background: var(--accent); opacity: .55; }
.gap-hole-meta { font-size: .78rem; color: var(--text-muted); display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; }
.gap-chip { display: inline-block; font-size: .72rem; background: var(--bg-badge-top); color: var(--text-primary); border-radius: 4px; padding: .08rem .45rem; }
.gap-hole-aud { margin-left: auto; opacity: .85; }
.gap-hole-samples { margin-top: .55rem; font-size: .76rem; color: var(--text-muted); }
.gap-hole-samples ul { list-style: none; margin: .3rem 0 0; padding: 0; }
.gap-hole-samples li { padding: .25rem .4rem; border-radius: 5px; cursor: pointer; display: flex; flex-direction: column; gap: .1rem; }
.gap-hole-samples li:hover { background: var(--bg-hover-row); }
.gap-samp-t { font-size: .8rem; color: var(--text-primary); }
.gap-samp-m { font-size: .72rem; color: var(--text-muted); }

/* --- Rising frontiers (Emerging gaps mode B) --------------------------- */
.gap-frontiers { list-style: none; margin: 0; padding: 0; }
.gap-frontier { padding: .9rem 0; border-bottom: 1px solid var(--border-row); }
.gap-fr-head { display: flex; align-items: center; flex-wrap: wrap; gap: .55rem; }
.gap-fr-kw { font-size: 1rem; font-weight: 700; color: var(--text-primary); text-transform: capitalize; }
.gap-fr-grow { font-size: .74rem; font-weight: 700; color: var(--accent-hover); background: var(--bg-badge-top); border-radius: 4px; padding: .08rem .45rem; white-space: nowrap; }
.gap-spark { color: var(--accent); opacity: .8; flex: 0 0 auto; }
.gap-fr-vol { font-size: .75rem; color: var(--text-muted); margin-left: auto; white-space: nowrap; }
.gap-fr-open { margin: .5rem 0 .15rem; font-size: .78rem; color: var(--text-muted); line-height: 1.7; }
.gap-fr-open-lbl { font-size: .68rem; text-transform: uppercase; letter-spacing: .03em; font-weight: 700; color: var(--text-muted); margin-right: .35rem; }
.gap-fr-not { margin-top: .35rem; }
.gap-chip-on { background: var(--bg-badge-top); color: var(--text-muted); margin: 0 .25rem .2rem 0; }
.gap-chip-open { background: transparent; border: 1px dashed var(--accent); color: var(--accent-hover); cursor: pointer; margin: 0 .25rem .2rem 0; }
.gap-chip-open:hover { background: var(--accent); color: #fff; border-style: solid; }
/* bridged opening: the field already cites the seed papers (real, feasible transfer) */
.gap-chip-bridge { background: var(--bg-badge-top); border: 1px solid var(--accent); color: var(--accent-hover); font-weight: 600; }
.gap-chip-bridge:hover { background: var(--accent); color: #fff; }
.gap-chip-pct { font-size: .66rem; font-weight: 700; opacity: .75; margin-left: .15rem; }
/* cold opening: no citation linkage yet (likely structurally distant) */
.gap-chip-cold { opacity: .6; }
.gap-fr-nowhere { color: var(--accent-hover); }
.gap-fr-bridge-note { margin-top: .3rem; font-size: .73rem; color: var(--text-muted); line-height: 1.35; }
.gap-fr-bridge-note strong { color: var(--accent-hover); font-weight: 700; }
.gap-fr-more { font-size: .72rem; color: var(--text-muted); }
.gap-fr-arrow { font-size: .73rem; font-style: italic; font-weight: 600; color: var(--accent-hover); margin-left: .35rem; }
.gap-fr-note2 { font-style: italic; }
.gap-fr-anchors { margin-top: .55rem; font-size: .76rem; }
.gap-fr-anchors-lbl { font-size: .68rem; text-transform: uppercase; letter-spacing: .03em; font-weight: 700; color: var(--text-muted); }
.gap-fr-anchors ul { list-style: none; margin: .3rem 0 0; padding: 0; }
.gap-fr-anchors li { padding: .28rem .45rem; border-radius: 5px; cursor: pointer; display: flex; flex-direction: column; gap: .1rem; }
.gap-fr-anchors li:hover { background: var(--bg-hover-row); }
.gap-fr-a-t { font-size: .82rem; color: var(--text-primary); }
.gap-fr-a-m { font-size: .72rem; color: var(--text-muted); }
.gap-fr-why { font-size: .76rem; color: var(--text-muted); font-style: italic; margin-top: .25rem; }
.gap-fr-toggle { margin-top: .9rem; }
.gap-fr-showall { appearance: none; background: none; border: 1px solid var(--border-row); border-radius: 5px; padding: .3rem .6rem; font-size: .76rem; color: var(--text-muted); cursor: pointer; }
.gap-fr-showall:hover { color: var(--text-primary); border-color: var(--accent); }
.gap-frontiers-muted { margin-top: .6rem; opacity: .7; }
.gap-frontier-denied { padding: .5rem 0; }

.gap-debates { list-style: none; margin: 0; padding: 0; }
.gap-debate { padding: .8rem 0; border-bottom: 1px solid var(--border-row); }
.gap-debate-vs { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; }
.gap-school { font-size: .92rem; font-weight: 600; color: var(--text-primary); text-decoration: none; }
.gap-school:hover { color: var(--accent-hover); text-decoration: underline; }
.gap-school-lead { font-size: .74rem; font-weight: 400; color: var(--text-muted); }
.gap-vs { font-size: .76rem; font-style: italic; color: var(--text-muted); }
.gap-debate-meta { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: .4rem; font-size: .77rem; color: var(--text-muted); }
.gap-tension { font-weight: 600; color: var(--accent-hover); }

[data-theme="dark"] .gap-filter-sel { background: #1a1d27; border-color: #2a2e3c; }


/* ===== Schools: global Landscape (mode switch, global map, timeline) ===== */
.sv-mode-switch { display: inline-flex; gap: 0; margin: 0.4rem 0 0.6rem; border: 1px solid var(--border); border-radius: 6px; overflow: hidden; }
.sv-mode-btn { padding: 0.32rem 0.85rem; font-size: 0.82rem; background: transparent; color: var(--text-muted); border: none; cursor: pointer; border-right: 1px solid var(--border); }
.sv-mode-btn:last-child { border-right: none; }
.sv-mode-btn.sv-mode-on { background: var(--text-muted); color: #fff; }
.sv-land-switch { display: inline-flex; gap: 0.4rem; margin-top: 0.2rem; }
.sv-land-btn { padding: 0.25rem 0.7rem; font-size: 0.78rem; background: transparent; color: var(--text-muted); border: 1px solid var(--border); border-radius: 5px; cursor: pointer; }
.sv-land-btn.sv-land-on { background: var(--text-muted); color: #fff; border-color: var(--text-muted); }
.sv-land-host { margin-top: 0.8rem; min-height: 300px; }
.sv-land-svg { display: block; width: 100%; height: auto; }
.sv-land-edge { stroke: var(--text-muted); stroke-opacity: 0.3; stroke-dasharray: 4 3; }
.sv-land-circle { stroke: rgba(0,0,0,0.25); stroke-width: 1px; fill-opacity: 0.85; }
.sv-land-node:hover .sv-land-circle { fill-opacity: 1; stroke: #222; stroke-width: 1.5px; }
.sv-land-lbl { font-size: 10px; fill: #fff; pointer-events: none; font-weight: 600; }
.sv-tl-lbl { font-size: 9px; fill: var(--text-primary); pointer-events: none; }
.sv-tl-axis { stroke: var(--text-muted); stroke-opacity: 0.5; }
.sv-tl-gridline { stroke: var(--text-muted); stroke-opacity: 0.12; }
.sv-tl-tick { font-size: 10px; fill: var(--text-muted); }
.sv-land-legend { margin-top: 0.6rem; }
.sv-legend-discs { display: flex; flex-wrap: wrap; gap: 0.5rem 0.9rem; }
.sv-legend-item { display: inline-flex; align-items: center; gap: 0.3rem; font-size: 0.74rem; color: var(--text-muted); }
.sv-legend-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.sv-legend-note { font-size: 0.74rem; color: var(--text-muted); margin: 0.4rem 0 0; font-style: italic; }
[data-theme="dark"] .sv-land-edge { stroke: rgb(154,160,181); stroke-opacity: 0.35; }
[data-theme="dark"] .sv-land-circle { stroke: rgba(255,255,255,0.2); }
[data-theme="dark"] .sv-tl-lbl { fill: #ccc; }

/* Timeline labels: clustered fields collide, so show on hover only (title tooltip always works). */
.sv-tl-lbl { opacity: 0; transition: opacity 0.12s; }
.sv-land-node:hover .sv-tl-lbl { opacity: 1; }

/* Landscape: hover-only field-map labels (clusters collide) + floating tooltip */
.sv-land-lbl { opacity: 0; transition: opacity 0.12s; }
.sv-land-node:hover .sv-land-lbl { opacity: 1; }
.sv-land-tip {
    position: fixed; z-index: 9999; pointer-events: none;
    background: var(--surface, #fff); color: var(--text-primary, #222);
    border: 1px solid var(--border, #ddd); border-radius: 6px;
    padding: 0.45rem 0.6rem; max-width: 240px; font-size: 0.78rem;
    box-shadow: 0 4px 16px rgba(0,0,0,0.16); line-height: 1.35;
}
.sv-tip-h { font-weight: 700; margin-bottom: 0.15rem; }
.sv-tip-r { color: var(--text-muted); }
.sv-tip-nn { margin-top: 0.2rem; font-style: italic; }
[data-theme="dark"] .sv-land-tip { background: #1a1d27; color: #e6e6ea; border-color: #333a4d; }

/* Landscape timeline: per-field school-evolution rows + scope picker */
.sv-tl-scope { margin-top: 0.5rem; font-size: 0.8rem; color: var(--text-muted); }
.sv-tl-scope select {
    font-size: 0.8rem; padding: 0.2rem 0.4rem; border: 1px solid var(--border);
    border-radius: 5px; background: var(--surface); color: var(--text-primary); max-width: 320px;
}
.sv-strow:hover .sv-strow-lbl { fill: var(--text-primary); font-weight: 600; }
.sv-strow-lbl { font-size: 11px; fill: var(--text-muted); }
.sv-strow-span { stroke-width: 3px; stroke-opacity: 0.55; stroke-linecap: round; }
.sv-strow:hover .sv-strow-span { stroke-opacity: 0.9; }
.sv-strow-dot { stroke: rgba(0,0,0,0.25); stroke-width: 1px; }
[data-theme="dark"] .sv-strow-lbl { fill: rgb(154,160,181); }
[data-theme="dark"] .sv-strow-dot { stroke: rgba(255,255,255,0.2); }

/* ===== Career Mirror (career-mirror.js) ================================== */
.cm-wrap { max-width: 860px; margin: 0 auto; padding: 0 0 3rem; }
.cm-head { margin-bottom: 1.25rem; }
.cm-title { font-size: 1.9rem; font-weight: 800; margin: 0 0 0.4rem; color: var(--text); }
.cm-intro { color: var(--text-secondary); line-height: 1.55; margin: 0; max-width: 70ch; }
.cm-search-row { position: relative; margin-bottom: 1.5rem; }
.cm-starters { margin-top: 0.5rem; }
.cm-starters-label { font-size: 0.8rem; color: var(--text-dim); margin-bottom: 0.7rem; }
.cm-starters-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 0.6rem; }
.cm-starter { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; text-align: left; padding: 0.65rem 0.85rem; background: var(--surface-2, rgba(148,163,184,0.06)); border: 1px solid var(--border-row); border-radius: 8px; cursor: pointer; transition: border-color 0.12s, background 0.12s; }
.cm-starter:hover { border-color: var(--accent); background: rgba(148,163,184,0.12); }
.cm-starter-n { font-weight: 600; color: var(--text); font-size: 0.9rem; }
.cm-starter-m { font-size: 0.72rem; color: var(--text-dim); }
@media (max-width: 640px) { .cm-starters-grid { grid-template-columns: 1fr; } }
.cm-search {
    width: 100%; padding: 0.85rem 1rem; font-size: 1rem; box-sizing: border-box;
    border: 1px solid var(--border-card); border-radius: 12px;
    background: var(--surface); color: var(--text);
}
.cm-search:focus { outline: none; border-color: var(--accent); }
.cm-suggest {
    display: none; position: absolute; z-index: 30; left: 0; right: 0; top: calc(100% + 4px);
    background: var(--surface); border: 1px solid var(--border-card); border-radius: 12px;
    box-shadow: 0 8px 28px rgba(0,0,0,0.12); overflow: hidden; max-height: 380px; overflow-y: auto;
}
.cm-suggest.open { display: block; }
.cm-sug { padding: 0.6rem 0.9rem; cursor: pointer; border-bottom: 1px solid var(--border-row); }
.cm-sug:last-child { border-bottom: none; }
.cm-sug:hover { background: rgba(74,158,255,0.08); }
.cm-sug-t { font-weight: 600; color: var(--text); }
.cm-sug-m { font-size: 0.82rem; color: var(--text-muted); margin-top: 0.1rem; }
.cm-sug-empty { padding: 0.8rem 0.9rem; color: var(--text-muted); }
.cm-loading { padding: 2rem; text-align: center; color: var(--text-muted); }

/* Hero */
.cm-hero {
    background: linear-gradient(135deg, rgba(74,158,255,0.10), rgba(124,77,255,0.08));
    border: 1px solid var(--border-card); border-radius: 16px; padding: 1.3rem 1.4rem; margin-bottom: 1.1rem;
}
.cm-hero-name { font-size: 1.5rem; font-weight: 800; color: var(--text); }
.cm-hero-name.cm-link { cursor: pointer; }
.cm-hero-name.cm-link:hover { color: var(--accent); text-decoration: underline; }
.cm-hero-sub { color: var(--text-secondary); margin-top: 0.15rem; font-size: 0.92rem; }
.cm-hero-stats { display: flex; flex-wrap: wrap; gap: 1.4rem; margin-top: 1rem; }
.cm-stat { position: relative; }
.cm-stat-big { font-size: 1.45rem; font-weight: 800; color: var(--text); }
.cm-stat-lbl { font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.04em; color: var(--text-muted); }
.cm-stat-badge {
    display: inline-block; margin-top: 0.2rem; font-size: 0.72rem; font-weight: 700;
    color: var(--accent); background: rgba(74,158,255,0.12); padding: 0.05rem 0.4rem; border-radius: 6px;
}

/* Generic panel */
.cm-panel {
    background: var(--surface); border: 1px solid var(--border-card); border-radius: 14px;
    padding: 1.1rem 1.2rem; margin-bottom: 1rem;
}
.cm-panel-h { font-weight: 700; color: var(--text); margin-bottom: 0.7rem; font-size: 1.02rem; }
.cm-panel-sub { font-weight: 400; color: var(--text-muted); font-size: 0.82rem; margin-left: 0.4rem; }
.cm-panel-empty { color: var(--text-muted); font-size: 0.9rem; }

/* Archetype */
.cm-verdict { font-size: 1.12rem; font-weight: 600; color: var(--text); line-height: 1.45; }
.cm-verdict-sub { color: var(--text-secondary); margin-top: 0.35rem; font-size: 0.92rem; }
.cm-arch-tags { display: flex; flex-wrap: wrap; gap: 0.45rem; margin-top: 0.8rem; }
.cm-tag {
    font-size: 0.78rem; font-weight: 600; color: var(--text-secondary);
    background: var(--border-row); padding: 0.18rem 0.6rem; border-radius: 999px;
}

/* Trajectory sparkline */
.cm-spark { display: flex; align-items: flex-end; gap: 2px; height: 50px; margin-bottom: 0.3rem; }
.cm-spark-bar { flex: 1 1 auto; min-width: 2px; background: var(--accent); opacity: 0.55; border-radius: 2px 2px 0 0; }
.cm-spark-bar.peak { opacity: 1; background: #7c4dff; }
.cm-spark-axis { display: flex; justify-content: space-between; font-size: 0.74rem; color: var(--text-muted); }
.cm-traj-read { margin-top: 0.7rem; color: var(--text-secondary); line-height: 1.5; }
.cm-traj-mom { font-weight: 700; }
.cm-traj-mom.up { color: #16a34a; }
.cm-traj-mom.flat { color: var(--accent); }
.cm-traj-mom.down { color: #dc2626; }

/* Provenance stacked bar */
.cm-prov-bar { display: flex; height: 22px; border-radius: 8px; overflow: hidden; background: var(--border-row); }
.cm-seg { height: 100%; }
.cm-seg-external { background: #16a34a; }
.cm-seg-coauthor { background: #f59e0b; }
.cm-seg-self { background: #94a3b8; }
.cm-prov-legend { display: flex; flex-wrap: wrap; gap: 1.1rem; margin-top: 0.6rem; font-size: 0.85rem; color: var(--text-secondary); }
.cm-leg { display: inline-flex; align-items: center; gap: 0.35rem; }
.cm-dot { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.cm-prov-read { margin-top: 0.7rem; color: var(--text-secondary); line-height: 1.5; }

/* Reach vs depth quadrant */
.cm-quad { display: grid; grid-template-columns: 18px 1fr; grid-template-rows: 1fr 18px; gap: 4px; height: 200px; margin: 0.4rem 0; }
.cm-quad-yaxis { writing-mode: vertical-rl; transform: rotate(180deg); text-align: center; font-size: 0.74rem; color: var(--text-muted); }
.cm-quad-plot { position: relative; border: 1px solid var(--border-card); border-radius: 8px; background: var(--bg); }
.cm-quad-line-h { position: absolute; left: 0; right: 0; top: 50%; border-top: 1px dashed var(--border-card); }
.cm-quad-line-v { position: absolute; top: 0; bottom: 0; left: 50%; border-left: 1px dashed var(--border-card); }
.cm-quad-dot {
    position: absolute; width: 16px; height: 16px; border-radius: 50%;
    background: #7c4dff; box-shadow: 0 0 0 5px rgba(124,77,255,0.22);
    transform: translate(-50%, -50%);
}
.cm-quad-xaxis { grid-column: 2; text-align: center; font-size: 0.74rem; color: var(--text-muted); }
.cm-quad-read { color: var(--text-secondary); line-height: 1.5; margin-top: 0.4rem; }
.cm-quad-nums { font-size: 0.84rem; color: var(--text-muted); }

/* Percentile bars */
.cm-pct-list { display: flex; flex-direction: column; gap: 0.55rem; }
.cm-pct-row { display: grid; grid-template-columns: 130px 1fr 78px; align-items: center; gap: 0.6rem; }
.cm-pct-lbl { font-size: 0.86rem; color: var(--text-secondary); }
.cm-pct-track { height: 9px; border-radius: 999px; background: var(--border-row); overflow: hidden; }
.cm-pct-fill { height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--accent), #7c4dff); }
.cm-pct-val { font-size: 0.8rem; font-weight: 700; color: var(--accent); text-align: right; }
.cm-pct-read { margin-top: 0.8rem; color: var(--text-secondary); line-height: 1.5; }

[data-theme="dark"] .cm-suggest { box-shadow: 0 8px 28px rgba(0,0,0,0.5); }
[data-theme="dark"] .cm-hero { background: linear-gradient(135deg, rgba(74,158,255,0.16), rgba(124,77,255,0.14)); }
[data-theme="dark"] .cm-sug:hover { background: rgba(74,158,255,0.14); }

/* ----- Mirror 0: one-line verdict ----- */
.cm-verdictcard .cm-verdict { font-size: 1.08rem; line-height: 1.55; margin-top: 0.5rem; }

/* ----- Mirror 1: intellectual metabolism ----- */
.cm-mtb-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.4rem; margin: 0.5rem 0 0.2rem; }
.cm-mtb-cap { font-size: 0.82rem; font-weight: 700; color: var(--text-secondary); margin-bottom: 0.5rem; text-transform: uppercase; letter-spacing: 0.03em; }
.cm-mtb-cap span { display: block; font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--text-muted); font-size: 0.78rem; }
.cm-mtb-row { display: grid; grid-template-columns: 96px 1fr 30px; align-items: center; gap: 0.5rem; margin-bottom: 0.4rem; }
.cm-mtb-lbl { font-size: 0.8rem; color: var(--text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cm-mtb-track { height: 8px; border-radius: 999px; background: var(--border-row); overflow: hidden; }
.cm-mtb-fill { height: 100%; border-radius: 999px; }
.cm-mtb-fill.in { background: #94a3b8; }
.cm-mtb-fill.out { background: linear-gradient(90deg, var(--accent), #7c4dff); }
.cm-mtb-val { font-size: 0.76rem; font-weight: 700; color: var(--text-muted); text-align: right; }
.cm-mtb-read { margin-top: 0.7rem; color: var(--text-secondary); line-height: 1.5; }
.cm-mtb-nums { display: inline-block; font-size: 0.8rem; color: var(--text-muted); margin-left: 0.3rem; }
@media (max-width: 640px) { .cm-mtb-grid { grid-template-columns: 1fr; gap: 1rem; } }

/* ----- Mirror 2: intellectual lineage ----- */
.cm-lin-block { margin-top: 0.7rem; }
.cm-lin-cap { font-size: 0.82rem; font-weight: 700; color: var(--text-secondary); margin-bottom: 0.4rem; }
.cm-lin-cap span { font-weight: 400; color: var(--text-muted); font-size: 0.78rem; }
.cm-lin-chips { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.cm-lin-chip {
    display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.25rem 0.6rem;
    border-radius: 999px; background: var(--border-row); color: var(--text-secondary);
    font-size: 0.82rem; border: 1px solid transparent;
}
.cm-lin-chip .cm-lin-n { font-style: normal; font-size: 0.7rem; color: var(--text-muted); font-weight: 700; }
.cm-lin-link { cursor: pointer; }
.cm-lin-link:hover { background: rgba(74,158,255,0.14); border-color: var(--accent); color: var(--accent); }
.cm-lin-inter .cm-lin-chip { background: rgba(124,77,255,0.12); }
.cm-lin-inter .cm-lin-link:hover { background: rgba(124,77,255,0.22); border-color: #7c4dff; }

/* ----- Mirror 3: half-life shape accents ----- */
.cm-shape-ascending { color: #2563eb; }
.cm-shape-compounding { color: #16a34a; }
.cm-shape-enduring { color: var(--accent); }
.cm-shape-past { color: #dc2626; }

/* ----- Mirror 4: discipline-calibrated marker ----- */
.cm-pct-track { position: relative; }
.cm-pct-disc {
    position: absolute; top: -3px; width: 2px; height: 15px; background: #7c4dff;
    transform: translateX(-50%); border-radius: 2px;
}
.cm-pct-disc::after {
    content: ""; position: absolute; top: -3px; left: 50%; transform: translateX(-50%);
    width: 7px; height: 7px; border-radius: 50%; background: #7c4dff;
}
.cm-pct-val { display: flex; flex-direction: column; align-items: flex-end; line-height: 1.25; }
.cm-pct-disc-val { font-size: 0.68rem; font-weight: 600; color: #7c4dff; }
.cm-pct-legend { display: flex; gap: 1rem; margin-top: 0.6rem; font-size: 0.78rem; color: var(--text-muted); align-items: center; }
.cm-pct-bar-key { display: inline-block; width: 18px; height: 8px; border-radius: 999px; background: linear-gradient(90deg, var(--accent), #7c4dff); vertical-align: middle; margin-right: 0.3rem; }
.cm-pct-disc-key { display: inline-block; width: 2px; height: 12px; background: #7c4dff; vertical-align: middle; margin-right: 0.3rem; }

/* ----- Career Mirror: external badge, topic signature, vintage, thin ----- */
.cm-hero-ext {
  display: inline-block; margin-top: 0.9rem; padding: 0.28rem 0.7rem;
  border-radius: 999px; font-size: 0.82rem; font-weight: 500;
  background: var(--bg-subtle, #f1f3f5); color: var(--text-secondary);
}
.cm-hero-ext b { font-weight: 700; }
.cm-ext-good { background: rgba(22,163,74,0.12); color: #15803d; }
.cm-ext-ok   { background: rgba(37,99,235,0.10); color: #1d4ed8; }
.cm-ext-warn { background: rgba(220,38,38,0.10); color: #b91c1c; }

.cm-topic-sig { margin-top: 1rem; padding-top: 0.9rem; border-top: 1px solid var(--border, #e5e7eb); }
.cm-topic-title { font-size: 0.78rem; font-weight: 600; text-transform: uppercase;
  letter-spacing: 0.04em; color: var(--text-secondary); margin-bottom: 0.55rem; }
.cm-topic-row { display: flex; align-items: baseline; gap: 0.6rem; margin-bottom: 0.45rem; flex-wrap: wrap; }
.cm-topic-cap { flex: 0 0 5.5rem; font-size: 0.8rem; color: var(--text-secondary); font-weight: 500; }
.cm-topic-chips { display: flex; flex-wrap: wrap; gap: 0.35rem; flex: 1; }
.cm-topic { display: inline-block; padding: 0.15rem 0.55rem; border-radius: 6px;
  font-size: 0.8rem; line-height: 1.35; background: var(--bg-subtle, #f1f3f5); color: var(--text-primary); }
.cm-topic.core { background: rgba(124,58,237,0.12); color: #6d28d9; font-weight: 500; }
.cm-topic.in   { background: rgba(100,116,139,0.12); color: #475569; }
.cm-topic.out  { background: rgba(37,99,235,0.10); color: #1d4ed8; }

.cm-vintage .cm-vin-bars { margin: 0.6rem 0 0.4rem; }
.cm-vin-row { display: flex; justify-content: space-between; align-items: baseline;
  padding: 0.35rem 0; border-bottom: 1px dashed var(--border, #e5e7eb); }
.cm-vin-row:last-child { border-bottom: 0; }
.cm-vin-lbl { color: var(--text-secondary); font-size: 0.9rem; }
.cm-vin-yr { font-weight: 700; font-size: 1.1rem; font-variant-numeric: tabular-nums; }
.cm-vin-tag { font-weight: 600; }
.cm-vin-classic  { color: #b45309; }
.cm-vin-frontier { color: #2563eb; }
.cm-vin-steady   { color: var(--text-secondary); }

.cm-thin .cm-thin-body { color: var(--text-secondary); line-height: 1.55; }

@media (max-width: 640px) {
  .cm-topic-cap { flex-basis: 100%; }
}

/* ===== Discover (discover.js) =========================================== */
.dv-wrap { max-width: 860px; margin: 0 auto; padding: 0 0 3rem; }
.dv-head { margin-bottom: 1.1rem; }
.dv-title { font-size: 1.9rem; font-weight: 800; margin: 0 0 0.4rem; color: var(--text-primary); }
.dv-intro { color: var(--text-secondary); line-height: 1.55; margin: 0; max-width: 72ch; }
.dv-segs { display: flex; gap: 0.5rem; margin: 1.2rem 0 1.4rem; flex-wrap: wrap; }
.dv-seg {
    padding: 0.5rem 1rem; border-radius: 999px; cursor: pointer;
    border: 1px solid var(--border-light); background: var(--bg-card);
    color: var(--text-secondary); font-size: 0.9rem; font-weight: 600;
}
.dv-seg:hover { border-color: var(--accent); }
.dv-seg-on { background: var(--accent); color: #fff; border-color: var(--accent); }
.dv-loading, .dv-empty { padding: 2rem; text-align: center; color: var(--text-muted); }
.dv-cap { color: var(--text-secondary); font-size: 0.9rem; line-height: 1.5; margin: 0 0 1rem; max-width: 72ch; }
.dv-sec { }

/* discipline chips (emerging) */
.dv-chips { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-bottom: 0.9rem; }
.dv-chip {
    padding: 0.3rem 0.7rem; border-radius: 999px; cursor: pointer; font-size: 0.8rem;
    border: 1px solid var(--border-light); background: var(--bg-card); color: var(--text-secondary);
}
.dv-chip:hover { border-color: var(--accent); }
.dv-chip-on { background: var(--text-primary); color: var(--bg-card); border-color: var(--text-primary); }

/* emerging list */
.dv-em-list { list-style: none; margin: 0; padding: 0; }
.dv-em-row {
    display: grid; grid-template-columns: 1fr 160px auto 1.4rem; align-items: center;
    gap: 1rem; padding: 0.55rem 0.4rem; border-bottom: 1px solid var(--border-row);
    cursor: pointer; border-radius: 6px;
}
.dv-em-row:hover { background: rgba(99,102,241,0.06); }
.dv-em-go { color: var(--text-muted); font-weight: 700; text-align: center; opacity: 0; transition: opacity .12s; }
.dv-em-row:hover .dv-em-go { opacity: 1; color: var(--accent); }
.dv-em-kw { font-weight: 600; color: var(--text-primary); text-transform: capitalize; }
.dv-em-z { font-size: 0.72rem; color: var(--text-muted); font-weight: 500; margin-left: 0.4rem; }
.dv-em-meter { height: 8px; background: var(--bg-metric); border-radius: 4px; overflow: hidden; }
.dv-em-meter span { display: block; height: 100%; background: linear-gradient(90deg, #8b5cf6, #6366f1); }
.dv-em-num { font-size: 0.82rem; color: var(--text-secondary); white-space: nowrap; text-align: right; }
.dv-em-base { color: var(--text-muted); }

/* rising stars */
.dv-rs-list { list-style: none; margin: 0; padding: 0; }
.dv-rs-row {
    display: grid; grid-template-columns: 1fr 220px 1.4rem; gap: 1rem; align-items: center;
    padding: 0.7rem 0.6rem; border-bottom: 1px solid var(--border-row); cursor: pointer; border-radius: 6px;
}
.dv-rs-row:hover { background: rgba(139,92,246,0.06); }
.dv-rs-row:hover .dv-em-go { opacity: 1; color: var(--accent); }
.dv-kw-pj { color: var(--text-muted); font-style: italic; font-weight: 400; }
.dv-rs-name { font-weight: 700; color: var(--text-primary); }
.dv-rs-sub { font-size: 0.8rem; color: var(--text-muted); margin-top: 0.15rem; }
.dv-rs-meter { height: 8px; background: var(--bg-metric); border-radius: 4px; overflow: hidden; }
.dv-rs-meter span { display: block; height: 100%; background: linear-gradient(90deg, #f59e0b, #ef4444); }
.dv-rs-nums { font-size: 0.76rem; color: var(--text-secondary); margin-top: 0.25rem; text-align: right; }
.dv-tag {
    display: inline-block; font-size: 0.7rem; padding: 0.1rem 0.45rem; border-radius: 4px;
    background: var(--bg-metric); color: var(--text-secondary); margin-left: 0.25rem;
}

/* bridge papers */
.dv-bp-list { list-style: none; margin: 0; padding: 0; }
.dv-bp-row {
    padding: 0.8rem 0.7rem; border-bottom: 1px solid var(--border-row); cursor: pointer; border-radius: 6px;
}
.dv-bp-row:hover { background: rgba(99,102,241,0.06); }
.dv-bp-title { font-weight: 600; color: var(--text-primary); line-height: 1.35; }
.dv-bp-sub { font-size: 0.8rem; color: var(--text-muted); margin-top: 0.2rem; }
.dv-bp-meta { display: flex; flex-wrap: wrap; gap: 0.45rem; margin-top: 0.5rem; align-items: center; }
.dv-bp-badge { font-size: 0.72rem; padding: 0.15rem 0.5rem; border-radius: 4px; font-weight: 600; }
.dv-bp-bridge { background: rgba(99,102,241,0.14); color: #4f46e5; }
.dv-bp-cite { background: rgba(245,158,11,0.14); color: #b45309; }
.dv-bp-disc { font-size: 0.72rem; color: var(--text-muted); }
.dv-bp-links { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem; margin-top: 0.4rem; }
.dv-bp-links-lab { font-size: 0.7rem; font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.03em; }
.dv-bp-link {
    font-size: 0.74rem; font-weight: 600; padding: 0.12rem 0.5rem; border-radius: 999px;
    background: var(--bg-metric, rgba(99,102,241,0.07)); color: var(--text-primary); border: 1px solid var(--border-row);
}
.dv-bp-arrow { color: var(--text-muted); font-size: 0.78rem; }

[data-theme="dark"] .dv-bp-bridge { background: rgba(99,102,241,0.22); color: #a5b4fc; }
[data-theme="dark"] .dv-bp-cite { background: rgba(245,158,11,0.2); color: #fbbf24; }

/* ---- Discover query toolbar (filter + sort + threshold) ---- */
.dv-toolbar {
    margin-bottom: 1rem; position: sticky; top: 0; z-index: 20;
    background: var(--bg-page, var(--bg-card)); padding: 0.6rem 0 0.7rem;
    border-bottom: 1px solid var(--border-row);
}
.dv-controls { display: flex; flex-wrap: wrap; gap: 0.7rem 1.1rem; align-items: center; margin-top: 0.5rem; }
.dv-q {
    flex: 1 1 220px; min-width: 180px; padding: 0.45rem 0.7rem; font-size: 0.85rem;
    border: 1px solid var(--border-light); border-radius: 8px;
    background: var(--bg-card); color: var(--text-primary);
}
.dv-q:focus { outline: none; border-color: var(--accent); }
.dv-sorts { display: flex; align-items: center; gap: 0.35rem; flex-wrap: wrap; }
.dv-sorts-lbl { font-size: 0.74rem; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.04em; margin-right: 0.15rem; }
.dv-sort {
    padding: 0.28rem 0.6rem; font-size: 0.78rem; cursor: pointer; border-radius: 6px;
    border: 1px solid var(--border-light); background: var(--bg-card); color: var(--text-secondary);
}
.dv-sort:hover { border-color: var(--accent); }
.dv-sort-on { background: var(--accent); color: #fff; border-color: var(--accent); }
.dv-thr { font-size: 0.78rem; color: var(--text-muted); display: inline-flex; align-items: center; gap: 0.35rem; }
.dv-thr-in, .dv-yr-in {
    width: 4.5rem; padding: 0.3rem 0.45rem; font-size: 0.8rem; border-radius: 6px;
    border: 1px solid var(--border-light); background: var(--bg-card); color: var(--text-primary);
}
.dv-yr-in { width: 3.6rem; }
.dv-count { font-size: 0.74rem; color: var(--text-muted); font-weight: 600; margin-left: 0.4rem; }
.dv-tag-mini { font-size: 0.66rem; padding: 0.05rem 0.4rem; opacity: 0.85; }
.dv-sort-dir { font-weight: 800; }
.dv-export {
    margin-left: auto; font-size: 0.78rem; font-weight: 600; cursor: pointer;
    padding: 0.32rem 0.7rem; border-radius: 6px; white-space: nowrap;
    border: 1px solid var(--border-light); background: var(--bg-card); color: var(--text-secondary);
}
.dv-export:hover { border-color: var(--accent); color: var(--accent); }

/* active-filter pills + reset */
.dv-pills { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center; margin: 0 0 0.85rem; }
.dv-pill {
    display: inline-flex; align-items: center; gap: 0.35rem; cursor: pointer;
    font-size: 0.74rem; padding: 0.2rem 0.55rem; border-radius: 999px;
    background: rgba(99,102,241,0.12); color: #4f46e5; border: 1px solid rgba(99,102,241,0.25);
}
.dv-pill:hover { background: rgba(99,102,241,0.2); }
.dv-pill-x { font-weight: 800; opacity: 0.7; }
.dv-reset {
    font-size: 0.74rem; padding: 0.2rem 0.6rem; cursor: pointer; border-radius: 999px;
    border: 1px solid var(--border-light); background: var(--bg-card); color: var(--text-secondary);
}
.dv-reset:hover { border-color: var(--accent); color: var(--accent); }
[data-theme="dark"] .dv-pill { background: rgba(99,102,241,0.22); color: #a5b4fc; }

/* emerging inline paper preview */
.dv-em-prev-li { list-style: none; }
.dv-kw-prev {
    margin: 0.1rem 0 0.6rem; padding: 0.7rem 0.9rem; border-radius: 8px;
    background: var(--bg-metric, rgba(99,102,241,0.05)); border: 1px solid var(--border-row);
}
.dv-kw-prev-head {
    display: flex; flex-wrap: wrap; gap: 0.6rem; align-items: center; justify-content: space-between;
    font-size: 0.82rem; font-weight: 600; color: var(--text-secondary); margin-bottom: 0.5rem;
}
.dv-kw-trend {
    font-size: 0.76rem; padding: 0.25rem 0.6rem; cursor: pointer; border-radius: 6px;
    border: 1px solid var(--accent); background: transparent; color: var(--accent); font-weight: 600;
}
.dv-kw-trend:hover { background: var(--accent); color: #fff; }
.dv-kw-papers { list-style: none; margin: 0; padding: 0; }
.dv-kw-paper {
    display: grid; grid-template-columns: 3.2rem 1fr auto; gap: 0.7rem; align-items: baseline;
    padding: 0.32rem 0.3rem; border-radius: 5px; cursor: pointer; font-size: 0.84rem;
}
.dv-kw-paper:hover { background: rgba(99,102,241,0.08); }
.dv-kw-py { color: var(--text-muted); font-variant-numeric: tabular-nums; font-size: 0.78rem; }
.dv-kw-pt { color: var(--text-primary); line-height: 1.3; }
.dv-kw-pc { color: var(--text-muted); font-size: 0.75rem; white-space: nowrap; }
.dv-em-open { background: rgba(99,102,241,0.05); }
.dv-co { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center; margin-top: 0.7rem; padding-top: 0.6rem; border-top: 1px dashed var(--border-row); }
.dv-co-lab { font-size: 0.74rem; font-weight: 600; color: var(--text-muted); margin-right: 0.15rem; }
.dv-co-chip {
    display: inline-flex; align-items: center; gap: 0.35rem; cursor: pointer;
    font-size: 0.78rem; padding: 0.22rem 0.5rem; border-radius: 999px;
    border: 1px solid var(--border-row); background: var(--surface, #fff); color: var(--text-primary);
}
.dv-co-chip:hover { border-color: var(--accent); color: var(--accent); }
.dv-co-n { font-size: 0.68rem; font-weight: 700; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.dv-co-chip:hover .dv-co-n { color: var(--accent); }

@media (max-width: 640px) {
    .dv-em-row { grid-template-columns: 1fr auto; }
    .dv-em-meter { display: none; }
    .dv-em-go { display: none; }
    .dv-rs-row { grid-template-columns: 1fr; }
    .dv-rs-nums { text-align: left; }
}

/* Ask: semantic paper layer appended beneath a structured answer card. */
.ask-sem-layer { margin-top: 4px; }
.ans-layer-sep { height: 1px; background: var(--border, #e2e2e2); margin: 18px 0 14px; opacity: .7; }
body.dark .ans-layer-sep { background: var(--border-dark, #333); }

/* ===== Atlas (atlas.js) ================================================ */
.at-wrap { max-width: 900px; margin: 0 auto; padding: 0 0 4rem; }
.at-loading, .at-empty { text-align: center; padding: 3rem; color: var(--text-secondary); }
.at-head { padding: 0 0 1.5rem; }
.at-title { font-size: 2rem; font-weight: 700; letter-spacing: -0.02em; }
.at-intro { color: var(--text-secondary); max-width: 760px; line-height: 1.55; margin: 0.5rem 0 0; }
.at-stats { display: flex; flex-wrap: wrap; gap: 1.5rem; margin-top: 1.25rem; }
.at-stat-n { font-size: 1.35rem; font-weight: 700; }
.at-stat-l { font-size: 0.8rem; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.04em; }

.at-panel { border-top: 1px solid var(--border, #e2e2e2); padding: 1.75rem 0; }
.at-panel-head { display: flex; align-items: flex-start; gap: 0.9rem; }
.at-panel-num { flex: 0 0 auto; width: 1.9rem; height: 1.9rem; border-radius: 50%; background: var(--accent, #2563eb); color: #fff; font-weight: 700; display: flex; align-items: center; justify-content: center; font-size: 0.95rem; }
.at-panel-titles { flex: 1 1 auto; min-width: 0; }
.at-panel-title { font-size: 1.2rem; font-weight: 650; }
.at-verdict { color: var(--text-secondary); line-height: 1.5; margin-top: 0.2rem; }
.at-link { flex: 0 0 auto; align-self: center; background: none; border: 1px solid var(--border, #d4d4d4); border-radius: 999px; padding: 0.35rem 0.85rem; font-size: 0.82rem; color: var(--accent, #2563eb); cursor: pointer; white-space: nowrap; }
.at-link:hover { background: var(--accent, #2563eb); color: #fff; border-color: var(--accent, #2563eb); }
.at-cap { font-size: 0.82rem; color: var(--text-muted); margin: 0.9rem 0 0; }

/* Panel 1: composition stacked bars */
.at-comp { margin-top: 1.25rem; }
.at-bars { display: flex; gap: 1.5rem; align-items: flex-end; height: 220px; }
.at-bar { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; height: 100%; }
.at-bar-stack { flex: 1 1 auto; width: 100%; max-width: 90px; display: flex; flex-direction: column-reverse; border-radius: 4px 4px 0 0; overflow: hidden; }
.at-seg { width: 100%; display: block; }
.at-bar-lbl { font-size: 0.8rem; color: var(--text-secondary); margin-top: 0.4rem; }
.at-legend { display: flex; flex-wrap: wrap; gap: 0.5rem 1rem; margin-top: 1rem; }
.at-leg { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.78rem; color: var(--text-secondary); }
.at-leg i { width: 0.7rem; height: 0.7rem; border-radius: 2px; display: inline-block; }
.at-leg-d { font-variant-numeric: tabular-nums; font-size: 0.72rem; color: var(--text-tertiary, var(--text-secondary)); }
.at-leg-d.at-up { color: #15803d; }
.at-leg-d.at-down { color: #b91c1c; }
[data-theme="dark"] .at-leg-d.at-up { color: #4ade80; }
[data-theme="dark"] .at-leg-d.at-down { color: #f87171; }

/* Panel 2: flows */
.at-flows { list-style: none; margin: 1.25rem 0 0; padding: 0; display: flex; flex-direction: column; gap: 0.6rem; }
.at-flow { display: grid; grid-template-columns: minmax(0,1fr) 120px auto; align-items: center; gap: 0.85rem; }
.at-flow-pair { font-size: 0.9rem; }
.at-flow-arr { color: var(--text-muted); font-weight: 400; }
.at-flow-meter { height: 0.55rem; background: var(--border, #ececec); border-radius: 999px; overflow: hidden; }
.at-flow-meter i { display: block; height: 100%; background: var(--accent, #2563eb); border-radius: 999px; }
.at-flow-n { font-size: 0.8rem; color: var(--text-muted); white-space: nowrap; }

/* Panel 3: momentum */
.at-mom-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; margin-top: 1.25rem; }
.at-mom-h { font-size: 0.82rem; font-weight: 650; text-transform: uppercase; letter-spacing: 0.04em; margin-bottom: 0.6rem; }
.at-mom-h.at-up { color: #15803d; }
.at-mom-h.at-down { color: #b91c1c; }
.at-mom-col ul { list-style: none; margin: 0; padding: 0; }
.at-mom { display: flex; justify-content: space-between; gap: 0.75rem; padding: 0.3rem 0; border-bottom: 1px dashed var(--border, #efefef); }
.at-mom-kw { font-size: 0.9rem; }
.at-mom-g { font-variant-numeric: tabular-nums; font-size: 0.85rem; font-weight: 600; }
.at-mom.at-up .at-mom-g { color: #15803d; }
.at-mom.at-down .at-mom-g { color: #b91c1c; }

/* Panel 4: schools scatter */
.at-scatter { margin-top: 1.25rem; }
.at-scatter-plot { position: relative; height: 240px; border-left: 1px solid var(--border, #ddd); border-bottom: 1px solid var(--border, #ddd); margin-bottom: 0.4rem; }
.at-dot { position: absolute; bottom: 50%; transform: translate(-50%, 50%); border-radius: 50%; opacity: 0.65; cursor: pointer; transition: opacity 0.12s; }
.at-dot:hover { opacity: 1; outline: 2px solid var(--accent, #2563eb); }
.at-axis { position: absolute; bottom: -1.3rem; font-size: 0.72rem; color: var(--text-muted); }
.at-axis-l { left: 0; }
.at-axis-r { right: 0; }
.at-scatter-x { text-align: center; font-size: 0.78rem; color: var(--text-muted); margin-top: 1.1rem; }

[data-theme="dark"] .at-panel { border-color: var(--border-dark, #333); }
[data-theme="dark"] .at-mom-h.at-up, [data-theme="dark"] .at-mom.at-up .at-mom-g { color: #4ade80; }
[data-theme="dark"] .at-mom-h.at-down, [data-theme="dark"] .at-mom.at-down .at-mom-g { color: #f87171; }
[data-theme="dark"] .at-flow-meter, [data-theme="dark"] .at-scatter-plot { border-color: var(--border-dark, #333); }

@media (max-width: 640px) {
    .at-bars { gap: 0.5rem; }
    .at-flow { grid-template-columns: 1fr auto; }
    .at-flow-meter { display: none; }
    .at-mom-cols { grid-template-columns: 1fr; gap: 1.25rem; }
}

/* ============================ Surprise / Random view ============================ */
.rnd-wrap { max-width: 980px; margin: 0 auto; padding: 0 0 3rem; }
.rnd-head { margin: 0 0 1.2rem; }
.rnd-title { font-size: 1.5rem; margin: 0 0 .35rem; }
.rnd-intro { color: var(--text-muted); font-size: .92rem; line-height: 1.55; margin: 0; max-width: 720px; }
.rnd-filters { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: 0 0 1rem; }
.rnd-flbl { font-size: .78rem; text-transform: uppercase; letter-spacing: .04em; color: var(--text-muted); }
.rnd-sel { padding: .4rem .6rem; font-size: .85rem; font-family: inherit; border: 1px solid var(--border-light); border-radius: 7px; background: var(--bg-card); color: var(--text-primary); max-width: 320px; }
.rnd-sel:focus { outline: none; border-color: var(--accent); }
.rnd-sel:disabled { opacity: .5; cursor: not-allowed; }
.rnd-clear { padding: .4rem .7rem; font-size: .82rem; border: 1px solid var(--border-light); border-radius: 7px; background: transparent; color: var(--text-secondary); cursor: pointer; }
.rnd-clear:hover { border-color: var(--accent); color: var(--text-primary); }
.rnd-roll-row { display: flex; align-items: center; gap: .9rem; margin: 0 0 1.3rem; }
.rnd-roll { padding: .7rem 1.4rem; font-size: 1rem; font-weight: 600; border: none; border-radius: 9px; background: var(--accent); color: #fff; cursor: pointer; transition: filter .12s, transform .12s; }
.rnd-roll:hover { filter: brightness(1.07); transform: translateY(-1px); }
.rnd-roll:active { transform: translateY(0); }
.rnd-pool { font-size: .82rem; color: var(--text-muted); }
.rnd-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 1.1rem; }
.rnd-col-h { font-size: .76rem; text-transform: uppercase; letter-spacing: .05em; color: var(--text-muted); margin: 0 0 .5rem; }
.rnd-card { min-height: 150px; }
.rnd-paper-card, .rnd-author-card { display: block; width: 100%; text-align: left; padding: 1.1rem 1.2rem; border: 1px solid var(--border-light); border-radius: 12px; background: var(--bg-card); color: inherit; cursor: pointer; transition: border-color .14s, box-shadow .14s, transform .14s; }
.rnd-paper-card:hover, .rnd-author-card:hover { border-color: var(--accent); box-shadow: 0 4px 18px rgba(0,0,0,0.10); transform: translateY(-2px); }
.rnd-paper-ttl { font-size: 1.02rem; font-weight: 600; line-height: 1.35; margin: 0 0 .5rem; }
.rnd-paper-auth { font-size: .85rem; color: var(--text-secondary); margin: 0 0 .55rem; }
.rnd-paper-meta, .rnd-author-meta { font-size: .83rem; color: var(--text-muted); display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; }
.rnd-jrnl { font-weight: 600; color: var(--text-secondary); }
.rnd-dot { opacity: .5; }
.rnd-author-name { font-size: 1.1rem; font-weight: 600; margin: 0 0 .45rem; }
.rnd-tags { display: flex; flex-wrap: wrap; gap: .35rem; margin: .65rem 0 0; }
.rnd-tag { font-size: .74rem; padding: .2rem .5rem; border-radius: 999px; background: var(--bg-subtle, rgba(127,127,127,.12)); color: var(--text-secondary); }
.rnd-tag-sub { opacity: .85; }
.rnd-open { display: inline-block; margin: .8rem 0 0; font-size: .82rem; font-weight: 600; color: var(--accent); }
.rnd-empty, .rnd-loading { padding: 1.4rem 1.2rem; border: 1px dashed var(--border-light); border-radius: 12px; color: var(--text-muted); font-size: .9rem; text-align: center; }
@media (max-width: 760px) {
    .rnd-cards { grid-template-columns: 1fr; }
    .rnd-sel { max-width: 100%; flex: 1 1 100%; }
}
