/**
 * 메인 레이아웃
 */

/* 헤더 */
.header {
    position: sticky;
    top: 0;
    z-index: 100;
    background-color: var(--bg-primary);
    border-bottom: 1px solid var(--border);
    height: var(--header-height);
}

.header__inner {
    max-width: var(--content-width);
    margin: 0 auto;
    padding: 0 var(--space-lg);
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.header__logo {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    text-decoration: none;
    padding: 0.15rem 0;
    /* 은박 광택 기본 그림자 — 텍스트에 얇게 적용 */
    filter: drop-shadow(0 1px 0 rgba(26, 24, 20, 0.08)) drop-shadow(0 -1px 0 rgba(0, 0, 0, 0.35));
}

.header__logo-text,
.header__logo-sub {
    /* CSS 미지원 폴백 — 정적 액센트 톤 */
    color: var(--accent);
    /* 박 그라데이션. 라이트 전환(2026-08-15) 으로 중앙 하이라이트를 옅은 네이비로 바꿨다(청색 전환 2026-08-17) —
       종이 바탕에서 #ffffff 는 글자가 사라진다. 전 구간을 종이 위에서 읽히는 농도로 유지한다. */
    background-image: linear-gradient(
        100deg,
        var(--text-primary) 0%,
        var(--accent-muted) 18%,
        var(--accent) 38%,
        #4a6b96 50%,
        var(--accent) 62%,
        var(--accent-muted) 82%,
        var(--text-primary) 100%
    );
    background-size: 220% 100%;
    background-position: 50% 0;
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: logo-shimmer 5.5s cubic-bezier(0.6, 0.1, 0.4, 0.9) infinite;
}

.header__logo-text {
    font-family: 'JetBrains Mono', monospace;
    font-size: 1.35rem;
    font-weight: 700;
    letter-spacing: -0.025em;
    text-shadow: 0 0 18px rgba(200, 208, 218, 0.12);
}

.header__logo-sub {
    font-family: 'Pretendard', sans-serif;
    font-size: 1.35rem;          /* 10-K 와 동일 크기로 통일 */
    font-weight: 700;
    letter-spacing: 0.06em;       /* 대문자 가독성. 큰 크기에선 자간을 조금 좁힘 */
    /* ANALYTICS 는 본문 폰트, 약간 지연된 shimmer 로 도서 표지 2단 구성 느낌 */
    animation-delay: 0.4s;
    text-shadow: 0 0 18px rgba(200, 208, 218, 0.12);
}

.header__logo:hover .header__logo-text,
.header__logo:hover .header__logo-sub {
    /* hover 시 shimmer 빠르게 + 더 밝게 */
    animation-duration: 2.2s;
    filter: brightness(1.12);
}

@keyframes logo-shimmer {
    /* 하이라이트 밴드가 오른쪽 → 왼쪽으로 이동. 한 바퀴 후 잠시 정지하듯 느린 ease-in-out */
    0%, 18%   { background-position: 220% 0; }
    52%, 60%  { background-position: 50% 0; }
    100%      { background-position: -120% 0; }
}

/* 모션 감소 선호: 정적 하이라이트 유지 (중앙 밴드에 고정) */
@media (prefers-reduced-motion: reduce) {
    .header__logo-text,
    .header__logo-sub {
        animation: none;
        background-position: 50% 0;
    }
}

/* 폴백: background-clip:text 미지원 환경 — 단색 은빛 표시 */
@supports not ((background-clip: text) or (-webkit-background-clip: text)) {
    .header__logo-text,
    .header__logo-sub {
        -webkit-text-fill-color: initial;
        background-image: none;
        color: #d2d8e0;
        animation: none;
    }
}

/* PC 헤더 탭 */
.header__tabs {
    display: flex;
    gap: 4px;
}

.header__tab {
    display: inline-block;
    padding: 8px 18px;
    font-size: var(--fs-xs);
    font-weight: 500;
    color: var(--text-tertiary);
    background: none;
    border: 1px solid transparent;
    border-radius: 6px;
    cursor: pointer;
    transition: all 0.15s;
    font-family: inherit;
    text-decoration: none;            /* anchor 로 변환 시 underline 제거 */
}

.header__tab:hover {
    color: var(--text-primary);
    background: var(--bg-elevated);
}

.header__tab--active,
.header__tab[aria-current="page"] {
    color: var(--accent);
    border-color: var(--border-accent);
    background: var(--accent-dim);
}

/* 모바일: 헤더 탭 숨기고 하단 탭 표시 */
@media (max-width: 768px) {
    .header__tabs {
        display: none;
    }
}

/* 메인 */
.main {
    max-width: var(--content-width);
    margin: 0 auto;
    padding: var(--space-2xl) var(--space-lg);
    min-height: calc(100vh - var(--header-height) - 120px);
}

/* 모바일 — 좌우 패딩 조정 */
@media (max-width: 768px) {
    .main {
        padding: var(--space-xl) var(--space-md);   /* 16px 좌우 */
    }
}
@media (max-width: 480px) {
    .main {
        padding: var(--space-lg) 0.875rem;          /* 14px 좌우 — 너무 좁지도 넓지도 않게 */
    }
}

/* 기업 섹션 */
.companies__title {
    font-size: 1.5rem;
    color: var(--text-primary);
    margin-bottom: var(--space-xs);
}

.companies__subtitle {
    font-size: 0.9rem;
    color: var(--text-secondary);
    margin-bottom: var(--space-xl);
}

.companies__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: var(--space-lg);
}

.companies__empty {
    text-align: center;
    padding: var(--space-3xl) var(--space-lg);
    color: var(--text-secondary);
}

.companies__empty-hint {
    margin-top: var(--space-md);
    font-size: 0.875rem;
}

/* 푸터 */
.footer {
    border-top: 1px solid var(--border);
    padding: var(--space-xl) 0;
    margin-top: var(--space-3xl);
}

.footer__inner {
    max-width: var(--content-width);
    margin: 0 auto;
    padding: 0 var(--space-lg);
    text-align: center;
}

.footer__text {
    font-size: 0.9375rem;
    color: var(--text-secondary);
}

.footer__link {
    color: var(--text-secondary);
    text-decoration: underline;
}

.footer__link:hover {
    color: var(--accent);
}

.footer__disclaimer {
    font-size: 0.875rem;
    color: var(--text-tertiary);
    margin-top: var(--space-sm);
}

/* ── 정적 페이지 (about · privacy · terms · author) ─────── */
/* 정적 문서 — 2026-08-25 토큰화.
 * 종전에는 'Noto Serif KR' 세리프 + 18px·720px 하드코딩이라 **사이트의 다른 화면과 글꼴부터 달랐다.**
 * 본문 폭은 읽기 폭(ch)으로, 크기는 타이포 토큰으로 맞춘다. */
.static-page {
    max-width: var(--reading-measure);
    margin: 0 auto;
    padding: var(--space-md) 0 var(--space-2xl);
    font-family: var(--reading-font);
    font-size: var(--reading-fs);
    line-height: var(--reading-lh);
    letter-spacing: var(--reading-ls);
    color: var(--text-primary);
}
.static-page h1 {
    font-family: 'Pretendard', sans-serif;
    font-size: var(--fs-2xl);
    line-height: 1.3;
    letter-spacing: -0.025em;
    margin: 0 0 var(--space-sm);
    font-weight: 700;
}
.static-page h2 {
    font-family: 'Pretendard', sans-serif;
    font-size: var(--reading-h2);
    font-weight: 700;
    margin: var(--space-2xl) 0 var(--space-sm);
    padding-bottom: 6px;
    border-bottom: 1px solid var(--border-light);
    line-height: 1.4;
    letter-spacing: -0.015em;
}
.static-page h3 {
    font-family: 'Pretendard', sans-serif;
    font-size: var(--reading-h3);
    font-weight: 700;
    margin: var(--space-lg) 0 var(--space-xs);
    line-height: 1.4;
}
.static-page__lede {
    color: var(--text-secondary);
    font-size: calc(var(--reading-fs) + 1px);
    line-height: var(--reading-lh);
    margin: 0 0 var(--space-xl);
}
.static-page p { margin: 0 0 var(--space-md); }
.static-page ul, .static-page ol { margin: 0 0 var(--space-md); padding-left: 1.4rem; }
.static-page li { margin-bottom: 6px; }
.static-page b, .static-page strong { font-weight: 700; color: var(--text-primary); }
.static-page code {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: .88em; padding: 1px 5px; border-radius: 4px;
    background: var(--bg-elevated); color: var(--text-primary);
}
.static-page a {
    color: var(--accent);
    text-decoration: underline;
    text-underline-offset: 3px;
}
.static-page a:hover { color: var(--accent-hover, var(--accent-hover)); }

/* 푸터 정책 네비 */
.footer__nav {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    justify-content: center;
    margin-bottom: 1rem;
    font-size: 0.85rem;
}
.footer__nav .footer__link {
    color: var(--text-secondary, var(--accent));
    text-decoration: none;
}
.footer__nav .footer__link:hover {
    color: var(--accent);
    text-decoration: underline;
}
.footer__sep { color: var(--text-tertiary, var(--text-tertiary)); }

@media (max-width: 640px) {
    .static-page { font-size: var(--fs-sm); padding: var(--space-md) 0 var(--space-xl); }
    .static-page h1 { font-size: var(--fs-xl); }
    .static-page h2 { font-size: 20px; }
    .static-page__lede { font-size: 17px; }
}

