/* ==========================================================================
   research.css — research index + report chrome (token-only)
   Loaded with blog.css for shared .prose / tables / callouts.
   Canonical theme: docs/research-theme.md
   ========================================================================== */

/* ---------- Index head ---------- */
.research-head {
    padding-block: var(--space-3xl) var(--space-xl);
}

.research-head-title { margin-bottom: var(--space-sm); }

.research-empty {
    color: var(--color-text-secondary);
    padding-bottom: var(--space-3xl);
}

/* ---------- Report article ---------- */
.research {
    padding-top: var(--space-lg);
    padding-bottom: var(--space-3xl);
}

.research-header {
    max-width: var(--container-max);
    margin-bottom: var(--space-xl);
}

.research-title {
    margin-bottom: var(--space-md);
}

.research-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-sm) var(--space-md);
    font-family: var(--font-mono);
    font-size: var(--fs-small);
    color: var(--color-text-secondary);
}

.research-meta-dot { color: var(--color-border); }

.research-dek {
    margin-top: var(--space-lg);
    max-width: var(--reading-measure);
    color: var(--color-text-secondary);
    font-size: var(--fs-h4);
    line-height: 1.5;
}

.research-figure {
    margin: 0 0 var(--space-2xl);
}

.research-figure img {
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    border: var(--border);
    border-radius: var(--radius-md);
    filter: saturate(0.85);
}

/* In-prose static chart figures (SVG) */
.research-prose .research-figure {
    margin: var(--space-xl) 0;
    padding: 0;
    background: var(--color-surface);
    border: var(--border);
    border-radius: var(--radius-md);
    overflow: hidden;
}

.research-prose .research-figure img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: auto;
    object-fit: contain;
    filter: none;
    border: 0;
    border-radius: 0;
    background: var(--color-bg);
}

.research-prose .research-figure figcaption {
    margin: 0;
    padding: var(--space-sm) var(--space-md);
    font-family: var(--font-mono);
    font-size: var(--fs-small);
    color: var(--color-text-secondary);
    border-top: var(--border);
}

.research-layout {
    display: grid;
    gap: var(--space-2xl);
    align-items: start;
}

.research-prose {
    max-width: none;
}

.research-prose h2,
.research-prose h3 {
    scroll-margin-top: calc(var(--space-2xl) + 3.5rem);
}

.research-prose .table-wrap,
.research-prose table {
    max-width: 100%;
}

/* ---------- Contents plan menu (analogous to old report sidebar) ---------- */
.research-toc-label {
    margin: 0 0 var(--space-md);
    font-family: var(--font-mono);
    font-size: var(--fs-small);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--color-text-secondary);
}

.research-toc-list {
    margin: 0;
    padding: 0;
    list-style: none;
}

.research-toc-list li + li {
    margin-top: var(--space-xs);
}

.research-toc-list a {
    display: grid;
    grid-template-columns: 1.75rem minmax(0, 1fr);
    gap: var(--space-sm);
    align-items: baseline;
    padding: var(--space-xs) 0;
    color: var(--color-text-secondary);
    text-decoration: none;
    font-size: var(--fs-small);
    line-height: 1.35;
    border-left: 2px solid transparent;
    padding-left: var(--space-sm);
    margin-left: calc(var(--space-sm) * -1);
}

.research-toc-list a:hover,
.research-toc-list a:focus-visible {
    color: var(--color-text-primary);
}

.research-toc-list a.is-active {
    color: var(--color-text-primary);
    border-left-color: var(--color-accent);
}

.research-toc-list a.is-active .research-toc-num {
    color: var(--color-accent);
}

.research-toc-list a:hover .research-toc-num,
.research-toc-list a:focus-visible .research-toc-num {
    color: var(--color-accent);
}

.research-toc-num {
    font-family: var(--font-mono);
    font-size: var(--fs-small);
    color: var(--color-text-secondary);
    letter-spacing: 0.02em;
}

