/* --- トークン --- */
:root {
    --paper: #F4F2EC;
    --paper-raised: #FFFFFF;
    --ink: #12151B;
    --ink-soft: #4B4E56;
    --rule: #DBD7CB;
    --band: #0A0C10;
    --band-text: #EDEBE3;
    --band-rule: #2A2D35;
    --accent: #3049E6;
    --accent-soft: #E7EAFB;
    --up: #0E8A4B;
    --down: #D5382B;
    --learn: #B4791F;   /* 教えて先生の聞き役。上げ下げの色と混ざらないよう別に持つ */
    /* クオンタムビューの2人。相場の赤緑とも、対談の青とも重ならない色にする */
    --view-anchor: #B03A78;
    --view-critic: #1F6F8B;
    --up-dark: #3FC17E;
    --down-dark: #FF7A6B;
}

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

body {
    background: var(--paper);
    color: var(--ink);
    /* ⚠ 先頭は **実際に読み込んでいる webfont**（base.html の Google Fonts）に
       合わせる。ここは**読者の端末**で解決されるので、このサーバに何が
       入っているかは関係ない。'Noto Sans CJK JP' はその端末に入っている人
       だけが引く保険で、先頭に置いてはいけない。
       ⚠ サーバ側で画像を焼くときの書体は cjk_font.py が別に決める。ここではない。

       ⚠ CSS で使う weight は、必ず base.html の wght@… に載せること。
          載せていない weight は黙って近いものに落ちる（2026-09-05 に実際に起きた。
          800 の見出し29箇所が 400/700 しか読んでおらず 700 で描かれていた）。 */
    font-family: 'Noto Sans JP', 'Noto Sans CJK JP', 'Manrope', sans-serif;
    line-height: 1.8;
    /* ⚠ -webkit-font-smoothing: antialiased は **macOS でだけ効き、字を細くする**。
       Linux/Windows では差が 0% なので、このサーバで測っても永久に気づけない。
       「差 0%」は「影響なし」ではない（2026-09-05 に湊さんの指摘で発覚）。 */
}
a { color: inherit; }

.container { max-width: 1180px; margin: 0 auto; padding: 0 24px; }

/* <picture> は既定でインライン。ブロックにしないと、中の img の下に
   行間ぶんの隙間ができて枠線とずれる */
picture { display: block; }
picture img { display: block; }

/* --- マストヘッド --- */
/* ヘッダーは1段（2026-09-29）。題字・区画のタブ・道具を横に並べ、帯ごと上に残す */
.masthead {
    background: var(--band);
    color: var(--band-text);
    border-bottom: 1px solid var(--band-rule);
    position: sticky;
    top: 0;
    z-index: 50;
}
.masthead-inner {
    max-width: 1180px;
    margin: 0 auto;
    padding: 0 24px;
    display: flex;
    align-items: stretch;
    gap: 26px;
    min-height: 54px;
}
.wordmark {
    font-family: -apple-system, 'Helvetica Neue', Arial, sans-serif;
    font-weight: 800;
    font-size: 1.28rem;
    letter-spacing: -0.02em;
    color: var(--band-text);
    text-decoration: none;
    /* ⚠ display:flex にしない。「blueqat<span> news</span>」の空白が詰まって blueqatnews になる */
    display: block;
    align-self: center;
    white-space: nowrap;
}
.wordmark span { color: var(--band-text); }
.wordmark small {
    display: block;
    font-size: 0.65rem;
    font-weight: 600;
    letter-spacing: 0.14em;
    color: #9BA0AC;
    margin-top: 2px;
}
.masthead-tools {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-left: auto;
}
.official-link {
    font-size: 0.7rem;
    color: #9BA0AC;
    text-decoration: none;
    border: 1px solid var(--band-rule);
    padding: 4px 10px;
    border-radius: 4px;
    font-family: 'Manrope', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}
.official-link:hover { color: var(--band-text); border-color: var(--band-text); }
.back-link {
    text-decoration: none;
    color: #9BA0AC;
    font-size: 0.8rem;
    font-weight: 700;
    font-family: 'Manrope', sans-serif;
}
.back-link:hover { color: var(--band-text); }

.header-search { display: flex; min-width: 0; }
.search-box {
    background: rgba(255,255,255,0.06);
    border: 1px solid var(--band-rule);
    color: var(--band-text);
    font-size: 0.82rem;
    padding: 7px 12px;
    border-radius: 3px;
    width: 180px;
}
@media (max-width: 1000px) { .masthead-tools .search-box { width: 130px; } }
/* スマホでは、ヘッダーの検索欄の代わりに一覧の上に置く（ヘッダーを1段に収めるため） */
.listing-search { display: none; }
@media (max-width: 760px) {
    .listing-search { display: flex; margin: 0 0 16px; }
    .listing-search input { flex: 1; min-width: 0; padding: 9px 12px; font: inherit; font-size: 0.9rem;
                            border: 1px solid var(--rule); background: var(--paper-raised); color: var(--ink); }
}
.search-box::placeholder { color: #71757F; }

/* --- カテゴリ サブナビ --- */
/* 区画のタブ（2026-09-29）。ヘッダーの中に並べる */
.sections { display: flex; gap: 2px; }
.sections a { display: flex; align-items: center; padding: 0 15px; font-size: 0.9rem; font-weight: 800; color: #B7BAC3;
              text-decoration: none; white-space: nowrap; letter-spacing: 0.02em;
              border-top: 3px solid transparent; border-bottom: 3px solid transparent; }
.sections a:hover { color: var(--band-text); }
.sections a.on { color: #fff; border-bottom-color: var(--accent); background: rgba(255, 255, 255, 0.06); }
@media (max-width: 760px) {
    /* スマホ: 1段目に題字とログイン、2段目にタブ4つ（横に流さず、常に全部見える） */
    .masthead-inner { flex-wrap: wrap; padding: 0; gap: 0; min-height: 0; }
    .wordmark { padding: 10px 16px; font-size: 1.12rem; }
    .masthead-tools { padding: 0 16px; gap: 10px; }
    .masthead-tools .header-search, .masthead-tools .back-link { display: none; }
    .sections { order: 3; flex-basis: 100%; display: grid; grid-template-columns: repeat(4, 1fr); gap: 0;
                border-top: 1px solid var(--band-rule); }
    .sections a { justify-content: center; padding: 10px 2px 8px; font-size: 0.84rem; }
    .sections-long { display: none; }
}
.subnav-section .subnav-inner a.active { color: var(--band-text); border-bottom-color: var(--accent); }

.subnav { background: var(--band); border-bottom: 1px solid var(--band-rule); }
.subnav-inner {
    max-width: 1180px;
    margin: 0 auto;
    padding: 0 24px;
    display: flex;
    gap: 22px;
    overflow-x: auto;
}
.subnav a {
    display: inline-block;
    padding: 10px 0;
    font-size: 0.8rem;
    font-weight: 600;
    color: #B7BAC3;
    text-decoration: none;
    border-bottom: 2px solid transparent;
    white-space: nowrap;
}
.subnav a.active, .subnav a:hover { color: var(--band-text); border-bottom-color: var(--band-text); }
.subnav-feature { color: var(--accent) !important; }
.subnav-feature.active, .subnav-feature:hover { color: var(--band-text) !important; border-bottom-color: var(--accent) !important; }
.subnav-categories {
    border-top: 1px solid var(--band-rule);
    gap: 18px;
}
.subnav-categories a { padding: 7px 0; font-size: 0.74rem; font-weight: 500; color: #8B8F99; }
.subnav-categories a.active, .subnav-categories a:hover { color: var(--band-text); border-bottom-color: var(--band-text); }

/* --- トレンドキーワード帯 --- */
.trend-strip { border-top: 1px solid var(--band-rule); }
.trend-strip-inner {
    max-width: 1180px;
    margin: 0 auto;
    padding: 8px 24px 9px;
    display: flex;
    align-items: center;
    gap: 14px;
}
.trend-label {
    flex: 0 0 auto;
    font-size: 0.62rem;
    font-weight: 800;
    letter-spacing: 0.09em;
    color: var(--accent);
    white-space: nowrap;
}
.trend-row {
    display: flex;
    gap: 16px;
    overflow-x: auto;
    flex: 1 1 auto;
    scrollbar-width: none;
}
.trend-row::-webkit-scrollbar { display: none; }
/* カテゴリのサブナビと同じ「文字だけ」の見た目に揃える（数字や囲みは出さない） */
.trend-word {
    flex: 0 0 auto;
    font-size: 0.74rem;
    font-weight: 600;
    color: #B7BAC3;
    text-decoration: none;
    white-space: nowrap;
    padding: 2px 0;
    border-bottom: 1px solid transparent;
}
.trend-word:hover, .trend-word.active { color: var(--band-text); border-bottom-color: var(--accent); }
/* 下の段がトレンドだけになった（2026-09-29）。.subnav a の上下10pxが効いて段が太くなっていたので打ち消す */
.subnav .trend-strip { border-top: 0; }
.subnav .trend-word { padding: 2px 0; font-size: 0.78rem; border-bottom-width: 1px; }
.trend-updated {
    /* 「更新」の2文字を含むので等幅フォントは指定しない
       （日本語グリフを持たない等幅フォントだと豆腐になる環境がある） */
    flex: 0 0 auto;
    font-size: 0.62rem;
    color: #6B7280;
    white-space: nowrap;
}
@media (max-width: 760px) {
    .trend-updated { display: none; }
    .trend-strip-inner { gap: 10px; }
}

/* --- 株価速報帯 --- */
.market-strip { background: var(--band); border-bottom: 1px solid var(--band-rule); }
.market-strip-inner {
    max-width: 1180px;
    margin: 0 auto;
    padding: 10px 24px 14px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.market-strip-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}
.market-updated {
    flex: 0 0 auto;
    font-family: ui-monospace, 'SF Mono', Menlo, monospace;
    font-size: 0.68rem;
    color: #7C8B8A;
    white-space: nowrap;
}
.market-label {
    font-size: 0.66rem;
    font-weight: 800;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    color: #9BA0AC;
    flex: 0 0 auto;
    white-space: nowrap;
}
.market-legend {
    font-size: 0.64rem;
    color: #6B7280;
    margin-top: 6px;
}
.stat-row { display: flex; gap: 30px; overflow-x: auto; width: 100%; }
.stat-card {
    flex: 0 0 auto;
    min-width: 108px;
    display: block;
    text-decoration: none;
    color: inherit;
    border-radius: 3px;
    transition: opacity 0.15s ease;
}
.stat-card:hover { opacity: 0.75; }
.stat-sym {
    font-family: ui-monospace, 'SF Mono', Menlo, monospace;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: #9BA0AC;
}
.stat-px-row { display: flex; align-items: baseline; gap: 7px; margin-top: 2px; }
.stat-px {
    font-family: ui-monospace, 'SF Mono', Menlo, monospace;
    font-variant-numeric: tabular-nums;
    font-size: 0.92rem;
    font-weight: 700;
    color: var(--band-text);
}
.stat-chg {
    font-family: ui-monospace, 'SF Mono', Menlo, monospace;
    font-variant-numeric: tabular-nums;
    font-size: 0.72rem;
    font-weight: 600;
}
.stat-chg.up { color: var(--up-dark); }
.stat-chg.down { color: var(--down-dark); }
.spark { display: block; margin-top: 3px; }

/* --- ページ 2カラムレイアウト --- */
.page {
    max-width: 1180px;
    margin: 0 auto;
    padding: 28px 24px 60px;
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 36px;
    align-items: start;
}
/* グリッドアイテムはデフォルトでmin-width:autoのため、中の canvas 等の幅
   （CSSでは縮小済みでも、HTML属性上の実寸は大きい）に押されてトラック自体が
   広がり、右側の余白だけ狭く見えることがある。min-width:0で明示的に抑止する。 */
.page > main { min-width: 0; }
.eyebrow {
    display: inline-block;
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    color: var(--accent);
    text-transform: uppercase;
    margin-bottom: 8px;
    text-decoration: none;
    margin-right: 8px;
}
.feature-eyebrow, .feature-badge {
    color: #fff;
    background: var(--ink);
    padding: 2px 8px;
    border-radius: 2px;
}
.timestamp {
    font-family: ui-monospace, 'SF Mono', Menlo, monospace;
    font-size: 0.72rem;
    color: var(--ink-soft);
    font-variant-numeric: tabular-nums;
}
.no-results { color: var(--ink-soft); padding: 3rem 0; text-align: center; }
.active-filter { margin: 0 0 1.2rem; font-size: 0.9rem; color: var(--ink-soft); }
.clear-filter { margin-left: 10px; color: var(--ink-soft); text-decoration: none; }
.clear-filter:hover { color: var(--ink); }

/* --- リード記事 --- */
.lead {
    display: grid;
    grid-template-columns: 1.15fr 1fr;
    gap: 26px;
    padding-bottom: 26px;
    border-bottom: 1px solid var(--rule);
    margin-bottom: 26px;
}
.lead img {
    width: 100%;
    /* height:auto が要る。imgに width/height 属性を付けている（読み込み中の
       ガタつきを止めるため）ので、CSSで高さを決めないと属性の高さが
       そのまま使われ、aspect-ratio が効かなくなる。実際に縦長になった。 */
    height: auto;
    aspect-ratio: 16/10;
    object-fit: cover;
    background: var(--paper-raised);
    border: 1px solid var(--rule);
}
.lead h1 { font-size: 1.85rem; line-height: 1.32; font-weight: 800; letter-spacing: -0.01em; text-wrap: balance; margin-bottom: 10px; }
.lead h1 a { text-decoration: none; }
.lead p { font-size: 0.98rem; line-height: 1.75; color: var(--ink-soft); margin-bottom: 14px; max-width: 62ch; }

/* --- 記事の一覧（2本目から）---
   2026-09-29 に3列のカード（5本に1本の大きい枠つき）から、ふつうの一覧に変えた。
   湊さん「一番最新のやつは大きめでいいけど、他のやつはもう普通のレイアウトに」。
   左に小さい画像、右に見出し・要約・日時。スマホでも同じ形のまま画像を小さくする */
.story-list { display: flex; flex-direction: column; border-top: 1px solid var(--rule); }
.lead + .story-list { border-top: 0; margin-top: -26px; }   /* リードの下線と二重にしない */
.story {
    display: grid;
    grid-template-columns: 200px minmax(0, 1fr);
    gap: 20px;
    align-items: start;
    padding: 18px 0;
    border-bottom: 1px solid var(--rule);
}
.story-thumb { display: block; }
.story img {
    width: 200px;
    height: 125px;
    object-fit: cover;
    background: var(--paper-raised);
    border: 1px solid var(--rule);
}
.story h3 { font-size: 1.08rem; line-height: 1.5; font-weight: 700; margin: 0 0 6px; }
.story-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; }
.story-meta .eyebrow { margin: 0; }
.story-meta .timestamp { margin: 0; }
.story h3 a, .story-list a { text-decoration: none; }
.story h3 a:hover { color: var(--accent); }
.story-dek { font-size: 0.88rem; line-height: 1.65; color: var(--ink-soft); margin-bottom: 6px;
             display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
@media (max-width: 600px) {
    .story { grid-template-columns: 112px minmax(0, 1fr); gap: 12px; padding: 14px 0; }
    .story img { width: 112px; height: 70px; }
    .story h3 { font-size: 0.98rem; margin-bottom: 6px; }
    .story-dek { display: none; }
}

/* --- 特集記事セクション --- */
.feature-section {
    margin: 3rem 0;
    padding: 28px;
    background: var(--band);
    color: var(--band-text);
}
.feature-section-heading { font-size: 1.15rem; margin-bottom: 18px; }
.feature-section-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.feature-card { text-decoration: none; color: inherit; display: block; }
.feature-card img { width: 100%; height: 130px; object-fit: cover; margin-bottom: 10px; border: 1px solid var(--band-rule); }
.feature-card h3 { font-size: 0.98rem; line-height: 1.45; font-weight: 700; margin-top: 4px; }
.feature-card:hover h3 { color: var(--accent); }
@media (max-width: 1000px) {
    .feature-section-list { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
    .feature-section-list { grid-template-columns: 1fr; }
}

/* --- 記事詳細 --- */
.article-container { margin: 0 0 6rem; }
/* height:auto の理由は .lead img と同じ（width/height 属性を付けているため） */
.article-visual img { width: 100%; height: auto; max-height: 380px; object-fit: cover; border: 1px solid var(--rule); margin-bottom: 2rem; }
.article-title { font-size: 2rem; font-weight: 800; line-height: 1.4; margin-bottom: 1rem; color: var(--ink); }
.summary-box {
    background: var(--accent-soft);
    border-left: 4px solid var(--accent);
    padding: 20px 22px;
    margin-bottom: 2.5rem;
}
.summary-label {
    display: inline-block;
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.09em;
    color: var(--accent);
    text-transform: uppercase;
    margin-bottom: 8px;
}
.summary-box p { font-size: 1rem; line-height: 1.75; color: var(--ink); }

.article-content { font-size: 1.1rem; line-height: 2.0; }
.article-content p { margin-bottom: 2rem; }
.article-content h2 { margin: 4rem 0 1.6rem; font-size: 1.5rem; border-bottom: 2px solid var(--ink); padding-bottom: 8px; }
.article-footer { margin-top: 4rem; padding: 2rem; background: var(--paper-raised); border-left: 4px solid var(--ink); font-size: 0.95rem; }

/* --- メール配信の案内（ログイン済み・未設定の読者にだけ出す） --- */
.nl-prompt {
    margin-top: 3rem;
    padding: 1rem 1.4rem;
    background: var(--accent-soft);
    border-left: 3px solid var(--accent);
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.8rem;
    font-size: 0.9rem;
}
.nl-prompt a { color: var(--accent); font-weight: 700; white-space: nowrap; }

/* 初回ログイン時に一度だけ挟む案内 */
.newsletter-first {
    background: var(--accent-soft);
    border-left: 3px solid var(--accent);
    padding: 1rem 1.2rem;
    font-size: 0.9rem;
    line-height: 1.9;
    margin-bottom: 1.6rem;
}
.newsletter-skip { margin-top: 1.2rem; font-size: 0.86rem; }
.newsletter-skip a { color: var(--ink-soft); }

/* --- ログインを促す続き（途中までしか読めない記事） --- */
.gate {
    position: relative;
    margin-top: -2rem;      /* 直前の本文にフェードを重ねる */
    padding: 6rem 2rem 2.4rem;
    text-align: center;
    background: linear-gradient(to bottom, rgba(244,242,236,0) 0%, var(--paper) 45%, var(--paper) 100%);
}
.gate-lead { font-size: 1.05rem; font-weight: 700; margin-bottom: 0.6rem; }
.gate-note {
    font-size: 0.86rem;
    line-height: 1.9;
    color: var(--ink-soft);
    max-width: 30rem;
    margin: 0 auto 1.6rem;
}
.gate-button {
    display: inline-block;
    background: var(--accent);
    color: #fff;
    text-decoration: none;
    font-weight: 700;
    font-size: 0.95rem;
    padding: 13px 32px;
    border-radius: 4px;
    transition: opacity 0.15s ease;
}
.gate-button:hover { opacity: 0.85; }
.gate-button:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }

/* --- 対談記事（post_type='dialogue'）--- */
.speech {
    display: grid;
    grid-template-columns: 6.5rem 1fr;
    gap: 0 1.4rem;
    margin-bottom: 2.4rem;
    padding-left: 1.2rem;
    border-left: 3px solid var(--rule);
}
.speech-who {
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    line-height: 2.2;
    white-space: nowrap;
}
/* 名前の下に肩書。毎回同じ3人なので、誰がどの立場かは一目で分かる方がよい */
.speech-who small {
    display: block;
    font-size: 0.64rem;
    font-weight: 500;
    letter-spacing: 0.02em;
    line-height: 1.35;
    color: var(--ink-soft);
    opacity: 0.75;
    white-space: normal;  /* 「AI・技術の視点」は折り返して2行にする */
}
.speech-body p { margin-bottom: 1.2rem; }
.speech-body p:last-child { margin-bottom: 0; }
.speech-researcher { border-left-color: var(--accent); }
.speech-researcher .speech-who { color: var(--accent); }
.speech-founder { border-left-color: var(--up); }
.speech-founder .speech-who { color: var(--up); }
/* 司会は進行役なので、二人の議論より一段引いた見た目にする */
/* 教えて先生の聞き役。研究者側（--accent）と対にして、色で立場が分かるようにする。
   --down（下落の赤）は使わない。相場の色と読み違えられるため。 */
.speech-learner { border-left-color: var(--learn); }
.speech-learner .speech-who { color: var(--learn); }

.speech-moderator { border-left-color: var(--rule); }
.speech-moderator .speech-who { color: var(--ink-soft); }
.speech-moderator .speech-body { font-size: 0.95rem; color: var(--ink-soft); }
@media (max-width: 700px) {
    /* 幅が無いと話者名の列で本文が潰れるので、名前を上に出す */
    .speech { grid-template-columns: 1fr; gap: 0.2rem; }
    .speech-who { line-height: 1.6; }
}

/* --- カテゴリ/タグ バッジ --- */
.category-badge {
    display: inline-block;
    font-family: 'Manrope', sans-serif;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 3px 10px;
    background: var(--ink);
    color: var(--paper);
    border-radius: 3px;
    text-decoration: none;
    margin-bottom: 0.6rem;
}
.tag-list, .tag-row { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 0.6rem; }
.tag-chip {
    font-size: 0.78rem;
    color: var(--ink-soft);
    text-decoration: none;
    border: 1px solid var(--rule);
    padding: 2px 9px;
    border-radius: 999px;
}
.tag-chip:hover { color: var(--ink); border-color: var(--ink); }

/* --- SNSシェア --- */
.share-area { margin: 1.5rem 0 2rem; display: flex; gap: 12px; align-items: center; }
.share-label { font-family: 'Manrope', sans-serif; font-size: 0.8rem; font-weight: 700; color: var(--ink-soft); letter-spacing: 0.05em; }
.share-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 38px; height: 38px; border-radius: 50%;
    background: var(--paper-raised); border: 1px solid var(--rule);
    color: var(--ink); text-decoration: none; transition: all 0.2s ease;
}
.share-btn:hover { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.share-btn svg { width: 16px; height: 16px; fill: currentColor; }

/* --- 関連記事 --- */
.related-section { margin-top: 4rem; padding-top: 2.5rem; border-top: 1px solid var(--rule); }
.related-heading { font-size: 1.25rem; margin-bottom: 1.4rem; font-family: 'Manrope', sans-serif; }
.related-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; }
.related-item { text-decoration: none; color: inherit; display: block; }
.related-thumb img { width: 100%; height: 130px; object-fit: cover; border: 1px solid var(--rule); border-radius: 2px; margin-bottom: 0.6rem; background: var(--paper-raised); }
.related-title { font-size: 0.95rem; font-weight: 700; line-height: 1.5; }

/* --- サイドバー --- */
.rail-block { background: var(--paper-raised); border: 1px solid var(--rule); margin-bottom: 24px; }
.rail-head {
    font-size: 0.72rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink);
    padding: 12px 16px; border-bottom: 2px solid var(--ink);
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
}
.rail-updated {
    font-family: ui-monospace, 'SF Mono', Menlo, monospace;
    font-size: 0.62rem; font-weight: 600; letter-spacing: normal; text-transform: none;
    color: #7C8B8A; white-space: nowrap;
}
.rank-list, .latest-list { list-style: none; }
.rank-item { position: relative; padding: 4px 16px 18px; border-top: 1px solid var(--rule); }
.rank-item:first-child { border-top: none; }
.rank-num {
    position: absolute; right: 10px; top: -2px;
    font-family: Georgia, serif; font-weight: 700; font-size: 2.2rem;
    color: var(--rule); line-height: 1; pointer-events: none; user-select: none;
}
.rank-item a { position: relative; display: block; font-size: 0.87rem; line-height: 1.5; font-weight: 600; text-decoration: none; max-width: 78%; padding-top: 10px; }
.rank-item a:hover { color: var(--accent); }
.latest-list li { padding: 11px 16px; border-top: 1px solid var(--rule); display: flex; gap: 10px; align-items: baseline; }
.latest-list li:first-child { border-top: none; }
.latest-list .dot { width: 5px; height: 5px; border-radius: 50%; background: var(--accent); flex: 0 0 auto; margin-top: 6px; }
.latest-list a { font-size: 0.85rem; line-height: 1.5; font-weight: 600; text-decoration: none; }
.latest-list a:hover { color: var(--accent); }
.rail-more-link {
    display: block;
    padding: 11px 16px;
    border-top: 1px solid var(--rule);
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--accent);
    text-decoration: none;
}
.rail-more-link:hover { text-decoration: underline; }