/* ─── 고지 사항 (분석글·기업페이지 공통, E-E-A-T Trust) ─── */
.nd-disclaimer {
    margin: 1.75rem 0 0;
    padding: 1.25rem 1.5rem;
    background: rgba(26, 24, 20, 0.02);
    border: 1px solid var(--border-light, var(--border-light));
    border-radius: 8px;
    font-size: 13px;
    line-height: 1.7;
    color: var(--text-secondary, #9AA3AE);
}
.nd-disclaimer__title {
    font-family: 'Pretendard', sans-serif;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--text-tertiary, var(--text-tertiary));
    text-transform: uppercase;
    letter-spacing: 0.1em;
    margin: 0 0 0.875rem;
}
.nd-disclaimer__list {
    margin: 0;
    display: grid;
    grid-template-columns: max-content 1fr;
    column-gap: 1.25rem;
    row-gap: 0.625rem;
    align-items: start;
}
.nd-disclaimer__list dt {
    font-weight: 600;
    color: var(--text-primary, var(--accent));
    white-space: nowrap;
}
.nd-disclaimer__list dd {
    margin: 0;
    color: var(--text-secondary, #9AA3AE);
}
.nd-disclaimer__list dd strong {
    color: var(--text-primary, var(--accent));
    font-weight: 600;
}
.nd-disclaimer__source {
    color: var(--accent);
    text-decoration: none;
    border-bottom: 1px dotted rgba(var(--accent-rgb), 0.4);
    transition: border-color 0.15s;
}
.nd-disclaimer__source:hover {
    border-bottom-color: var(--accent);
}
@media (max-width: 640px) {
    .nd-disclaimer {
        padding: 1rem;
        font-size: 12.5px;
    }
    .nd-disclaimer__list {
        grid-template-columns: 1fr;
        row-gap: 0.25rem;
    }
    .nd-disclaimer__list dt {
        margin-top: 0.625rem;
    }
}

/* ─── 정적 페이지 pull-quote (about, author 등) ─── */
.static-page__pull {
    margin: 1.5rem 0;
    padding: 1.25rem 1.5rem 1.25rem 1.75rem;
    border-left: 4px solid var(--accent);
    background: rgba(var(--accent-rgb), 0.04);
    border-radius: 0 8px 8px 0;
    font-size: 1.05rem;
    line-height: 1.7;
    color: var(--text-primary, var(--accent));
    font-style: italic;
}
.static-page__pull cite {
    display: block;
    margin-top: 0.5rem;
    font-size: 0.85rem;
    color: var(--text-tertiary, var(--text-tertiary));
    font-style: normal;
}
.static-page__credentials {
    margin: 0;
    padding-left: 1.25rem;
}
.static-page__credentials li {
    list-style: '✓ ';
    padding-left: 0.25rem;
    margin: 0.25rem 0;
}

/* ─── P2-3: 광고 슬롯 CLS 방지 — slot별 min-height 예약 (자료 B Part 7.3) ─── */
/* INS 태그가 들어오면(승인 후 slot ID 채워지면) 광고 로드 전부터 자리 확보 → CLS 0 */
.ad-slot--inline_top:has(ins.adsbygoogle),
.ad-slot--inline_middle:has(ins.adsbygoogle),
.ad-slot--inline_bottom:has(ins.adsbygoogle) {
    min-height: 280px;
    contain: layout;
}
.ad-slot--sidebar:has(ins.adsbygoogle) {
    min-height: 600px;
    contain: layout;
}
.ad-slot--feed_inline:has(ins.adsbygoogle) {
    min-height: 250px;
    contain: layout;
}
/* INS 태그 자체에도 min-height — 광고 로드 전 빈 박스 방지 */
.ad-slot ins.adsbygoogle {
    min-height: 280px;
    display: block;
}
.ad-slot--sidebar ins.adsbygoogle {
    min-height: 600px;
}
.ad-slot--feed_inline ins.adsbygoogle {
    min-height: 250px;
}
/* 모바일에서는 광고 높이 약간 줄임 (UX 균형) */
@media (max-width: 640px) {
    .ad-slot--inline_top:has(ins.adsbygoogle),
    .ad-slot--inline_middle:has(ins.adsbygoogle),
    .ad-slot--inline_bottom:has(ins.adsbygoogle),
    .ad-slot--feed_inline:has(ins.adsbygoogle) {
        min-height: 250px;
    }
    .ad-slot ins.adsbygoogle {
        min-height: 250px;
    }
}

/* Pillar-Cluster 종목 허브 + 메인 페이지 그리드 (2026-05-22 추가)        */

/* ───── 4열 그리드 (메인·종목 허브 공통) ───── */
.news-stream,
.news-grid {
    display: grid;
    gap: var(--space-md, 1rem);
    grid-template-columns: 1fr;
}
@media (min-width: 768px) {
    .news-stream,
    .news-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1200px) {
    .news-stream,
    .news-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* 4열에서 카드 컴팩트 fit — 가로 좁아도 깨지지 않게 */
@media (min-width: 1200px) {
    .news-stream .news-card__title,
    .news-grid .news-card__title {
        font-size: var(--fs-sm, 0.9375rem);
        display: -webkit-box;
        -webkit-line-clamp: 3;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }
    .news-stream .news-card__desc,
    .news-grid .news-card__desc {
        display: none;
    }
}

/* ───── ticker-hub 영역 (company.php ZONE A2) ───── */
.ticker-hub {
    margin: var(--space-xl, 2rem) 0;
    padding: 0;
    display: grid;
    gap: var(--space-xl, 2rem);
}
.ticker-hub__title {
    font-size: var(--fs-lg, 1.125rem);
    font-weight: 600;
    color: var(--text-primary);
    margin: 0 0 var(--space-md) 0;
    display: flex;
    align-items: baseline;
    gap: var(--space-sm);
}
.ticker-hub__count {
    font-size: var(--fs-xs, 0.8125rem);
    font-weight: 400;
    color: var(--text-tertiary);
}

/* 점수 sparkline */
.ticker-hub__sparkline {
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-radius: 8px;
    padding: var(--space-md);
}
.ticker-hub__svg {
    display: block;
    width: 100%;
    height: 80px;
    margin: var(--space-sm) 0;
}
.ticker-hub__meta {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: var(--fs-xs);
    color: var(--text-tertiary);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
}
.ticker-hub__meta-avg {
    color: var(--accent);
    font-weight: 600;
}

/* 페이지네이션 */
.ticker-hub__pagination {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--space-md);
    margin-top: var(--space-lg);
    padding: var(--space-md) 0;
    border-top: 1px solid var(--border-light);
}
.ticker-hub__nav {
    color: var(--accent);
    text-decoration: none;
    font-size: var(--fs-sm);
    padding: var(--space-sm) var(--space-md);
    border: 1px solid var(--border-light);
    border-radius: 6px;
    transition: background 0.15s, border-color 0.15s;
}
.ticker-hub__nav:hover {
    background: var(--accent-dim);
    border-color: var(--border-accent);
}
.ticker-hub__nav--prev { margin-right: auto; }
.ticker-hub__nav--next { margin-left: auto; }
.ticker-hub__page {
    color: var(--text-tertiary);
    font-size: var(--fs-xs);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
}

/* 모바일 보강 */
@media (max-width: 767px) {
    .ticker-hub { gap: var(--space-lg); }
    .ticker-hub__pagination { flex-direction: column; }
    .ticker-hub__svg { height: 60px; }
}

/* 카드 세로형 + 4행 본문 + 광고 cell 시각 통일 (2026-05-22 정정)         */

/* 4열에서도 desc 표시 — 4행 ellipsis (직전 display:none 정정) */
@media (min-width: 1200px) {
    .news-stream .news-card__desc,
    .news-grid .news-card__desc {
        display: -webkit-box !important;
        -webkit-line-clamp: 4;
        -webkit-box-orient: vertical;
        overflow: hidden;
        text-overflow: ellipsis;
        font-size: var(--fs-xs, 0.8125rem);
        color: var(--text-secondary);
        line-height: 1.5;
        margin-top: 8px;
        margin-bottom: 10px;
    }
    .news-stream .news-card__title,
    .news-grid .news-card__title {
        font-size: var(--fs-sm, 0.9375rem);
        line-height: 1.35;
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
        margin-bottom: 6px;
    }
}

/* 태블릿(768~1199) 도 desc 표시 — 모바일은 원래 보임 */
@media (min-width: 768px) and (max-width: 1199px) {
    .news-stream .news-card__desc,
    .news-grid .news-card__desc {
        display: -webkit-box;
        -webkit-line-clamp: 3;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }
}

/* 카드 세로 stretch — 그리드 안에서 같은 row 카드들 height 통일 (광고와도) */
.news-stream .news-card,
.news-grid .news-card {
    display: flex;
    flex-direction: column;
    height: 100%;
}
.news-stream .news-card__footer,
.news-grid .news-card__footer {
    margin-top: auto;  /* footer 하단 고정 → 카드 stretch 시 메타 항상 아래 */
}

/* 그리드 row stretch — 같은 row 안 카드·광고 모두 같은 height */
.news-stream,
.news-grid {
    grid-auto-rows: 1fr;
    align-items: stretch;
}

/* 광고 cell 시각 통일 — 카드와 같은 background·border-radius·padding */
.news-stream .ad-slot--feed_inline,
.news-grid .ad-slot--feed_inline {
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-radius: 10px;
    padding: 14px 16px;
    min-height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}
.news-stream .ad-slot--feed_inline .ad-slot__label,
.news-grid .ad-slot--feed_inline .ad-slot__label {
    font-size: var(--fs-xs);
    color: var(--text-tertiary);
    margin-bottom: 8px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* 우측 sticky rail (책 CTA + 광고) — viewport ≥1700px (2026-05-24)      */
/* 계산: main(--content-width=1100) 가운데 정렬. rail 폭 = 카드 1개 폭 = 263px        */
/* 카드 폭 = (1100 - 3 * 16gap) / 4 = 263px. rail이 카드와 동일 폭으로 시각 일관성.   */
/* right = calc((100vw - 1100) / 2 - 279px) = main 우측 끝에서 16px gap 자동 유지.    */

.page-rail {
    display: none;  /* 기본 숨김 */
}

@media (min-width: 1700px) {
    .page-rail {
        display: flex;
        flex-direction: column;
        gap: var(--space-md);
        position: fixed;
        top: calc(var(--header-height) + var(--space-md));
        right: calc((100vw - var(--content-width)) / 2 - 279px);
        width: 263px;
        max-height: calc(100vh - var(--header-height) - 2 * var(--space-md));
        overflow-y: auto;
        z-index: 5;
        scrollbar-width: thin;
    }
}

/* ───── rail-cta (책 CTA 컴팩트) ───── */
.rail-cta {
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-radius: 10px;
    overflow: hidden;
    transition: border-color 0.15s, transform 0.15s;
}
.rail-cta:hover {
    border-color: var(--border-accent);
}
.rail-cta__link {
    display: block;
    color: inherit;
    text-decoration: none;
}
.rail-cta__cover {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 3 / 4;
    object-fit: cover;
    background: var(--bg-elevated);
}
.rail-cta__body {
    padding: var(--space-md);
}
.rail-cta__eyebrow {
    font-size: var(--fs-xs);
    color: var(--accent);
    margin: 0 0 4px 0;
    font-weight: 500;
}
.rail-cta__title {
    font-size: var(--fs-md, 1rem);
    color: var(--text-primary);
    margin: 0 0 6px 0;
    font-weight: 600;
    line-height: 1.3;
}
.rail-cta__author {
    font-size: var(--fs-xs);
    color: var(--text-secondary);
    margin: 0 0 2px 0;
}
.rail-cta__price {
    font-size: var(--fs-xs);
    color: var(--text-tertiary);
    margin: 0;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
}
.rail-cta__stores {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    padding: 0 var(--space-md) var(--space-md);
}
.rail-cta__store {
    flex: 1;
    min-width: calc(50% - 2px);
    text-align: center;
    padding: 6px 8px;
    background: var(--bg-elevated);
    color: var(--text-secondary);
    text-decoration: none;
    font-size: var(--fs-xs);
    border-radius: 4px;
    transition: background 0.15s, color 0.15s;
}
.rail-cta__store:hover {
    background: var(--accent-dim);
    color: var(--accent);
}

/* rail 안의 sidebar 광고 — 카드와 같은 시각 */
.page-rail .ad-slot--sidebar {
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-radius: 10px;
    padding: var(--space-md);
}

/* 뉴스 상세 페이지는 페이지 자체 grid 우측 컬럼에 관련 분석·광고 → 외부 page-rail 숨김 (중복 차단, 2026-05-24) */
body:has(.news-detail-page) .page-rail {
    display: none !important;
}

/* page-rail 정렬 정정 (2026-05-22 v2) — main 콘텐츠 상단과 정렬          */

@media (min-width: 1700px) {
    .page-rail {
        /* main의 padding-top과 동일하게 — 첫 카드 상단과 정렬 */
        top: calc(var(--header-height) + var(--space-2xl, 3rem));
    }
}

/* rail-cta 안 "자세히 보기" 마이크로 텍스트 */
.rail-cta__more {
    display: block;
    margin-top: var(--space-sm, 0.5rem);
    color: var(--accent);
    font-size: var(--fs-xs, 0.8125rem);
    font-weight: 500;
}
.rail-cta:hover .rail-cta__more {
    color: var(--accent-hover);
}

/* 더 이상 사용 안 함 — 서점 링크 영역 (rail에선 숨김) */
.rail-cta__stores { display: none !important; }

/* 광고 cell 정렬 정정 (2026-05-22 v3) — 비활성 상태에서도 row 정렬       */

/* grid 안 광고 slot — 비활성·활성 무관 자리 차지 + 다른 카드와 row 정렬 */
.news-stream .ad-slot--feed_inline,
.news-grid .ad-slot--feed_inline {
    /* 비활성 상태(빈 aside)에서도 카드와 같은 높이 강제 */
    min-height: 280px;
    height: 100%;
    /* grid item 자체를 row 시작 정렬 (top align) — 빈 cell이 아래로 밀리는 현상 차단 */
    align-self: stretch;
    /* 시각 통일 */
    background: var(--bg-card);
    border: 1px dashed var(--border-light);   /* dashed = 임시 자리 시그널 */
    border-radius: 10px;
    padding: 14px 16px;
    box-sizing: border-box;
    /* 내용 가운데 정렬 (활성 시 광고가 가운데로) */
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

/* 활성 상태 — dashed border 제거하고 solid (실제 광고 자리) */
.ad-slot--feed_inline:has(ins.adsbygoogle) {
    border-style: solid;
}

/* 모바일에선 약간 낮게 (240px) — 카드와 비례 */
@media (max-width: 767px) {
    .news-stream .ad-slot--feed_inline,
    .news-grid .ad-slot--feed_inline {
        min-height: 240px;
    }
}

/* 광고 cell 정렬 v4 (위쪽 정렬) + 카드 margin 제거 + 저자 카드 (2026-05-22) */

/* 카드 margin-bottom 제거 — grid gap이 대체. 광고와 outer height 통일 */
.news-stream .news-card,
.news-grid .news-card {
    margin-bottom: 0;
}

/* 광고 cell — 위쪽 정렬 (justify-content: center → flex-start) */
.news-stream .ad-slot--feed_inline,
.news-grid .ad-slot--feed_inline {
    justify-content: flex-start !important;
    align-items: stretch !important;
}

/* ───── book-page 저자 소개 섹션 (2026-05-22) ───── */
.book-authors {
    margin: var(--space-2xl, 3rem) 0;
    padding: var(--space-xl, 2rem) 0;
    border-top: 1px solid var(--border-light);
    border-bottom: 1px solid var(--border-light);
}
.book-authors__title {
    font-size: var(--fs-lg, 1.125rem);
    color: var(--text-primary);
    margin: 0 0 var(--space-lg) 0;
    text-align: center;
}
.book-authors__list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: var(--space-md);
    max-width: 720px;
    margin: 0 auto;
}
.book-author {
    display: block;
    padding: var(--space-md);
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-radius: 10px;
    text-decoration: none;
    color: inherit;
    text-align: center;
    transition: border-color 0.15s, background 0.15s, transform 0.15s;
}
.book-author:hover {
    border-color: var(--border-accent);
    background: var(--bg-elevated);
    transform: translateY(-1px);
}
.book-author__name {
    font-size: var(--fs-md, 1rem);
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 4px;
}
.book-author__role {
    font-size: var(--fs-xs, 0.8125rem);
    color: var(--text-secondary);
}

/* 광고 cell 위치 최종 정정 v5 (2026-05-22)                              */
/* 원인: news-detail.css 의 전역 `.ad-slot { margin: 2.5rem 0 }` 가      */
/* 메인 그리드 안의 광고 박스에도 적용되어 위·아래 40px 마진 → 박스가    */
/* 다른 카드보다 아래로 밀림. 그리드 안에선 강제 0 마진.                 */
.news-stream .ad-slot,
.news-grid .ad-slot {
    margin: 0 !important;
    display: flex !important;     /* 전역 display: none 차단 */
    position: static !important;
    align-self: stretch !important;
}

/* rail 정정 v3 (2026-05-22) — 메인 카드와 동일 폭 + 아래 정렬          */

/* viewport 1700~1799 에선 기존 240px 유지 (좁은 PC) */

@media (min-width: 1800px) {
    .page-rail {
        /* width·right 는 base(1700+) 의 263px 통일을 유지 — viewport jitter 차단 */
        /* 메인 카드 두 번째 row 정도로 더 아래 */
        top: calc(var(--header-height) + var(--space-2xl, 3rem) * 2);
    }
    /* rail-cta 자체 — 카드 2개 세로 합친 정도 (~600px 까지 자연 확장) */
    .rail-cta {
        /* 책 커버를 더 크게 → 폭이 커진 만큼 비례 자연 확대 (aspect-ratio 3/4 그대로) */
        /* 284 * 4/3 = ~378px 커버 + body(약 140px) + padding 등 = ~520~580px */
    }
    .rail-cta__body {
        padding: var(--space-lg, 1.5rem);  /* 책 정보 영역 더 풍부 */
    }
    .rail-cta__title {
        font-size: var(--fs-lg, 1.125rem);  /* 제목 키움 */
    }
    .rail-cta__eyebrow {
        font-size: var(--fs-sm, 0.9375rem);
    }
}

/* viewport 2000px+ — width·right base 통일 유지 (카드 263과 일관). 별도 override 없음. */

/* book-page 2열 구조 + 저자 풀 프로필 (2026-05-22)                      */

.book-page--2col {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-xl, 2rem);
    align-items: start;
}
@media (min-width: 900px) {
    /* 좌 = 책 자체(표지·특징·목차) / 우 = 책에 대한 설명(왜 이 책인가·저자) — 2026-08-23 주인님 지시.
       구 규격은 좌 380px 고정이라 목차가 들어갈 수 없었다. 좌를 주 칼럼으로 반전한다. */
    .book-page--2col {
        grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
        gap: var(--space-2xl, 3rem);
    }
    /* 우측은 짧고 좌측(목차)은 길다 — 따라 내려오게 */
    .book-page__right {
        position: sticky;
        top: calc(var(--header-height) + var(--space-md));
    }
}

.book-page__left,
.book-page__right {
    min-width: 0;
}

/* 넓어진 좌 칼럼 — 특징 카드 2열, 표지는 원래 크기 유지 */
@media (min-width: 900px) {
    .book-page__left .book-features {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 10px;
    }
}
@media (min-width: 1200px) {
    .book-page__left .book-toc__part { columns: 2; column-gap: var(--space-xl, 2rem); }
    .book-page__left .book-toc__chapter { break-inside: avoid; }
}

/* 저자 프로필 카드 */
.book-authors__title {
    font-size: var(--fs-lg, 1.125rem);
    color: var(--text-primary);
    margin: var(--space-xl, 2rem) 0 var(--space-md);
    padding-bottom: var(--space-sm);
    border-bottom: 1px solid var(--border-light);
}
.book-author-profile {
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-radius: 10px;
    padding: var(--space-lg, 1.5rem);
    margin-bottom: var(--space-md);
}
.book-author-profile:last-child { margin-bottom: 0; }
.book-author-profile__head {
    margin-bottom: var(--space-md);
    padding-bottom: var(--space-sm);
    border-bottom: 1px solid var(--border-light);
}
.book-author-profile__name {
    font-size: var(--fs-md, 1rem);
    color: var(--text-primary);
    margin: 0 0 4px 0;
    font-weight: 700;
}
.book-author-profile__role {
    font-size: var(--fs-xs, 0.8125rem);
    color: var(--accent);
    margin: 0;
}
.book-author-profile__bio {
    font-size: var(--fs-sm, 0.9375rem);
    color: var(--text-secondary);
    line-height: 1.6;
    margin: 0 0 var(--space-md);
}
.book-author-profile__group {
    margin-bottom: var(--space-sm);
    display: grid;
    grid-template-columns: 56px 1fr;
    gap: var(--space-sm);
    align-items: baseline;
}
.book-author-profile__group:last-child { margin-bottom: 0; }
.book-author-profile__label {
    font-size: var(--fs-xs);
    color: var(--text-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}
.book-author-profile__list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.book-author-profile__list li {
    font-size: var(--fs-xs);
    color: var(--text-secondary);
    margin-bottom: 3px;
    line-height: 1.5;
}

/* 도서 탭(#tab-book) 활성 시 우측 rail 책 CTA 숨김 (중복 차단)           */
body:has(#tab-book.tab-view--active) .page-rail .rail-cta {
    display: none !important;
}

/* book-page 소개 + 목차 (2026-05-22 추가)                              */

/* 책 소개 (왜 이 책인가) */
.book-intro {
    margin-bottom: var(--space-xl, 2rem);
}
.book-intro__heading {
    font-size: var(--fs-lg, 1.125rem);
    color: var(--text-primary);
    margin: 0 0 var(--space-md);
    padding-bottom: var(--space-sm);
    border-bottom: 1px solid var(--border-light);
}
.book-intro p {
    font-size: var(--fs-sm, 0.9375rem);
    color: var(--text-secondary);
    line-height: 1.75;
    margin: 0 0 var(--space-md);
}
.book-intro p:last-child {
    margin-bottom: 0;
}

/* 목차 */
.book-toc {
    margin: var(--space-xl, 2rem) 0;
}
.book-toc__heading {
    font-size: var(--fs-lg, 1.125rem);
    color: var(--text-primary);
    margin: 0 0 var(--space-md);
    padding-bottom: var(--space-sm);
    border-bottom: 1px solid var(--border-light);
}
.book-toc__pre {
    list-style: none;
    margin: 0 0 var(--space-md);
    padding: 0;
    font-size: var(--fs-sm);
    color: var(--text-secondary);
}
.book-toc__pre li {
    padding: 4px 0;
    border-bottom: 1px dotted var(--border-light);
}
.book-toc__pre li:last-child {
    border-bottom: none;
}
.book-toc__part {
    margin: var(--space-lg) 0;
    padding: var(--space-md);
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-radius: 10px;
}
.book-toc__part-title {
    font-size: var(--fs-md, 1rem);
    color: var(--accent);
    margin: 0 0 var(--space-md);
    font-weight: 700;
    letter-spacing: -0.01em;
}
.book-toc__chapter {
    margin-bottom: var(--space-md);
}
.book-toc__chapter:last-child {
    margin-bottom: 0;
}
.book-toc__chapter-title {
    font-size: var(--fs-sm);
    color: var(--text-primary);
    margin: 0 0 var(--space-xs);
    font-weight: 600;
}
.book-toc__sections {
    list-style: none;
    margin: 0;
    padding: 0 0 0 var(--space-md);
    border-left: 2px solid var(--border-light);
}
.book-toc__sections li {
    font-size: var(--fs-xs);
    color: var(--text-secondary);
    padding: 3px 0;
    line-height: 1.45;
}
.book-toc__cases {
    list-style: decimal inside;
    margin: 0;
    padding: 0;
}
.book-toc__cases li {
    font-size: var(--fs-sm);
    color: var(--text-secondary);
    padding: 4px 0;
    line-height: 1.5;
}
.book-toc__cases li::marker {
    color: var(--accent);
    font-weight: 600;
}

/* 기사 분석 자료 상세 — 제목은 고딕(Pretendard) 강제 (2026-05-22)        */
/* 본문 컨테이너 `.news-detail-page { font-family: 'Noto Serif KR' }`이   */
/* h1~h6에 명조 상속시키는 걸 차단. 본문 p·li 등은 명조 유지(가독성).    */
/* "지금 있는 것들과 앞으로 있을 것들 모두" — 셀렉터 기반 자동 적용.      */
.news-detail-page h1,
.news-detail-page h2,
.news-detail-page h3,
.news-detail-page h4,
.news-detail-page h5,
.news-detail-page h6 {
    font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Apple SD Gothic Neo', 'Noto Sans KR', sans-serif !important;
    letter-spacing: -0.015em;
}

/* 기사 상세 페이지 — page-rail 책 CTA 다시 노출 (2026-05-24).            */
/* 구 정책: nd-book-cta 사이드바와 중복이라 숨김 → nd-book-cta 제거(D2-4)로 */
/* 근거 사라짐. 사용자 의도로 우측 여백 책 CTA 플로팅 활성.                  */

/* 기업분석 카드 그리드(.co-grid/.co-card) 제거 — 홈 #tab-companies 폐지 (2026-05-24) */

/* 종목 페이지 재설계 (2026-05-22) — 좌측 nav + anchor nav + 6 섹션      */

.company-page {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-lg, 1.5rem);
    margin-top: var(--space-md);
}
@media (min-width: 900px) {
    .company-page {
        grid-template-columns: 220px 1fr;
        gap: var(--space-xl, 2rem);
        align-items: start;
    }
}

/* 640~899px — 컴팩트 사이드바(티커만). 어떤 화면에서도 '좌측 메뉴'가 원칙 (2026-08-17 주인님 확정) */
@media (min-width: 640px) and (max-width: 899px) {
    .company-page {
        grid-template-columns: 148px 1fr;
        gap: var(--space-lg, 1.5rem);
        align-items: start;
    }
    .ticker-nav {
        position: sticky;
        top: calc(var(--header-height) + var(--space-md));
        max-height: calc(100vh - var(--header-height) - 2 * var(--space-md));
        overflow-y: auto;
    }
    .ticker-nav__name { display: none; }
    .ticker-nav .rail-cta { display: none; }
}

/* 좌측 종목 nav */
.ticker-nav {
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-radius: 12px;
    padding: var(--space-md);
}
@media (min-width: 900px) {
    .ticker-nav {
        position: sticky;
        top: calc(var(--header-height) + var(--space-md));
        max-height: calc(100vh - var(--header-height) - 2 * var(--space-md));
        overflow-y: auto;
    }
}
.ticker-nav__title {
    font-size: var(--fs-xs, 0.8125rem);
    color: var(--text-tertiary);
    margin: 0 0 var(--space-sm);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-weight: 600;
    padding: 0 var(--space-xs);
}
.ticker-nav__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}
@media (max-width: 639px) {
    /* 모바일: 가로 스크롤 칩 */
    .ticker-nav__list {
        flex-direction: row;
        overflow-x: auto;
        gap: var(--space-xs);
        scrollbar-width: thin;
        padding-bottom: 4px;
    }
    .ticker-nav__li { flex-shrink: 0; }
}
.ticker-nav__item {
    display: flex;
    flex-direction: column;
    padding: var(--space-sm) var(--space-md);
    border-radius: 8px;
    text-decoration: none;
    color: var(--text-secondary);
    transition: background 0.15s, color 0.15s;
    border: 1px solid transparent;
}
.ticker-nav__item:hover {
    background: var(--bg-elevated);
    color: var(--text-primary);
}
.ticker-nav__item--active {
    background: var(--accent-dim);
    color: var(--accent);
    border-color: var(--border-accent);
}
.ticker-nav__ticker {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-weight: 700;
    font-size: var(--fs-sm, 0.9375rem);
    letter-spacing: 0.02em;
}
.ticker-nav__name {
    font-size: var(--fs-xs, 0.8125rem);
    color: inherit;
    opacity: 0.8;
    margin-top: 2px;
}
@media (max-width: 639px) {
    .ticker-nav__item {
        flex-direction: row;
        align-items: center;
        gap: var(--space-xs);
        white-space: nowrap;
        padding: var(--space-xs) var(--space-sm);
    }
    .ticker-nav__name { margin-top: 0; }
}

