/* ==========================================================================
       『樹の新聞』電子版 共有スタイルシート (portal.css)
       対象: index.html / private/index.html / issue-template.html / article-template.html
       外部フォント・外部フレームワーク依存ゼロ（単体で完全動作）
       ========================================================================== */
    :root {
      /* ライトモード：新聞紙・書籍用紙のオフホワイト基調 */
      --bg-paper: #F8F5EE;
      --bg-paper-elevated: #FFFDF9;
      --bg-paper-subtle: #EFECE4;
      --bg-masthead-pattern: radial-gradient(#D5CFC2 1px, transparent 1px);
      --ink-primary: #181715;
      --ink-secondary: #4A4740;
      --ink-muted: #6E6A61;
      --rule-strong: #181715;
      --rule-light: #D4CFC3;
      --accent-vermilion: #B52F26; /* 朱印・新聞アクセント */
      --accent-vermilion-bg: #FCECEB;
      --accent-indigo: #1D4358;    /* 藍墨・公開バッジ・リンク */
      --accent-indigo-bg: #E8F1F5;
      --badge-public-bg: #E6F2F5;
      --badge-public-text: #124E66;
      --badge-public-border: #8AB8C9;
      --badge-private-bg: #FDF0ED;
      --badge-private-text: #9E2A22;
      --badge-private-border: #DF9A94;
      --mark-bg: #FDE68A;
      --mark-text: #181715;
      --focus-ring: #1D4358;
      --shadow-card: 0 2px 6px rgba(24, 23, 21, 0.05);

      /* OS標準の明朝体・角ゴシック体スタック（外部通信ゼロ） */
      --font-serif: "Hiragino Mincho ProN", "Yu Mincho", "YuMincho", "BIZ UDPMincho", "Noto Serif JP", "MS PMincho", serif;
      --font-sans: "Hiragino Kaku Gothic ProN", "Hiragino Sans", "BIZ UDPGothic", "Yu Gothic", "YuGothic", "Noto Sans JP", sans-serif;
      --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    }

    @media (prefers-color-scheme: dark) {
      :root:not([data-theme="light"]) {
        --bg-paper: #141413;
        --bg-paper-elevated: #1D1C1A;
        --bg-paper-subtle: #252421;
        --bg-masthead-pattern: radial-gradient(#33312C 1px, transparent 1px);
        --ink-primary: #ECE8DF;
        --ink-secondary: #B8B3A8;
        --ink-muted: #8A857B;
        --rule-strong: #D8D3C8;
        --rule-light: #35332E;
        --accent-vermilion: #E05A50;
        --accent-vermilion-bg: #361C1A;
        --accent-indigo: #73B3D3;
        --accent-indigo-bg: #172A35;
        --badge-public-bg: #132A34;
        --badge-public-text: #8AD0EE;
        --badge-public-border: #2C596D;
        --badge-private-bg: #351A18;
        --badge-private-text: #F59E96;
        --badge-private-border: #6E322D;
        --mark-bg: #785C12;
        --mark-text: #FFFBEB;
        --focus-ring: #73B3D3;
        --shadow-card: 0 4px 12px rgba(0, 0, 0, 0.35);
      }
    }

    :root[data-theme="dark"] {
      --bg-paper: #141413;
      --bg-paper-elevated: #1D1C1A;
      --bg-paper-subtle: #252421;
      --bg-masthead-pattern: radial-gradient(#33312C 1px, transparent 1px);
      --ink-primary: #ECE8DF;
      --ink-secondary: #B8B3A8;
      --ink-muted: #8A857B;
      --rule-strong: #D8D3C8;
      --rule-light: #35332E;
      --accent-vermilion: #E05A50;
      --accent-vermilion-bg: #361C1A;
      --accent-indigo: #73B3D3;
      --accent-indigo-bg: #172A35;
      --badge-public-bg: #132A34;
      --badge-public-text: #8AD0EE;
      --badge-public-border: #2C596D;
      --badge-private-bg: #351A18;
      --badge-private-text: #F59E96;
      --badge-private-border: #6E322D;
      --mark-bg: #785C12;
      --mark-text: #FFFBEB;
      --focus-ring: #73B3D3;
      --shadow-card: 0 4px 12px rgba(0, 0, 0, 0.35);
    }

    *, *::before, *::after {
      box-sizing: border-box;
    }

    body {
      margin: 0;
      padding: 0;
      background-color: var(--bg-paper);
      color: var(--ink-primary);
      font-family: var(--font-sans);
      line-height: 1.75;
      -webkit-font-smoothing: antialiased;
      transition: background-color 0.2s ease, color 0.2s ease;
    }

    a {
      color: inherit;
    }

    /* 共通コンテナ */
    .portal-container {
      max-width: 72rem;
      margin: 0 auto;
      padding-left: 1rem;
      padding-right: 1rem;
    }
    @media (min-width: 640px) {
      .portal-container {
        padding-left: 1.5rem;
        padding-right: 1.5rem;
      }
    }

    .article-single-container {
      max-width: 52rem;
      margin: 0 auto;
      padding-left: 1rem;
      padding-right: 1rem;
    }

    /* 新聞特有の二重罫線 */
    .rule-double-top {
      border-top: 3px solid var(--rule-strong);
      position: relative;
    }
    .rule-double-top::before {
      content: "";
      display: block;
      border-top: 1px solid var(--rule-strong);
      margin-top: 2px;
    }

    .rule-double-bottom {
      border-bottom: 1px solid var(--rule-strong);
      position: relative;
    }
    .rule-double-bottom::after {
      content: "";
      display: block;
      border-bottom: 3px solid var(--rule-strong);
      margin-bottom: 2px;
    }

    /* 縦書き題字（ふりがななし・純粋な新聞題字意匠） */
    .vertical-masthead-box {
      background-color: var(--bg-paper-elevated);
      background-image: var(--bg-masthead-pattern);
      background-size: 6px 6px;
      border: 2px solid var(--rule-strong);
      padding: 0.9rem 0.8rem;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      box-shadow: var(--shadow-card);
      position: relative;
      flex-shrink: 0;
    }

    .vertical-masthead-title {
      writing-mode: vertical-rl;
      text-orientation: upright;
      font-family: var(--font-serif);
      font-weight: 800;
      font-size: clamp(1.9rem, 4vw, 2.55rem);
      letter-spacing: 0.24em;
      line-height: 1.1;
      color: var(--ink-primary);
      margin: 0;
      user-select: none;
    }

    .hanko-seal {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 1.65rem;
      height: 1.65rem;
      border: 1.5px solid var(--accent-vermilion);
      color: var(--accent-vermilion);
      font-family: var(--font-serif);
      font-size: 0.75rem;
      font-weight: 700;
      line-height: 1;
      border-radius: 2px;
      margin-top: 0.5rem;
      background-color: var(--bg-paper-elevated);
    }

    .serif-heading {
      font-family: var(--font-serif);
      font-feature-settings: "palt" 1;
      letter-spacing: 0.03em;
    }

    /* インラインSVGアイコン共通サイズ（Tailwind非依存） */
    .np-icon {
      width: 0.95rem;
      height: 0.95rem;
      flex-shrink: 0;
      vertical-align: middle;
    }
    .np-icon-lg {
      width: 1.5rem;
      height: 1.5rem;
      flex-shrink: 0;
    }

    /* 公開／制限バッジ（色・形・アイコンで一目で区別） */
    .access-badge {
      display: inline-flex;
      align-items: center;
      gap: 0.3rem;
      font-size: 0.75rem;
      font-weight: 700;
      line-height: 1.2;
      padding: 0.25rem 0.6rem;
      white-space: nowrap;
      letter-spacing: 0.04em;
    }
    .access-badge--public {
      background-color: var(--badge-public-bg);
      color: var(--badge-public-text);
      border: 1px solid var(--badge-public-border);
      border-radius: 9999px;
    }
    .access-badge--private {
      background-color: var(--badge-private-bg);
      color: var(--badge-private-text);
      border: 1px solid var(--badge-private-border);
      border-left: 4px solid var(--accent-vermilion);
      border-radius: 2px;
    }

    /* ヘッダー・題字レイアウト */
    .masthead-top-bar {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      justify-content: space-between;
      gap: 0.5rem;
      padding: 0.75rem 0 0.5rem;
      border-bottom: 1px solid var(--rule-light);
      font-size: 0.825rem;
      color: var(--ink-secondary);
    }
    .masthead-meta-group {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      gap: 0.65rem;
    }
    .masthead-actions {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      gap: 0.75rem;
    }
    .masthead-nav-link {
      display: inline-flex;
      align-items: center;
      gap: 0.3rem;
      font-weight: 600;
      text-decoration: underline;
      text-underline-offset: 4px;
    }
    .masthead-nav-link:hover {
      color: var(--accent-vermilion);
    }
    .theme-btn, .print-btn {
      display: inline-flex;
      align-items: center;
      gap: 0.35rem;
      padding: 0.3rem 0.65rem;
      font-size: 0.8rem;
      font-weight: 600;
      border-radius: 3px;
      border: 1px solid var(--rule-light);
      background-color: var(--bg-paper-elevated);
      color: var(--ink-primary);
      cursor: pointer;
    }
    .theme-btn:hover, .print-btn:hover {
      border-color: var(--rule-strong);
    }

    .masthead-main {
      display: flex;
      flex-direction: row;
      align-items: center;
      justify-content: space-between;
      gap: 1.25rem;
      margin: 0.75rem 0;
      padding: 1.25rem 0;
    }
    @media (min-width: 640px) {
      .masthead-main {
        gap: 2rem;
        padding: 1.5rem 0;
      }
    }
    .masthead-lead {
      flex: 1;
      min-width: 0;
    }
    .masthead-kicker-row {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      gap: 0.5rem;
      margin-bottom: 0.5rem;
    }
    .masthead-kicker {
      font-family: var(--font-mono);
      font-size: 0.72rem;
      letter-spacing: 0.1em;
      padding: 0.15rem 0.5rem;
      background-color: var(--bg-paper-subtle);
      border: 1px solid var(--rule-light);
      color: var(--ink-secondary);
    }
    .masthead-catch {
      font-size: clamp(1.2rem, 2.6vw, 1.75rem);
      font-weight: 700;
      line-height: 1.4;
      margin: 0 0 0.5rem 0;
      color: var(--ink-primary);
    }
    .masthead-desc {
      font-size: 0.875rem;
      color: var(--ink-secondary);
      margin: 0;
      line-height: 1.65;
    }

    /* 検索パネル・フォーム */
    .search-panel {
      background-color: var(--bg-paper-elevated);
      border: 2px solid var(--rule-strong);
      padding: 1.15rem;
      margin-bottom: 1.75rem;
      box-shadow: var(--shadow-card);
    }
    @media (min-width: 640px) {
      .search-panel {
        padding: 1.5rem;
      }
    }
    .search-panel-header {
      display: flex;
      flex-wrap: wrap;
      align-items: baseline;
      justify-content: space-between;
      gap: 0.5rem;
      margin-bottom: 0.85rem;
      padding-bottom: 0.5rem;
      border-bottom: 1px solid var(--rule-light);
    }
    .search-panel-title {
      font-size: 1.15rem;
      font-weight: 700;
      margin: 0;
      display: flex;
      align-items: center;
      gap: 0.5rem;
    }
    .search-panel-title::before {
      content: "";
      display: inline-block;
      width: 6px;
      height: 1.15rem;
      background-color: var(--accent-vermilion);
    }
    .search-form-grid {
      display: grid;
      grid-template-columns: 1fr;
      gap: 0.85rem;
      align-items: end;
    }
    @media (min-width: 768px) {
      .search-form-grid {
        grid-template-columns: 6fr 4fr 2fr;
        gap: 1rem;
      }
    }
    .form-label {
      display: block;
      font-size: 0.825rem;
      font-weight: 700;
      color: var(--ink-primary);
      margin-bottom: 0.35rem;
    }
    .input-icon-wrap {
      position: relative;
    }
    .input-icon-wrap .np-icon {
      position: absolute;
      left: 0.85rem;
      top: 50%;
      transform: translateY(-50%);
      color: var(--ink-muted);
      pointer-events: none;
    }
    .newspaper-input {
      width: 100%;
      background-color: var(--bg-paper-elevated);
      color: var(--ink-primary);
      border: 1.5px solid var(--rule-strong);
      border-radius: 4px;
      min-height: 48px;
      padding: 0.6rem 0.9rem;
      font-size: 1rem;
      font-family: inherit;
    }
    .newspaper-input--with-icon {
      padding-left: 2.4rem;
    }
    .newspaper-input:focus {
      outline: none;
      border-color: var(--focus-ring);
      box-shadow: 0 0 0 3px rgba(29, 67, 88, 0.25);
    }

    .newspaper-btn {
      min-height: 48px;
      padding: 0.6rem 1rem;
      font-size: 0.9rem;
      font-weight: 700;
      border-radius: 4px;
      cursor: pointer;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 0.4rem;
      font-family: inherit;
      text-decoration: none;
      transition: all 0.15s ease;
    }
    .newspaper-btn--secondary {
      background-color: var(--bg-paper-subtle);
      color: var(--ink-primary);
      border: 1px solid var(--rule-light);
    }
    .newspaper-btn--secondary:hover {
      border-color: var(--rule-strong);
    }

    .search-status-bar {
      margin-top: 1rem;
      padding-top: 0.75rem;
      border-top: 1px solid var(--rule-light);
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      justify-content: space-between;
      gap: 0.75rem;
    }
    .pill-group {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      gap: 0.35rem;
    }
    .section-pill {
      padding: 0.25rem 0.65rem;
      font-size: 0.78rem;
      font-weight: 600;
      border-radius: 2px;
      border: 1px solid var(--rule-light);
      background-color: var(--bg-paper-elevated);
      color: var(--ink-secondary);
      cursor: pointer;
    }
    .section-pill:hover {
      border-color: var(--rule-strong);
    }
    .section-pill.is-active {
      background-color: var(--ink-primary);
      color: var(--bg-paper);
      border-color: var(--ink-primary);
    }

    /* ポータル2カラム段組 */
    .newspaper-columns {
      display: grid;
      grid-template-columns: 1fr;
      gap: 2rem;
      align-items: start;
    }
    @media (min-width: 1024px) {
      .newspaper-columns {
        grid-template-columns: 8fr 4fr;
      }
      .column-issues {
        border-left: 1px solid var(--rule-light);
        padding-left: 1.75rem;
      }
    }

    .column-header {
      display: flex;
      flex-wrap: wrap;
      align-items: baseline;
      justify-content: space-between;
      gap: 0.5rem;
      padding-bottom: 0.6rem;
      margin-bottom: 1rem;
      border-bottom: 2px solid var(--rule-strong);
    }
    .column-title {
      font-size: 1.35rem;
      font-weight: 700;
      margin: 0;
    }

    /* 記事一覧・カード */
    .result-stack {
      display: flex;
      flex-direction: column;
      gap: 1rem;
    }
    .article-item {
      background-color: var(--bg-paper-elevated);
      border: 1px solid var(--rule-light);
      border-top: 2px solid var(--rule-strong);
      padding: 1.25rem;
      border-radius: 2px;
      box-shadow: var(--shadow-card);
    }
    .article-item:hover {
      border-color: var(--rule-strong);
    }
    .article-meta-top {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      justify-content: space-between;
      gap: 0.5rem;
      margin-bottom: 0.5rem;
    }
    .article-meta-left {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      gap: 0.5rem;
    }
    .section-tag {
      padding: 0.15rem 0.5rem;
      font-size: 0.75rem;
      font-weight: 700;
      background-color: var(--bg-paper-subtle);
      border: 1px solid var(--rule-light);
      color: var(--ink-primary);
    }
    .article-date {
      font-family: var(--font-mono);
      font-size: 0.78rem;
      color: var(--ink-secondary);
    }
    .article-source {
      font-size: 0.78rem;
      color: var(--ink-muted);
    }
    .article-title {
      font-size: 1.15rem;
      font-weight: 700;
      line-height: 1.45;
      margin: 0 0 0.5rem 0;
    }
    .article-title a {
      text-decoration: none;
    }
    .article-title a:hover {
      color: var(--accent-vermilion);
      text-decoration: underline;
      text-underline-offset: 4px;
    }
    .article-summary {
      font-size: 0.925rem;
      color: var(--ink-secondary);
      margin: 0;
      line-height: 1.7;
    }
    .article-footer {
      margin-top: 0.85rem;
      padding-top: 0.65rem;
      border-top: 1px solid var(--rule-light);
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      justify-content: space-between;
      gap: 0.5rem;
    }
    .text-filter-btn {
      background: none;
      border: none;
      padding: 0;
      font-size: 0.78rem;
      color: var(--ink-muted);
      text-decoration: underline;
      cursor: pointer;
      font-family: inherit;
    }
    .text-filter-btn:hover {
      color: var(--ink-primary);
    }
    .article-read-link {
      display: inline-flex;
      align-items: center;
      gap: 0.35rem;
      font-size: 0.825rem;
      font-weight: 700;
      color: var(--accent-indigo);
      text-decoration: underline;
      text-underline-offset: 4px;
    }
    .article-read-link:hover {
      color: var(--accent-vermilion);
    }

    /* ハイライト＆文脈スニペット */
    mark.search-highlight {
      background-color: var(--mark-bg);
      color: var(--mark-text);
      padding: 0.08em 0.22em;
      border-radius: 2px;
      font-weight: 700;
      border-bottom: 1.5px solid var(--accent-vermilion);
    }
    .context-snippet {
      margin-top: 0.75rem;
      padding: 0.65rem 0.85rem;
      background-color: var(--bg-paper-subtle);
      border-left: 3px solid var(--accent-indigo);
      font-size: 0.85rem;
      color: var(--ink-secondary);
      border-radius: 0 3px 3px 0;
    }
    .context-snippet-label {
      display: block;
      font-size: 0.75rem;
      font-weight: 700;
      color: var(--ink-primary);
      margin-bottom: 0.2rem;
    }

    /* バックナンバー（号の一覧） */
    .issue-list-box {
      border: 1px solid var(--rule-light);
      background-color: var(--bg-paper-elevated);
    }
    .issue-item {
      padding: 1rem;
      border-bottom: 1px solid var(--rule-light);
      transition: background-color 0.15s ease;
    }
    .issue-item:last-child {
      border-bottom: none;
    }
    .issue-item:hover {
      background-color: var(--bg-paper-subtle);
    }
    .issue-item.is-active-date {
      border-left: 4px solid var(--accent-vermilion);
      background-color: var(--bg-paper-subtle);
    }
    .issue-meta-row {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      justify-content: space-between;
      gap: 0.5rem;
    }
    .issue-number {
      font-weight: 800;
      font-size: 1rem;
      margin-right: 0.4rem;
    }
    .issue-headline {
      font-size: 0.925rem;
      font-weight: 700;
      margin: 0.45rem 0 0.65rem;
      line-height: 1.45;
      color: var(--ink-primary);
    }
    .issue-subnote {
      font-size: 0.78rem;
      color: var(--ink-muted);
      margin: 0.35rem 0 0.6rem;
    }
    .issue-actions-row {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      justify-content: space-between;
      gap: 0.5rem;
    }
    .issue-filter-btn {
      font-size: 0.75rem;
      font-weight: 700;
      padding: 0.35rem 0.65rem;
      border-radius: 3px;
      border: 1px solid var(--rule-light);
      background-color: var(--bg-paper);
      color: var(--ink-primary);
      cursor: pointer;
    }
    .issue-filter-btn:hover {
      border-color: var(--rule-strong);
    }

    /* 空状態・エラー表示ボックス */
    .empty-state-box {
      background-color: var(--bg-paper-elevated);
      border: 1px solid var(--rule-light);
      border-top: 2px solid var(--rule-strong);
      padding: 2.25rem 1.25rem;
      text-align: center;
    }
    .empty-state-title {
      font-size: 1.1rem;
      font-weight: 700;
      margin: 0 0 0.5rem;
      color: var(--ink-primary);
    }
    .empty-state-desc {
      font-size: 0.875rem;
      color: var(--ink-secondary);
      max-width: 28rem;
      margin: 0 auto 1.1rem;
      line-height: 1.65;
    }

    /* ==========================================================================
       朝刊（号そのもの）雛形用スタイル (issue-template.html)
       ========================================================================== */
    .morning-toc-box {
      background-color: var(--bg-paper-elevated);
      border: 1.5px solid var(--rule-strong);
      padding: 0.85rem 1.1rem;
      margin-bottom: 1.5rem;
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      gap: 0.75rem 1.25rem;
    }
    .morning-toc-label {
      font-family: var(--font-serif);
      font-weight: 800;
      font-size: 0.9rem;
      padding: 0.2rem 0.6rem;
      background-color: var(--ink-primary);
      color: var(--bg-paper);
      letter-spacing: 0.08em;
    }
    .morning-toc-list {
      display: flex;
      flex-wrap: wrap;
      gap: 0.5rem 1.25rem;
      list-style: none;
      margin: 0;
      padding: 0;
      font-size: 0.875rem;
      font-weight: 600;
    }
    .morning-toc-list a {
      text-decoration: none;
      border-bottom: 1px dotted var(--rule-strong);
    }
    .morning-toc-list a:hover {
      color: var(--accent-vermilion);
      border-bottom-color: var(--accent-vermilion);
    }

    .frontpage-grid {
      display: grid;
      grid-template-columns: 1fr;
      gap: 1.75rem;
    }
    @media (min-width: 1024px) {
      .frontpage-grid {
        grid-template-columns: 7fr 5fr;
        gap: 2rem;
      }
    }

    .lead-article-box {
      background-color: var(--bg-paper-elevated);
      border: 1px solid var(--rule-light);
      border-top: 3px solid var(--rule-strong);
      padding: 1.5rem;
      margin-bottom: 1.5rem;
    }
    .lead-kicker {
      display: inline-block;
      font-size: 0.78rem;
      font-weight: 700;
      color: var(--accent-vermilion);
      border: 1px solid var(--accent-vermilion);
      padding: 0.1rem 0.5rem;
      margin-bottom: 0.6rem;
    }
    .lead-headline {
      font-size: clamp(1.5rem, 3vw, 2.15rem);
      font-weight: 800;
      line-height: 1.35;
      margin: 0 0 0.75rem 0;
    }
    .lead-deck {
      font-size: 1rem;
      font-weight: 600;
      color: var(--ink-primary);
      background-color: var(--bg-paper-subtle);
      border-left: 3px solid var(--rule-strong);
      padding: 0.75rem 1rem;
      margin: 0 0 1.15rem 0;
      line-height: 1.65;
    }
    .newspaper-prose p {
      margin: 0 0 1rem 0;
      text-align: justify;
      line-height: 1.85;
      font-size: 0.975rem;
    }

    /* カコミ記事（囲み枠） */
    .kakomi-box {
      background-color: var(--bg-paper-subtle);
      border: 2px solid var(--rule-strong);
      padding: 1.25rem;
      margin-bottom: 1.5rem;
      position: relative;
    }
    .kakomi-header {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      border-bottom: 1px solid var(--rule-strong);
      padding-bottom: 0.45rem;
      margin-bottom: 0.75rem;
    }
    .kakomi-badge {
      background-color: var(--accent-indigo);
      color: #fff;
      font-size: 0.75rem;
      font-weight: 700;
      padding: 0.15rem 0.5rem;
    }
    .kakomi-title {
      font-size: 1.15rem;
      font-weight: 700;
      margin: 0;
    }

    /* 天気欄・時間別予報テーブル */
    .weather-box, .schedule-box {
      background-color: var(--bg-paper-elevated);
      border: 1px solid var(--rule-strong);
      padding: 1.15rem;
      margin-bottom: 1.5rem;
    }
    .subbox-title {
      font-size: 1.05rem;
      font-weight: 800;
      margin: 0 0 0.75rem 0;
      padding-bottom: 0.4rem;
      border-bottom: 2px solid var(--rule-strong);
      display: flex;
      align-items: center;
      justify-content: space-between;
    }
    .weather-summary-row {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 1rem;
      padding: 0.65rem 0.85rem;
      background-color: var(--bg-paper-subtle);
      margin-bottom: 0.85rem;
    }
    .weather-symbol-large {
      font-size: 2rem;
      line-height: 1;
    }
    .hourly-table-wrap {
      overflow-x: auto;
    }
    .hourly-weather-table {
      width: 100%;
      border-collapse: collapse;
      font-size: 0.8rem;
      text-align: center;
    }
    .hourly-weather-table th,
    .hourly-weather-table td {
      border: 1px solid var(--rule-light);
      padding: 0.35rem 0.4rem;
      white-space: nowrap;
    }
    .hourly-weather-table th {
      background-color: var(--bg-paper-subtle);
      font-weight: 700;
      color: var(--ink-primary);
    }

    /* 今日の予定リスト */
    .schedule-list {
      list-style: none;
      margin: 0;
      padding: 0;
    }
    .schedule-list li {
      display: flex;
      align-items: baseline;
      gap: 0.75rem;
      padding: 0.45rem 0;
      border-bottom: 1px dashed var(--rule-light);
      font-size: 0.9rem;
    }
    .schedule-list li:last-child {
      border-bottom: none;
    }
    .schedule-time {
      font-family: var(--font-mono);
      font-weight: 700;
      font-size: 0.825rem;
      color: var(--accent-indigo);
      flex-shrink: 0;
    }

    /* 一面下部コラム枠 */
    .editorial-column-box {
      background-color: var(--bg-paper-elevated);
      border-top: 3px double var(--rule-strong);
      border-bottom: 3px double var(--rule-strong);
      padding: 1.25rem;
      margin: 1.5rem 0;
    }
    .editorial-column-label {
      display: inline-block;
      font-family: var(--font-serif);
      font-weight: 800;
      font-size: 0.95rem;
      color: var(--accent-vermilion);
      margin-bottom: 0.35rem;
    }

    /* フッター・奥付 */
    .newspaper-footer {
      margin-top: 2.5rem;
      padding-top: 1.5rem;
      padding-bottom: 3rem;
    }
    .ai-notice-banner {
      background-color: var(--bg-paper-subtle);
      border: 1px solid var(--rule-light);
      padding: 0.9rem 1.1rem;
      margin-bottom: 1.25rem;
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      justify-content: space-between;
      gap: 0.75rem;
    }
    .ai-notice-tag {
      font-size: 0.75rem;
      font-weight: 700;
      padding: 0.15rem 0.5rem;
      background-color: var(--ink-primary);
      color: var(--bg-paper);
      margin-right: 0.6rem;
    }

    /* スキップリンク */
    .skip-link {
      position: absolute;
      top: -100px;
      left: 0.5rem;
      background: var(--ink-primary);
      color: var(--bg-paper);
      padding: 0.5rem 1rem;
      z-index: 100;
      text-decoration: none;
      font-weight: bold;
      border-radius: 4px;
    }
    .skip-link:focus {
      top: 0.5rem;
    }

    /* 印刷（PDF保存）専用スタイル：全ページをそのまま新聞紙面として出力 */
    @media print {
      :root {
        --bg-paper: #FFFFFF !important;
        --bg-paper-elevated: #FFFFFF !important;
        --bg-paper-subtle: #F5F5F5 !important;
        --ink-primary: #000000 !important;
        --ink-secondary: #222222 !important;
        --ink-muted: #444444 !important;
        --rule-strong: #000000 !important;
        --rule-light: #999999 !important;
      }
      body {
        background: #FFFFFF !important;
        color: #000000 !important;
        font-size: 10.5pt;
      }
      #preview-dev-bar,
      .no-print,
      .theme-btn,
      .print-btn,
      .skip-link {
        display: none !important;
      }
      .portal-container,
      .article-single-container {
        max-width: 100% !important;
        padding: 0 !important;
      }
      .frontpage-grid {
        grid-template-columns: 7fr 5fr !important;
        gap: 1.25rem !important;
      }
      .article-item,
      .lead-article-box,
      .weather-box,
      .schedule-box,
      .kakomi-box,
      .editorial-column-box {
        break-inside: avoid;
        box-shadow: none !important;
      }
    }