.research-toc-text {
    min-width: 0;
}

.research-toc-desktop { display: none; }

.research-toc-mobile {
    padding: var(--space-md);
    background: var(--color-surface);
    border: var(--border);
    border-radius: var(--radius-md);
}

.research-toc-mobile summary {
    cursor: pointer;
    font-family: var(--font-mono);
    font-size: var(--fs-small);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--color-text-secondary);
}

.research-toc-mobile .research-toc-list {
    margin-top: var(--space-md);
}

@media (min-width: 960px) {
    .research-layout {
        grid-template-columns: 15.5rem minmax(0, 1fr);
        gap: var(--space-3xl);
    }

    .research-toc {
        position: sticky;
        top: calc(var(--space-2xl) + 3rem);
        max-height: calc(100vh - 6rem);
        overflow-y: auto;
        padding-right: var(--space-sm);
    }

    .research-toc-mobile { display: none; }
    .research-toc-desktop { display: block; }
}

/* ---------- Disclaimer ---------- */
.research-disclaimer {
    margin-top: var(--space-2xl);
    padding: var(--space-lg);
    background: var(--color-surface);
    border: var(--border);
    border-radius: var(--radius-md);
}

.research-disclaimer-label {
    margin: 0 0 var(--space-sm);
    font-family: var(--font-mono);
    font-size: var(--fs-small);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--color-text-secondary);
}

.research-disclaimer p:last-child {
    margin-bottom: 0;
    color: var(--color-text-secondary);
    font-size: var(--fs-small);
}

/* ---------- Component vocabulary ---------- */
.research-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
    gap: var(--space-md);
    margin: var(--space-xl) 0;
    padding: var(--space-lg);
    background: var(--color-surface);
    border: var(--border);
    border-radius: var(--radius-md);
}

.research-stats-item {
    display: flex;
    flex-direction: column;
    gap: var(--space-xs);
}

.research-stats-value {
    font-size: var(--fs-h3);
    font-weight: var(--fw-semibold);
    color: var(--color-text-primary);
}

.research-stats-label {
    font-family: var(--font-mono);
    font-size: var(--fs-small);
    color: var(--color-text-secondary);
}

.research-timeline {
    margin: var(--space-xl) 0;
    padding: 0;
    list-style: none;
    border-left: var(--border);
}

.research-timeline-item {
    position: relative;
    padding: 0 0 var(--space-lg) var(--space-lg);
}

.research-timeline-item::before {
    content: "";
    position: absolute;
    left: -0.3rem;
    top: 0.35rem;
    width: 0.5rem;
    height: 0.5rem;
    background: var(--color-accent);
    border-radius: 50%;
}

.research-timeline-date {
    display: block;
    margin-bottom: var(--space-xs);
    font-family: var(--font-mono);
    font-size: var(--fs-small);
    color: var(--color-text-secondary);
}

.research-timeline-body {
    margin: 0;
    color: var(--color-text-primary);
}

.research-case {
    margin: var(--space-xl) 0;
    padding: var(--space-lg);
    background: var(--color-surface);
    border: var(--border);
    border-radius: var(--radius-md);
}

.research-case-title {
    margin: 0 0 var(--space-xs);
    font-size: var(--fs-h4);
    font-weight: var(--fw-semibold);
}

.research-case-meta {
    margin: 0 0 var(--space-md);
    font-family: var(--font-mono);
    font-size: var(--fs-small);
    color: var(--color-text-secondary);
}

.research-case-body p:last-child {
    margin-bottom: 0;
}

.research-glossary {
    display: grid;
    gap: var(--space-md);
    margin: var(--space-xl) 0;
}

.research-glossary-term {
    margin: 0;
    font-family: var(--font-mono);
    font-size: var(--fs-small);
    font-weight: var(--fw-semibold);
    color: var(--color-text-primary);
}

.research-glossary-def {
    margin: var(--space-xs) 0 0;
    color: var(--color-text-secondary);
}