/* 우측 카테고리 anchor nav */
.category-anchor-nav {
    background: var(--bg-card);
    border-bottom: 1px solid var(--border-light);
    margin-bottom: var(--space-lg);
    /* sticky 제거 (2026-05-25) — 부모 .cat-bar 가 sticky 담당. 자식 중복 sticky 무의미·중첩 원인. */
}
.category-anchor-nav__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    gap: var(--space-xs);
    overflow-x: auto;
    scrollbar-width: thin;
}
.category-anchor-nav__link {
    display: block;
    padding: var(--space-sm) var(--space-md);
    color: var(--text-secondary);
    text-decoration: none;
    border-bottom: 2px solid transparent;
    transition: color 0.15s, border-color 0.15s;
    white-space: nowrap;
    font-size: var(--fs-sm);
}
.category-anchor-nav__link:hover {
    color: var(--text-primary);
}
.category-anchor-nav__link.is-active {
    color: var(--accent);
    border-bottom-color: var(--accent);
    font-weight: 600;
}

/* anchor 스크롤 offset (sticky 헤더·anchor nav 만큼) */
.company-main [id] {
    scroll-margin-top: 120px;
}

html {
    scroll-behavior: smooth;
}

.company-main {
    min-width: 0;
}

/* sticky bar 통합 (종목 메타 + anchor nav) + active 강조 (2026-05-22)    */