.search-box:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

/* --- ページネーション --- */
/* ページ送り。番号が20個ほど並ぶので、折り返す前提で組む
   （PREV/NEXTだけだった頃は3つしか入っていなかった） */
.pagination-nav {
    margin: 3rem 0; display: flex; flex-wrap: wrap; gap: 6px; justify-content: center;
}
.pagination-nav a, .pagination-nav span {
    padding: 8px 12px; border: 1px solid var(--ink); text-decoration: none; color: var(--ink);
    font-weight: bold; font-family: 'Manrope', sans-serif; line-height: 1;
}
.pagination-nav [aria-current="page"] { background: var(--ink); color: var(--paper); }
/* 飛びを表す「…」は押せないので、枠も反転もしない */
.pagination-nav .pagination-gap {
    border: none; background: none; color: var(--ink); padding: 8px 2px; opacity: 0.55;
}

@media (max-width: 600px) {
    .pagination-nav { gap: 4px; }
    .pagination-nav a, .pagination-nav span { padding: 7px 10px; font-size: 0.85rem; }
}

/* --- フッター --- */
footer { padding: 1.6rem 0; background: var(--band); color: #9BA0AC; }
.footer-inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    font-size: 0.8rem;
}
.footer-links { display: flex; gap: 20px; flex-wrap: wrap; }
.footer-links a { color: #9BA0AC; text-decoration: none; }
.footer-links a:hover { color: var(--band-text); }

@media (max-width: 600px) {
    .footer-inner { flex-direction: column; align-items: flex-start; }
}

/* --- レスポンシブ --- */
@media (max-width: 860px) {
    .page { grid-template-columns: 1fr; }
    .lead { grid-template-columns: 1fr; }
    .related-list { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
    .article-title { font-size: 1.6rem; }
    .listing-head h1 { font-size: 1.35rem; }
    .tag-profile { padding: 1.2rem 1.1rem; }
}

/* --- 管理画面（承認待ち記事） --- */
.admin-review { padding: 32px 24px 60px; }
.admin-heading { font-size: 1.4rem; margin-bottom: 1.5rem; }
.admin-card {
    background: var(--paper-raised);
    border: 1px solid var(--rule);
    padding: 22px;
    margin-bottom: 20px;
}
.admin-card-meta { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.admin-feature-badge { background: var(--accent); }
.admin-card-title { font-size: 1.2rem; font-weight: 800; margin-bottom: 8px; }
.admin-card-body { font-size: 0.92rem; line-height: 1.7; color: var(--ink-soft); margin: 10px 0; }
.admin-card-body p { margin-bottom: 1.2rem; }
.admin-card-body h2 { font-size: 1.05rem; margin: 1.6rem 0 0.8rem; color: var(--ink); }
.admin-card-source { font-size: 0.78rem; color: var(--ink-soft); margin-bottom: 14px; word-break: break-all; }
.admin-card-actions { display: flex; gap: 10px; }
.admin-btn {
    padding: 9px 18px;
    font-size: 0.85rem;
    font-weight: 700;
    border: none;
    cursor: pointer;
    font-family: 'Manrope', sans-serif;
}
.admin-btn-approve { background: var(--up); color: #fff; }
.admin-btn-approve:hover { opacity: 0.85; }
.admin-btn-reject { background: transparent; border: 1px solid var(--down); color: var(--down); }
.admin-btn-reject:hover { background: var(--down); color: #fff; }

/* --- メルマガ管理 --- */
.newsletter-page { padding: 40px 24px 80px; max-width: 640px; }
.newsletter-account { color: var(--ink-soft); font-size: 0.9rem; margin-bottom: 24px; }
.newsletter-saved { color: var(--up); font-weight: 700; margin-bottom: 16px; }
.newsletter-prefs { display: flex; flex-direction: column; gap: 16px; }
.newsletter-pref-row {
    display: flex; align-items: flex-start; gap: 12px; padding: 16px;
    border: 1px solid var(--rule); cursor: pointer; font-size: 0.9rem; line-height: 1.6;
}
.newsletter-pref-row input { margin-top: 4px; }
.newsletter-prefs .admin-btn { align-self: flex-start; margin-top: 8px; }

/* 特集記事下部のミニチャート（Chart.jsのresponsive描画には高さ確定済みの箱が必要） */
.chart-canvas-box { position: relative; height: 220px; }

/* --- メール配信への導線 --- */
/* 未ログインの読者向け。記事を読み終えた位置に置く。
   以前はログイン済みで未設定の読者にしか案内が無く、読者のほぼ全員には
   何も出ていなかった。 */
.nl-box {
    margin-top: 3rem;
    padding: 1.6rem 1.6rem 1.8rem;
    background: var(--accent-soft);
    border-left: 3px solid var(--accent);
}
.nl-box-lead { font-size: 1.05rem; font-weight: 700; margin-bottom: 0.5rem; }
.nl-box-note {
    font-size: 0.88rem;
    line-height: 1.9;
    color: var(--ink-soft);
    margin-bottom: 1.2rem;
}
.nl-box-button {
    display: inline-block;
    background: var(--accent);
    color: #fff;
    text-decoration: none;
    font-weight: 700;
    font-size: 0.92rem;
    padding: 0.7rem 1.5rem;
}
.nl-box-button:hover { opacity: 0.85; }
.nl-box-button:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }

/* 中身の左右の余白は、他のサイドバー項目（.rail-head / .latest-list li）と同じ16px。
   ここだけ余白が無く、説明文とボタンが枠線に密着していた。 */
.rail-newsletter p {
    padding: 12px 16px 0;
    font-size: 0.82rem;
    line-height: 1.8;
    color: var(--ink-soft);
}
.rail-newsletter-button {
    display: block;
    margin: 12px 16px 16px;
    text-align: center;
    background: var(--accent);
    color: #fff;
    text-decoration: none;
    font-weight: 700;
    font-size: 0.85rem;
    padding: 0.65rem 1rem;
}
.rail-newsletter-button:hover { opacity: 0.85; }
.rail-newsletter-button:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }

/* --- 一覧ページの見出しとタグ概況 --- */
.listing-head { margin-bottom: 1.8rem; padding-bottom: 1.2rem; border-bottom: 2px solid var(--ink); }
.listing-head h1 { font-size: 1.7rem; line-height: 1.45; margin-bottom: 0.4rem; }
.listing-head p { font-size: 0.9rem; color: var(--ink-soft); }

/* タグの常設ページに置く概況。記事は日付で古びるが、ここは古びない。 */
.tag-profile {
    margin-bottom: 2.4rem;
    padding: 1.6rem 1.8rem;
    background: var(--paper-raised);
    border: 1px solid var(--rule);
}
.tag-profile h2 {
    font-size: 1.05rem;
    margin-bottom: 0.9rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid var(--rule);
}
.tag-profile p { font-size: 0.94rem; line-height: 2; margin-bottom: 0.9rem; }
.tag-profile p:last-of-type { margin-bottom: 0; }
.tag-profile a { color: var(--accent); }
.tag-profile-meta {
    margin-top: 1.1rem !important;
    font-size: 0.78rem !important;
    color: var(--ink-soft);
}

/* --- 配信停止の確認 --- */
/* リンクを開いただけでは止めない。押すのは本人だと分かるようにする。 */
.nl-confirm { margin: 1.6rem 0; }
.nl-confirm-lead { line-height: 2; margin-bottom: 1.4rem; }
.nl-confirm-note { font-size: 0.85rem; color: var(--ink-soft); margin: 0.6rem 0 1.8rem; }
.nl-confirm-stop {
    display: inline-block;
    background: none;
    border: 1px solid var(--rule);
    color: var(--ink-soft);
    font-family: inherit;
    font-size: 0.9rem;
    padding: 0.65rem 1.4rem;
    cursor: pointer;
}
.nl-confirm-stop:hover { border-color: var(--ink-soft); color: var(--ink); }
.nl-confirm-stop:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }
.nl-confirm button.nl-box-button { border: none; font-family: inherit; cursor: pointer; }

/* --- 本文中の表（決算記事の数値表など） --- */
/* 横に長い表がページ全体を横スクロールさせないよう、表だけをここでスクロールさせる */
.article-table-wrap {
    overflow-x: auto;
    margin: 1.8rem 0;
    border: 1px solid var(--rule);
}
.article-table {
    border-collapse: collapse;
    width: 100%;
    min-width: 34rem;
    font-size: 0.86rem;
    font-variant-numeric: tabular-nums;
}
.article-table th,
.article-table td {
    padding: 0.6rem 0.9rem;
    border-bottom: 1px solid var(--rule);
    text-align: right;
    white-space: nowrap;
}
.article-table th {
    background: var(--paper);
    font-weight: 700;
    position: sticky;
    top: 0;
}
.article-table th:first-child,
.article-table td:first-child {
    text-align: left;
    white-space: normal;
    min-width: 9rem;
}
.article-table tbody tr:last-child td { border-bottom: none; }
.article-table tbody tr:nth-child(even) { background: rgba(0, 0, 0, 0.02); }

/* --- 運営元（blueqat）の表示 --- */
/* ヘッダーは題字の脇に小さく添える。主役は媒体名なので、ロゴは白抜きにして
   彩度で題字と競わせない。フッターはブランドの色そのままで置く。 */
.masthead-brand { display: flex; align-items: flex-end; gap: 14px; flex-wrap: wrap; }
.byline {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    text-decoration: none;
    padding-bottom: 4px;
    opacity: 0.72;
    transition: opacity 0.15s;
}
.byline:hover { opacity: 1; }
.byline:focus-visible { outline: 2px solid var(--band-text); outline-offset: 3px; }
.byline span {
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    color: #9BA0AC;
}
.byline img { height: 15px; width: auto; display: block; }

.footer-brand { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.footer-brand img { height: 22px; width: auto; display: block; }
.footer-brand a { display: inline-flex; }
.footer-brand a:focus-visible { outline: 2px solid var(--band-text); outline-offset: 3px; }

@media (max-width: 600px) {
    .masthead-brand { gap: 10px; }
    .byline img { height: 13px; }
    .footer-brand { gap: 10px; }
}

/* --- 株価とニュースの突き合わせ --- */
.stockx { max-width: 900px; margin: 0 auto 6rem; }
.stockx-tabs { display: flex; flex-wrap: wrap; gap: 6px 14px; padding: 1rem 0; border-bottom: 1px solid var(--rule); }
.stockx-tabs a { font-size: 0.9rem; color: var(--ink-soft); text-decoration: none; }
.stockx-tabs a.active { color: var(--ink); font-weight: 700; border-bottom: 2px solid var(--ink); }
.stockx-title { font-size: 1.9rem; font-weight: 800; margin: 2rem 0 0.8rem; }
.stockx-title span { font-family: 'Manrope', sans-serif; font-size: 1rem; color: var(--ink-soft); margin-left: 12px; }
.stockx-lead { font-size: 1rem; line-height: 1.9; margin-bottom: 2.5rem; }
.stockx-empty { color: var(--ink-soft); padding: 2rem 0; }

.stockx-chart-box { border: 1px solid var(--rule); padding: 1.2rem; background: var(--paper-raised); }
.stockx-chart-meta { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px;
    font-size: 0.85rem; color: var(--ink-soft); margin-bottom: 0.6rem; font-variant-numeric: tabular-nums; }
.stockx-chart { display: block; width: 100%; height: auto; }
.stockx-chart .mark { stroke: var(--paper-raised); stroke-width: 1.5; }
.mark-earnings { fill: #c0392b; }
.mark-news { fill: var(--ink); }
.mark-sector { fill: #8a8f98; }
.mark-unknown { fill: #d7dae0; }
.stockx-legend { display: flex; flex-wrap: wrap; gap: 6px 18px; list-style: none; padding: 0;
    margin: 0.9rem 0 0; font-size: 0.82rem; color: var(--ink-soft); }
.stockx-legend li { display: flex; align-items: center; gap: 6px; }
.stockx-legend .dot { width: 9px; height: 9px; border-radius: 50%; display: inline-block; }

.stockx-tally { margin: 2rem 0 1rem; font-size: 0.95rem; line-height: 1.9; }
.stockx-list { border-top: 1px solid var(--rule); }
.stockx-row { padding: 1.1rem 0; border-bottom: 1px solid var(--rule); }
.stockx-row-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px; }
.stockx-date { font-family: 'Manrope', sans-serif; font-weight: 700; font-variant-numeric: tabular-nums; }
.stockx-chg { font-weight: 800; font-variant-numeric: tabular-nums; }
.stockx-chg.up { color: var(--up-dark); }
.stockx-chg.down { color: var(--down-dark); }
.stockx-close { color: var(--ink-soft); font-variant-numeric: tabular-nums; }
.stockx-badge { font-size: 0.78rem; padding: 2px 9px; border: 1px solid var(--rule); border-radius: 999px; color: var(--ink-soft); }
.badge-earnings { border-color: #c0392b; color: #c0392b; font-weight: 700; }
.badge-news { border-color: var(--ink); color: var(--ink); }
.stockx-articles { list-style: none; padding: 0; margin: 0.7rem 0 0; }
.stockx-articles li { display: flex; gap: 12px; padding: 3px 0; font-size: 0.92rem; line-height: 1.7; }
.stockx-art-date { color: var(--ink-soft); font-variant-numeric: tabular-nums; white-space: nowrap; }

.stockx-caveat { margin-top: 3.5rem; padding: 1.6rem; background: var(--paper-raised); border-left: 4px solid var(--ink); }
.stockx-caveat h2 { font-size: 1.05rem; margin-bottom: 0.9rem; }
.stockx-caveat ul { margin: 0; padding-left: 1.2rem; font-size: 0.9rem; line-height: 1.9; color: var(--ink-soft); }

@media (max-width: 640px) {
    .stockx-title { font-size: 1.4rem; }
    .stockx-row-head { gap: 4px 10px; }
    .stockx-articles li { flex-direction: column; gap: 2px; }
}

/* --- 株価とニュースの案内ページ --- */
.stocklp { max-width: 860px; margin: 0 auto 6rem; }
.stocklp-hero { padding: 3rem 0 2.5rem; border-bottom: 1px solid var(--rule); }
.stocklp-eyebrow { font-family: 'Manrope', sans-serif; font-size: 0.8rem; letter-spacing: 0.08em;
    text-transform: uppercase; color: var(--ink-soft); margin-bottom: 0.9rem; }
.stocklp-hero h1 { font-size: 2.2rem; font-weight: 800; line-height: 1.45; text-wrap: balance; margin-bottom: 1.2rem; }
.stocklp-sub { font-size: 1.05rem; line-height: 2.0; }
.stocklp-block { margin: 3.5rem 0; }
.stocklp-block h2 { font-size: 1.35rem; margin-bottom: 1.2rem; border-bottom: 2px solid var(--ink); padding-bottom: 8px; }
.stocklp-block p { font-size: 1rem; line-height: 2.0; margin-bottom: 1.2rem; }
.stocklp-note { font-size: 0.88rem; color: var(--ink-soft); line-height: 1.9; }

.stocklp-kinds { list-style: none; padding: 0; margin: 1.6rem 0 0;
    display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1rem; }
.stocklp-kinds li { border: 1px solid var(--rule); padding: 1rem; font-size: 0.9rem; line-height: 1.8; }
.stocklp-kinds .dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; margin-right: 8px; }

.stocklp-example .stockx-row { border: 1px solid var(--rule); border-bottom: 1px solid var(--rule);
    padding: 1.1rem; background: var(--paper-raised); }

.stocklp-table-wrap { overflow-x: auto; }
.stocklp-table { width: 100%; border-collapse: collapse; font-size: 0.92rem;
    font-variant-numeric: tabular-nums; }
.stocklp-table th, .stocklp-table td { padding: 9px 10px; border-bottom: 1px solid var(--rule); text-align: right; }
.stocklp-table thead th { text-align: right; font-size: 0.8rem; color: var(--ink-soft); white-space: nowrap; }
.stocklp-table tbody th { text-align: left; font-weight: 700; white-space: nowrap; }
.stocklp-table tbody th span { font-family: 'Manrope', sans-serif; font-size: 0.75rem;
    color: var(--ink-soft); margin-left: 7px; }
.stocklp-table td a { white-space: nowrap; }

.stocklp-cta { margin: 3.5rem 0; padding: 2rem; background: var(--paper-raised); border-left: 4px solid var(--ink); }
.stocklp-cta-lead { font-size: 1.05rem; font-weight: 700; line-height: 1.9; margin-bottom: 1.2rem; }
.stocklp-cta-note { font-size: 0.88rem; color: var(--ink-soft); line-height: 1.9; margin-top: 1rem; }
.stocklp-symbols { list-style: none; padding: 0; margin: 1.6rem 0 0;
    display: flex; flex-wrap: wrap; gap: 8px 10px; }
.stocklp-symbols a { display: inline-block; border: 1px solid var(--rule); background: var(--paper);
    padding: 6px 12px; font-size: 0.88rem; text-decoration: none; color: var(--ink); }
.stocklp-symbols a:hover { border-color: var(--ink); }
.stocklp-symbols span { font-family: 'Manrope', sans-serif; font-size: 0.74rem; color: var(--ink-soft); margin-left: 7px; }

@media (max-width: 640px) {
    .stocklp-hero h1 { font-size: 1.55rem; }
    .stocklp-hero { padding: 2rem 0 1.8rem; }
    .stocklp-block { margin: 2.5rem 0; }
}

/* ログイン済みの読者向けに、説明の前へ置く銘柄えらび */
.stocklp-pick { margin: 2.5rem 0 1rem; padding: 1.6rem; background: var(--paper-raised);
    border-left: 4px solid var(--ink); }
.stocklp-pick h2 { font-size: 1.1rem; margin: 0 0 1rem; }
.stocklp-pick .stocklp-symbols { margin: 0; }
.stocklp-pick .stocklp-symbols a { background: var(--paper); }
.stockx-allnews { margin: -0.4rem 0 1.4rem; font-size: 0.9rem; }

/* ログイン前に見せるところの区切り */
.stockx-gate { margin-top: 1.6rem; padding: 2rem; background: var(--paper-raised);
    border-left: 4px solid var(--ink); text-align: left; }
.stockx-gate-alt { margin-top: 1rem; font-size: 0.88rem; }
.stockx-preview-note { font-size: 0.9rem; color: var(--ink-soft); }

/* --- 業界の関係図 --- */
/* 色の明るさは「お金への近さ」で決める。上場企業がいちばん明るく、技術がいちばん暗い。 */
:root {
    --tier-listed: #ff9f1c;
    --tier-org:    #4aa3f0;
    --tier-product:#7c62c8;
    --tier-tech:   #33505e;
    /* 2026-08-21 追加。国・地域と材料は「お金への近さ」の軸に乗らないので、
       既存4色（橙・青・紫・濃紺）と混ざらない色にする */
    --tier-material: #4f8f6a;
    --tier-region:   #9b7653;
}
.netmap { max-width: 1160px; margin: 0 auto 6rem; }
.netmap-hero { padding: 2.5rem 0 1.6rem; }
.netmap-hero h1 { font-size: 2rem; font-weight: 800; line-height: 1.45; text-wrap: balance; margin-bottom: 1rem; }
.netmap-sub { font-size: 1rem; line-height: 2.0; }

.netmap-legend { display: flex; flex-wrap: wrap; gap: 8px 20px; list-style: none; padding: 0;
    margin: 0 0 0.8rem; font-size: 0.85rem; color: var(--ink-soft); }
.netmap-legend li { display: flex; align-items: center; gap: 6px; }
.netmap-legend b { font-weight: 700; color: var(--ink); margin-left: 2px; }
.netmap-legend-note { margin-left: auto; }
.netmap-dot { width: 12px; height: 12px; border-radius: 50%; display: inline-block; }
.netmap-dot.tier-1 { background: var(--tier-listed); }
.netmap-dot.tier-2 { background: var(--tier-org); }
.netmap-dot.tier-3 { background: var(--tier-product); }
.netmap-dot.tier-4 { background: var(--tier-tech); }
.netmap-dot.tier-5 { background: var(--tier-material); }
.netmap-dot.tier-6 { background: var(--tier-region); }

.netmap-figure { margin: 0 0 2rem; border: 1px solid var(--rule); background: var(--paper-raised); padding: 6px; }
.netmap-svg { display: block; width: 100%; height: auto; }
.netmap-edge { stroke: var(--rule); stroke-opacity: 0.75; }
.netmap-node circle { stroke: var(--paper-raised); stroke-width: 1.5; }
.netmap-node text { font-size: 12px; font-weight: 700; fill: var(--ink); paint-order: stroke;
    stroke: var(--paper-raised); stroke-width: 3.5px; stroke-linejoin: round; }
.netmap-node.tier-1 circle { fill: var(--tier-listed); }
.netmap-node.tier-2 circle { fill: var(--tier-org); }
.netmap-node.tier-3 circle { fill: var(--tier-product); }
.netmap-node.tier-4 circle { fill: var(--tier-tech); }
.netmap-node.tier-5 circle { fill: var(--tier-material); }
.netmap-node.tier-6 circle { fill: var(--tier-region); }
.netmap-figure figcaption { font-size: 0.82rem; color: var(--ink-soft); padding: 8px 6px 4px; }

.netmap-table-section { margin-top: 3rem; }
.netmap-table-section h2 { font-size: 1.25rem; margin-bottom: 0.7rem;
    border-bottom: 2px solid var(--ink); padding-bottom: 8px; }
.netmap-note { font-size: 0.88rem; color: var(--ink-soft); margin-bottom: 1.2rem; line-height: 1.8; }
.netmap-table-wrap { overflow-x: auto; }
.netmap-table { width: 100%; border-collapse: collapse; font-size: 0.9rem; }
.netmap-table th, .netmap-table td { padding: 9px 10px; border-bottom: 1px solid var(--rule);
    text-align: left; vertical-align: top; }
.netmap-table thead th { font-size: 0.78rem; color: var(--ink-soft); white-space: nowrap; }
.netmap-table tbody th { font-weight: 700; white-space: nowrap; }
.netmap-table td:nth-child(3) { text-align: right;
    font-variant-numeric: tabular-nums; white-space: nowrap; }
.netmap-kind { font-size: 0.74rem; padding: 1px 8px; border-radius: 999px; color: #fff; white-space: nowrap; }
.netmap-kind.tier-1 { background: var(--tier-listed); }
.netmap-kind.tier-2 { background: var(--tier-org); }
.netmap-kind.tier-3 { background: var(--tier-product); }
.netmap-kind.tier-4 { background: var(--tier-tech); }
.netmap-kind.tier-5 { background: var(--tier-material); }
.netmap-kind.tier-6 { background: var(--tier-region); }
.netmap-links { line-height: 2.0; }
.netmap-links span { font-size: 0.76rem; color: var(--ink-soft); margin: 0 10px 0 3px;
    font-variant-numeric: tabular-nums; }

@media (max-width: 640px) {
    .netmap-hero h1 { font-size: 1.45rem; }
    .netmap-node text { font-size: 13px; }
}

/* --- スポンサー枠 --- */
/* 広告であることを隠さない。ラベルは常に見える位置に置く。 */
.sponsor { border: 1px solid var(--rule); background: var(--paper-raised); position: relative; }
.sponsor-label { position: absolute; top: 0; left: 0; background: var(--ink); color: var(--paper);
    font-family: 'Manrope', sans-serif; font-size: 0.62rem; font-weight: 700; letter-spacing: 0.08em;
    padding: 2px 7px; }
.sponsor-body { display: block; padding: 1.5rem 1rem 1rem; text-decoration: none; color: var(--ink); }
.sponsor-body:hover .sponsor-headline { text-decoration: underline; }
.sponsor-image { display: block; width: 100%; height: auto; margin-bottom: 0.7rem; }
.sponsor-text { display: block; }
.sponsor-headline { display: block; font-size: 0.98rem; font-weight: 700; line-height: 1.6; }
.sponsor-copy { display: block; font-size: 0.85rem; line-height: 1.8; color: var(--ink-soft); margin-top: 0.4rem; }
.sponsor-name { display: block; font-size: 0.76rem; color: var(--ink-soft); margin-top: 0.6rem; }
.sponsor-sidebar { margin-bottom: 1.6rem; }
.sponsor-article { margin: 2.6rem 0; }
.sponsor-article .sponsor-body { padding: 1.6rem 1.4rem 1.2rem; }
.sponsor-article .sponsor-headline { font-size: 1.08rem; }

/* --- 広告掲載のご案内 --- */
.adpage { max-width: 860px; margin: 0 auto 6rem; }
.adpage-hero { padding: 3rem 0 2rem; border-bottom: 1px solid var(--rule); }
.adpage-hero h1 { font-size: 2.1rem; font-weight: 800; line-height: 1.45; text-wrap: balance; margin-bottom: 1.1rem; }
.adpage-sub { font-size: 1.05rem; line-height: 2.0; }
.adpage-nav { display: flex; flex-wrap: wrap; gap: 8px 18px; margin-top: 1.6rem; font-size: 0.9rem; }
.adpage-nav a { border: 1px solid var(--rule); padding: 5px 13px; text-decoration: none; color: var(--ink); }
.adpage-nav a:hover { border-color: var(--ink); }

.adpage-block { margin: 3.5rem 0; }
.adpage-block h2 { font-size: 1.4rem; margin-bottom: 1.2rem; border-bottom: 2px solid var(--ink); padding-bottom: 8px; }
.adpage-block p { font-size: 1rem; line-height: 2.0; margin-bottom: 1.2rem; }
.adpage-sub-head { font-size: 1.05rem; margin: 2rem 0 0.8rem; }
.adpage-note { font-size: 0.88rem; color: var(--ink-soft); line-height: 1.9; }

.adpage-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 1rem;
    margin-bottom: 1.6rem; }
.adpage-stats div { border: 1px solid var(--rule); padding: 1rem; text-align: center; }
.adpage-stats b { display: block; font-size: 1.7rem; font-weight: 800; font-variant-numeric: tabular-nums; }
.adpage-stats span { display: block; font-size: 0.78rem; color: var(--ink-soft); margin-top: 4px; }

.adpage-slots { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1rem; margin: 1.4rem 0; }
.adpage-slot { border: 1px solid var(--rule); padding: 1.2rem; }
.adpage-slot h3 { font-size: 1rem; margin-bottom: 0.6rem; }
.adpage-slot p { font-size: 0.9rem; line-height: 1.9; margin: 0; }

.adpage-price { display: flex; flex-wrap: wrap; gap: 1.4rem; align-items: flex-start;
    background: var(--paper-raised); border-left: 4px solid var(--ink); padding: 1.6rem; margin: 1.4rem 0; }
.adpage-price-main { flex: 0 0 auto; }
.adpage-price-main b { display: block; font-size: 1.7rem; font-weight: 800; }
.adpage-price-main span { display: block; font-size: 0.82rem; color: var(--ink-soft); margin-top: 4px; }
.adpage-price-sub { flex: 1 1 300px; }
.adpage-price-sub p { margin: 0; font-size: 0.93rem; line-height: 1.9; }

.adpage-steps { padding-left: 1.4rem; font-size: 0.96rem; line-height: 2.0; }
.adpage-steps li { margin-bottom: 0.4rem; }

.adpage-cta { margin-top: 3.5rem; padding: 2rem; background: var(--paper-raised); border-left: 4px solid var(--ink); }
.adpage-cta h2 { font-size: 1.2rem; margin-bottom: 1rem; }
.adpage-mail { font-size: 1.1rem; font-weight: 700; margin: 1rem 0; }

@media (max-width: 640px) {
    .adpage-hero h1 { font-size: 1.5rem; }
    .adpage-price { flex-direction: column; gap: 0.9rem; }
}
/* スポンサー不在のときの自社案内。広告ではないので控えめに。 */
.sponsor-house { border-style: dashed; background: transparent; }
.sponsor-house .sponsor-body { padding: 1.4rem; }
.sponsor-house .sponsor-headline { font-size: 1rem; }
.sponsor-house-cta { display: block; font-size: 0.85rem; font-weight: 700; margin-top: 0.7rem; }
/* 記事広告の明示。読み飛ばされない位置と濃さにする。 */
.ad-disclosure { display: flex; gap: 12px; align-items: flex-start; margin: 0 0 2rem;
    padding: 1rem 1.2rem; border: 1px solid var(--rule); background: var(--paper-raised); }
.ad-disclosure .sponsor-label { position: static; flex: 0 0 auto; }
.ad-disclosure p { margin: 0; font-size: 0.9rem; line-height: 1.8; }
.ad-eyebrow { background: var(--ink); color: var(--paper); padding: 1px 8px; }
/* 一覧に挟む枠。カードと同じ幅いっぱいに置く。 */
.sponsor-feed { grid-column: 1 / -1; margin: 0.4rem 0; }
.sponsor-feed .sponsor-body { padding: 1.5rem 1.4rem 1.2rem; }
.sponsor-feed .sponsor-headline { font-size: 1.05rem; }

/* クオンタムビュー（毎朝9時の帯）。進行と解説を色で分ける。
   対談の3人とは別の色にして、どのコーナーを読んでいるか一目で分かるようにする。 */
.speech-anchor { border-left-color: var(--view-anchor); }
.speech-anchor .speech-who { color: var(--view-anchor); }
.speech-critic { border-left-color: var(--view-critic); }
.speech-critic .speech-who { color: var(--view-critic); }

/* --- サイドバーのX --- */
.rail-x { padding-bottom: 4px; }
.x-follow {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 12px 14px;
    padding: 9px 12px;
    background: var(--ink);
    color: var(--paper);
    text-decoration: none;
    font-size: 0.86rem;
}
.x-follow:hover { opacity: 0.86; }
.x-mark { font-size: 1.05rem; line-height: 1; }
.x-handle { font-weight: 700; letter-spacing: 0.01em; }
.x-follow-cta {
    margin-left: auto;
    font-size: 0.72rem;
    letter-spacing: 0.04em;
    opacity: 0.82;
    white-space: nowrap;
}
.x-note { margin: 0 14px 8px; font-size: 0.74rem; color: var(--ink-soft); }
.x-list { list-style: none; margin: 0; padding: 0 14px 12px; }
.x-list li { padding: 10px 0; border-top: 1px solid var(--rule); }
.x-list a {
    display: block;
    font-size: 0.82rem;
    line-height: 1.7;
    color: var(--ink);
    text-decoration: none;
    /* 投稿は140字ある。全部出すと連載の枠より背が高くなるので3行で止める */
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.x-list a:hover { color: var(--accent); }
.x-date { display: block; margin-top: 5px; font-size: 0.68rem; color: var(--ink-soft); }

/* --- 広告の実績と管理（/ads・/admin/ads） --- */
.adsx { max-width: 980px; padding-bottom: 5rem; }
.adsx-head { margin: 2.2rem 0 1.6rem; }
.adsx-head h1 { font-size: 1.9rem; font-weight: 800; line-height: 1.35; }
.adsx-sub { font-size: 0.88rem; color: var(--ink-soft); margin-top: 0.5rem; line-height: 1.8; }
.adsx-h2 { font-size: 1.15rem; font-weight: 800; margin: 2.6rem 0 0.9rem;
           padding-bottom: 7px; border-bottom: 2px solid var(--ink); }
.adsx-h3 { font-size: 0.95rem; font-weight: 700; margin: 1.6rem 0 0.6rem; }

/* 請求はクリック数で決まる。まずその数字を大きく出す */
.adsx-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 1.4rem; }
.adsx-cards > div { background: var(--paper-raised); border: 1px solid var(--rule); padding: 18px 16px; }
.adsx-cards b { display: block; font-size: 1.9rem; font-weight: 800; line-height: 1.2;
                font-variant-numeric: tabular-nums; }
.adsx-cards span { display: block; margin-top: 6px; font-size: 0.76rem; color: var(--ink-soft); }
.adsx-note { font-size: 0.8rem; color: var(--ink-soft); line-height: 1.9; margin-top: 0.9rem; }
.adsx-window { margin-left: 6px; }
.adsx-window a { margin-left: 8px; font-size: 0.78rem; }
.adsx-window a.on { font-weight: 800; color: var(--ink); text-decoration: none; }

.adsx-scroll { overflow-x: auto; }
.adsx-table { width: 100%; border-collapse: collapse; font-size: 0.86rem; }
.adsx-table th, .adsx-table td { padding: 9px 12px; border-bottom: 1px solid var(--rule);
                                 text-align: left; white-space: nowrap; }
.adsx-table th { font-size: 0.74rem; letter-spacing: 0.04em; color: var(--ink-soft); }
.adsx-table .num { text-align: right; font-variant-numeric: tabular-nums; }
.adsx-old { color: var(--ink-soft); }

.adsx-form { display: grid; gap: 12px; margin-top: 1rem; max-width: 620px; }
.adsx-form label { display: grid; gap: 5px; font-size: 0.8rem; color: var(--ink-soft); }
.adsx-form label.inline { display: inline-flex; align-items: center; gap: 6px; font-size: 0.85rem; }
.adsx-form input, .adsx-form textarea, .adsx-form select {
    font: inherit; font-size: 0.9rem; padding: 8px 10px;
    border: 1px solid var(--rule); background: var(--paper); color: var(--ink);
}
.adsx-form button { justify-self: start; font: inherit; font-size: 0.88rem; font-weight: 700;
                    padding: 9px 20px; border: none; background: var(--ink); color: var(--paper);
                    cursor: pointer; }
.adsx-form button:hover { opacity: 0.86; }
.adsx-slots { border: 1px solid var(--rule); padding: 10px 12px; display: flex; flex-wrap: wrap; gap: 14px; }
.adsx-slots legend { font-size: 0.74rem; color: var(--ink-soft); padding: 0 4px; }

.adsx-card { border: 1px solid var(--rule); padding: 20px 22px; margin-top: 1.6rem;
             background: var(--paper-raised); }
.adsx-state { font-size: 0.72rem; margin-left: 10px; padding: 2px 8px;
              border: 1px solid var(--rule); color: var(--ink-soft); }
.adsx-state.on { border-color: var(--up); color: var(--up); }
.adsx-inline-form { display: inline-flex; gap: 6px; align-items: center; margin-top: 8px; }
.adsx-inline-form input { font: inherit; font-size: 0.85rem; padding: 6px 8px;
                          border: 1px solid var(--rule); background: var(--paper); color: var(--ink); }
.adsx-inline-form button { font: inherit; font-size: 0.78rem; padding: 6px 12px;
                           border: 1px solid var(--rule); background: var(--paper);
                           color: var(--ink); cursor: pointer; }
.adsx-members { list-style: none; padding: 0; margin: 0; font-size: 0.88rem; }
.adsx-members li { padding: 7px 0; border-bottom: 1px solid var(--rule);
                   display: flex; align-items: center; gap: 10px; }
.adsx-role { font-size: 0.72rem; color: var(--ink-soft); }
.adsx-none, .adsx-empty-line { font-size: 0.86rem; color: var(--ink-soft); padding: 10px 0; }
.adsx-list { list-style: none; padding: 0; }
.adsx-list li { padding: 12px 0; border-bottom: 1px solid var(--rule); font-size: 1rem; }
.adsx-empty { background: var(--paper-raised); border: 1px solid var(--rule);
              padding: 22px; font-size: 0.9rem; line-height: 1.9; }
.adsx-new { margin: 1.4rem 0; }
.adsx-new summary { cursor: pointer; font-size: 0.9rem; font-weight: 700; }
@media (max-width: 640px) {
    .adsx-cards { grid-template-columns: 1fr; }
}

/* --- マイページ --- */
.mypage-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; margin-top: 1.6rem; }
.mypage-card {
    display: block;
    padding: 20px 22px;
    background: var(--paper-raised);
    border: 1px solid var(--rule);
    text-decoration: none;
    color: inherit;
}
.mypage-card:hover { border-color: var(--ink); }
.mypage-card b { display: block; font-size: 1.02rem; font-weight: 800; margin-bottom: 8px; }
.mypage-card span { display: block; font-size: 0.85rem; line-height: 1.85; color: var(--ink-soft); }
.mypage-logout { margin-top: 2.4rem; padding-top: 1.4rem; border-top: 1px solid var(--rule);
                 font-size: 0.88rem; }
@media (max-width: 640px) {
    .mypage-grid { grid-template-columns: 1fr; }
}

/* --- MCPの接続情報 --- */
.adsx-token { margin: 0.8rem 0; }
.adsx-token summary { cursor: pointer; font-size: 0.84rem; }
.adsx-token-box { width: 100%; font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
                  font-size: 0.76rem; line-height: 1.6; padding: 10px;
                  border: 1px solid var(--rule); background: var(--paper); color: var(--ink);
                  word-break: break-all; }
.adsx-code { overflow-x: auto; padding: 14px 16px; background: var(--band); color: var(--band-text);
             font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
             font-size: 0.78rem; line-height: 1.7; }

/* 確認待ちの出稿。こちらが動かないと止まったままなので目立たせる */
.adsx-waiting { border: 2px solid var(--ink); padding: 18px 20px; margin-top: 1.6rem; }
.adsx-waiting .adsx-h2 { margin-top: 0; }
.adsx-waiting-item { display: grid; grid-template-columns: 1fr auto; gap: 16px;
                     padding: 14px 0; border-top: 1px solid var(--rule); align-items: start; }
.adsx-waiting-item b { font-size: 1rem; margin-right: 10px; }
.adsx-waiting-copy { font-size: 0.9rem; line-height: 1.8; margin: 6px 0; }
.adsx-waiting-actions { display: flex; flex-direction: column; gap: 6px; align-items: flex-end;
                        font-size: 0.8rem; white-space: nowrap; }
@media (max-width: 640px) {
    .adsx-waiting-item { grid-template-columns: 1fr; }
    .adsx-waiting-actions { align-items: flex-start; }
}

/* --- 掲載実績のグラフ（サーバー側で座標を出したインラインSVG） --- */
/* 表示（棒）とクリック（折れ線）を1枚に重ねる。目盛りは左右で別（本文で断っている） */
.adsx-figure { margin: 1rem 0 0; }
.adsx-legend { display: flex; gap: 14px; margin: 0.9rem 0 0.4rem;
               font-size: 0.76rem; font-weight: 700; }
.adsx-key { display: inline-flex; align-items: center; gap: 6px; color: var(--ink-soft); }
.adsx-key::before { content: ""; width: 14px; height: 10px; border-radius: 2px; }
.adsx-key-imp::before { background: var(--rule); }
.adsx-key-clk::before { height: 3px; border-radius: 0; background: var(--accent); }
.adsx-chart { width: 100%; height: 150px; display: block;
              background: var(--paper-raised); border: 1px solid var(--rule); }
.adsx-bar { fill: var(--rule); }
/* preserveAspectRatio="none" で横に伸ばすので、線の太さは伸びに影響されない指定にする */
.adsx-line { fill: none; stroke: var(--accent); stroke-width: 2;
             stroke-linejoin: round; stroke-linecap: round;
             vector-effect: non-scaling-stroke; }
.adsx-dot { fill: var(--accent); }
/* 幅を詰めると横に潰れて楕円になるうえ、30日ぶんでは点が重なって線が読みにくい。
   その日の数字は列に触れれば出るので、狭い画面では点を出さない */
@media (max-width: 560px) { .adsx-dot { display: none; } }
.adsx-hit { fill: transparent; }
.adsx-hit:hover { fill: var(--ink); fill-opacity: 0.08; }
.adsx-chart-axis { display: flex; justify-content: space-between;
                   font-size: 0.72rem; color: var(--ink-soft); margin-top: 4px;
                   font-variant-numeric: tabular-nums; }
.adsx-controls { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 0.8rem; }

/* 本文の途中に入れられなかった記事の枠。関連記事の手前に置く */
.sponsor-after-body { margin: 3rem 0 0; }

/* --- データで見る量子コンピュータ（post_type='infographic'）--- */
.ig-figure { margin: 2.6rem 0; }
.ig-figure figcaption {
    font-size: 0.92rem; font-weight: 800; margin-bottom: 10px;
    padding-bottom: 6px; border-bottom: 1px solid var(--rule);
}
.ig-chart { width: 100%; height: auto; display: block; }
.ig-chart rect { fill: var(--ink); }
.ig-chart .ig-name { font-size: 15px; fill: var(--ink); font-weight: 700; }
.ig-chart .ig-value { font-size: 14px; fill: var(--ink-soft);
                      font-variant-numeric: tabular-nums; }
.ig-note { font-size: 0.8rem; line-height: 1.9; color: var(--ink-soft); margin-top: 10px; }
@media (max-width: 640px) {
    .ig-chart .ig-name { font-size: 17px; }
    .ig-chart .ig-value { font-size: 16px; }
}

/* 概算の金額。請求書ではないので、断りを必ず添えて出す */
.adsx-price { display: grid; gap: 10px; margin-top: 1.2rem; padding: 16px 18px;
              border: 1px solid var(--rule); background: var(--paper-raised); }
.adsx-price > div { display: grid; gap: 4px; }
.adsx-price span { font-size: 0.76rem; color: var(--ink-soft); }
.adsx-price b { font-size: 1.7rem; font-weight: 800; line-height: 1.2;
                font-variant-numeric: tabular-nums; }
.adsx-price small { font-size: 0.78rem; color: var(--ink-soft);
                    font-variant-numeric: tabular-nums; }
.adsx-price p { font-size: 0.78rem; line-height: 1.9; color: var(--ink-soft); margin: 0; }

/* --- 寄稿（post_type='contribution'）--- */
/* 署名はタイトルのすぐ下。誰が書いたかは読み始める前に分かっている必要がある */
.byline { font-size: 0.92rem; font-weight: 700; color: var(--ink-soft);
          margin: 0.6rem 0 0; }
/* 断り書きは本文の一部に見えないよう、地の色と罫で区切る */
.contribution-note {
    margin-top: 2.4rem; padding: 0.9rem 1.1rem;
    background: var(--paper-raised); border-left: 3px solid var(--rule);
    font-size: 0.84rem; line-height: 1.8; color: var(--ink-soft);
}

/* 借りている画像の出どころ。本文より小さく、画像のすぐ下に置く */
.image-credit { margin: 6px 0 0; font-size: 0.72rem; color: var(--ink-soft);
                text-align: right; }
.image-credit a { color: inherit; text-decoration: underline; }

/* --- レポートの販売（/store）--- */
/* 記事ページと違って右のレールを出さない。買うかどうかを決めるページなので、
   関連記事や広告で目移りさせない */
.page-single { grid-template-columns: minmax(0, 1fr); }

.store { max-width: 760px; }
.store-h1 { font-size: clamp(1.7rem, 4vw, 2.4rem); font-weight: 800;
            line-height: 1.35; letter-spacing: -0.01em; }
.store-lead { margin-top: 0.9rem; color: var(--ink-soft); line-height: 1.9; }

.store-grid { display: grid; gap: 28px; margin-top: 2.2rem;
              grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); }
.store-card { background: var(--paper-raised); border: 1px solid var(--rule);
              padding: 0 0 18px; display: flex; flex-direction: column; }
.store-card a { text-decoration: none; }
.store-card h2 { font-size: 1.02rem; font-weight: 800; line-height: 1.5;
                 padding: 14px 16px 0; }
.store-card a:hover h2 { color: var(--accent); }
/* 表紙は縦長（A4）。比を固定しないと、読み込みの前後で下の文字が飛ぶ */
.store-card-cover { aspect-ratio: 1 / 1.414; overflow: hidden;
                    border-bottom: 1px solid var(--rule); background: var(--band); }
.store-card-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.store-card-sub { padding: 4px 16px 0; font-size: 0.82rem; color: var(--ink-soft); }
.store-card-meta { padding: 8px 16px 0; font-size: 0.78rem; color: var(--ink-soft); }
/* 値段は迷わせない。桁が揃うよう等幅の数字にする */
.store-card-price { padding: 10px 16px 0; margin-top: auto;
                    font-size: 1.35rem; font-weight: 800; line-height: 1.3;
                    font-variant-numeric: tabular-nums; }
.store-card-price span { font-size: 0.72rem; font-weight: 700; color: var(--ink-soft);
                         margin-left: 6px; }
.store-owned { display: inline-block; margin-left: 8px; padding: 1px 8px;
               background: var(--accent-soft); color: var(--accent);
               font-size: 0.72rem; font-weight: 800; border-radius: 2px; }
.store-empty { margin-top: 2rem; color: var(--ink-soft); }

.store-detail-cover { max-width: 300px; margin-bottom: 1.6rem;
                      border: 1px solid var(--rule); }
/* 表紙はA4の比。属性の高さで縦に伸びないよう、ここで形を決める */
.store-detail-cover img { display: block; width: 100%; height: auto;
                          aspect-ratio: 1 / 1.414; object-fit: cover; }
.store-detail .store-card-price,
.store-detail .store-card-meta { padding-left: 0; padding-right: 0; }

.store-buy { margin: 2rem 0; padding: 20px 22px;
             background: var(--paper-raised); border: 1px solid var(--rule); }
.store-button { display: inline-block; margin-top: 14px; padding: 13px 34px;
                background: var(--accent); color: #fff; border: 0;
                font-family: inherit; font-size: 1rem; font-weight: 800;
                text-decoration: none; cursor: pointer; }
.store-button:hover { background: var(--ink); }
.store-note { margin-top: 12px; font-size: 0.79rem; line-height: 1.9;
              color: var(--ink-soft); }
.store-note a { text-decoration: underline; }
.store-body { margin-top: 2rem; line-height: 2; }
.store-body p { margin-bottom: 1.2rem; }
.store-terms { margin-top: 2.4rem; padding-top: 1.2rem;
               border-top: 1px solid var(--rule); }

/* マイページの購入済みレポート。他のカードはリンクだが、これは中に
   複数のリンクを持つので div。見た目だけそろえる */
.mypage-reports ul { list-style: none; margin-top: 12px; display: grid; gap: 8px; }
.mypage-reports li { font-size: 0.9rem; }
.mypage-reports li a { font-weight: 700; color: var(--accent); text-decoration: none; }
.mypage-reports li a:hover { text-decoration: underline; }
.mypage-reports small { display: block; font-size: 0.74rem; color: var(--ink-soft); }

/* 中身の見本。実際のページ画像を並べる */
.store-samples { margin-top: 2.6rem; }
.store-samples h2 { font-size: 1.15rem; font-weight: 800; }
.store-sample-grid { display: grid; gap: 16px; margin-top: 1rem;
                     grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); }
.store-sample-grid a { text-decoration: none; display: block; }
/* A4の比を固定する。読み込みの前後でページ番号が飛ぶのを防ぐ */
.store-sample-grid img { width: 100%; height: auto; aspect-ratio: 1 / 1.414;
                         object-fit: cover; object-position: top;
                         display: block; border: 1px solid var(--rule);
                         background: var(--paper-raised); }
.store-sample-grid a:hover img { border-color: var(--accent); }
.store-sample-grid span { display: block; margin-top: 6px; font-size: 0.74rem;
                          color: var(--ink-soft); text-align: center;
                          font-variant-numeric: tabular-nums; }
}

/* 確認待ちの出稿。通知に載せた #ID をここでも出して突き合わせられるようにする */
.adsx-id { font-variant-numeric: tabular-nums; color: var(--tier-org, #4aa3f0); margin-right: .35em; }
.adsx-arrival { margin-top: .2em; opacity: .85; }

/* blueqat の公開サイトを行き来する並び（~/pm/SIDEBAR.md）。
   記事の一覧と混ざらないよう、上に細い線を引いて分ける。
   意匠は community の .account-menu summary に合わせている
   （ホバーで accent 色と accent-soft の下地）。 */
.rail-sites {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 1.4rem;
    padding-top: 0.9rem;
    border-top: 1px solid var(--rule);
}
.rail-sites a {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 7px 10px;
    border-radius: 999px;
    color: var(--ink-soft);
    font-size: 0.86rem;
    text-decoration: none;
}
.rail-sites a:hover,
.rail-sites a:focus-visible {
    color: var(--accent);
    background: var(--accent-soft);
}
.rail-sites svg { flex: none; }

/* --- 本文のコードと画面写真 ---
   連載「生成AIで始める量子ソフトウェア」で使う。コードは横に長くなるので、
   ページ全体ではなくこの枠の中だけを横スクロールさせる。 */
.code-block {
    background: #11151c; color: #e6edf3; padding: 16px 18px; border-radius: 6px;
    overflow-x: auto; margin: 1.6rem 0; line-height: 1.6;
    font-size: 0.86rem; -webkit-text-size-adjust: 100%;
}
.code-block code {
    font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
    white-space: pre; background: none; color: inherit; padding: 0;
}
/* --- 本文のインラインコード・引用・水平線 ---
   ⛔ 2026-09-24 まで対応が無く、寄稿（id=2962）で
   「なぜ `shots=1` で…」がバッククォートごと出て、訂正枠が「&gt;」の羅列だった。
   ⚠ 引用は「編集部より」の訂正に使う。**本文と地続きに見えてはいけない**ので、
   左の罫線と薄い地色で、記事本文とはっきり分ける。 */
/* ⚠ pre の中の code は除く。除かないと、この規則があとに来るぶん
   .code-block code（暗い枠の中の白抜き）を上書きして囲みが壊れる。 */
.article-content :not(pre) > code,
.admin-card-body :not(pre) > code {
    font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
    font-size: 0.88em; background: #f2f4f7; color: #1f2937;
    padding: 1px 5px; border-radius: 4px; word-break: break-word;
}
.article-content blockquote,
.admin-card-body blockquote {
    margin: 1.8rem 0; padding: 2px 20px; border-left: 4px solid var(--accent);
    background: #f8f9fb; border-radius: 0 6px 6px 0;
}
.article-content blockquote > :first-child,
.admin-card-body blockquote > :first-child { margin-top: 14px; }
.article-content blockquote > :last-child,
.admin-card-body blockquote > :last-child { margin-bottom: 14px; }
/* ⚠ 引用の中のコードは、枠の地色に沈まないように白抜きのまま出す */
.article-content blockquote .code-block { margin: 1.1rem 0; }
.article-content hr,
.admin-card-body hr {
    border: 0; border-top: 1px solid #e3e6ea; margin: 2.2rem 0;
}

.body-figure { margin: 1.8rem 0; }
.body-figure img {
    width: 100%; height: auto; display: block; border: 1px solid #e3e6ea; border-radius: 6px;
}
.body-figure figcaption {
    margin-top: 8px; font-size: 0.82rem; color: #6b7280; line-height: 1.6;
}
@media (max-width: 600px) {
    .code-block { font-size: 0.78rem; padding: 12px 13px; }
}

/* ── 量子研究ナレッジベース（/knowledge） ──────────────────────
   estimated（推定）と published（公開事実）を、色と枠ではっきり分ける。
   契約でいちばん強く念を押されているところなので、見た目でも混ざらないようにする。 */
.kb-counts { display:flex; gap:24px; flex-wrap:wrap; margin:20px 0 28px; }
.kb-counts div { background:#f6f7f9; border-radius:10px; padding:14px 20px; min-width:120px; }
.kb-counts b { display:block; font-size:26px; line-height:1.2; }
.kb-counts span { font-size:13px; color:#6b7280; }

.kb-section { margin:32px 0; }
.kb-section h2 { font-size:20px; margin:0 0 6px; }
.kb-sub { font-size:13px; color:#6b7280; margin:0 0 14px; }
.kb-back { font-size:13px; margin-bottom:8px; }
.kb-foot { font-size:12px; color:#9aa1ad; margin-top:36px; }
.kb-note { background:#f6f7f9; border-radius:8px; padding:12px 16px; font-size:14px; }

.kb-list { border-top:1px solid #e6e8ec; }
.kb-row { display:flex; gap:16px; justify-content:space-between; align-items:flex-start;
          padding:12px 2px; border-bottom:1px solid #e6e8ec; }
.kb-row-main a { font-weight:700; }
.kb-locked { font-weight:700; color:#9aa1ad; }
.kb-meta { font-size:12px; color:#6b7280; margin-top:3px; }
.kb-row-tags { display:flex; gap:6px; flex-wrap:wrap; align-items:center; }
.kb-tier, .kb-status, .kb-field, .kb-est {
  font-size:11px; padding:3px 8px; border-radius:999px; white-space:nowrap; }
.kb-tier { background:#eef2ff; color:#3949ab; }
.kb-tier-1 { background:#3949ab; color:#fff; }
.kb-status { background:#eceff3; color:#4b5563; }
.kb-status-reproduced { background:#1b7f4f; color:#fff; }
.kb-field { background:#f3f4f6; color:#6b7280; }
.kb-unverified { font-size:12px; color:#9aa1ad; }

/* 公開事実。落ち着いた枠 */
.kb-published { border-left:4px solid #cfd4dc; padding-left:16px; }
.kb-facts { margin:8px 0 0; padding-left:20px; }
.kb-facts li { margin:5px 0; }
.kb-sources { margin-top:14px; font-size:13px; }
.kb-sources ul { padding-left:20px; margin:6px 0 0; }
.kb-checked { color:#9aa1ad; font-size:11px; margin-left:6px; }

/* 推定。事実と取り違えないよう、地色・枠・見出しの札を変える */
.kb-estimated { border:2px dashed #d98a1f; background:#fffaf1; border-radius:10px; padding:18px 20px; }
.kb-estimated h2 { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.kb-est, .kb-est-badge { background:#d98a1f; color:#fff; font-weight:700; }
.kb-est-badge { font-size:12px; padding:3px 10px; border-radius:6px; }
.kb-est-conf { font-size:12px; background:#fff; border:1px solid #d98a1f;
               color:#b5710f; padding:2px 8px; border-radius:999px; font-weight:400; }
.kb-est-warn { background:#fff; border-radius:8px; padding:10px 14px; font-size:13px; margin:10px 0 16px; }
.kb-est-item { margin:12px 0; }
.kb-est-item b { font-size:13px; color:#8a5a10; }
.kb-est-item p { margin:4px 0 0; }
.kb-est-foot { font-size:12px; color:#9aa1ad; margin-top:14px; }

.kb-notes { white-space:pre-wrap; background:#f6f7f9; padding:16px; border-radius:8px;
            font-size:13px; line-height:1.7; overflow-x:auto; }

.kb-gate { background:#f6f7f9; border-radius:12px; padding:22px 24px; margin:26px 0; }
.kb-gate h2 { margin:0 0 8px; font-size:18px; }
.kb-btn { display:inline-block; background:#111827; color:#fff; border:0; border-radius:8px;
          padding:11px 22px; font-size:15px; cursor:pointer; margin-top:6px;
          text-decoration:none; }
.kb-btn:hover { opacity:.88; }
.kb-row-main a, .kb-back a, .kb-sources a { text-decoration:none; }
.kb-row-main a:hover, .kb-back a:hover, .kb-sources a:hover { text-decoration:underline; }
.kb-btn-off { background:#cfd4dc; color:#fff; cursor:default; }

.kb-plans { display:flex; gap:20px; flex-wrap:wrap; margin:24px 0; }
.kb-plan { flex:1 1 300px; border:1px solid #e6e8ec; border-radius:12px; padding:22px 24px; }
.kb-plan-current { border-color:#111827; }
.kb-plan h2 { margin:0 0 6px; font-size:18px; }
.kb-price b { font-size:30px; }
.kb-plan ul { padding-left:20px; font-size:14px; }

@media (max-width:640px){
  .kb-row { flex-direction:column; gap:6px; }
  .kb-counts div { min-width:100px; padding:12px 14px; }
}

/* サイドバーの有料版の入口。連載の並びに埋もれないよう、左に色帯を入れる。
   ※ このサイトは a の下線をブロックごとに消す作りなので、
     ボタンには必ず text-decoration:none を書くこと（共通の打ち消しが無い） */
.rail-kb { border-left: 3px solid var(--accent); }
.rail-kb-lead { font-size: 0.8rem; line-height: 1.7; color: var(--ink-soft);
                margin: 0; padding: 10px 16px 0; }
.rail-kb-btn { display: block; margin: 12px 16px 16px; text-align: center;
               background: var(--accent); color: #fff; text-decoration: none;
               font-weight: 700; font-size: 0.85rem; padding: 0.65rem 1rem; }
.rail-kb-btn:hover { opacity: 0.85; }
.rail-kb-btn:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }

/* ── ナレッジベースの表と検索 ──────────────────────────────
   行ごとに高さが変わるのを避けるため、一覧は表にしてある。
   ※ このサイトは a の下線をブロックごとに消す作り。ここでも明示する */
.kb-search { display:flex; gap:8px; margin:18px 0 22px; }
.kb-search input[type="search"] {
  flex:1; padding:11px 14px; font-size:15px;
  border:1px solid var(--rule); border-radius:8px; background:#fff; }
.kb-search input[type="search"]:focus { outline:2px solid var(--accent); outline-offset:-1px; }
.kb-search button {
  background:var(--accent); color:#fff; border:0; border-radius:8px;
  padding:0 24px; font-size:15px; font-weight:700; cursor:pointer; }
.kb-search button:hover { opacity:.88; }

.kb-tablewrap { overflow-x:auto; border:1px solid var(--rule); border-radius:10px; }
.kb-table { width:100%; border-collapse:collapse; font-size:14px; background:#fff; }
.kb-table th, .kb-table td { padding:11px 14px; text-align:left; vertical-align:top;
  border-bottom:1px solid var(--rule); }
.kb-table thead th { background:var(--paper-raised); font-size:12px; font-weight:700;
  color:var(--ink-soft); white-space:nowrap; position:sticky; top:0; }
.kb-table tbody tr:last-child td { border-bottom:0; }
.kb-table tbody tr:hover { background:#fafbfc; }
.kb-table td.c, .kb-table th.c { text-align:center; white-space:nowrap; }
.kb-table a { text-decoration:none; font-weight:700; }
.kb-table a:hover { text-decoration:underline; }
.kb-dim { color:var(--ink-soft); font-size:13px; }
.kb-n { font-size:13px; color:var(--ink-soft); font-weight:400; margin-left:6px; }

.kb-tabs { display:flex; gap:8px; margin:6px 0 14px; }
.kb-tabs a { padding:8px 18px; border:1px solid var(--rule); border-radius:999px;
  font-size:14px; text-decoration:none; color:var(--ink-soft); background:#fff; }
.kb-tabs a.on { background:var(--ink); color:#fff; border-color:var(--ink); font-weight:700; }

.kb-chips { display:flex; gap:6px; flex-wrap:wrap; margin:0 0 12px; }
.kb-chips a { font-size:12px; padding:4px 11px; border-radius:999px;
  background:var(--paper-raised); color:var(--ink-soft); text-decoration:none; }
.kb-chips a.on { background:var(--accent); color:#fff; font-weight:700; }

.kb-pager { display:flex; gap:16px; align-items:center; justify-content:center;
  margin:20px 0; font-size:14px; }
.kb-pager a { text-decoration:none; padding:8px 16px; border:1px solid var(--rule);
  border-radius:8px; background:#fff; }
.kb-pager span { color:var(--ink-soft); }

.kb-bulk-links { display:flex; gap:16px; flex-wrap:wrap; margin:14px 0; }
.kb-bulk-links a { flex:1 1 260px; border:1px solid var(--rule); border-radius:10px;
  padding:16px 20px; text-decoration:none; background:#fff; }
.kb-bulk-links a:hover { border-color:var(--accent); }
.kb-bulk-links b { font-size:24px; display:inline-block; }
.kb-bulk-links span { display:block; font-size:12px; color:var(--ink-soft); margin-top:6px; }

/* 収穫層の推定は「題名の語から」の弱いもの。手作業層と同じ見た目にしない */
.kb-est-weak-note { background:#fffaf1; border:1px dashed #d98a1f; border-radius:8px;
  padding:10px 14px; font-size:13px; margin:12px 0; }
.kb-est-inline { font-size:12px; color:#8a5a10; }

@media (max-width:640px){
  .kb-table { font-size:13px; }
  .kb-table th, .kb-table td { padding:9px 10px; }
  .kb-search button { padding:0 16px; }
}

/* 未再現の論文。「無い」で終わらせず、頼める形にする枠 */
.kb-todo { background:var(--paper-raised); border-radius:10px; padding:20px 24px; }
.kb-todo h2 { margin-top:0; }
/* 精読済みの行を目立たせる。収集分と同じ並びに置くので、印だけでは弱い */
.kb-table tr.kb-curated td { background:#f7fbf8; }
.kb-table tr.kb-curated:hover td { background:#eef7f1; }
.kb-clear { align-self:center; font-size:13px; color:var(--ink-soft); text-decoration:none;
            padding:0 6px; white-space:nowrap; }
.kb-clear:hover { text-decoration:underline; }

/* ── ナレッジベースの頭に出す集計 ──────────────────────────
   グラフのために外部JSを読み込まない。SVGとCSSだけで描く */
.kb-lead { font-size:15px; line-height:1.8; margin:14px 0 20px; }
.kb-counts div em { display:block; font-size:11px; color:var(--ink-soft);
                    font-style:normal; margin-top:2px; }

.kb-charts { display:flex; gap:24px; flex-wrap:wrap; margin:8px 0 26px; }
.kb-chart { flex:1 1 380px; border:1px solid var(--rule); border-radius:10px;
            padding:16px 20px; background:#fff; }
.kb-chart h3 { font-size:14px; margin:0 0 12px; color:var(--ink-soft); }

.kb-bar-row { display:flex; align-items:center; gap:10px; margin:5px 0; font-size:12.5px; }
.kb-bar-label { flex:0 0 118px; text-align:right; color:var(--ink-soft);
                overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.kb-bar-track { flex:1; height:14px; background:var(--paper-raised); border-radius:3px; }
.kb-bar-fill { display:block; height:100%; border-radius:3px; min-width:2px; }
.kb-bar-num { flex:0 0 46px; text-align:right; font-variant-numeric:tabular-nums;
              color:var(--ink-soft); }

.kb-donut-wrap { display:flex; gap:18px; align-items:center; flex-wrap:wrap; }
.kb-donut { width:150px; height:150px; flex:0 0 150px; }
.kb-donut-n { font-size:20px; font-weight:700; fill:var(--ink); }
.kb-donut-t { font-size:10px; fill:var(--ink-soft); }
.kb-legend { list-style:none; margin:0; padding:0; flex:1; font-size:12px; }
.kb-legend li { display:flex; align-items:center; gap:6px; margin:3px 0; }
.kb-legend i { width:10px; height:10px; border-radius:2px; flex:0 0 10px; }
.kb-legend b { margin-left:auto; font-variant-numeric:tabular-nums; }
.kb-legend span { color:var(--ink-soft); width:44px; text-align:right;
                  font-variant-numeric:tabular-nums; }

.kb-upsell { background:#f3f6ff; border:1px solid #dbe3ff; border-radius:10px;
             padding:20px 24px; }
.kb-upsell h2 { margin-top:0; }

@media (max-width:640px){
  .kb-bar-label { flex-basis:88px; }
  .kb-donut-wrap { justify-content:center; }
}
.kb-gate-slim { padding:14px 20px; margin:14px 0 18px; }
.kb-gate-slim p { margin:0 0 8px; font-size:14px; }
.kb-gate-slim p:last-child { margin-bottom:0; }
.kb-lock { margin-left:6px; font-size:12px; opacity:.6; }

/* --- ナレッジベースの説明・新着・記事との行き来（2026-09-24） --- */
.kb-about { border:1px solid var(--rule); border-radius:12px; background:#fff;
            padding:4px 22px; margin:0 0 26px; }
.kb-about[open] { padding-bottom:20px; }
.kb-about > summary { cursor:pointer; font-weight:700; font-size:16px; padding:14px 0; }
.kb-about-grid { display:grid; grid-template-columns:repeat(2, 1fr);
                 gap:14px; margin:4px 0 18px; }
.kb-about-grid section { background:#f6f7f9; border-radius:10px; padding:14px 16px; }
.kb-about-grid h3 { font-size:15px; margin:6px 0 6px; }
.kb-about-grid p { font-size:13.5px; line-height:1.75; color:var(--ink-soft); }
.kb-about-tag { display:inline-block; font-size:11px; font-weight:700; padding:2px 8px;
                border-radius:999px; background:var(--accent-soft); color:var(--accent); }
.kb-about-tag-plan { background:#111827; color:#fff; }
.kb-about-who h3 { font-size:14px; margin:0 0 6px; }
.kb-about-who ul { margin:0 0 10px 1.2em; font-size:13.5px; line-height:1.8; }
.kb-about-examples { font-size:13.5px; margin-bottom:16px; }
.kb-about-examples a { color:var(--accent); }
.kb-about-table { width:100%; border-collapse:collapse; font-size:13px; margin-bottom:14px; }
.kb-about-table th, .kb-about-table td { border-bottom:1px solid var(--rule); padding:7px 8px; }
.kb-about-table td:not(:first-child), .kb-about-table th { text-align:center; white-space:nowrap; }
.kb-about-table td:first-child { text-align:left; }
.kb-about-cta { display:flex; gap:16px; align-items:center; }
.kb-about-login { font-size:13.5px; color:var(--accent); }

.kb-latest { margin:0 0 26px; }
.kb-latest h2 { font-size:17px; margin:0 0 10px; }
.kb-latest ul { list-style:none; border-top:1px solid var(--rule); }
.kb-latest li { padding:9px 0; border-bottom:1px solid var(--rule); font-size:14px; line-height:1.6; }
.kb-latest-date { font-size:12px; color:var(--ink-soft); margin-right:8px; white-space:nowrap; }
.kb-latest li > a:first-of-type { color:var(--ink); }
.kb-latest .kb-field { margin-left:6px; text-decoration:none; }
.kb-artlink { font-size:12px; color:var(--accent); margin-left:8px; white-space:nowrap; }

/* 記事の末尾: 元論文をナレッジベースで */
.kb-postbox { border:1px solid var(--rule); border-left:4px solid var(--accent); border-radius:10px;
              background:#fff; padding:16px 20px; margin:28px 0; }
.kb-postbox-head { font-size:12px; font-weight:700; color:var(--accent); letter-spacing:.04em; }
.kb-postbox h3 { font-size:15px; margin:4px 0 8px; line-height:1.6; }
.kb-postbox p { font-size:13.5px; color:var(--ink-soft); line-height:1.7; margin-bottom:8px; }
.kb-postbox ul { list-style:none; margin:6px 0 10px; }
.kb-postbox li { font-size:13.5px; padding:4px 0; line-height:1.6; }
.kb-postbox li a { color:var(--ink); }
.kb-postbox-more { font-size:13.5px; color:var(--accent); font-weight:700; }

/* 右の欄の新着3本 */
.rail-kb-new { list-style:none; margin:6px 16px 4px; font-size:13px; line-height:1.6; }
.rail-kb-new li { padding:4px 0; border-bottom:1px dashed var(--rule); }
.rail-kb-new a { color:inherit; }

/* 上のナビのナレッジベース */

@media (max-width: 640px) {
  .kb-about-grid { grid-template-columns:1fr; }
  .kb-about { padding:2px 14px; }
  .kb-about-table { font-size:12px; }
  .kb-about-table th, .kb-about-table td { padding:6px 4px; }
}
.rail-kb-newhead { display:flex; align-items:center; justify-content:space-between; gap:8px;
                   margin-top:12px; padding:9px 16px; border-top:1px solid var(--rule); border-bottom:1px solid var(--rule);
                   font-size:0.72rem; font-weight:800; letter-spacing:0.08em; color:var(--ink); }
/* 新着論文のボタン2つ。上が枠線、下が塗り（2026-09-27） */
.rail-kb-btns { display:flex; flex-direction:column; gap:8px; margin:12px 16px 16px; }
.rail-kb-btns .rail-kb-btn { margin:0; }
.rail-kb-btn-sub { background:transparent; color:var(--accent); border:1px solid var(--accent); }
.rail-kb-btn-sub:hover { background:var(--accent-soft); opacity:1; }
.kb-crosslink { font-size:13.5px; background:var(--accent-soft); border-radius:8px;
                padding:10px 14px; margin:0 0 18px; line-height:1.7; }
.kb-crosslink a { color:var(--accent); font-weight:700; }

/* --- 株価と関係図のつながり（2026-09-29） --- */
.stockx-links { margin: 32px 0; }
.stockx-links h2 { font-size: 1.1rem; margin-bottom: 14px; }
.stockx-links-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.stockx-links h3 { font-size: 0.95rem; margin-bottom: 4px; }
.stockx-links-note { font-size: 0.8rem; color: var(--ink-soft); line-height: 1.6; margin-bottom: 10px; }
.stockx-links-table { width: 100%; border-collapse: collapse; font-size: 0.85rem; }
.stockx-links-table th, .stockx-links-table td { padding: 7px 6px; border-bottom: 1px solid var(--rule); text-align: left; }
.stockx-links-table th span, .stockx-links-sub { color: var(--ink-soft); font-size: 0.75rem; margin-left: 4px; }
.stockx-corr { display: inline-block; min-width: 3.2em; padding-left: 4px;
               background: linear-gradient(90deg, var(--accent-soft) var(--w), transparent var(--w)); }
.stockx-related { list-style: none; border-top: 1px solid var(--rule); }
.stockx-related li { padding: 7px 0; border-bottom: 1px solid var(--rule); font-size: 0.85rem; display: flex; gap: 8px; align-items: baseline; }
.stockx-related-n { margin-left: auto; color: var(--ink-soft); font-size: 0.78rem; }
.stockx-related-tag { font-size: 0.7rem; color: var(--accent); border: 1px solid var(--accent); padding: 0 4px; }
.stockx-links-more { display: inline-block; margin-top: 10px; font-size: 0.85rem; font-weight: 700; color: var(--accent); }
.netmap-node-link { cursor: pointer; }
.netmap-node-link:hover circle { stroke: var(--ink); stroke-width: 2; }
.netmap-stock-link { display: block; font-size: 0.72rem; font-weight: 600; color: var(--accent); margin-top: 2px; }
@media (max-width: 720px) { .stockx-links-grid { grid-template-columns: 1fr; } }
.stockx-kb { margin-top: 18px; padding: 12px 16px; background: var(--accent-soft); font-size: 0.88rem; line-height: 1.7; }
.stockx-kb a { font-weight: 700; color: var(--accent); margin-left: 6px; }
.kb-crossnav { display: flex; flex-wrap: wrap; gap: 6px 16px; align-items: baseline; font-size: 0.85rem;
               margin: 0 0 22px; padding: 10px 14px; border: 1px solid var(--rule); background: #fff; }
.kb-crossnav span { color: var(--ink-soft); font-weight: 700; }
.kb-crossnav a { color: var(--accent); font-weight: 700; }
.kb-abstract { font-size: 0.8rem; color: var(--ink-soft); line-height: 1.6; margin-top: 3px; }

/* --- イベント情報（2026-09-29）。ニュースの見た目に合わせる --- */
.evx { margin: 8px 0 24px; }
.evx-head { font-size: 0.8rem; font-weight: 800; letter-spacing: 0.08em; padding: 10px 0; margin: 18px 0 12px;
            border-bottom: 2px solid var(--ink); }
.evx-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
.evx-card { display: flex; flex-direction: column; background: var(--paper-raised); border: 1px solid var(--rule);
            text-decoration: none; color: var(--ink); }
.evx-card:hover { border-color: var(--accent); }
.evx-card img { width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; background: #eee; }
.evx-card-body { padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.evx-date { font-size: 0.8rem; font-weight: 700; color: var(--accent); }
.evx-format { font-size: 0.7rem; font-weight: 700; color: var(--ink-soft); border: 1px solid var(--rule);
              padding: 0 5px; margin-left: 6px; }
.evx-title { font-weight: 700; line-height: 1.5; font-size: 0.95rem; }
.evx-meta { font-size: 0.78rem; color: var(--ink-soft); }
.evx-cta { margin-top: auto; font-size: 0.8rem; font-weight: 700; color: var(--accent); }
.evx-note { font-size: 0.78rem; color: var(--ink-soft); margin-top: 10px; }
.evx-list { list-style: none; border-top: 1px solid var(--rule); }
.evx-list li { display: flex; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--rule); }
.evx-list-date { flex: 0 0 8.5em; font-size: 0.82rem; font-weight: 700; color: var(--accent); }
.evx-list-title { font-weight: 700; color: var(--ink); text-decoration: none; }
.evx-list-title:hover { color: var(--accent); }
.evx-list-place { font-size: 0.75rem; color: var(--ink-soft); margin-left: 8px; }
.evx-list-body p { font-size: 0.82rem; color: var(--ink-soft); line-height: 1.6; margin-top: 4px; }
.rail-ev-date { display: block; font-size: 0.72rem; font-weight: 700; color: var(--accent); }
@media (max-width: 640px) { .evx-list li { flex-direction: column; gap: 4px; } .evx-list-date { flex: none; } }

/* /events の一覧（2026-09-29）。検索・年の絞り込み・これまでのイベント */
.evx-search { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 0 0 8px; }
.evx-search input[type=search] { flex: 1 1 240px; min-width: 0; padding: 9px 12px; font: inherit; font-size: 0.9rem;
                                 border: 1px solid var(--rule); background: var(--paper-raised); color: var(--ink); }
.evx-search button { padding: 9px 18px; font: inherit; font-size: 0.85rem; font-weight: 700; cursor: pointer;
                     border: 1px solid var(--ink); background: var(--ink); color: var(--paper-raised); }
.evx-search a { font-size: 0.82rem; color: var(--ink-soft); }
.evx-years { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 14px; }
.evx-years a { font-size: 0.8rem; font-weight: 700; text-decoration: none; color: var(--ink); padding: 4px 10px;
               border: 1px solid var(--rule); background: var(--paper-raised); }
.evx-years a span { font-weight: 400; color: var(--ink-soft); margin-left: 4px; font-size: 0.72rem; }
.evx-years a:hover { border-color: var(--accent); }
.evx-years a.on { background: var(--ink); color: var(--paper-raised); border-color: var(--ink); }
.evx-years a.on span { color: var(--band-text); }
.evx-past { list-style: none; border-top: 1px solid var(--rule); }
.evx-past li { border-bottom: 1px solid var(--rule); }
.evx-past a { display: flex; gap: 14px; align-items: flex-start; padding: 12px 0; text-decoration: none; color: var(--ink); }
.evx-past a:hover .evx-past-title { color: var(--accent); }
.evx-past img { flex: 0 0 120px; width: 120px; height: 68px; object-fit: cover; background: #eee; }
.evx-past a > div { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.evx-soon { color: var(--accent); border-color: var(--accent); }
.evx-past-title { font-weight: 700; line-height: 1.5; font-size: 0.93rem; }

/* /events/<id> の詳細 */
.evd-crumb { font-size: 0.78rem; color: var(--ink-soft); margin-bottom: 14px; }
.evd-crumb a { color: var(--ink-soft); }
.evd-crumb span { margin: 0 6px; }
.evd-head { padding-bottom: 14px; margin-bottom: 18px; border-bottom: 2px solid var(--ink); }
.evd-head h1 { font-size: 1.6rem; line-height: 1.45; margin-top: 6px; overflow-wrap: anywhere; }
.evd-top { margin-bottom: 24px; }
.evd-top-img { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 20px; align-items: start; }
.evd-img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; background: #eee; }
.evd-box { background: var(--paper-raised); border: 1px solid var(--rule); padding: 16px 18px; }
@media (max-width: 900px) { .evd-top-img { grid-template-columns: 1fr; gap: 14px; } }
.evd-box dl { display: grid; grid-template-columns: 5em 1fr; gap: 8px 12px; font-size: 0.9rem; }
.evd-box dt { font-weight: 700; color: var(--ink-soft); font-size: 0.8rem; padding-top: 2px; }
.evd-box dd { overflow-wrap: anywhere; }
.evd-addr { font-size: 0.82rem; color: var(--ink-soft); }
.evd-map { font-size: 0.78rem; font-weight: 700; margin-left: 6px; color: var(--accent); }
.evd-tickets { width: 100%; border-collapse: collapse; margin-top: 14px; font-size: 0.82rem; }
.evd-tickets th, .evd-tickets td { text-align: left; padding: 6px 8px; border-bottom: 1px solid var(--rule); }
.evd-tickets th { font-size: 0.75rem; color: var(--ink-soft); }
.evd-cta { display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: center; margin-top: 16px;
           padding-top: 14px; border-top: 1px solid var(--rule); }
.evd-btn { display: inline-block; padding: 11px 28px; background: var(--accent); color: #fff; font-weight: 800;
           text-decoration: none; font-size: 0.95rem; }
.evd-btn:hover { filter: brightness(1.1); }
.evd-btn-quiet { background: var(--paper-raised); color: var(--ink); border: 1px solid var(--ink); font-size: 0.85rem;
                 padding: 8px 18px; }
.evd-cta-note { flex: 1 1 260px; font-size: 0.78rem; color: var(--ink-soft); line-height: 1.6; }
.evd-sub { font-size: 0.82rem; font-weight: 700; color: var(--accent); }
.evd-body { overflow-wrap: anywhere; }
.evd-body p { margin: 0 0 1em; line-height: 1.9; }
.evd-back { margin: 24px 0; font-size: 0.85rem; }

/* news での申し込み欄（2026-09-29） */
.evr { margin: 28px 0 8px; scroll-margin-top: 60px; }
.evr p { font-size: 0.9rem; line-height: 1.8; margin: 0 0 10px; }
.evr-msg { padding: 10px 14px; border: 1px solid var(--rule); background: var(--paper-raised); font-weight: 700; }
.evr-msg-ok { border-color: var(--up); color: var(--up); }
.evr-msg-error { border-color: var(--down); color: var(--down); }
.evr-status { padding: 12px 14px; background: var(--accent-soft); border: 1px solid var(--accent); margin-bottom: 14px; font-size: 0.92rem; }
.evr-private, .evr-files { background: var(--paper-raised); border: 1px solid var(--rule); padding: 12px 16px; margin-bottom: 14px; overflow-wrap: anywhere; }
.evr-private-head { font-size: 0.78rem; font-weight: 800; color: var(--ink-soft); margin-bottom: 6px; }
.evr-files ul { margin: 0 0 6px 1.2em; font-size: 0.9rem; }
.evr-note { font-size: 0.8rem !important; color: var(--ink-soft); }
.evr-form-wrap { background: var(--paper-raised); border: 1px solid var(--rule); padding: 12px 16px; margin-bottom: 12px; }
.evr-form-wrap summary { cursor: pointer; font-weight: 700; font-size: 0.9rem; }
.evr-form { display: flex; flex-direction: column; gap: 12px; margin-top: 12px; }
.evr-form label { display: flex; flex-direction: column; gap: 4px; font-size: 0.82rem; font-weight: 700; color: var(--ink-soft); }
.evr-form input[type=text], .evr-form input[type=email] { padding: 9px 11px; font: inherit; font-size: 0.95rem; color: var(--ink);
                                                           border: 1px solid var(--rule); background: var(--paper); min-width: 0; }
.evr-form fieldset { border: 1px solid var(--rule); padding: 8px 12px; display: flex; gap: 18px; flex-wrap: wrap; }
.evr-form fieldset legend { font-size: 0.8rem; font-weight: 700; color: var(--ink-soft); padding: 0 4px; }
.evr-form fieldset label { flex-direction: row; align-items: center; gap: 6px; color: var(--ink); font-size: 0.9rem; }
/* ⚠ 1fr だけだと入力欄の既定の幅（size=20）より縮まず、スマホで右へはみ出した（2026-09-29 湊さんの指摘）。
   minmax(0, 1fr) と、入力欄を枠いっぱい（width:100%）にして縮められるようにする */
.evr-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; }
.evr-form label { min-width: 0; }
.evr-form input[type=text], .evr-form input[type=email] { width: 100%; box-sizing: border-box; }
.evr-form button.evd-btn { align-self: flex-start; border: 0; cursor: pointer; font: inherit; font-weight: 800; }
.evr-cancel button { background: none; border: 1px solid var(--rule); padding: 7px 14px; font: inherit; font-size: 0.8rem;
                     color: var(--ink-soft); cursor: pointer; }
.evr-cancel button:hover { border-color: var(--down); color: var(--down); }
@media (max-width: 640px) {
    .evd-head h1 { font-size: 1.3rem; }
    .evd-box { padding: 14px; }
    .evd-box dl { grid-template-columns: 4.2em 1fr; }
    .evx-past img { flex-basis: 88px; width: 88px; height: 50px; }
}

/* ナレッジベースの論文の要旨（2026-09-29） */
.kb-abstract { background: var(--paper-raised); border: 1px solid var(--rule); padding: 14px 18px; margin: 0 0 20px; }
.kb-abstract h2 { font-size: 0.8rem; font-weight: 800; margin: 0 0 6px; color: var(--ink-soft); }
.kb-abstract p { line-height: 1.85; margin: 0; }
.kb-abstract .kb-abstract-src { font-size: 0.75rem; color: var(--ink-soft); margin-top: 8px; }

/* 申し込み欄（2026-10-01 にかんたんに作り直した） */
.evr { background: var(--paper-raised); border: 2px solid var(--accent); padding: 18px 18px 16px; margin: 0 0 26px; }
.evr-lead { font-size: 0.95rem !important; font-weight: 700; margin-bottom: 12px !important; }
.evr-wide { display: block; width: 100%; text-align: center; padding: 13px 18px; font-size: 1rem; }
.evr-done { display: flex; flex-direction: column; gap: 4px; margin-bottom: 12px; }
.evr-done strong { font-size: 1.05rem; color: var(--up); }
.evr-done span { font-size: 0.85rem; color: var(--ink-soft); overflow-wrap: anywhere; }
.evr-choice { display: flex; gap: 10px; flex-wrap: wrap; }
.evr-choice label { flex: 1 1 140px; flex-direction: row !important; align-items: center; gap: 8px !important;
                    border: 1px solid var(--rule); padding: 10px 12px; font-size: 0.92rem !important; color: var(--ink) !important; cursor: pointer; }
.evr-change { margin: 6px 0 10px; }
.evr-change summary { cursor: pointer; font-size: 0.88rem; font-weight: 700; color: var(--accent); }
.evr-change .evr-form { margin-top: 12px; }
.evr .evr-cancel { margin-top: 6px; }
.evr-title { font-size: 1.05rem; font-weight: 800; margin: 0 0 10px; }

/* 書き手プログラム（2026-10-02） */
.aff-box { background: var(--paper-raised); border: 1px solid var(--rule); padding: 16px 18px; margin: 0 0 20px; }
.aff-stats { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; margin-bottom: 14px; }
.aff-stats div { display: flex; flex-direction: column; gap: 2px; }
.aff-stats b { font-size: 1.2rem; }
.aff-stats span { font-size: 0.75rem; color: var(--ink-soft); }
.aff-list { margin: 0 0 0 1.2em; font-size: 0.9rem; line-height: 1.8; }
.aff-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.aff-actions input[type=text] { flex: 1 1 200px; min-width: 0; padding: 6px 8px; font: inherit; border: 1px solid var(--rule); }
.aff-actions button { padding: 6px 14px; font: inherit; cursor: pointer; border: 1px solid var(--ink); background: var(--paper-raised); }
.aff-cta { border: 2px solid var(--accent); background: var(--paper-raised); padding: 16px 18px; margin: 28px 0; }
.aff-cta p { font-size: 0.88rem; line-height: 1.8; margin: 0 0 12px; }
.category-badge.aff-pr { background: var(--ink); color: var(--paper); }
.evr-form textarea { padding: 9px 11px; font: inherit; font-size: 0.95rem; border: 1px solid var(--rule); background: var(--paper); color: var(--ink); width: 100%; box-sizing: border-box; }
.aff-agree { flex-direction: row !important; align-items: center; gap: 8px !important; color: var(--ink) !important; }
.aff-link input, .aff-make input { width: 100%; box-sizing: border-box; padding: 8px 10px; font: inherit; border: 1px solid var(--rule); }
.aff-make { display: flex; flex-direction: column; gap: 8px; margin: 10px 0; }

/* 区画ごとの広告の枠（2026-10-03） */
.section-sponsor { margin: 20px 0 26px; }

/* イベントのシェアと管理者の入口（2026-10-04） */
.evd-share { margin: 0.6rem 0 0.4rem; }
button.share-btn { cursor: pointer; font: inherit; }
.share-btn.is-done { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.evd-staff { margin: 0.4rem 0 0; padding: 0.5rem 0.75rem; font-size: 0.85rem; background: #fff8e1; border: 1px solid #f0d58a; border-radius: 6px; }
.evd-staff a { margin-right: 0.9rem; font-weight: 700; }
.evd-staff span { color: var(--ink-soft); font-size: 0.8rem; }

/* 管理者だけ：Xに自分で投稿した印（2026-10-07） */
.x-manual { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: -1rem 0 1.5rem; padding: 0.45rem 0.7rem; font-size: 0.82rem; background: #fff8e1; border: 1px solid #f0d58a; border-radius: 6px; }
.x-manual button { font: inherit; font-weight: 700; padding: 0.2rem 0.7rem; border: 1px solid var(--ink); border-radius: 4px; background: var(--paper-raised); color: var(--ink); cursor: pointer; }

/* イベントの管理画面（2026-10-07・community から移した） */
.evadm-new { margin-left: 12px; padding: 6px 16px; font-size: 0.85rem; }
.evadm-tabs { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; margin: 0 0 12px; font-weight: 700; font-size: 0.9rem; }
.evadm-tabs a { color: var(--ink-soft); text-decoration: none; padding: 4px 0; border-bottom: 2px solid transparent; }
.evadm-tabs a.is-on { color: var(--ink); border-bottom-color: var(--ink); }
.evadm-search { margin-left: auto; }
.evadm-search input { padding: 6px 10px; border: 1px solid var(--rule); font: inherit; }
.evadm-list td { vertical-align: top; }
.evadm-when { white-space: nowrap; color: var(--ink-soft); }
.evadm-mail { overflow-wrap: anywhere; }
.evadm-tag { font-size: 0.7rem; color: var(--ink-soft); border: 1px solid var(--rule); padding: 0 4px; margin-left: 4px; }
.evadm-crumb { margin: 1.2rem 0 0; font-size: 0.85rem; }
.evadm-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 640px) { .evadm-row { grid-template-columns: 1fr; } .evadm-search { margin-left: 0; width: 100%; } }
.evadm-form input, .evadm-form select, .evadm-form textarea, .evadm-box input[type=text], .evadm-box textarea, .evadm-box select { font: inherit; padding: 8px 10px; border: 1px solid var(--rule); background: var(--paper-raised); color: var(--ink); }
.evadm-box { margin-top: 22px; }
.evadm-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; }
.evadm-actions form { display: flex; flex-direction: column; gap: 6px; }
.evadm-force, .evadm-check { font-size: 0.82rem; font-weight: 700; display: flex; gap: 6px; align-items: center; }
.evadm-danger { border-color: var(--down) !important; color: var(--down) !important; }
.evadm-img { max-width: 320px; width: 100%; display: block; margin-bottom: 10px; border: 1px solid var(--rule); }
.evadm-inline { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.evadm-link { background: none; border: 0; color: var(--down); cursor: pointer; font: inherit; text-decoration: underline; padding: 0; }
.evadm-warn { border-color: #d9a400 !important; color: #8a6500; }
.evadm-scroll { overflow-x: auto; }
.evadm-wide { min-width: 640px; }
.evadm-wide td, .evadm-wide th { white-space: nowrap; }

/* イベントの登壇者（2026-10-07） */
.evsp { margin: 22px 0 6px; }
.evsp-list { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.evsp-item { display: flex; gap: 14px; align-items: flex-start; background: var(--paper-raised); border: 1px solid var(--rule); padding: 14px; }
.evsp-photo { width: 84px; height: 84px; border-radius: 50%; object-fit: cover; flex: 0 0 84px; background: var(--rule); display: block; }
.evsp-center { object-position: 50% 25%; }
.evsp-left { object-position: 18% 30%; }
.evsp-right { object-position: 82% 30%; }
.evsp-text { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.evsp-time { font-size: 0.78rem; font-weight: 800; color: var(--accent); }
.evsp-name { font-size: 1.05rem; }
.evsp-org { font-size: 0.82rem; color: var(--ink-soft); }
.evsp-talk { font-size: 0.86rem; margin-top: 4px; }
.evadm-speaker { border: 1px solid var(--rule); padding: 10px 12px; display: flex; flex-direction: column; gap: 8px; }
.evadm-speaker legend { font-weight: 800; font-size: 0.85rem; padding: 0 4px; }

/* イベントの説明の「■ 見出し」を登壇者の見出しと同じ形に（2026-10-07） */
.evd-body .evd-sec { margin: 26px 0 10px; }
.evd-body .evd-sec:first-child { margin-top: 6px; }

/* 登壇者のすぐ下の時間割（2026-10-08） */
.evd-tt { margin-top: 28px; margin-bottom: 28px; }

/* 時間割の表（登壇者を行に入れる・2026-10-08） */
.evtt { margin: 22px 0 28px; }
.evtt-note { font-size: 0.88rem; color: var(--ink-soft); margin: 8px 0; }
.evtt-list { list-style: none; padding: 0; margin: 10px 0; border-top: 1px solid var(--rule); }
.evtt-row { display: grid; grid-template-columns: 9.5em 1fr; gap: 14px; align-items: center; padding: 12px 4px; border-bottom: 1px solid var(--rule); }
.evtt-time { font-weight: 800; font-variant-numeric: tabular-nums; font-size: 0.92rem; }
.evtt-time small { display: inline-block; margin-left: 6px; font-size: 0.7rem; font-weight: 700; color: var(--accent); border: 1px solid var(--accent); padding: 0 4px; vertical-align: 1px; }
.evtt-label { color: var(--ink-soft); }
.evtt-talk { background: var(--paper-raised); }
.evtt-talk .evtt-time { color: var(--accent); }
.evtt-sp { display: flex; gap: 14px; align-items: center; min-width: 0; }
.evtt-sp .evsp-photo { width: 72px; height: 72px; flex: 0 0 72px; }
.evtt-kind { font-size: 0.72rem; font-weight: 800; color: var(--accent); letter-spacing: .05em; }
@media (max-width: 560px) {
  .evtt-row { grid-template-columns: 1fr; gap: 6px; }
}
.evtt-hold .evsp-name { color: var(--ink-soft); }
/* 開場・ネットワーキングの欄（講演と同じ形・色で分ける） */
.evtt-net { background: #EAF5EE; }
.evtt-net .evtt-time, .evtt-net .evtt-kind { color: var(--up); }
.evtt-net .evtt-icon { background: var(--up); }
.evtt-open { background: #FBF3E4; }
.evtt-open .evtt-time, .evtt-open .evtt-kind { color: var(--learn); }
.evtt-open .evtt-icon { background: var(--learn); }
.evtt-icon { display: flex; align-items: center; justify-content: center; color: #fff; font-weight: 800; font-size: 0.95rem; letter-spacing: .05em; }
.evtt-list { display: flex; flex-direction: column; gap: 8px; border-top: 0; }
.evtt-row { border: 1px solid var(--rule); }
.evtt-net { border-color: #CFE6D8; }
.evtt-open { border-color: #EEDDBB; }
.evtt-other { background: var(--paper-raised); }
.evtt-brk .evtt-kind { display: none; }   /* 名前と同じ言葉が二重になるので出さない */