.cat-bar {
    background: var(--bg-base, var(--bg-primary, var(--bg-primary)));
    border-bottom: 1px solid var(--border);
    position: sticky;
    top: calc(var(--header-height));
    z-index: 6;
    margin: 0 calc(-1 * var(--space-lg)) var(--space-lg);
    padding: var(--space-sm) var(--space-lg);
    backdrop-filter: blur(8px);
}

.cat-bar__meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-sm);
    margin-bottom: var(--space-xs);
    padding-bottom: var(--space-xs);
    border-bottom: 1px dashed var(--border-light);
}
.cat-bar__ticker {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-weight: 700;
    color: var(--accent);
    font-size: var(--fs-md, 1rem);
}
.cat-bar__name {
    font-weight: 600;
    color: var(--text-primary);
    font-size: var(--fs-sm);
}
.cat-bar__sector,
.cat-bar__fcf {
    color: var(--text-tertiary);
    font-size: var(--fs-xs);
}
.cat-bar__sector::before { content: '·'; margin-right: var(--space-sm); color: var(--text-tertiary); }
.cat-bar__fcf::before { content: '·'; margin-right: var(--space-sm); color: var(--text-tertiary); }
.cat-bar__fcf {
    color: var(--accent-muted);
    font-weight: 500;
}

/* category-anchor-nav 는 cat-bar 안으로 통합됐으므로 자체 sticky·border 제거 */
.cat-bar .category-anchor-nav {
    position: static;
    border-bottom: none;
    margin: 0;
    background: transparent;
}

/* ───── 좌측 종목 nav active 강조 강화 ───── */
.ticker-nav__item--active {
    background: var(--accent-dim);
    color: var(--accent);
    border-color: var(--border-accent);
    font-weight: 700;
    position: relative;
}
.ticker-nav__item--active::before {
    content: '';
    position: absolute;
    left: -1px;
    top: 12%;
    bottom: 12%;
    width: 3px;
    background: var(--accent);
    border-radius: 0 3px 3px 0;
}
.ticker-nav__item--active .ticker-nav__ticker {
    color: var(--accent);
}
.ticker-nav__item--active .ticker-nav__name {
    color: var(--accent-hover);
    opacity: 1;
}

/* 모바일 가로 스크롤 칩에서도 active 강조 */
@media (max-width: 639px) {
    .ticker-nav__item--active::before {
        left: 8%;
        right: 8%;
        top: auto;
        bottom: 0;
        width: auto;
        height: 2px;
        border-radius: 2px 2px 0 0;
    }
}

/* anchor scroll offset 조정 (cat-bar 높이 추가) */
.company-main [id] {
    scroll-margin-top: 160px;
}

/* 종목 페이지 추가 정정 v2 (2026-05-22) — 책 CTA 위치 이동 + DuPont 정렬 */

/* 종목 페이지에서 우측 rail 책 CTA 숨김 (좌측 ticker-nav 하단으로 이동했음) */
body:has(.company-page) .page-rail .rail-cta {
    display: none !important;
}

/* ticker-nav 안 rail-cta 위치 조정 (PC 데스크탑만) */
@media (min-width: 900px) {
    .ticker-nav .rail-cta {
        margin-top: var(--space-md, 1rem);
        padding-top: var(--space-md, 1rem);
        border-top: 1px solid var(--border-light);
        position: static;
    }
}
@media (max-width: 639px) {
    /* 모바일 가로 스크롤 칩에선 책 CTA 숨김 (어색) */
    .ticker-nav .rail-cta {
        display: none;
    }
}

/* DuPont 분해 — 수평 정렬 강제 (nowrap + 좁으면 가로 스크롤) */
.dupont__grid {
    flex-wrap: nowrap !important;
    overflow-x: auto;
    overflow-y: visible;
    padding: var(--space-xs) 0;
    scrollbar-width: thin;
}
.dupont__item,
.dupont__op {
    flex-shrink: 0;
}
.dupont__item {
    min-width: 70px;
    padding: var(--space-xs) var(--space-sm);
}
.dupont__label {
    display: block;
    font-size: var(--fs-xs, 0.8125rem);
    color: var(--text-tertiary);
    margin-bottom: 2px;
    white-space: nowrap;
}
.dupont__value {
    display: block;
    font-size: var(--fs-sm, 0.9375rem);
    color: var(--text-primary);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-weight: 600;
    white-space: nowrap;
}
.dupont__op {
    color: var(--text-tertiary);
    font-size: var(--fs-sm);
    padding: 0 2px;
}

/* sidebar-panel 자체에 overflow 차단 — DuPont 상단 잘림 방지 */
.sidebar-panel {
    overflow: visible !important;
}

/* 스크롤바 시각 숨김 — 스크롤 동작은 유지 (2026-05-22)                   */
.ticker-nav,
.ticker-nav__list,
.category-anchor-nav__list,
.dupont__grid,
.page-rail,
.cat-bar,
.news-stream,
.news-grid {
    scrollbar-width: none;          /* Firefox */
    -ms-overflow-style: none;       /* IE/Edge */
}
.ticker-nav::-webkit-scrollbar,
.ticker-nav__list::-webkit-scrollbar,
.category-anchor-nav__list::-webkit-scrollbar,
.dupont__grid::-webkit-scrollbar,
.page-rail::-webkit-scrollbar,
.cat-bar::-webkit-scrollbar,
.news-stream::-webkit-scrollbar,
.news-grid::-webkit-scrollbar {
    width: 0;
    height: 0;
    background: transparent;
    display: none;
}

/* 종목 페이지 — 우측 page-rail 전체 숨김 (좌측 ticker-nav 안 책 CTA로 통합) */
/* 이전: .rail-cta 만 숨김 → 광고 slot/배경 남음. 전체 숨김으로 정정.        */
body:has(.company-page) .page-rail {
    display: none !important;
}

/* bottom-nav 시각 톤 정리 (2026-05-22) — 진한 검은 배경 완화              */

/* footer margin-bottom 정리 — bottom-nav 60px만 비워두면 충분 */
@media (max-width: 768px) {
    .has-bottom-nav .footer {
        margin-bottom: 60px;
    }
    .has-bottom-nav {
        background: var(--bg-primary, var(--bg-primary));
    }
    /* 페이지 끝 — body 배경이 footer 아래로 무한 노출되는 거 차단 */
    body.has-bottom-nav {
        background: var(--bg-primary);
        min-height: 100vh;
    }
}

/* 종목 페이지 푸터 빈 영역 차단 (2026-05-22 추가)                        */

/* body 배경이 footer 아래로 무한 노출되는 거 차단 — 모든 페이지 */
html, body {
    background: var(--bg-primary, var(--bg-primary));
}

/* main 영역 최소 height (viewport 채움) */
.main {
    min-height: calc(100vh - var(--header-height) - 100px);
}

/* footer 자체 배경·여백 정리 */
.footer {
    background: var(--bg-primary, var(--bg-primary));
    border-top: 1px solid var(--border-light);
    padding: var(--space-xl) 0;
    margin-top: var(--space-xl);
}

/* disclaimer 다음 page 끝까지 추가 빈 영역 없게 */
.company-page,
.news-detail-page {
    padding-bottom: 0;
    margin-bottom: 0;
}

/* bottom-nav__item base — layout + reset + tone (2026-05-24 단일 정본 복원) */
.bottom-nav__item {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    color: var(--text-tertiary);
    text-decoration: none;          /* anchor 언더라인 제거 */
    background: none;
    border: none;
    font-family: 'Pretendard', sans-serif;
    position: relative;             /* active::after 점 위치용 */
    transition: color 0.2s;
}
.bottom-nav__icon {
    stroke: var(--text-tertiary);
    fill: none;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.bottom-nav__label {
    font-size: 0.7rem;
    color: var(--text-tertiary);
    line-height: 1;
}
.bottom-nav__item:hover,
.bottom-nav__item--active,
.bottom-nav__item[aria-current="page"] {
    color: var(--accent);
}
.bottom-nav__item--active .bottom-nav__icon,
.bottom-nav__item[aria-current="page"] .bottom-nav__icon {
    stroke: var(--accent);
}
.bottom-nav__item--active .bottom-nav__label,
.bottom-nav__item[aria-current="page"] .bottom-nav__label {
    color: var(--accent);
}
/* active 상단 점 표시 */
.bottom-nav__item--active::after,
.bottom-nav__item[aria-current="page"]::after {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 20px;
    height: 2px;
    background: var(--accent);
    border-radius: 1px;
}

/* bottom-nav PC 강제 숨김 (2026-05-22) — viewport 경계 명확 + !important */

/* 기본: 숨김 */

/* 모바일 only (≤768px)에서 표시 */

/* PC에선 has-bottom-nav main padding-bottom 제거 (빈 공간 차단) */
@media (min-width: 769px) {
    .has-bottom-nav .main {
        padding-bottom: var(--space-xl, 2rem);
    }
    .has-bottom-nav .footer {
        margin-bottom: 0;
    }
}

/* 종목 페이지 모바일 최적화 v3 (2026-05-22) — 종합 정리                  */

/* ────────────────── 태블릿·모바일 (≤1023) ────────────────── */
@media (max-width: 639px) {
    /* ticker-nav 헤딩 숨김 — 모바일에선 가로 칩만 */
    .ticker-nav__title { display: none; }
    .ticker-nav {
        background: transparent;
        border: none;
        padding: var(--space-xs) 0;
        margin: 0;
    }
    .ticker-nav__list {
        padding: 4px 0;
        margin: 0;
    }
}

/* ────────────────── 모바일 (≤768) ────────────────── */
@media (max-width: 768px) {
    /* cat-bar 모바일 컴팩트 */
    .cat-bar {
        margin: 0 calc(-1 * var(--space-md, 1rem)) var(--space-md);
        padding: var(--space-xs) var(--space-md);
        top: var(--header-height);
    }
    .cat-bar__meta {
        flex-wrap: nowrap;
        overflow-x: auto;
        scrollbar-width: none;
        -ms-overflow-style: none;
        gap: var(--space-xs);
        font-size: var(--fs-xs, 0.8125rem);
        margin-bottom: 4px;
        padding-bottom: 4px;
        white-space: nowrap;
    }
    .cat-bar__meta::-webkit-scrollbar { display: none; }
    .cat-bar__ticker { font-size: var(--fs-sm); }
    .cat-bar__name { font-size: var(--fs-xs); }
    .cat-bar__sector, .cat-bar__fcf {
        font-size: 0.7rem;
        color: var(--text-tertiary);
    }
    .cat-bar__fcf { font-size: 0.7rem; }

    /* anchor nav 모바일 fit */
    .category-anchor-nav__list {
        gap: 0;
    }
    .category-anchor-nav__link {
        padding: var(--space-xs) var(--space-sm);
        font-size: var(--fs-xs);
    }

    /* company-page 모바일 gap */
    .company-page {
        gap: var(--space-sm);
        margin-top: var(--space-xs);
    }

    /* anchor scroll margin 모바일 조정 */
    .company-main [id] {
        scroll-margin-top: 130px;
    }

    /* main 모바일 padding 정리 — bottom-nav 60 + 여유 */
    .has-bottom-nav .main {
        padding-bottom: 80px;
    }

    /* bottom-nav 시각 — 4메뉴 fit + 컴팩트 아이콘 (2026-05-24) */
    .bottom-nav__item {
        flex: 1;
        gap: 2px;
        padding: 4px 6px;
    }
    .bottom-nav__icon {
        width: 18px;
        height: 18px;
    }
    .bottom-nav__label {
        font-size: 0.66rem;
        line-height: 1;
    }
    .has-bottom-nav .footer {
        margin-bottom: 56px;
    }

    /* 종목 페이지 본문 안 영역 모바일 정리 */
    .company-hero {
        padding: var(--space-md) 0;
    }
    .company-hero__identity {
        flex-direction: column;
        align-items: flex-start;
        gap: var(--space-sm);
    }
    .metrics-grid {
        grid-template-columns: 1fr 1fr !important;
        gap: var(--space-sm);
    }

    /* DuPont 분해 모바일에서 더 컴팩트 */
    .sidebar-panel {
        padding: var(--space-sm);
    }
    .dupont__item { min-width: 60px; padding: 6px 8px; }
    .dupont__label { font-size: 0.7rem; }
    .dupont__value { font-size: var(--fs-xs); }

    /* ticker-hub 모바일 정리 */
    .ticker-hub { gap: var(--space-md); }
    .ticker-hub__title { font-size: var(--fs-md); }

    /* news-grid 모바일 1열 (이미 적용)에서 카드 height 정리 */
    .news-stream,
    .news-grid {
        gap: var(--space-sm);
    }
}

/* ────────────────── 작은 모바일 (≤480) ────────────────── */
@media (max-width: 480px) {
    .cat-bar__name { display: none; }   /* 너무 좁으면 회사명 숨김 (ticker만) */
    .metrics-grid { grid-template-columns: 1fr !important; }
}

/* 종목 페이지 모바일 최적화 v4 (2026-05-22) — company-detail 1열 강제   */
/* 핵심 원인: company-detail.css는 PC 8:5 2열, 모바일 정책 없음          */

/* 2열 → 모바일 1열 + 좌측 요약 static (2026-05-24 __aside/__body 재명명) */
@media (max-width: 639px) {
    .company-detail {
        grid-template-columns: 1fr !important;
        gap: var(--space-lg, 1.5rem) !important;
    }
    .company-detail__aside {
        position: static !important;
        top: auto !important;
        align-self: stretch !important;
        max-height: none !important;
        overflow-y: visible !important;
    }
    .company-detail__aside,
    .company-detail__body {
        min-width: 0;
    }
}

/* 재무 테이블 모바일 가로 스크롤 (이미 overflow-x:auto, 좀 더 명확) */
@media (max-width: 768px) {
    .financial-table__wrapper {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        margin: 0 calc(-1 * var(--space-md, 1rem));
        padding: 0 var(--space-md);
    }
    .financial-table {
        font-size: var(--fs-xs, 0.8125rem);
        min-width: 480px;          /* 너무 좁게 압축되지 않게 */
    }
    .financial-table th,
    .financial-table td {
        padding: var(--space-xs) var(--space-sm);
    }

    /* detail-section 모바일 padding 정리 */
    .detail-section {
        padding: var(--space-md) 0;
    }
    .detail-section__title {
        font-size: var(--fs-md, 1rem) !important;
        line-height: 1.4;
    }

    /* 10-K 원문 링크 박스 모바일 */
    .tenk-link {
        gap: var(--space-sm);
    }
    .tenk-link__badge {
        font-size: 0.7rem;
    }

    /* MD&A·리스크 분석 본문 모바일 가독성 */
    .analysis-block__content {
        font-size: var(--fs-sm, 0.9375rem);
        line-height: 1.7;
    }

    /* sidebar-panel 모바일 — sidebar 안 패널들 (DuPont 등) */
    .sidebar-panel + .sidebar-panel {
        margin-top: var(--space-md);
    }
    .sidebar-panel__title {
        font-size: var(--fs-md);
    }

    /* breadcrumb 모바일 컴팩트 */
    .breadcrumb {
        font-size: var(--fs-xs);
        padding: var(--space-xs) 0;
    }
}

/* viewport overflow 강제 차단 (2026-05-22) — 콘텐츠가 모바일 폭 초과 차단 */
/* 증상: 모바일에서 PC 폭으로 렌더링 → 자동 zoom out → @media 적용 어긋남  */
html, body {
    overflow-x: hidden;
    max-width: 100%;
}

@media (max-width: 639px) {
    .main,
    .company-page,
    .company-main,
    .news-detail-page {
        max-width: 100%;
        overflow-x: hidden;
    }
    /* 그리드·flex 자식이 100% 초과하지 않게 */
    .company-page > *,
    .company-main > * {
        min-width: 0;
        max-width: 100%;
    }
    /* 단, 의도된 가로 스크롤 영역은 예외 (재무 테이블, ticker-nav 칩 등) */
    .financial-table__wrapper,
    .ticker-nav__list,
    .category-anchor-nav__list,
    .cat-bar__meta,
    .dupont__grid,
    .news-stream,
    .news-grid {
        overflow-x: auto;
    }
    .financial-table {
        max-width: none;   /* min-width 480 그대로 — overflow-x로 스와이프 */
    }
}

/* (제거됨 2026-08-17) 종목 페이지 v5 "상단 가로 슬라이드" 강제 오버라이드 —
   주인님 확정: 어떤 화면에서도 좌측 사이드 메뉴. 위의 v3 grid(640/900 분기)가 정본.
   당시 블록은 !important 로 grid 를 죽여 사이드바 복원을 3차례 무산시켰다. */

/* bottom-nav 글로벌 fixed 강제 (2026-05-22) — 모든 페이지·viewport 일관   */
/*                                                                       */
/* 원인: body { overflow-x: hidden } 이 모바일 브라우저에서 fixed 부모를  */
/*       body로 만들어 bottom-nav가 viewport가 아닌 body 끝에 정렬됨.    */
/* 해결: overflow-x: hidden → clip (fixed positioning에 영향 없음).      */

/* overflow 정책 — fixed positioning 호환 */
html {
    overflow-x: clip;
}
body {
    overflow-x: clip !important;
    overflow-y: auto;
    /* 직전 max-width 100% 제거 — fixed bottom 영향 가능 */
    max-width: none;
}

/* bottom-nav 절대 보장 — viewport 하단 fixed */

/* bottom-nav 표시 정책 — 모바일만 (강제) */

/* main 모바일 padding-bottom — bottom-nav 가리지 않게 */
@media (max-width: 768px) {
    body.has-bottom-nav .main {
        padding-bottom: calc(60px + var(--space-lg, 1.5rem));
    }
}

/* bottom-nav fixed 보장 — body overflow 제거 (2026-05-22 최종)            */
/* 일부 모바일 브라우저(Safari iOS)에서 body의 overflow-x:clip 도          */
/* fixed positioning 부모를 깨뜨림. body는 default overflow로 두고        */
/* 가로 overflow는 .main 등 wrapper에서 차단.                              */

/* body·html에서 overflow 관련 속성 모두 제거 (fixed 호환) */
html {
    overflow-x: visible !important;
}
body {
    overflow-x: visible !important;
    overflow-y: visible !important;
    max-width: none !important;
    /* transform·filter·perspective 등 fixed 부모로 만드는 속성 ❌ */
}

/* 가로 overflow 차단은 main wrapper 또는 자식에서 */
/* ⚠️ max-width: 100vw 제거 (2026-05-24) — 라인 152의 max-width: var(--content-width)
   1200px 가운데 정렬을 갈아엎고 있었음. overflow-x: clip 만으로 가로 스크롤 차단 충분. */
.main {
    overflow-x: clip;
}
.company-page,
.company-main,
.news-detail-page {
    overflow-x: clip;
    max-width: 100%;
}

/* bottom-nav viewport 기준 fixed 보장 — !important + 모든 brwoser */

/* 모바일에서만 표시 (PC ≥769 숨김) */

/* 하단 모바일 네비 (통합 — 구 11개 분산 블록 대체).
   ⚠️ position:fixed + inset/width:100vw + body overflow:visible 는 iOS Safari 에서
   fixed 부모가 깨지는 문제의 최종 해법이다. 값 변경 시 iOS 실기기 회귀 확인 필수. */
.bottom-nav {
    position: fixed !important;
    inset: auto 0 0 0 !important;
    bottom: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100vw !important;
    z-index: 9999 !important;
    margin: 0 !important;
    display: none !important;
    background: rgba(232, 237, 243, 0.94) !important;   /* 청회 틴트(--bg-hover 계열) — 본문 흰 카드와 구분 (2026-08-18 주인님). 반투명이라 rgba 하드코딩 불가피 */
    border-top: 1px solid var(--border) !important;
    box-shadow: none !important;
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    transform: translateZ(0);
}
@media (max-width: 768px) {
    .bottom-nav { display: flex !important; height: 56px; }
}
@media (min-width: 769px) {
    .bottom-nav { display: none !important; }
}

/* ─── 거시 현황판 (홈 상단) ───────────────────────────────────────────
   왜: 첫 화면에서 "여기는 증권·경제를 가르쳐주는 곳"이 느껴져야 한다(2026-08-15).
   규격: 8888 경제리포트 .tile 을 따른다. 색은 사이트 토큰만 쓴다 — 새 색 만들지 않는다. */
.macro-board{
    border:1px solid var(--border-light);
    border-radius:12px;
    background:var(--bg-card);
    padding:var(--space-lg);
    margin-bottom:var(--space-xl);
}
.macro-board__head{display:flex;align-items:baseline;gap:var(--space-md);margin-bottom:var(--space-sm)}
.macro-board__eyebrow{
    font-size:var(--fs-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;
    color:var(--accent);margin:0;
}
.macro-board__date{font-family:'JetBrains Mono',monospace;font-size:var(--fs-xs);color:var(--text-tertiary)}
.macro-board__line{
    font-size:var(--fs-xl);font-weight:600;line-height:var(--lh-tight);
    letter-spacing:-.02em;margin:0 0 var(--space-md);color:var(--text-primary);
}
.macro-board__axes{display:flex;gap:var(--space-lg);flex-wrap:wrap;margin-bottom:var(--space-lg)}
.macro-axis{display:inline-flex;align-items:baseline;gap:6px;font-size:var(--fs-xs)}
.macro-axis__k{color:var(--text-tertiary)}
.macro-axis__v{font-family:'JetBrains Mono',monospace;color:var(--text-primary);font-weight:600}

.macro-tiles{
    display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));
    gap:var(--space-sm);margin-bottom:var(--space-md);
}
.macro-tile{
    border:1px solid var(--border-light);border-radius:10px;
    padding:10px 12px 9px;min-height:78px;
}
.macro-tile__k{
    font-size:var(--fs-xs);color:var(--text-tertiary);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.macro-tile__v{
    font-family:'JetBrains Mono',monospace;font-size:1.0625rem;font-weight:600;
    margin-top:2px;color:var(--text-primary);white-space:nowrap;
}
.macro-tile__c{font-size:var(--fs-xs);color:var(--text-tertiary);line-height:1.5;margin-top:3px}

.macro-board__so{
    font-size:var(--fs-sm);color:var(--text-secondary);line-height:var(--lh-normal);
    margin:0 0 var(--space-md);max-width:76ch;
}
.macro-board__foot{
    display:flex;justify-content:space-between;align-items:center;gap:var(--space-md);
    flex-wrap:wrap;padding-top:var(--space-sm);border-top:1px solid var(--border-light);
    font-size:var(--fs-xs);color:var(--text-tertiary);
}
.macro-board__foot a{color:var(--accent-muted);text-decoration:none}
.macro-board__foot a:hover{color:var(--accent)}

@media (max-width:600px){
    .macro-board{padding:var(--space-md)}
    .macro-board__line{font-size:var(--fs-lg)}
    .macro-tiles{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}
}

/* ─── 이 국면에서 (기업 페이지 macro_fit) ────────────────────────────
   분기 척추(공시 분석) 사이 기간을 채우는 일일 렌즈. figkit 도판이 대비를 구조로 보여준다. */
.mf-regime{
    display:flex;align-items:baseline;gap:var(--space-sm);flex-wrap:wrap;
    font-size:var(--fs-sm);color:var(--text-secondary);
    padding:var(--space-sm) 0;margin:0 0 var(--space-md);
    border-bottom:1px solid var(--border-light);
}
.mf-regime__lb{
    font-size:var(--fs-xs);color:var(--text-tertiary);
    letter-spacing:.04em;text-transform:uppercase;
}
.mf-regime__date{font-family:'JetBrains Mono',monospace;font-size:var(--fs-xs);color:var(--text-tertiary)}
.mf-lead{
    font-size:var(--fs-lg);line-height:var(--lh-normal);color:var(--text-primary);
    margin:0 0 var(--space-lg);max-width:76ch;
}
.mf-figure{
    margin:0 0 var(--space-lg);border:1px solid var(--border-light);
    border-radius:10px;background:#fff;padding:var(--space-sm);overflow:hidden;
}
.mf-figure img{display:block;width:100%;height:auto}

.mf-forces{
    display:grid;grid-template-columns:1fr 1fr;gap:var(--space-lg);
    margin-bottom:var(--space-lg);
}
.mf-force__title{
    font-size:var(--fs-xs);font-weight:600;letter-spacing:.05em;text-transform:uppercase;
    color:var(--text-tertiary);margin:0 0 var(--space-sm);
    padding-bottom:6px;border-bottom:1px solid var(--border-light);
}
.mf-item{padding:var(--space-sm) 0;border-bottom:1px solid var(--border-light)}
.mf-item:last-child{border-bottom:0}
.mf-item__label{
    display:block;font-size:var(--fs-sm);font-weight:600;
    color:var(--text-primary);margin-bottom:2px;
}
.mf-item__text{font-size:var(--fs-sm);color:var(--text-secondary);line-height:var(--lh-normal)}

.mf-block{margin-bottom:var(--space-md)}
.mf-block__title{
    font-size:var(--fs-xs);font-weight:600;letter-spacing:.05em;text-transform:uppercase;
    color:var(--text-tertiary);margin:0 0 4px;
}
.mf-block__body{font-size:var(--fs-sm);color:var(--text-secondary);line-height:var(--lh-normal);max-width:76ch}

.mf-source{
    font-size:var(--fs-xs);color:var(--text-tertiary);line-height:var(--lh-normal);
    padding-top:var(--space-sm);margin:var(--space-lg) 0 0;
    border-top:1px solid var(--border-light);max-width:76ch;
}
.mf-source__date{font-family:'JetBrains Mono',monospace;margin-left:6px}

@media (max-width:720px){
    .mf-forces{grid-template-columns:1fr;gap:var(--space-md)}
    .mf-lead{font-size:var(--fs-md)}
}

/* 스파크라인 — 숫자를 추세로. 색으로 방향을 말하지 않는다(선 하나 + 끝점). */
.macro-tile__s { margin: 4px 0 2px; color: var(--text-secondary); line-height: 0; }
.macro-tile__s .spark { display: block; width: 100%; }
.macro-tile { min-height: 108px; }


/* ── 상설 가이드 (2026-08-24) ── */
.guide-list { display: grid; gap: var(--space-md); margin: var(--space-lg) 0; }
@media (min-width: 900px) { .guide-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.guide-card {
    display: block;
    padding: var(--space-lg);
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    text-decoration: none;
    color: var(--text-primary);
    transition: border-color .15s;
}
.guide-card:hover { border-color: var(--accent); }
.guide-card__title { display: block; font-size: var(--fs-lg); font-weight: 700; line-height: 1.45; letter-spacing: -.01em; }
.guide-card__sum { display: block; margin-top: 7px; font-size: var(--fs-sm); line-height: 1.7; color: var(--text-secondary); }
.guide-card__meta { display: block; margin-top: 10px; font-family: 'JetBrains Mono', monospace; font-size: var(--fs-3xs); color: var(--text-tertiary); }
/* 가이드 본문 — 읽기 폭·표 */
.guide-body { max-width: 78ch; }
.guide-body h2 { font-size: var(--reading-h2); font-weight: 700; margin: var(--space-xl) 0 var(--space-sm); letter-spacing: -.01em; }
.guide-body h3 { font-size: var(--reading-h3); font-weight: 700; margin: var(--space-lg) 0 var(--space-xs); }
.guide-body p { line-height: var(--lh-relaxed); margin-bottom: var(--space-md); }
.guide-body ul, .guide-body ol { margin: 0 0 var(--space-md) 1.25rem; line-height: var(--lh-relaxed); }
.guide-body li { margin-bottom: 4px; }
.guide-order { margin: 0 0 var(--space-lg) 1.2rem; line-height: var(--lh-relaxed); }
.guide-order li { margin-bottom: 10px; padding-left: 4px; }
/* 분석글 하단 — 상설 가이드 문맥 링크 */
.nd-guides {
    margin: var(--space-xl) 0;
    padding: var(--space-lg);
    background: var(--bg-elevated);
    border-radius: 8px;
}
.nd-guides__lede { margin: 0 0 var(--space-md); font-size: var(--fs-xs); color: var(--text-tertiary); line-height: var(--lh-relaxed); }
.nd-guides__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.nd-guides__item { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; }
.nd-guides__link {
    font-size: var(--fs-sm); font-weight: 600; color: var(--accent);
    text-decoration: none; border-bottom: 1px solid var(--border-accent); padding-bottom: 1px;
}
.nd-guides__link:hover { border-bottom-color: var(--accent); }
.nd-guides__desc { font-size: var(--fs-xs); color: var(--text-secondary); }
.guide-body__formula {
    margin: 0 0 var(--space-md);
    font-size: var(--fs-xs);
    color: var(--text-secondary);
}
.guide-body__formula code {
    font-family: 'JetBrains Mono', monospace;
    font-size: var(--fs-xs);
    color: var(--text-primary);
    background: none;
    padding: 0;
}
/* ── 표 (2026-08-27 주인님 지적: "표의 라인이 안 보여서 어색") ────────
 * ⛔ `.financial-table` 은 **모바일 미디어쿼리 안에만** 정의돼 있었다 — 데스크톱에서는
 *    테두리 0·패딩 0 의 브라우저 기본 표로 렌더됐다(실측: border none, padding 0px).
 *    가이드에 표가 10개나 되는데 전부 줄 없이 글자만 떠 있었다.
 * 색으로 등급을 말하지 않는다는 규율은 지킨다 — 선과 배경만으로 구조를 만든다. */
.financial-table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--fs-sm);
    font-family: 'Pretendard', sans-serif;   /* 표는 본문 세리프가 아니라 UI 서체 */
    line-height: var(--lh-normal, 1.6);
    letter-spacing: -0.005em;
    margin: 0 0 var(--space-lg);
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: 8px;
    overflow: hidden;           /* 라운드 모서리 안쪽으로 셀 배경을 자른다 */
}
.financial-table thead th {
    background: var(--bg-elevated);
    color: var(--text-secondary);
    font-size: var(--fs-xs);
    font-weight: 700;
    text-align: left;
    padding: 10px 14px;
    border-bottom: 2px solid var(--border);
    white-space: nowrap;
}
.financial-table tbody td {
    padding: 11px 14px;
    border-bottom: 1px solid var(--border-light);
    color: var(--text-secondary);
    vertical-align: top;
}
.financial-table tbody tr:last-child td { border-bottom: 0; }
.financial-table tbody tr:hover td { background: var(--bg-hover); }
/* 첫 열은 그 행이 무엇인지 말한다 — 굵기로만 세운다 */
.financial-table tbody td:first-child {
    color: var(--text-primary);
    font-weight: 600;
    white-space: nowrap;
}
.financial-table td b, .financial-table td strong { color: var(--text-primary); }
.financial-table code {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: .9em; background: var(--bg-elevated); padding: 1px 5px; border-radius: 4px;
}
/* 숫자 열 — 자릿수를 맞춰 세로로 읽히게 */
.financial-table .num, .financial-table td.num, .financial-table th.num {
    text-align: right; font-family: 'JetBrains Mono', monospace; font-variant-numeric: tabular-nums;
}
/* 넓은 표는 표 자신이 가로로 스크롤한다 — 페이지 가로 스크롤은 만들지 않는다 */
.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 0 0 var(--space-lg); }
.table-scroll .financial-table { margin: 0; min-width: 420px; }

.guide-body .financial-table { font-size: var(--fs-xs); }
.guide-body .financial-table thead th { font-size: var(--fs-2xs); }

/* 계산식·정의 블록 — 표와 같은 무게로 세운다 */
.guide-body__formula {
    background: var(--bg-elevated);
    border: 1px solid var(--border);
    border-left: 3px solid var(--accent);
    border-radius: 0 6px 6px 0;
    padding: 12px 16px;
}
.guide-body__nav {
    display: flex; gap: 10px; flex-wrap: wrap;
    margin-top: var(--space-2xl); padding-top: var(--space-lg);
    border-top: 1px solid var(--border);
    font-size: var(--fs-xs);
}

/* ── 일일 브리핑 (2026-08-24) ─────────────────────────────────── */
.brief { max-width: 76ch; margin: 0 auto; }
.brief__head { margin-bottom: var(--space-xl); padding-bottom: var(--space-lg); border-bottom: 2px solid var(--border); }
.brief__date { font-family: 'JetBrains Mono', monospace; font-size: var(--fs-2xs); color: var(--text-tertiary); margin: 0 0 8px; letter-spacing: .04em; }
.brief__title { font-size: var(--fs-2xl); font-weight: 700; line-height: 1.3; letter-spacing: -.02em; margin: 0 0 10px; }
.brief__regime { font-size: var(--fs-sm); color: var(--accent); margin: 0; font-weight: 600; }
.brief__lede {
    font-family: var(--reading-font); font-size: calc(var(--reading-fs) + 1px);
    line-height: var(--reading-lh); letter-spacing: var(--reading-ls);
    color: var(--text-primary); margin-bottom: var(--space-xl);
}
.brief__lede p { margin: 0 0 var(--space-sm); }
.brief__sec { margin: var(--space-2xl) 0; }
.brief__h2 { font-size: var(--fs-lg); font-weight: 700; margin: 0 0 var(--space-xs); letter-spacing: -.01em; }
.brief__sec-note { font-size: var(--fs-xs); color: var(--text-tertiary); margin: 0 0 var(--space-md); }
.brief__body, .brief__watch {
    font-family: var(--reading-font); font-size: var(--reading-fs);
    line-height: var(--reading-lh); letter-spacing: var(--reading-ls);
}
.brief__body p, .brief__watch p { margin: 0 0 var(--space-md); }
.brief__pnote p { font-family: var(--reading-font); line-height: var(--reading-lh); }
.brief__more { font-size: var(--fs-xs); margin-top: var(--space-sm); }
.brief__more a { color: var(--accent); }

.brief__policy { list-style: none; margin: 0; padding: 0; counter-reset: pol; }
.brief__pitem { position: relative; padding: var(--space-md) 0 var(--space-md) 34px; border-bottom: 1px solid var(--border-light); counter-increment: pol; }
.brief__pitem::before {
    content: counter(pol); position: absolute; left: 0; top: var(--space-md);
    width: 22px; height: 22px; border-radius: 50%; background: var(--bg-elevated);
    color: var(--text-secondary); font-family: 'JetBrains Mono', monospace; font-size: var(--fs-3xs);
    display: flex; align-items: center; justify-content: center;
}
.brief__pmeta { display: flex; gap: 8px; align-items: baseline; font-size: var(--fs-3xs); color: var(--text-tertiary); margin-bottom: 4px; }
.brief__psrc { font-weight: 600; color: var(--accent); }
.brief__pdate { font-family: 'JetBrains Mono', monospace; }
.brief__ptitle { font-size: var(--fs-md); font-weight: 600; margin: 0 0 6px; line-height: 1.4; }
.brief__pnote p { font-size: var(--fs-sm); line-height: var(--lh-relaxed); color: var(--text-secondary); margin: 0 0 6px; }
.brief__psource { font-size: var(--fs-2xs); color: var(--text-tertiary); margin: 6px 0 0; }
.brief__psource a { color: var(--text-secondary); }

.brief__alist { list-style: none; margin: 0; padding: 0; }
.brief__aitem { padding: var(--space-sm) 0; border-bottom: 1px solid var(--border-light); }
.brief__aticker { display: inline-block; font-family: 'JetBrains Mono', monospace; font-size: var(--fs-3xs); font-weight: 700; color: var(--accent); margin-right: 8px; }
.brief__atitle { font-size: var(--fs-sm); font-weight: 600; color: var(--text-primary); text-decoration: none; }
.brief__atitle:hover { color: var(--accent); text-decoration: underline; }
.brief__awhy { font-size: var(--fs-xs); color: var(--text-secondary); line-height: var(--lh-relaxed); margin: 4px 0 0; }

.brief__watch { margin: var(--space-2xl) 0; padding: var(--space-lg); background: var(--bg-elevated); border-radius: 8px; }
.brief__watch .brief__h2 { font-size: var(--fs-md); }
.brief__nav { display: flex; flex-wrap: wrap; gap: 10px; justify-content: space-between; margin-top: var(--space-2xl); padding-top: var(--space-lg); border-top: 1px solid var(--border); }
.brief__navlink { display: flex; flex-direction: column; gap: 2px; font-size: var(--fs-xs); color: var(--text-secondary); text-decoration: none; max-width: 45%; }
.brief__navlink:hover { color: var(--accent); }
.brief__navlink--index { align-self: center; color: var(--accent); font-weight: 600; }
.brief__navlabel { font-family: 'JetBrains Mono', monospace; font-size: var(--fs-3xs); color: var(--text-tertiary); }
.guide-list__empty { color: var(--text-tertiary); text-align: center; padding: 2.5rem 0; }

/* ── 국내 기업 분석 (2026-08-24) ──────────────────────────────── */
.cmp-kr-link { margin: 10px 0 0; font-size: var(--fs-xs); color: var(--text-secondary); line-height: var(--lh-relaxed); }
.cmp-kr-link a { color: var(--accent); }

.kr-notice {
    margin: var(--space-lg) 0; padding: 12px 14px;
    background: var(--bg-elevated); border-left: 3px solid var(--accent);
    border-radius: 0 4px 4px 0; font-size: var(--fs-xs);
    color: var(--text-secondary); line-height: var(--lh-relaxed);
}
.kr-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; margin: var(--space-lg) 0 var(--space-2xl); }
.kr-card {
    display: block; padding: 14px; border: 1px solid var(--border); border-radius: 8px;
    background: var(--bg-card); text-decoration: none; transition: border-color .15s, transform .15s;
}
.kr-card:hover { border-color: var(--border-accent); transform: translateY(-1px); }
.kr-card--pending { opacity: .72; }
.kr-card__head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin-bottom: 6px; }
.kr-card__code { font-family: 'JetBrains Mono', monospace; font-size: var(--fs-3xs); font-weight: 700; color: var(--accent); }
.kr-card__sector { font-size: var(--fs-3xs); color: var(--text-tertiary); }
.kr-card__name { font-size: var(--fs-md); font-weight: 700; margin: 0 0 4px; color: var(--text-primary); letter-spacing: -.01em; }
.kr-card__desc { font-size: var(--fs-2xs); color: var(--text-secondary); margin: 0 0 10px; line-height: 1.5; }
.kr-card__metrics { display: flex; gap: 14px; margin: 0 0 8px; }
.kr-card__metrics div { display: flex; flex-direction: column; gap: 1px; }
.kr-card__metrics dt { font-size: var(--fs-3xs); color: var(--text-tertiary); }
.kr-card__metrics dd { margin: 0; font-family: 'JetBrains Mono', monospace; font-size: var(--fs-sm); font-weight: 600; color: var(--text-primary); }
.kr-card__meta { display: block; font-size: var(--fs-3xs); color: var(--text-tertiary); font-family: 'JetBrains Mono', monospace; }

.kr-detail { max-width: 78ch; margin: 0 auto; }
.kr-detail__crumb { font-size: var(--fs-2xs); color: var(--text-tertiary); margin-bottom: 10px; }
.kr-detail__crumb a { color: var(--accent); text-decoration: none; }
.kr-detail__crumb span { margin: 0 4px; }
.kr-detail__head { padding-bottom: var(--space-md); border-bottom: 2px solid var(--border); }
.kr-detail__code { font-family: 'JetBrains Mono', monospace; font-size: var(--fs-2xs); font-weight: 700; color: var(--accent); }
.kr-detail__head h1 { font-size: var(--fs-2xl); font-weight: 700; margin: 4px 0 6px; letter-spacing: -.02em; }
.kr-detail__desc { font-size: var(--fs-sm); color: var(--text-secondary); margin: 0 0 8px; }
.kr-detail__source { font-size: var(--fs-2xs); color: var(--text-tertiary); margin: 0; }
.kr-detail__source a { color: var(--text-secondary); }
.kr-detail__sec { margin: var(--space-2xl) 0; }
.kr-detail__sec h2 { font-size: var(--fs-lg); font-weight: 700; margin: 0 0 var(--space-sm); letter-spacing: -.01em; }
.kr-detail__note { font-size: var(--fs-2xs); color: var(--text-tertiary); line-height: var(--lh-relaxed); margin: var(--space-sm) 0 0; }
.kr-detail__note a, .kr-gap a { color: var(--accent); }
.kr-detail__pending, .kr-detail__missing { font-size: var(--fs-xs); color: var(--text-tertiary); }
.kr-metrics { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 10px; }
.kr-metric { padding: 10px 12px; background: var(--bg-elevated); border-radius: 6px; display: flex; flex-direction: column; gap: 2px; }
.kr-metric--accent { background: var(--accent-dim); border: 1px solid var(--border-accent); }
.kr-metric__k { font-size: var(--fs-3xs); color: var(--text-tertiary); }
.kr-metric__v { font-family: 'JetBrains Mono', monospace; font-size: var(--fs-md); font-weight: 700; color: var(--text-primary); }
.kr-metric__s { font-size: var(--fs-3xs); color: var(--text-secondary); font-family: 'JetBrains Mono', monospace; }
/* 분석 본문 — 뉴스 상세와 같은 읽기 규격 (2026-08-27) */
.kr-analysis__body {
    font-family: var(--reading-font); font-size: var(--reading-fs);
    line-height: var(--reading-lh); letter-spacing: var(--reading-ls);
}
.kr-analysis__body h3 { font-family: 'Pretendard', sans-serif; font-size: var(--reading-h3); font-weight: 700; margin: var(--space-lg) 0 var(--space-xs); }
.kr-analysis__body p { margin: 0 0 var(--space-md); }
.kr-gap { padding: var(--space-lg); background: var(--bg-elevated); border-radius: 8px; }
.kr-gap h2 { font-size: var(--fs-md); }
.kr-gap p { font-size: var(--fs-xs); color: var(--text-secondary); line-height: var(--lh-relaxed); margin: 0 0 8px; }
.kr-detail__others h2 { font-size: var(--fs-md); }
.kr-detail__chips { display: flex; flex-wrap: wrap; gap: 8px; }
.kr-detail__chips a {
    padding: 5px 11px; border: 1px solid var(--border); border-radius: 999px;
    font-size: var(--fs-2xs); color: var(--text-secondary); text-decoration: none;
}
.kr-detail__chips a:hover { border-color: var(--border-accent); color: var(--accent); }

/* ── 가이드 위키 (2026-08-25, 주인님 지시: 좌 목차 / 우 본문 / 한 페이지 스크롤) ── */
.wiki {
    display: grid;
    grid-template-columns: 230px minmax(0, 1fr);
    gap: var(--space-2xl);
    align-items: start;
}
.wiki__nav { position: sticky; top: calc(var(--header-height) + 16px); align-self: start; }
.wiki__nav-inner {
    max-height: calc(100vh - var(--header-height) - 32px);
    overflow-y: auto;
    padding-right: 8px;
    scrollbar-width: thin;
}
.wiki__nav-inner::-webkit-scrollbar { width: 4px; }
.wiki__nav-inner::-webkit-scrollbar-thumb { background: var(--border); border-radius: 2px; }
.wiki__nav-title {
    font-size: var(--fs-3xs); font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
    color: var(--text-tertiary); margin: 0 0 10px; padding-bottom: 8px; border-bottom: 1px solid var(--border);
}
.wiki__toc { list-style: none; margin: 0; padding: 0; counter-reset: wdoc; }
.wiki__toc-item { margin-bottom: 4px; counter-increment: wdoc; }
/* 펼침 표시 삼각형 — 상태는 .is-open 클래스 하나로만 관리한다.
   ⛔ <details>/<summary> 를 쓰다 **브라우저 기본 토글과 우리 로직이 싸워** 펼침이 누적됐다
      (2026-08-27 실측: 클릭할수록 5개가 다 열림). 기본 동작이 없는 구조로 바꿨다. */
.wiki__toc-item { position: relative; }
.wiki__toc-item:has(.wiki__toc-subs)::after {
    content: ''; position: absolute; right: 2px; top: 9px; pointer-events: none;
    width: 0; height: 0; border-left: 4px solid var(--text-tertiary);
    border-top: 3.5px solid transparent; border-bottom: 3.5px solid transparent;
    transition: transform .15s; transform-origin: 2px 50%;
}
.wiki__toc-item.is-open::after { transform: rotate(90deg); }
.wiki__toc-doc {
    display: block; font-size: var(--fs-xs); font-weight: 600; line-height: 1.35;
    color: var(--text-primary); text-decoration: none; padding: 3px 14px 3px 19px;
    position: relative; border-radius: 4px;
}
.wiki__toc-doc::before {
    content: counter(wdoc); position: absolute; left: 0; top: 4px;
    width: 14px; height: 14px; border-radius: 3px; background: var(--bg-elevated);
    color: var(--text-tertiary); font-family: 'JetBrains Mono', monospace; font-size: 9px;
    display: flex; align-items: center; justify-content: center;
}
.wiki__toc-doc:hover { color: var(--accent); }
.wiki__toc-doc.is-active, .is-current > .wiki__toc-doc { color: var(--accent); }
.wiki__toc-doc.is-active::before, .is-current > .wiki__toc-doc::before { background: var(--accent); color: #fff; }
/* ⛔ 2026-08-27: 소제목 28개를 기본 여백으로 펼쳤더니 목차가 1,133px (컨테이너 679px) — 454px 가 잘렸다.
   아코디언(현재 문서만 펼침)으로 바꿨더니 이번엔 **JS 가 못 따라오는 순간 엉뚱한 문서가 펼쳐진 채 남았다.**
   → **전부 펼치되 조판을 압축**한다. JS 없이도 항상 옳고, 목차 전체가 한눈에 들어온다.
   실측 기준: 4문서 × 26px + 소제목 28 × 17px ≈ 580px < 679px. */
.wiki__toc-subs {
    list-style: none; margin: 1px 0 6px; padding: 0 0 0 18px;
    border-left: 1px solid var(--border-light);
    display: none;
}
.wiki__toc-item.is-open > .wiki__toc-subs { display: block; }
/* JS 가 없으면 전부 펼친다 — 크롤러와 no-JS 환경에서 목차 전체가 읽힌다 */
.wiki__toc:not(.js-on) .wiki__toc-subs { display: block; }
.wiki__toc-sub {
    display: block; font-size: var(--fs-3xs); line-height: 1.35; color: var(--text-tertiary);
    text-decoration: none; padding: 1px 0 1px 8px; margin-left: -1px; border-left: 2px solid transparent;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.wiki__toc-sub:hover { color: var(--text-secondary); }
.wiki__toc-sub.is-active { color: var(--accent); border-left-color: var(--accent); font-weight: 600; }
.wiki__nav-links {
    margin-top: var(--space-md); padding-top: 10px; border-top: 1px solid var(--border);
    display: flex; flex-direction: column; gap: 5px;
}
.wiki__nav-links-title {
    font-size: var(--fs-3xs); font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
    color: var(--text-tertiary); margin: 0 0 3px;
}
.wiki__nav-links a { font-size: var(--fs-3xs); color: var(--text-tertiary); text-decoration: none; }
.wiki__nav-links a:hover { color: var(--accent); }

.wiki__main { min-width: 0; max-width: 78ch; }
.wiki__head { padding-bottom: var(--space-lg); border-bottom: 2px solid var(--border); margin-bottom: var(--space-xl); }
.wiki__head h1 { font-size: var(--fs-2xl); font-weight: 700; letter-spacing: -.025em; margin: 0 0 var(--space-sm); }
.wiki__lede { font-size: var(--fs-md); line-height: var(--lh-relaxed); color: var(--text-secondary); margin: 0 0 var(--space-md); }
.wiki__order {
    padding: 12px 14px; background: var(--bg-elevated); border-left: 3px solid var(--accent);
    border-radius: 0 4px 4px 0; font-size: var(--fs-xs); color: var(--text-secondary); line-height: var(--lh-relaxed);
}
.wiki__doc { padding-top: var(--space-2xl); scroll-margin-top: calc(var(--header-height) + 20px); }
.wiki__doc + .wiki__doc { border-top: 2px solid var(--border); margin-top: var(--space-xl); }
.wiki__doc-head {
    margin-bottom: var(--space-lg); padding: var(--space-md) 0 var(--space-md) var(--space-md);
    border-left: 3px solid var(--accent); background: var(--bg-elevated); border-radius: 0 6px 6px 0;
}
/* ⛔ 2026-08-26: 문서 제목과 본문 소제목이 둘 다 --fs-xl 이라 **위계가 없었다.**
   개별 문서는 h1(2xl) > h2(xl) 로 갈리는데 위키에서만 같은 크기로 뭉갰다.
   게다가 소제목에만 밑줄이 있어 소제목이 더 세 보였다 — 문서 제목을 한 단 올린다. */
.wiki__doc-title { font-size: var(--fs-2xl); font-weight: 700; letter-spacing: -.025em; margin: 0 0 8px; line-height: 1.3; }
.wiki__doc-desc { font-size: var(--fs-sm); color: var(--text-secondary); line-height: var(--lh-relaxed); margin: 0 0 6px; }
.wiki__doc-meta { font-size: var(--fs-3xs); color: var(--text-tertiary); margin: 0; font-family: 'JetBrains Mono', monospace; }
.wiki__doc-meta a { color: var(--accent); text-decoration: none; }
/* ⭐ 본문 타이포는 개별 문서(/guide/{slug})와 **똑같이 둔다** — 주인님 기준이 그 화면이다.
   `.guide-body h2`(22px)·`h3`(18px) 를 그대로 상속받고, 여기서는 앵커 여백만 준다.
   위계는 문서 제목을 28px 로 올려서 만든다(아래 .wiki__doc-title). */
.wiki__body h2 { scroll-margin-top: calc(var(--header-height) + 20px); }
.wiki__foot {
    margin-top: var(--space-2xl); padding-top: var(--space-lg); border-top: 1px solid var(--border);
    font-size: var(--fs-xs); color: var(--text-secondary); line-height: var(--lh-relaxed);
}
.wiki__foot a { color: var(--accent); }
.wiki__foot-note { color: var(--text-tertiary); font-size: var(--fs-2xs); }
/* 본문 컨테이너의 자체 폭·여백은 접는다 — 폭은 위키 껍데기(.wiki__main)가 정한다.
   타이포(글꼴·크기·문단 여백·목록·표)는 .static-page/.guide-body 규칙을 그대로 받는다. */
.wiki__main > .static-page { padding-top: 0; max-width: none; }
.wiki__body.static-page { max-width: none; margin: 0; padding: 0; }
.wiki__body.static-page > *:last-child { margin-bottom: 0; }

@media (max-width: 900px) {
    .wiki { grid-template-columns: 1fr; gap: var(--space-lg); }
    .wiki__nav { position: static; }
    .wiki__nav-inner { max-height: none; overflow: visible; }
    .wiki__toc { display: flex; flex-wrap: wrap; gap: 6px; }
    .wiki__toc-item { margin: 0; }
    .wiki__toc-subs { display: none; }   /* 좁은 화면에서 소제목까지 펼치면 본문이 밀린다 */
    .wiki__toc-doc {
        padding: 6px 11px 6px 27px; border: 1px solid var(--border); border-radius: 999px;
        font-size: var(--fs-3xs);
    }
    .wiki__toc-doc::before { left: 8px; top: 7px; }
    .wiki__nav-links { flex-direction: row; flex-wrap: wrap; gap: 12px; }
}
