/* ===== リセット・ベース ===== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
    /* ブランドカラー */
    --color-primary:      #1a4a6b;   /* 濃紺 */
    --color-primary-dk:   #122f47;
    --color-accent:       #c0392b;   /* Newタグの赤 */
    --color-bg:           #f8f9fa;
    --color-footer-bg:    #d6eaf8;   /* フッター薄水色 */
    --color-text:         #2c3e50;
    --color-text-light:   #7f8c8d;
    --color-border:       #dce1e7;
    --color-white:        #ffffff;

    /* カテゴリ色 */
    --cat-event:   #10a0cd;   /* イベント */
    --cat-award:   #00cd7d;   /* 支部表彰 */
    --cat-grant:   #ff538c;   /* 助成 */
    --cat-other:   #d8d11c;   /* その他 */
    --cat-default: #7f8c8d;

    /* レイアウト */
    --header-height:  68px;
    --container-max:  1100px;
    --radius:         6px;
    --radius-lg:      12px;
    --shadow:         0 2px 10px rgba(0,0,0,.12);
    --font-base:      'Noto Sans JP', 'Hiragino Kaku Gothic ProN', 'Yu Gothic', sans-serif;

    /* フォントサイズ（1.25倍スケール） */
    --font-size-xs:   .75rem;    /* 12px – 注記・タグ */
    --font-size-sm:   .875rem;   /* 14px – メタ・補助 */
    --font-size-base: 1rem;      /* 16px – 本文 */
    --font-size-lg:   1.125rem;  /* 18px – 強調本文・小見出し */
    --font-size-xl:   1.25rem;   /* 20px – セクション内見出し */
    --font-size-2xl:  1.5rem;    /* 24px – セクション見出し */
    --font-size-3xl:  1.875rem;  /* 30px – ページタイトル */

    /* 行間 */
    --line-height-tight: 1.4;    /* 見出し用 */
    --line-height-base:  1.8;    /* 本文用 */

    /* スペーシング（4px起点・8px刻み） */
    --space-1:  4px;
    --space-2:  8px;
    --space-3:  12px;
    --space-4:  16px;
    --space-5:  24px;
    --space-6:  32px;
    --space-7:  48px;
    --space-8:  64px;
}

/* アンカージャンプはネイティブのスムーズスクロールではなく瞬間移動にする。
   進行中のスクロールアニメーションとJS側のレイアウト処理が競合する問題
   （継ぎ目バグ修正時のdetach/reattachが、アニメーション中に実行されると
   ブラウザ側のアニメーションごと停止してしまう等）を、アニメーション自体を
   なくすことで構造的に解消するため。 */
html { font-size: 16px; }
body { font-family: var(--font-base); color: var(--color-text); background: var(--color-white); line-height: 1.7; }
a { color: var(--color-primary); text-decoration: none; }
a:hover { text-decoration: underline; }
img { max-width: 100%; height: auto; display: block; }
ul { list-style: none; }

/* ===== フォーカスリング（アクセシビリティ）===== */
:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 3px;
    border-radius: 3px;
}
/* 濃色背景セクションは白のアウトライン */
.site-header :focus-visible,
.section-ag :focus-visible,
.mobile-nav :focus-visible {
    outline-color: var(--color-white);
}

/* ===== コンテナ ===== */
.container {
    max-width: var(--container-max);
    margin: 0 auto;
    padding: 0 24px;
}

/* ===== ヘッダー ===== */
.site-header {
    position: fixed;
    top: 0; left: 0; right: 0;
    z-index: 1000;
    height: var(--header-height);
    background: transparent;
    color: var(--color-white);
    transition: background .3s, box-shadow .3s;
}
body:not(.home) .site-header {
    background: rgba(18, 25, 31, .97);
}
.site-header.is-scrolled {
    background: rgba(18, 25, 31, .97);
    box-shadow: 0 2px 14px rgba(0,0,0,.4);
}
.header-inner {
    max-width: var(--container-max);
    margin: 0 auto;
    padding: 0 24px;
    height: 100%;
    display: flex;
    align-items: center;
    gap: 24px;
}
.site-branding { flex-shrink: 0; }
.site-logo-link {
    color: var(--color-white);
    font-weight: 700;
    font-size: 1.1rem;
    line-height: 1.3;
    display: flex;
    align-items: center;
    gap: 10px;
}
.site-logo-link:hover { text-decoration: none; opacity: .85; }
/* ロゴの高さはここ1か所だけで管理する（画像・仮SVGとも共通、PC/スマホ共通） */
.site-logo-img { height: 56px; width: auto; display: block; flex-shrink: 0; }
.site-logo-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: rgba(255,255,255,.75);
    width: 56px;
    height: 56px;
}
.site-title-text { display: inline-block; }

.global-nav { margin-left: auto; }
.nav-menu { display: flex; gap: 2px; }
.nav-menu li a {
    display: block;
    padding: 6px 12px;
    color: var(--color-white);
    font-size: var(--font-size-sm);
    font-weight: 600;
    border-radius: 4px;
    position: relative;
    transition: background .2s ease;
    white-space: nowrap;
}
.nav-menu li a::after {
    content: '';
    position: absolute;
    bottom: 3px;
    left: 12px;
    right: 12px;
    height: 2px;
    background: rgba(255,255,255,.8);
    border-radius: 1px;
    transform: scaleX(0);
    transform-origin: center;
    transition: transform .2s ease;
}
.nav-menu li a:hover { background: rgba(255,255,255,.1); text-decoration: none; }
.nav-menu li a:hover::after { transform: scaleX(1); }
.nav-menu li.current-menu-item > a { background: rgba(255,255,255,.2); }
.nav-menu li.current-menu-item > a::after { transform: scaleX(1); }

/* ハンバーガー（SP） */
.nav-toggle {
    display: none;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    width: 36px; height: 36px;
    flex-shrink: 0; /* サイトタイトルが長い場合でもボタン幅を死守（潰れ防止） */
    background: none;
    border: none;
    cursor: pointer;
    margin-left: auto;
}
.nav-toggle span { display: block; height: 2px; background: var(--color-white); border-radius: 2px; }

/* ===== ページ本体（ヘッダー分オフセット）===== */
/* padding-top は背景色を持つ .main-content 側に移動（白帯防止） */
#page-content { padding-top: 0; }
.front-page #page-content,
.home #page-content { padding-top: 0; } /* フロントページはヒーローが全画面 */

/* ===== ヒーロー ===== */
.hero-section { padding: 0; overflow: hidden; }
.hero-wrapper { position: relative; height: 520px; }

.hero-bg {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
}
.hero-bg--default {
    background: linear-gradient(135deg, var(--color-primary-dk) 0%, var(--color-primary) 65%, #1a7a6e 100%);
}
.hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to bottom, rgba(0,0,0,.18) 0%, rgba(0,0,0,.38) 100%);
}

/* スライダー：バナーボックスだけが切り替わる */
.hero-slider {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: flex-end;
    padding: 0 48px 52px;
}
.hero-slides { position: relative; width: 100%; max-width: 640px; height: 80px; }
.hero-slide {
    position: absolute;
    inset: 0;
    opacity: 0;
    pointer-events: none; /* 非表示スライドのリンクがクリックを拾わないようにする */
    transition: opacity .9s ease;
    display: flex;
    align-items: center;
}
.hero-slide.is-active { opacity: 1; pointer-events: auto; }

/* 白い角丸バナーボックス */
.hero-banner-box {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    background: rgba(255,255,255,.93);
    backdrop-filter: blur(6px);
    border-radius: var(--radius-lg);
    padding: 14px 20px;
    color: var(--color-text);
    max-width: 100%;
    box-shadow: 0 4px 20px rgba(0,0,0,.22);
    transition: transform .2s, box-shadow .2s;
}
.hero-banner-box:hover { transform: translateY(-2px); box-shadow: 0 6px 24px rgba(0,0,0,.28); text-decoration: none; }
.hero-new-tag {
    background: var(--color-accent);
    color: var(--color-white);
    font-size: var(--font-size-xs);
    font-weight: 700;
    padding: 3px 10px;
    border-radius: 3px;
    letter-spacing: .03em;
    flex-shrink: 0;
}
.hero-banner-title { font-size: 1rem; font-weight: 600; color: var(--color-text); flex: 1; line-height: 1.45; }
.hero-banner-arrow { font-size: 1.15rem; color: var(--color-primary); flex-shrink: 0; }

/* ドットナビ（バナーボックスの下・ヒーロー内）*/
.hero-dots {
    position: absolute;
    bottom: 18px;
    left: 0;
    display: flex;
    gap: 8px;
}
.hero-dot {
    width: 9px; height: 9px;
    border-radius: 50%;
    background: rgba(255,255,255,.45);
    border: none;
    cursor: pointer;
    transition: background .3s;
}
.hero-dot.is-active { background: var(--color-white); }

/* スクロールインジケーター（円形・マウス型） */
.scroll-indicator {
    position: absolute;
    bottom: 32px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    z-index: 10;
    pointer-events: none;
    transition: opacity .4s ease;
}
.scroll-indicator.is-hidden { opacity: 0; }
.scroll-indicator::after {
    content: 'Scroll';
    font-size: 11px;
    letter-spacing: 0.15em;
    color: rgba(255,255,255,.70);
    line-height: 1;
}
.scroll-indicator__ring {
    width: 52px;
    height: 52px;
    border: 2px solid rgba(255,255,255,.70);
    border-radius: 50%;
    box-sizing: border-box;
    display: flex;
    justify-content: center;
    padding-top: 10px;
}
.scroll-indicator__dot {
    width: 5px;
    height: 5px;
    flex-shrink: 0;
    background: rgba(255,255,255,.70);
    border-radius: 50%;
    animation: scroll-dot-move 1.8s ease-in-out infinite;
}
@keyframes scroll-dot-move {
    0%   { transform: translateY(0);    opacity: 1; }
    70%  { transform: translateY(22px); opacity: 0; }
    100% { transform: translateY(0);    opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
    .scroll-indicator__dot { animation: none; transform: translateY(10px); }
}


/* ===== 共通見出し ===== */
.section-label {
    font-size: var(--font-size-2xl);
    font-weight: 700;
    color: var(--color-primary);
    position: relative;
    padding-bottom: 10px;
    margin-bottom: 0;
}
.section-label::after {
    content: '';
    display: block;
    position: absolute;
    bottom: 0;
    left: 0;
    width: 36px;
    height: 3px;
    background: var(--color-primary);
    border-radius: 2px;
}
.section-label--center { margin-bottom: 28px; }
.section-label--center::after { left: 50%; transform: translateX(-50%); }

/* ===== ボタン共通 ===== */
.btn-more-text {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--color-primary);
    font-size: .9rem;
    font-weight: 600;
    border-bottom: 1px solid var(--color-primary);
    padding-bottom: 2px;
    transition: color .2s ease, border-color .2s ease;
}
.btn-more-text:hover { color: var(--color-primary-dk); border-color: var(--color-primary-dk); text-decoration: none; }


/* ===== お知らせセクション ===== */
.section-news {
    background: var(--color-white);
    padding: var(--space-8) 0;
}
.news-layout {
    display: grid;
    grid-template-columns: 2fr 3fr;
    gap: 48px;
    align-items: stretch;
}
/* 左カラム：セクション画像 */
.news-image-col { min-height: 260px; }
.news-section-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: var(--radius);
    display: block;
}
.news-section-img-placeholder {
    width: 100%;
    height: 100%;
    min-height: 260px;
    background: linear-gradient(135deg, #c0c8d8, #8fa0b8);
    border-radius: var(--radius);
}
/* 右カラム */
.news-section-label { margin-bottom: 20px; }

.news-list { display: flex; flex-direction: column; }
.news-item {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 10px;
    padding: 13px 0;
    border-bottom: 1px solid var(--color-border);
    transition: background .2s ease;
}
.news-item:hover { background: var(--color-bg); }
.news-date { color: var(--color-text-light); font-size: var(--font-size-sm); white-space: nowrap; flex-shrink: 0; }

/* カテゴリタグ（旗アイコン） */
.news-tag {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: var(--font-size-xs);
    font-weight: 700;
    padding: 2px 9px;
    border-radius: 3px;
    white-space: nowrap;
    flex-shrink: 0;
    color: var(--color-white);
    background: var(--cat-default);
}
.news-tag::before {
    content: '';
    display: inline-block;
    width: 6px; height: 8px;
    background: rgba(255,255,255,.45);
    clip-path: polygon(0 0, 100% 0, 100% 70%, 50% 100%, 0 70%);
    flex-shrink: 0;
}
/* カテゴリ別色（slugは英語に変更済み）*/
.news-tag--event  { background: var(--cat-event); }
.news-tag--award  { background: var(--cat-award); }
.news-tag--grant  { background: var(--cat-grant); }
.news-tag--other  { background: var(--cat-other); }
.news-tag--info   { background: var(--cat-default); }

.news-title-link { color: var(--color-text); flex: 1; min-width: 0; font-size: .95rem; transition: color .2s ease; }
.news-title-link:hover { color: var(--color-primary); text-decoration: none; }
.news-footer { margin-top: 20px; display: flex; justify-content: flex-end; }


/* ===== イベント情報セクション ===== */
.section-events {
    background: var(--color-bg);
    padding: var(--space-8) 0;
    text-align: center;
}
.event-carousel-wrap {
    position: relative;
    /* .container の外（コンテナ外に配置）にあるため、共有Canvas(.mol-pattern-canvas, z:2)より
       確実に前面に出るよう明示的にスタッキングコンテキストを作る */
    z-index: 3;
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 0 0 20px;
}
.event-carousel { overflow: hidden; flex: 1; }
.event-carousel-track {
    display: flex;
    gap: 20px;
    transition: transform .4s ease;
}
.event-card { flex: 0 0 220px; text-align: left; }
.event-card-link { color: var(--color-text); display: block; transition: transform .2s ease; }
.event-card-link:hover { text-decoration: none; transform: translateY(-3px); }
.event-card-link:hover .event-card-img { opacity: .88; box-shadow: 0 6px 16px rgba(0,0,0,.18); }
.event-card-img {
    width: 100%;
    height: 140px;
    border-radius: var(--radius);
    overflow: hidden;
    background: var(--color-border);
    transition: opacity .2s ease, box-shadow .2s ease;
}
.event-card-img img { width: 100%; height: 100%; object-fit: cover; }
.event-card-placeholder { width: 100%; height: 100%; background: linear-gradient(135deg, #d5d8dc, #aeb6bf); }
.event-card-title { margin-top: 10px; font-size: var(--font-size-sm); line-height: 1.45; color: var(--color-text); }

/* ===== 埋め込みリンクカード（サイト内 news/event/award/grant を「埋め込み」ブロックで貼った場合）===== */
.shibu-embed-card { margin: 20px 0; }
.shibu-embed-card-link {
    display: flex;
    align-items: stretch;
    gap: 0;
    background: var(--color-white);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow);
    overflow: hidden;
    color: var(--color-text);
    transition: transform .2s ease, box-shadow .2s ease;
}
.shibu-embed-card-link:hover {
    text-decoration: none;
    transform: translateY(-3px);
    box-shadow: 0 6px 16px rgba(0,0,0,.18);
}
.shibu-embed-card-img { flex: 0 0 200px; position: relative; }
.shibu-embed-card-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.shibu-embed-card-noimg {
    width: 100%; height: 100%;
    min-height: 120px;
    display: flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, var(--color-primary-dk), var(--color-primary));
    color: rgba(255,255,255,.85);
    position: relative;
    overflow: hidden;
}
.shibu-embed-card-noimg--event { background: linear-gradient(135deg, #0b6e8f, var(--cat-event)); }
.shibu-embed-card-noimg--award { background: linear-gradient(135deg, #00915c, var(--cat-award)); }
.shibu-embed-card-noimg--grant { background: linear-gradient(135deg, #c23a68, var(--cat-grant)); }
/* 分子ネットワーク風の軽い装飾点（静的・CSSのみ） */
.shibu-embed-card-noimg::before,
.shibu-embed-card-noimg::after {
    content: '';
    position: absolute;
    width: 6px; height: 6px;
    border-radius: 50%;
    background: rgba(255,255,255,.35);
}
.shibu-embed-card-noimg::before { top: 16%; left: 18%; }
.shibu-embed-card-noimg::after  { bottom: 18%; right: 22%; }
.shibu-embed-card-body {
    flex: 1;
    min-width: 0;
    padding: 14px 18px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 6px;
}
.shibu-embed-card-meta { display: flex; align-items: center; gap: 10px; }
.shibu-embed-card-label {
    display: inline-block;
    padding: 2px 10px;
    border-radius: 3px;
    font-size: var(--font-size-xs);
    font-weight: 700;
    color: var(--color-white);
    background: var(--color-primary);
    white-space: nowrap;
}
.shibu-embed-card-label--event { background: var(--cat-event); }
.shibu-embed-card-label--award { background: var(--cat-award); }
.shibu-embed-card-label--grant { background: var(--cat-grant); }
.shibu-embed-card-date { font-size: var(--font-size-xs); color: var(--color-text-light); white-space: nowrap; }
.shibu-embed-card-title {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
    line-height: 1.5;
    color: var(--color-text);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.shibu-embed-card-more {
    margin-top: auto;
    align-self: flex-end;
    font-size: var(--font-size-xs);
    font-weight: 600;
    color: var(--color-primary);
    transition: transform .2s ease;
}
.shibu-embed-card-link:hover .shibu-embed-card-more { transform: translateX(3px); }

@media (max-width: 768px) {
    .shibu-embed-card-img { flex: 0 0 110px; }
    .shibu-embed-card-noimg { min-height: 100px; }
    .shibu-embed-card-noimg svg { width: 22px; height: 22px; }
    .shibu-embed-card-body { padding: 10px 12px; gap: 4px; }
    .shibu-embed-card-title { font-size: .88rem; }
}
@media (max-width: 400px) {
    /* 極端に狭い幅では日付を隠し、タイトル優先で詰まりを避ける */
    .shibu-embed-card-img { flex: 0 0 84px; }
    .shibu-embed-card-date { display: none; }
}
.carousel-prev, .carousel-next {
    flex-shrink: 0;
    width: 36px; height: 36px;
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: 50%;
    font-size: 1rem;
    cursor: pointer;
    color: var(--color-primary);
    transition: background .2s, color .2s;
    display: flex; align-items: center; justify-content: center;
}
.carousel-prev:hover, .carousel-next:hover { background: var(--color-primary); color: var(--color-white); }
.carousel-prev:disabled, .carousel-next:disabled { opacity: .35; cursor: default; }
.event-more-wrap { text-align: right; }


/* ===== 支部表彰 / 助成について（濃紺背景 #08263f）===== */
.section-awards-grants {
    background: #12191f;
    padding: 100px 0;
    color: rgba(255,255,255,.92);
    position: relative;
    overflow: hidden;
    /* isolation:isolate は使用しない：.mol-pattern-wrap の共有Canvasが
       このセクションの上にも前面に出られるよう、z-index を親と共有させる */
}
/* 専用背景レイヤー（JSパララックス対象：transform で移動） */
/* JS側の translateY は ±20px。inset:0（セクションぴったりサイズ）のままだと、
   shift が非ゼロの状態で静止したとき（アンカージャンプ等）に上端 or 下端で
   セクション自身の背景色（#12191f）が露出してしまう。
   上下に ±24px のオーバーシュート余白を持たせ、常にセクション全体を覆うようにする。 */
.ag-bg-layer {
    position: absolute;
    top: -24px; right: 0; bottom: -24px; left: 0;
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
    z-index: 0;
    filter: blur(var(--ag-blur, 0px));
    will-change: transform;
}
/* ダークオーバーレイ（alpha は --ag-overlay-alpha で動的制御） */
/* z-index:1 で ag-bg-layer(z:0)より確実に前面に出す。.mol-pattern-wrap の共有Canvas(z:2)はさらにこの上に重なる */
.section-awards-grants--has-bg::after {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(18,25,31,var(--ag-overlay-alpha, 0.18));
    z-index: 1;
    pointer-events: none;
}
/* 背景画像有効時：右側写真を非表示、テキストを全幅に */
.section-awards-grants--has-bg .ag-single-photo { display: none; }
.section-awards-grants--has-bg .ag-layout { grid-template-columns: 1fr; }
.section-awards-grants::before {
    content: '03';
    position: absolute;
    right: 2%;
    top: 12%;
    transform: none;
    font-size: clamp(9rem, 15vw, 14rem);
    font-weight: 700;
    color: rgba(255,255,255,.06);
    font-family: var(--font-base);
    line-height: 1;
    pointer-events: none;
    user-select: none;
    z-index: 3; /* 共有Canvas(z:2)より前面、container と同レベル */
    letter-spacing: -.04em;
}
.section-awards-grants .container { position: relative; z-index: 3; }
/* [旧パターン backup] - ag-deco SVG 幾何学装飾コンテナ */
@media not all {
.ag-deco { position:absolute; inset:0; pointer-events:none; z-index:0; overflow:visible; }
.ag-deco-svg { position:absolute; overflow:visible; }
.ag-deco-svg--tr { top:0; right:0; width:300px; height:260px; }
.ag-deco-svg--bl { bottom:0; left:0; width:260px; height:240px; }
} /* end @media not all backup */
/* 英字サブタイトル */
.ag-en {
    display: block;
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .38em;
    text-transform: uppercase;
    color: rgba(255,255,255,.55);
    opacity: 1;
    margin-bottom: 8px;
}
/* 左：2段テキスト　右：1枚横長画像 */
.ag-layout {
    display: grid;
    grid-template-columns: 1fr 420px;
    gap: 40px;
    align-items: start;
}
/* 左カラム：テキスト2段 */
.ag-texts { display: flex; flex-direction: column; }
.ag-block { flex: 1; padding: var(--space-6) 0; }
.ag-block--divider {
    border-top: 1px solid rgba(255,255,255,.15);
}
.ag-title {
    font-size: clamp(1.8rem, 3.5vw, 2.4rem);
    font-weight: 700;
    color: rgba(255,255,255,.95);
    margin-bottom: 14px;
    padding-bottom: 10px;
    border-bottom: 2px solid rgba(255,255,255,.2);
}
.ag-note { font-size: .9rem; line-height: 1.85; margin-bottom: 16px; }
.ag-links { display: flex; flex-direction: column; gap: 8px; }
/* 募集が複数件あるとき、1件ずつの切れ目がはっきり分かるよう余白を広めに取る */
.ag-item + .ag-item { margin-top: 44px; }
.ag-links--archive { margin-top: 16px; align-items: flex-end; }

/* 募集エントリ1件分の見出し＋メタ情報（shibu_render_award_entry()が出力）。
   明るい背景（アーカイブページ）向けの既定色はこの下のセクションで定義し、
   ここでは暗い背景（トップページ「支部表彰・助成」セクション）向けに上書きする。 */
.section-awards-grants .shibu-award-heading { color: rgba(255,255,255,.95); }
.section-awards-grants .shibu-award-meta { color: rgba(255,255,255,.65); }
.ag-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: rgba(255,255,255,.82);
    font-size: .9rem;
    font-weight: 600;
    border-bottom: 1px solid rgba(255,255,255,.35);
    padding-bottom: 2px;
    width: fit-content;
    transition: color .2s ease, border-color .2s ease;
}
.ag-link:hover { color: var(--color-white); border-color: rgba(255,255,255,.7); text-decoration: none; }
.ag-link::before { content: '›'; font-size: 1.1rem; }
.ag-link--inactive {
    color: rgba(255,255,255,.38);
    font-weight: 400;
    border-bottom-color: rgba(255,255,255,.18);
    cursor: default;
    pointer-events: none;
}
/* 右カラム：横長画像（aspect-ratio: 4/3） */
.ag-single-photo {
    position: relative;
    border-radius: var(--radius);
    overflow: hidden;
    aspect-ratio: 4 / 3;
    width: 100%;
}
.ag-single-photo img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.ag-photo-placeholder {
    position: absolute;
    inset: 0;
    background: rgba(255,255,255,.06);
    border-radius: var(--radius);
    border: 2px dashed rgba(255,255,255,.18);
}


/* ===== About Us / 支部について ===== */
.section-about {
    background: #F5F2EE;
    padding: 100px 0;
    position: relative;
    overflow: hidden;
}
.section-about .container { position: relative; z-index: 3; }
/* [旧パターン backup] - about-deco SVG 幾何学装飾コンテナ */
@media not all {
.about-deco { position:absolute; inset:0; pointer-events:none; z-index:0; overflow:visible; }
.about-deco-svg { position:absolute; overflow:visible; }
.about-deco-svg--tr { top:0; right:0; width:260px; height:220px; }
.about-deco-svg--bl { bottom:0; left:0; width:220px; height:200px; }
} /* end @media not all backup */
/* 英字サブタイトル */
.about-section-en {
    display: block;
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .38em;
    text-transform: uppercase;
    color: var(--color-primary);
    opacity: .5;
    margin-bottom: 10px;
}
/* 見出し：お知らせセクションと統一 */
.about-section-label {
    font-size: clamp(1.8rem, 3.5vw, 2.4rem);
    white-space: nowrap;
    color: var(--color-primary);
    margin-bottom: 0;
}
.about-section-label::after { background: var(--color-primary); }
.about-layout {
    display: grid;
    grid-template-columns: 220px 1fr;
    gap: var(--space-8);
    align-items: start;
}
.about-en-title {
    font-size: 2.2rem;
    font-weight: 700;
    color: var(--color-primary);
    line-height: 1;
    margin-bottom: 6px;
}
.about-ja-subtitle {
    font-size: .9rem;
    color: var(--color-text-light);
    letter-spacing: .05em;
}
.about-body {
    font-size: var(--font-size-base);
    line-height: var(--line-height-base);
    color: var(--color-text);
    margin-bottom: 32px;
    text-align: justify;
    text-justify: inter-character;
}
.about-body p { margin-bottom: .8em; }
.officers-table {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 24px;
    font-size: .9rem;
}
.officers-table td {
    padding: 8px 14px 8px 0;
    border-bottom: 1px solid var(--color-border);
    vertical-align: top;
}
.officer-role {
    color: var(--color-text-light);
    white-space: nowrap;
    width: 100px;
}
.officer-name { font-weight: 500; }
.about-doc-links { display: flex; gap: 20px; flex-wrap: wrap; }
.about-doc-link {
    color: var(--color-primary);
    font-size: var(--font-size-sm);
    border-bottom: 1px solid var(--color-primary);
    padding-bottom: 1px;
}
.about-doc-link:hover { text-decoration: none; opacity: .7; }

/* 装飾数字「04」: 支部についてと支部長あいさつの境界をまたぐブリッジ */
.fp-num-bridge {
    position: relative;
    height: 0;
    overflow: visible;
    pointer-events: none;
    user-select: none;
    z-index: 3;
}
.fp-num-bridge::after {
    content: '04';
    position: absolute;
    right: 2%;
    top: 0;
    transform: translateY(-50%);
    font-size: clamp(9rem, 15vw, 14rem);
    font-weight: 700;
    color: rgba(80,60,40,.038);
    font-family: var(--font-base);
    line-height: 1;
    letter-spacing: -.04em;
}


/* ===== 支部長あいさつ ===== */
.section-greeting {
    background: #F5F2EE;
    padding: 100px 0;
    position: relative;
    overflow: hidden;
}
.section-greeting .container { position: relative; z-index: 3; }
/* [旧パターン backup] - greeting-deco SVG 幾何学装飾コンテナ */
@media not all {
.greeting-deco { position:absolute; inset:0; pointer-events:none; z-index:0; overflow:visible; }
.greeting-deco-svg { position:absolute; overflow:visible; }
.greeting-deco-svg--tr { top:0; right:0; width:220px; height:180px; }
.greeting-deco-svg--bl { bottom:0; left:0; width:200px; height:180px; }
} /* end @media not all backup */
/* 英字サブタイトル */
.greeting-section-en {
    display: block;
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .38em;
    text-transform: uppercase;
    color: var(--color-primary);
    opacity: .5;
    margin-bottom: 10px;
}
.greeting-layout {
    display: grid;
    grid-template-columns: 400px 1fr;
    gap: 0;
    align-items: center;
    position: relative;
}
/* 写真フレーム：背面装飾を支持する相対配置コンテナ */
.greeting-photo-frame {
    position: relative;
    padding: 22px 22px 0 0;
}
/* 背面装飾：ずらした色付き四角 */
.greeting-photo-bg-rect {
    position: absolute;
    top: 0;
    right: 0;
    width: calc(100% - 20px);
    height: calc(100% - 14px);
    background: rgba(26,74,107,.09);
    border-radius: 10px;
}
/* [旧パターン backup] - 支部長写真 右上装飾四角（枠線のみ小四角） */
@media not all {
.greeting-photo-bg-rect::after {
    content: '';
    position: absolute;
    top: -10px;
    right: -10px;
    width: 52px;
    height: 52px;
    border: 2px solid rgba(26,74,107,.22);
    border-radius: 4px;
}
} /* end @media not all backup */
.greeting-photo-bg-rect::after { content: none; }
/* 写真インナー：シャドウと丸角 */
.greeting-photo-inner {
    position: relative;
    z-index: 1;
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 8px 32px rgba(0,0,0,.18);
}
.greeting-photo { width: 100%; display: block; }
.greeting-photo-placeholder {
    width: 100%;
    height: 480px;
    background: linear-gradient(135deg, #c0c8d0, #8fa0b0);
}
/* 名前バッジ：写真下部グラデーションオーバーレイ */
.greeting-name-badge {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 28px 20px 20px;
    background: linear-gradient(to top, rgba(8,26,46,.80) 0%, rgba(8,26,46,0) 100%);
}
.greeting-badge-name {
    display: block;
    font-size: 1.1rem;
    font-weight: 700;
    letter-spacing: .03em;
    color: #fff;
}
/* テキストカード：白背景・シャドウ・写真に重なる */
.greeting-text-col {
    position: relative;
    z-index: 2;
    margin-left: -36px;
    margin-top: 56px;
    align-self: center;
}
.greeting-card {
    background: #fff;
    border-radius: 12px;
    padding: 40px 44px 36px 52px;
    box-shadow: 0 6px 28px rgba(0,0,0,.13);
}
.greeting-title {
    font-size: clamp(1.8rem, 3.5vw, 2.4rem);
    font-weight: 700;
    color: var(--color-primary);
    margin-bottom: 20px;
    padding-bottom: 10px;
    border-bottom: 3px solid var(--color-primary);
}
.greeting-body { font-size: var(--font-size-base); line-height: var(--line-height-base); margin-bottom: 24px; text-align: justify; text-justify: inter-character; }
.greeting-body p { margin-bottom: .8em; }
.greeting-sign { font-size: .9rem; color: var(--color-text-light); text-align: right; margin-top: 16px; }


/* ===== リンクセクション ===== */
.section-links {
    background: #F5F2EE;
    padding: 100px 0;
    position: relative;
    overflow: hidden;
}
.section-links::before {
    content: '05';
    position: absolute;
    left: 2%;
    top: auto;
    bottom: -4%;
    transform: none;
    font-size: clamp(9rem, 15vw, 14rem);
    font-weight: 700;
    color: rgba(80,60,40,.035);
    font-family: var(--font-base);
    line-height: 1;
    pointer-events: none;
    user-select: none;
    z-index: 0;
    letter-spacing: -.04em;
}
.section-links .container { position: relative; z-index: 3; }
.section-links .section-label { font-size: clamp(1.8rem, 3.5vw, 2.4rem); }
/* [旧パターン backup] - links-deco SVG 幾何学装飾コンテナ */
@media not all {
.links-deco { position:absolute; inset:0; pointer-events:none; z-index:0; overflow:visible; }
.links-deco-svg { position:absolute; overflow:visible; }
.links-deco-svg--tr { top:0; right:0; width:260px; height:220px; }
.links-deco-svg--bl { bottom:0; left:0; width:220px; height:200px; }
} /* end @media not all backup */
/* 英字サブタイトル */
.links-section-en {
    display: block;
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .38em;
    text-transform: uppercase;
    color: var(--color-primary);
    opacity: .5;
    margin-bottom: 10px;
}
.links-subtitle {
    font-size: 1rem;
    font-weight: 700;
    color: var(--color-primary);
    margin: 36px 0 16px;
}
.links-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px 32px;
    margin-top: 20px;
}
.links-item {
    display: flex;
    align-items: center;
    gap: 10px;
}
.links-item a {
    color: var(--color-text);
    font-size: .9rem;
    font-weight: 600;
    transition: color .2s;
}
.links-item a:hover { color: var(--color-primary); text-decoration: none; }
/* チェックマークアイコン */
.links-check {
    flex-shrink: 0;
    width: 18px; height: 18px;
    border-radius: 50%;
    background: var(--color-primary);
    display: flex; align-items: center; justify-content: center;
}
.links-check::after {
    content: '';
    display: block;
    width: 5px; height: 9px;
    border: 2px solid var(--color-white);
    border-top: none;
    border-left: none;
    transform: rotate(42deg) translateY(-1px);
}
.links-check--old { background: #2980b9; }


/* ===== フッター ===== */
.site-footer {
    background: #12191f;
    color: rgba(255,255,255,.82);
    padding: var(--space-7) 0 var(--space-5);
}
.footer-inner {
    max-width: var(--container-max);
    margin: 0 auto;
    padding: 0 24px;
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 40px;
    align-items: start;
}
.footer-brand { }
.footer-site-name {
    font-size: 1rem;
    font-weight: 700;
    color: rgba(255,255,255,.95);
    line-height: 1.4;
}
.footer-label {
    font-size: var(--font-size-xs);
    color: rgba(255,255,255,.45);
    margin: 20px 0 6px;
    letter-spacing: .05em;
    text-transform: uppercase;
}
.footer-contact p { font-size: .9rem; margin-bottom: 3px; color: rgba(255,255,255,.75); }
.footer-contact a { color: rgba(255,255,255,.75); }
.footer-contact a:hover { color: #fff; text-decoration: none; }
.footer-bottom {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    gap: 24px;
    margin-top: 20px;
    padding-top: 20px;
    border-top: 1px solid rgba(255,255,255,.12);
}
.footer-links a { color: rgba(255,255,255,.45); font-size: var(--font-size-xs); }
.footer-links a:hover { color: rgba(255,255,255,.9); text-decoration: none; }
.footer-copy { margin-left: auto; font-size: var(--font-size-xs); color: rgba(255,255,255,.38); }


/* ===== アーカイブ・個別ページ共通 ===== */
.page-title { font-size: 1.8rem; font-weight: 700; color: var(--color-primary); margin-bottom: 8px; padding-top: 32px; }
.page-subtitle { font-size: 1.1rem; color: var(--color-text-light); margin-bottom: 40px; }
.article-header { margin-bottom: 32px; }
.article-title { font-size: 1.65rem; font-weight: 700; line-height: 1.45; }
.article-meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.article-body { line-height: 1.9; font-size: .98rem; }
.article-body p { margin-bottom: 16px; }
.article-body h2 { font-size: 1.25rem; color: var(--color-primary); margin: 28px 0 10px; }
.article-nav { margin-top: 44px; padding-top: 28px; border-top: 1px solid var(--color-border); }

/* ===== お知らせ一覧アーカイブ ===== */

/* ヘッダー行：タイトル ＋ フィルター */
.archive-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 16px;
    margin-bottom: 28px;
    padding-top: 32px;
}
.archive-title {
    font-size: var(--font-size-3xl);
    font-weight: 700;
    color: var(--color-text);
    margin: 0;
}
.archive-filters { display: flex; gap: 12px; }

/* カスタムドロップダウン */
.filter-dropdown {
    position: relative;
    display: inline-flex;
    align-items: center;
}
.filter-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    border: 1.5px solid #bbb;
    border-radius: 24px;
    background: var(--color-white);
    color: var(--color-text);
    font-size: .88rem;
    font-family: var(--font-base);
    cursor: pointer;
    outline: none;
    white-space: nowrap;
    transition: border-color .2s, color .2s;
}
.filter-btn:hover,
.filter-dropdown.is-open .filter-btn { border-color: var(--color-primary); }
.filter-arrow {
    font-size: .7rem;
    color: var(--color-text-light);
    pointer-events: none;
    transition: transform .2s ease;
}
.filter-dropdown.is-open .filter-arrow { transform: rotate(180deg); }

.filter-list {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    min-width: 100%;
    background: var(--color-white);
    border-radius: var(--radius-lg);
    box-shadow: 0 4px 20px rgba(0,0,0,.13);
    list-style: none;
    margin: 0;
    padding: 6px;
    z-index: 500;
    opacity: 0;
    transform: scaleY(.94) translateY(-4px);
    transform-origin: top center;
    pointer-events: none;
    transition: opacity .17s ease, transform .17s ease;
}
.filter-dropdown.is-open .filter-list {
    opacity: 1;
    transform: scaleY(1) translateY(0);
    pointer-events: auto;
}
/* 上方向に展開するケース（下に十分な余白がない場合に JS が付与） */
.filter-dropdown.opens-up .filter-list {
    top: auto;
    bottom: calc(100% + 6px);
    transform-origin: bottom center;
    transform: scaleY(.94) translateY(4px);
}
.filter-dropdown.opens-up.is-open .filter-list {
    transform: scaleY(1) translateY(0);
}
.filter-option {
    padding: 9px 14px;
    border-radius: 8px;
    cursor: pointer;
    font-size: .88rem;
    color: var(--color-text);
    white-space: nowrap;
    transition: background .12s;
}
.filter-option:hover { background: var(--color-bg); }
.filter-option.is-current {
    background: #daeef9;
    color: var(--color-primary);
    font-weight: 500;
}

/* ===== お知らせエントリーリスト ===== */
.news-entries { list-style: none; margin: 0; }
.news-entry {
    padding: 18px 0;
    border-bottom: 1px solid var(--color-border);
    transition: background .2s ease;
}
.news-entry:first-child { border-top: 1px solid var(--color-border); }
.news-entry:hover { background: var(--color-bg); }

/* メタ行（日付＋旗＋カテゴリ）*/
.news-entry-meta {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 6px;
}
.news-entry-date {
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
    white-space: nowrap;
}
.news-entry-cat {
    font-size: .85rem;
    color: var(--color-text);
}

/* タイトル行 */
.news-entry-title {
    display: block;
    font-size: var(--font-size-lg);
    color: var(--color-text);
    line-height: 1.5;
    transition: color .2s;
}
.news-entry-title:hover { color: var(--color-primary); text-decoration: none; }

/* ===== ブックマーク旗アイコン（共通）===== */
.news-flag {
    display: inline-block;
    flex-shrink: 0;
    width: 11px;
    height: 15px;
    background: var(--cat-default);
    clip-path: polygon(0 0, 100% 0, 100% 72%, 50% 100%, 0 72%);
}
.news-flag--event { background: var(--cat-event); }
.news-flag--award { background: var(--cat-award); }
.news-flag--grant { background: var(--cat-grant); }
.news-flag--other { background: var(--cat-other); }

/* ===== ページネーション（一覧ページ専用）===== */
.news-pagination { margin-top: 48px; display: flex; justify-content: center; align-items: center; gap: 4px; }
/* 個別ボタンはグローバル .page-numbers ルールで36x36ボックスに。余白だけ上書き */
.news-pagination .page-numbers { margin: 0; }
.news-pagination .page-numbers:hover { color: var(--color-primary); text-decoration: none; }
.news-pagination .page-numbers.current { font-weight: 700; }
.news-pagination .page-numbers.dots { pointer-events: none; border-color: transparent; }
/* 「前へ」「次へ」は丸ボタン */
.news-pagination .prev.page-numbers,
.news-pagination .next.page-numbers {
    background: var(--color-primary);
    color: var(--color-white);
    border-radius: 50%;
    border-color: var(--color-primary);
    padding: 0;
}
.news-pagination .prev.page-numbers:hover,
.news-pagination .next.page-numbers:hover { background: var(--color-primary-dk); border-color: var(--color-primary-dk); text-decoration: none; }
.pagination-prev-icon,
.pagination-next-icon { display: flex; align-items: center; justify-content: center; }

/* ===== お知らせ個別ページ ===== */
.single-news .container { max-width: 860px; padding-top: 56px; }
.news-article { margin-bottom: var(--space-7); }

/* メタ行：左＝旗＋カテゴリ、右＝日付 */
.news-article-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 16px;
}
.news-article-cat {
    display: flex;
    align-items: center;
    gap: 7px;
}
.news-article-cat-name {
    font-size: .9rem;
    color: var(--color-text);
}
.news-article-date {
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
    white-space: nowrap;
}

/* タイトル */
.news-article-title {
    font-size: var(--font-size-3xl);
    font-weight: 700;
    line-height: var(--line-height-tight);
    color: var(--color-text);
    margin-bottom: var(--space-6);
}

/* 本文 */
.news-article-body {
    font-size: var(--font-size-base);
    line-height: var(--line-height-base);
    color: var(--color-text);
    padding-left: 1em;
}
/* お知らせ個別 アイキャッチ */
.news-featured-img { margin: 16px 0 24px; border-radius: var(--radius); overflow: hidden; }
.news-featured-img .news-thumbnail-img { width: 100%; height: auto; display: block; }
.news-article-body p { margin-bottom: 1em; }
.news-article-body a { color: var(--color-primary); }
.news-article-body h2 { font-size: var(--font-size-lg); color: var(--color-primary); margin: 2em 0 .8em; }
.news-article-body h3 { font-size: var(--font-size-base); margin: 1.5em 0 .6em; }

/* 一覧に戻る */
.article-back { padding-top: 32px; border-top: 1px solid var(--color-border); }

/* ── 固定ページ（page.php、v1.9.0）──
   お知らせ個別ページと同じ明るい背景・本文幅・文字組みに揃える（プライバシーポリシー等を想定）。
   カテゴリ・日付・「NEWS」ラベル・分子ネットワーク背景などお知らせ固有の装飾は付けないため、
   .single-news クラスをそのまま流用せず、固定ページ専用のクラスとして個別に定義している。 */
.main-content.single-page {
    background: #F5F2EE;
    padding: var(--header-height) 0 100px;
}
.single-page .container { max-width: 860px; padding-top: 0; }
.page-article-title {
    font-size: var(--font-size-3xl);
    font-weight: 700;
    line-height: var(--line-height-tight);
    color: var(--color-primary);
    margin-bottom: var(--space-6);
}
.page-article-body {
    font-size: var(--font-size-base);
    line-height: var(--line-height-base);
    color: var(--color-text);
}
.page-article-body p { margin-bottom: 1em; }
.page-article-body a { color: var(--color-primary); }
.page-article-body h2 { font-size: var(--font-size-lg); color: var(--color-primary); margin: 2em 0 .8em; }
.page-article-body h3 { font-size: var(--font-size-base); margin: 1.5em 0 .6em; }

/* サムネイル（アーカイブ・一覧共通から残す）*/
.news-thumb { width: 80px; height: 60px; border-radius: var(--radius); overflow: hidden; background: var(--color-border); }
.news-thumb img { width: 100%; height: 100%; object-fit: cover; }
.news-item-body { min-width: 0; }
.news-item-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 4px; }

/* ボタン */
.btn-more {
    display: inline-block;
    padding: 10px 28px;
    background: var(--color-primary);
    color: var(--color-white);
    border-radius: var(--radius);
    font-size: .95rem;
    transition: background .2s ease, transform .2s ease, box-shadow .2s ease;
}
.btn-more:hover {
    background: var(--color-primary-dk);
    text-decoration: none;
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0,0,0,.2);
}
.btn-back {
    display: inline-block;
    padding: 8px 20px;
    border: 1px solid var(--color-primary);
    color: var(--color-primary);
    border-radius: var(--radius);
    font-size: .9rem;
    transition: background .2s ease, color .2s ease, transform .2s ease, box-shadow .2s ease;
}
.btn-back:hover {
    background: var(--color-primary);
    color: var(--color-white);
    text-decoration: none;
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0,0,0,.15);
}
.section-more { margin-top: 32px; text-align: center; }
.no-posts { color: var(--color-text-light); font-size: .95rem; padding: 20px 0; }


/* ===== お知らせ一覧・個別ページ デザイン統一（トップページと統一） ===== */

/* ── 共通：オフホワイト背景 + 幾何学装飾 ── */
.main-content.archive-news,
.main-content.single-news {
    background: #F5F2EE;
    position: relative;
    overflow: hidden;
    padding: var(--header-height) 0 100px;
}

/* [旧パターン backup] - SVGドットグリッド・二重リング (archive-news/single-news) */
@media not all {
.main-content.archive-news::before,
.main-content.single-news::before {
    content: '';
    position: absolute; top: 0; right: 0; width: 240px; height: 200px;
    background-image: radial-gradient(circle, rgba(26,74,107,.17) 1.2px, transparent 1.2px);
    background-size: 14px 14px; pointer-events: none; z-index: 0;
}
.main-content.archive-news::after,
.main-content.single-news::after {
    content: ''; position: absolute; bottom: 20px; left: -24px; width: 210px; height: 210px;
    background: radial-gradient(circle at 50% 50%, transparent 74px, rgba(26,74,107,.10) 74px, rgba(26,74,107,.10) 76px, transparent 76px),
        radial-gradient(circle at 50% 50%, transparent 44px, rgba(26,74,107,.08) 44px, rgba(26,74,107,.08) 45.5px, transparent 45.5px),
        radial-gradient(circle, rgba(26,74,107,.15) 1.2px, transparent 1.2px);
    background-size: 210px 210px, 210px 210px, 14px 14px;
    background-position: 0 0, 0 0, 0 40px; pointer-events: none; z-index: 0;
}
} /* end @media not all backup */

/* コンテナをデコレーションの上に */
.main-content.archive-news .container,
.main-content.single-news .container {
    position: relative;
    z-index: 1;
    padding-top: 0;
}

/* ── お知らせ一覧 ── */
/* archive-header の上部余白をリセット（section padding で制御） */
.archive-news .archive-header {
    padding-top: 0;
    position: relative;
    overflow: visible;
}

/* 見出し：英字サブタイトル（::before）*/
.archive-news .archive-title::before {
    content: 'NEWS';
    display: block;
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .38em;
    text-transform: uppercase;
    color: var(--color-primary);
    opacity: .5;
    margin-bottom: 10px;
    font-family: var(--font-base);
}

/* 見出し本体：フォントサイズ・色をセクション見出しと統一 */
.archive-news .archive-title {
    font-size: clamp(1.8rem, 3.5vw, 2.4rem);
    font-weight: 700;
    color: var(--color-primary);
    position: relative;
    padding-bottom: 12px;
}

/* 下線バー（::after — section-label と同一スタイル） */
.archive-news .archive-title::after {
    content: '';
    display: block;
    position: absolute;
    bottom: 0;
    left: 0;
    width: 36px;
    height: 3px;
    background: var(--color-primary);
    border-radius: 2px;
}

/* エントリーホバー：オフホワイト背景に合わせて微調整 */
.archive-news .news-entry:hover {
    background: rgba(26,74,107,.05);
}

/* ── お知らせ個別ページ ── */
/* タイトル上の英字サブタイトル */
.single-news .news-article-title::before {
    content: 'NEWS';
    display: block;
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .38em;
    text-transform: uppercase;
    color: var(--color-primary);
    opacity: .5;
    margin-bottom: 12px;
    font-family: var(--font-base);
}

/* タイトル色をプライマリカラーに統一 */
.single-news .news-article-title {
    color: var(--color-primary);
}

/* 本文の不要な左余白を除去 */
.single-news .news-article-body {
    padding-left: 0;
}

/* 戻るボタンの区切り線を背景に合わせて */
.single-news .article-back {
    border-top-color: rgba(26,74,107,.15);
}

/* [旧パターン backup] - SVG電子軌道・結晶格子・ずらし二重円 (archive-news/single-news) */
@media not all {
.archive-news .archive-header::before { content:''; position:absolute; right:-30px; top:50%; transform:translateY(-50%); width:160px; height:110px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 110'%3E%3Cg transform='translate(80,55)'%3E%3Cellipse cx='0' cy='0' rx='68' ry='26' fill='none' stroke='rgba(26,74,107,0.16)' stroke-width='1.4'/%3E%3Ccircle r='3.2' fill='rgba(26,74,107,0.25)'%3E%3CanimateMotion dur='9s' repeatCount='indefinite' path='M68,0 A68,26 0 1,0 -68,0 A68,26 0 1,0 68,0'/%3E%3C/circle%3E%3C/g%3E%3Ccircle cx='120' cy='20' r='3' fill='rgba(26,74,107,0.12)'/%3E%3Ccircle cx='140' cy='8' r='2' fill='rgba(26,74,107,0.08)'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
.archive-news .news-entries { position:relative; }
.archive-news .news-entries::before { content:''; position:absolute; right:-20px; top:10px; width:130px; height:140px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 130 140'%3E%3Cg opacity='0.10' stroke='rgba(26,74,107,1)' stroke-width='0.9' fill='rgba(26,74,107,1)'%3E%3Ccircle cx='24' cy='62' r='2.2'/%3E%3Ccircle cx='50' cy='44' r='2.2'/%3E%3Ccircle cx='76' cy='62' r='2.2'/%3E%3Ccircle cx='76' cy='98' r='2.2'/%3E%3Ccircle cx='50' cy='116' r='2.2'/%3E%3Ccircle cx='24' cy='98' r='2.2'/%3E%3Cline x1='24' y1='62' x2='50' y2='44'/%3E%3Cline x1='50' y1='44' x2='76' y2='62'/%3E%3Cline x1='76' y1='62' x2='76' y2='98'/%3E%3Cline x1='76' y1='98' x2='50' y2='116'/%3E%3Cline x1='50' y1='116' x2='24' y2='98'/%3E%3Cline x1='24' y1='98' x2='24' y2='62'/%3E%3C/g%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
.archive-news .news-entries::after { content:''; position:absolute; left:-40px; bottom:30px; width:130px; height:130px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 130 130'%3E%3Ccircle cx='56' cy='68' r='44' fill='none' stroke='rgba(26,74,107,0.17)' stroke-width='1.3'/%3E%3Ccircle cx='76' cy='58' r='28' fill='none' stroke='rgba(26,74,107,0.11)' stroke-width='1.0'/%3E%3Ccircle cx='42' cy='84' r='5.5' fill='rgba(26,74,107,0.09)'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
.single-news .news-article { position:relative; }
.single-news .news-article::before { content:''; position:absolute; right:-50px; top:20px; width:160px; height:110px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 110'%3E%3Cg transform='translate(80,55)'%3E%3Cellipse cx='0' cy='0' rx='68' ry='26' fill='none' stroke='rgba(26,74,107,0.16)' stroke-width='1.4'/%3E%3Ccircle r='3.2' fill='rgba(26,74,107,0.25)'%3E%3CanimateMotion dur='9s' repeatCount='indefinite' path='M68,0 A68,26 0 1,0 -68,0 A68,26 0 1,0 68,0'/%3E%3C/circle%3E%3C/g%3E%3Ccircle cx='120' cy='20' r='3' fill='rgba(26,74,107,0.12)'/%3E%3Ccircle cx='140' cy='8' r='2' fill='rgba(26,74,107,0.08)'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
.single-news .news-article::after { content:''; position:absolute; left:-50px; top:40%; width:130px; height:130px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 130 130'%3E%3Ccircle cx='56' cy='68' r='44' fill='none' stroke='rgba(26,74,107,0.17)' stroke-width='1.3'/%3E%3Ccircle cx='76' cy='58' r='28' fill='none' stroke='rgba(26,74,107,0.11)' stroke-width='1.0'/%3E%3Ccircle cx='42' cy='84' r='5.5' fill='rgba(26,74,107,0.09)'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
.single-news .article-back { position:relative; }
.single-news .article-back::after { content:''; position:absolute; right:-20px; top:-40px; width:130px; height:140px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 130 140'%3E%3Cg opacity='0.10' stroke='rgba(26,74,107,1)' stroke-width='0.9' fill='rgba(26,74,107,1)'%3E%3Ccircle cx='24' cy='62' r='2.2'/%3E%3Ccircle cx='50' cy='44' r='2.2'/%3E%3Ccircle cx='76' cy='62' r='2.2'/%3E%3Ccircle cx='76' cy='98' r='2.2'/%3E%3Ccircle cx='50' cy='116' r='2.2'/%3E%3Ccircle cx='24' cy='98' r='2.2'/%3E%3Cline x1='24' y1='62' x2='50' y2='44'/%3E%3Cline x1='50' y1='44' x2='76' y2='62'/%3E%3Cline x1='76' y1='62' x2='76' y2='98'/%3E%3Cline x1='76' y1='98' x2='50' y2='116'/%3E%3Cline x1='50' y1='116' x2='24' y2='98'/%3E%3Cline x1='24' y1='98' x2='24' y2='62'/%3E%3C/g%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
} /* end @media not all backup */


/* ===== イベント一覧アーカイブ ===== */
.archive-event .container { padding-top: 32px; }

.event-section-current { margin-bottom: 64px; }
.event-section-past    { margin-bottom: 48px; }

.event-section-heading {
    font-size: var(--font-size-2xl);
    font-weight: 700;
    color: var(--color-text);
    margin-bottom: 32px;
}

/* 今年度イベントリスト */
.event-current-list { list-style: none; display: flex; flex-direction: column; gap: 20px; }
.event-current-item {}
.event-current-link {
    display: flex;
    align-items: center;
    gap: 28px;
    color: var(--color-text);
    transition: opacity .2s ease, transform .2s ease;
}
.event-current-link:hover { opacity: .85; text-decoration: none; transform: translateX(4px); }

/* 今年度：画像サムネイル */
.event-current-thumb {
    flex-shrink: 0;
    width: 172px;
    height: 130px;
    overflow: hidden;
    border-radius: var(--radius);
    background: #d8e4ef;
}
.event-current-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.event-thumb-placeholder { width: 100%; height: 100%; background: #d8e4ef; }

.event-current-title {
    font-size: 1rem;
    color: var(--color-text);
    line-height: 1.5;
}

/* 過去イベント：2カラムレイアウト（左：フィルター、右：リスト）*/
.past-events-layout {
    display: grid;
    grid-template-columns: 180px 1fr;
    gap: 32px;
    align-items: start;
    min-height: 400px;
}
.past-events-filter { padding-top: 2px; }

/* 過去イベント：タイトルリスト */
.event-past-list { list-style: none; }
.event-past-item {
    padding: 14px 0;
    border-bottom: 1px solid var(--color-border);
}
.event-past-item:first-child { border-top: 1px solid var(--color-border); }
.event-past-link {
    font-size: 1rem;
    color: var(--color-text);
    transition: color .2s;
    display: block;
}
.event-past-link:hover { color: var(--color-primary); text-decoration: none; }

/* ===== イベント個別ページ ===== */
.single-event .container { max-width: 860px; padding-top: 56px; }

.event-article { margin-bottom: var(--space-7); }

/* 個別イベント：タイトル直下の年月ラベル */
.event-ym-label {
    display: inline-block;
    font-size: .8rem;
    font-weight: 600;
    color: var(--color-primary);
    background: rgba(26,74,107,.08);
    border-radius: 3px;
    padding: 3px 10px;
    margin: -8px 0 20px;
    letter-spacing: .04em;
}

.event-article-title {
    font-size: var(--font-size-3xl);
    font-weight: 700;
    color: var(--color-text);
    line-height: var(--line-height-tight);
    margin-bottom: var(--space-6);
}

/* 各フィールド（見出し＋本文）*/
.event-field {
    margin-bottom: 56px;
}
.event-field-heading {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--color-primary);
    margin: 0 0 10px;
    padding: 0 0 8px 14px;
    border-left: 3px solid var(--color-primary);
    border-bottom: 1px solid rgba(26,74,107,.15);
    line-height: 1.4;
}
.event-field-body {
    font-size: var(--font-size-base);
    color: var(--color-text);
    line-height: 1.75;
    margin-left: 24px;
}
/* イベント個別 アイキャッチ */
.event-featured-img { margin: 20px 0 28px; border-radius: var(--radius); overflow: hidden; }
.event-featured-img .event-thumbnail-img { width: 100%; height: auto; display: block; }
/* イベント個別 本文（intro） */
.event-intro { font-size: var(--font-size-base); line-height: var(--line-height-base); color: var(--color-text); margin-bottom: 28px; }
.event-intro p { margin-bottom: 1em; }
.event-intro a { color: var(--color-primary); }

/* 表彰・助成まとめ（single-results.php）の説明文 */
.results-intro { font-size: var(--font-size-base); line-height: var(--line-height-base); color: var(--color-text); margin-bottom: 28px; }
.results-intro p { margin-bottom: 1em; }
.results-intro a { color: var(--color-primary); }
.event-field-body p { margin-bottom: .5em; }
.event-field-body a { color: var(--color-primary); }

/* 添付ファイル／URLリンク：ボタン風（見出しの紺文字とは枠・背景・アイコンで区別）
   サイト内で共通利用するクラス（.shibu-attach-link）。元は個別イベントページ専用の
   .event-field-link だったが、v1.8.0 で支部表彰・助成の募集添付（front-page.php／
   archive-award.php／archive-grant.php）と共通化した。明るい背景での見た目はこのまま、
   暗い背景（トップページ「支部表彰・助成」セクション）向けの配色は下記 .ag-links 内で上書きする。 */
.shibu-attach-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-weight: 600;
    color: var(--color-primary);
    border: 1px solid rgba(26,74,107,.35);
    background: rgba(26,74,107,.05);
    border-radius: var(--radius);
    padding: 10px 16px;
    transition: background .2s ease, border-color .2s ease, transform .2s ease, box-shadow .2s ease;
}
.shibu-attach-link::before {
    content: '';
    display: inline-block;
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;
}
/* ファイル添付＝書類アイコン */
.shibu-attach-link--file::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231a4a6b' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 3h8l4 4v14H6z'/%3E%3Cpath d='M14 3v4h4'/%3E%3Cline x1='9' y1='12' x2='15' y2='12'/%3E%3Cline x1='9' y1='16' x2='15' y2='16'/%3E%3C/svg%3E");
}
/* URLリンク＝外部リンクアイコン */
.shibu-attach-link--url::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231a4a6b' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3Cpath d='M15 3h6v6'/%3E%3Cline x1='10' y1='14' x2='21' y2='3'/%3E%3C/svg%3E");
}
.shibu-attach-link:hover {
    background: rgba(26,74,107,.12);
    border-color: var(--color-primary);
    text-decoration: none;
    transform: translateY(-1px);
    box-shadow: 0 3px 8px rgba(26,74,107,.12);
}

/* v1.9.0：本文の「ファイル」ブロックは render_block_core/file フィルターで中身を
   .shibu-attach-link に差し替えるが、コアの .wp-block-file:not(.wp-element-button) が
   font-size:0.8em を指定しているため、そのままだと他の添付ボタンより文字が小さくなる。
   ここで本文の基準サイズに戻す。 */
.wp-block-file .shibu-attach-link { font-size: var(--font-size-base); }

/* トップページ「支部表彰・助成」セクションは暗い背景写真の上に白文字で構成されているため、
   .shibu-attach-link をこの中で使う場合だけ配色（文字色・枠線・背景・アイコン）を白系に上書きする。
   形・アイコンの種類・挙動は明るい背景版と共通。
   スコープはセクション単位（.section-awards-grants）にしている。v1.8.0で見出しデザインを
   追加した際、募集エントリ1件分のボタンのラップ要素が .ag-links から .shibu-attach-list に
   変わり、旧セレクタ（.ag-links .shibu-attach-link）が一致しなくなってボタンが読めなくなって
   いたため、内側のラップ要素名に依存しないこのスコープに修正した。 */
.section-awards-grants .shibu-attach-link {
    color: rgba(255,255,255,.9);
    border-color: rgba(255,255,255,.4);
    background: rgba(255,255,255,.08);
}
.section-awards-grants .shibu-attach-link:hover {
    background: rgba(255,255,255,.18);
    border-color: rgba(255,255,255,.8);
    box-shadow: none;
}
.section-awards-grants .shibu-attach-link--file::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 3h8l4 4v14H6z'/%3E%3Cpath d='M14 3v4h4'/%3E%3Cline x1='9' y1='12' x2='15' y2='12'/%3E%3Cline x1='9' y1='16' x2='15' y2='16'/%3E%3C/svg%3E");
}
.section-awards-grants .shibu-attach-link--url::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3Cpath d='M15 3h6v6'/%3E%3Cline x1='10' y1='14' x2='21' y2='3'/%3E%3C/svg%3E");
}

/* 添付ボタンを縦に並べる共通ラッパー（front-page.php／archive-award.php／archive-grant.php
   いずれの募集ブロックでも shibu_render_award_entry() がこのクラスで出力する） */
.shibu-attach-list { display: flex; flex-direction: column; gap: 8px; }

@media (max-width: 768px) {
    .event-field { margin-bottom: 40px; }
}
@media (max-width: 480px) {
    .event-field-body { margin-left: 12px; }
    .shibu-attach-link { display: flex; width: 100%; }
}

/* ===== イベント一覧・個別ページ デザイン統一 ===== */

/* 背景色・ジオメトリックパターン */
.main-content.archive-event,
.main-content.single-event {
    background: #F5F2EE;
    position: relative;
    overflow: hidden;
}
/* [旧パターン backup] - ドットグリッド・二重リング (archive-event/single-event) */
@media not all {
.main-content.archive-event::before, .main-content.single-event::before { content:''; position:absolute; top:0; right:0; width:240px; height:200px; background-image:radial-gradient(circle, rgba(26,74,107,.17) 1.2px, transparent 1.2px); background-size:14px 14px; pointer-events:none; z-index:0; }
.main-content.archive-event::after, .main-content.single-event::after { content:''; position:absolute; bottom:20px; left:-24px; width:210px; height:210px; background:radial-gradient(circle at 50% 50%, transparent 74px, rgba(26,74,107,.10) 74px, rgba(26,74,107,.10) 76px, transparent 76px), radial-gradient(circle at 50% 50%, transparent 44px, rgba(26,74,107,.08) 44px, rgba(26,74,107,.08) 45.5px, transparent 45.5px), radial-gradient(circle, rgba(26,74,107,.15) 1.2px, transparent 1.2px); background-size:210px 210px,210px 210px,14px 14px; background-position:0 0,0 0,0 40px; pointer-events:none; z-index:0; }
} /* end @media not all backup */
.main-content.archive-event .container,
.main-content.single-event .container { position: relative; z-index: 1; }

/* ── archive-event: セクション見出し統一 ── */
.archive-event .event-section-heading {
    font-size: clamp(1.8rem, 3.5vw, 2.4rem);
    font-weight: 700;
    color: var(--color-primary);
    position: relative;
    padding-bottom: 12px;
    margin-bottom: 36px;
}
.archive-event .event-section-current .event-section-heading::before {
    content: 'EVENTS';
    display: block;
    font-size: .68rem; font-weight: 600;
    letter-spacing: .38em; text-transform: uppercase;
    color: var(--color-primary); opacity: .5;
    margin-bottom: 10px; font-family: var(--font-base);
}
.archive-event .event-section-past .event-section-heading::before {
    content: 'PAST EVENTS';
    display: block;
    font-size: .68rem; font-weight: 600;
    letter-spacing: .38em; text-transform: uppercase;
    color: var(--color-primary); opacity: .5;
    margin-bottom: 10px; font-family: var(--font-base);
}
.archive-event .event-section-heading::after {
    content: ''; display: block;
    position: absolute; bottom: 0; left: 0;
    width: 36px; height: 3px;
    background: var(--color-primary); border-radius: 2px;
}

/* ── archive-event: テキスト・ボーダー色 ── */
.archive-event .event-past-item { border-bottom-color: rgba(26,74,107,.12); }
.archive-event .event-past-item:first-child { border-top-color: rgba(26,74,107,.12); }
.archive-event .event-current-link:hover { opacity: .85; }

/* ── archive-event: 今年度イベント 2カラムグリッドカード（FPカードと統一デザイン） ── */
.archive-event .event-current-list {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 24px;
}
.archive-event .event-current-link {
    display: block;
    transition: transform .2s ease;
}
.archive-event .event-current-link:hover {
    opacity: 1;
    transform: translateY(-4px);
}
.archive-event .event-current-thumb {
    position: relative;
    aspect-ratio: 4 / 3;
    width: 100%;
    height: auto;
    border-radius: var(--radius);
    overflow: hidden;
    box-shadow: 0 4px 16px rgba(0,0,0,.10);
    background: #d8e4ef;
}
.archive-event .event-current-thumb img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .35s ease;
}
.archive-event .event-current-link:hover .event-current-thumb img { transform: scale(1.04); }
.archive-event .event-current-overlay {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    background: rgba(0,0,0,.70);
    padding: 12px 18px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    z-index: 1;
}
.archive-event .event-current-title {
    font-size: 1rem;
    font-weight: 600;
    color: var(--color-white);
    line-height: 1.45;
    flex: 1;
    margin: 0;
}
.archive-event .event-current-link:hover .event-card-arrow { transform: translateX(3px); }
@media (max-width: 640px) {
    .archive-event .event-current-list { grid-template-columns: 1fr; }
}

/* [旧パターン backup] - 電子軌道・ずらし二重円・結晶格子 (archive-event/single-event) */
@media not all {
.archive-event .event-section-current { position:relative; }
.archive-event .event-section-current::before { content:''; position:absolute; right:-20px; top:0; width:160px; height:110px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 110'%3E%3Cg transform='translate(80,55)'%3E%3Cellipse cx='0' cy='0' rx='68' ry='26' fill='none' stroke='rgba(26,74,107,0.16)' stroke-width='1.4'/%3E%3Ccircle r='3.2' fill='rgba(26,74,107,0.25)'%3E%3CanimateMotion dur='9s' repeatCount='indefinite' path='M68,0 A68,26 0 1,0 -68,0 A68,26 0 1,0 68,0'/%3E%3C/circle%3E%3C/g%3E%3Ccircle cx='120' cy='20' r='3' fill='rgba(26,74,107,0.12)'/%3E%3Ccircle cx='140' cy='8' r='2' fill='rgba(26,74,107,0.08)'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
.archive-event .event-section-current::after { content:''; position:absolute; left:-40px; bottom:20px; width:130px; height:130px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 130 130'%3E%3Ccircle cx='56' cy='68' r='44' fill='none' stroke='rgba(26,74,107,0.17)' stroke-width='1.3'/%3E%3Ccircle cx='76' cy='58' r='28' fill='none' stroke='rgba(26,74,107,0.11)' stroke-width='1.0'/%3E%3Ccircle cx='42' cy='84' r='5.5' fill='rgba(26,74,107,0.09)'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
.archive-event .event-section-past { position:relative; }
.archive-event .event-section-past::before { content:''; position:absolute; right:-20px; top:10px; width:130px; height:140px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 130 140'%3E%3Cg opacity='0.10' stroke='rgba(26,74,107,1)' stroke-width='0.9' fill='rgba(26,74,107,1)'%3E%3Ccircle cx='24' cy='62' r='2.2'/%3E%3Ccircle cx='50' cy='44' r='2.2'/%3E%3Ccircle cx='76' cy='62' r='2.2'/%3E%3Ccircle cx='76' cy='98' r='2.2'/%3E%3Ccircle cx='50' cy='116' r='2.2'/%3E%3Ccircle cx='24' cy='98' r='2.2'/%3E%3Cline x1='24' y1='62' x2='50' y2='44'/%3E%3Cline x1='50' y1='44' x2='76' y2='62'/%3E%3Cline x1='76' y1='62' x2='76' y2='98'/%3E%3Cline x1='76' y1='98' x2='50' y2='116'/%3E%3Cline x1='50' y1='116' x2='24' y2='98'/%3E%3Cline x1='24' y1='98' x2='24' y2='62'/%3E%3C/g%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
.single-event .event-article { position:relative; }
.single-event .event-article::before { content:''; position:absolute; right:-50px; top:20px; width:160px; height:110px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 110'%3E%3Cg transform='translate(80,55)'%3E%3Cellipse cx='0' cy='0' rx='68' ry='26' fill='none' stroke='rgba(26,74,107,0.16)' stroke-width='1.4'/%3E%3Ccircle r='3.2' fill='rgba(26,74,107,0.25)'%3E%3CanimateMotion dur='9s' repeatCount='indefinite' path='M68,0 A68,26 0 1,0 -68,0 A68,26 0 1,0 68,0'/%3E%3C/circle%3E%3C/g%3E%3Ccircle cx='120' cy='20' r='3' fill='rgba(26,74,107,0.12)'/%3E%3Ccircle cx='140' cy='8' r='2' fill='rgba(26,74,107,0.08)'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
.single-event .event-article::after { content:''; position:absolute; left:-50px; top:40%; width:130px; height:130px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2020/svg' viewBox='0 0 130 130'%3E%3Ccircle cx='56' cy='68' r='44' fill='none' stroke='rgba(26,74,107,0.17)' stroke-width='1.3'/%3E%3Ccircle cx='76' cy='58' r='28' fill='none' stroke='rgba(26,74,107,0.11)' stroke-width='1.0'/%3E%3Ccircle cx='42' cy='84' r='5.5' fill='rgba(26,74,107,0.09)'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
.single-event .article-back { position:relative; }
.single-event .article-back::after { content:''; position:absolute; right:-20px; top:-40px; width:130px; height:140px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 130 140'%3E%3Cg opacity='0.10' stroke='rgba(26,74,107,1)' stroke-width='0.9' fill='rgba(26,74,107,1)'%3E%3Ccircle cx='24' cy='62' r='2.2'/%3E%3Ccircle cx='50' cy='44' r='2.2'/%3E%3Ccircle cx='76' cy='62' r='2.2'/%3E%3Ccircle cx='76' cy='98' r='2.2'/%3E%3Ccircle cx='50' cy='116' r='2.2'/%3E%3Ccircle cx='24' cy='98' r='2.2'/%3E%3Cline x1='24' y1='62' x2='50' y2='44'/%3E%3Cline x1='50' y1='44' x2='76' y2='62'/%3E%3Cline x1='76' y1='62' x2='76' y2='98'/%3E%3Cline x1='76' y1='98' x2='50' y2='116'/%3E%3Cline x1='50' y1='116' x2='24' y2='98'/%3E%3Cline x1='24' y1='98' x2='24' y2='62'/%3E%3C/g%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
} /* end @media not all backup */

/* ── single-event: タイトル英字サブタイトル + 色 ── */
.single-event .event-article-title::before {
    content: 'EVENTS';
    display: block;
    font-size: .68rem; font-weight: 600;
    letter-spacing: .38em; text-transform: uppercase;
    color: var(--color-primary); opacity: .5;
    margin-bottom: 12px; font-family: var(--font-base);
}
.single-event .event-article-title { color: var(--color-primary); }
.single-event .article-back { border-top-color: rgba(26,74,107,.15); }

/* [旧パターン backup] - 電子軌道・ずらし二重円・結晶格子 (single-event active) */
@media not all {
.single-event .event-article { position: relative; }
.single-event .event-article::before { content:''; position:absolute; right:-50px; top:20px; width:160px; height:110px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 110'%3E%3Cg transform='translate(80,55)'%3E%3Cellipse cx='0' cy='0' rx='68' ry='26' fill='none' stroke='rgba(26,74,107,0.16)' stroke-width='1.4'/%3E%3Ccircle r='3.2' fill='rgba(26,74,107,0.25)'%3E%3CanimateMotion dur='9s' repeatCount='indefinite' path='M68,0 A68,26 0 1,0 -68,0 A68,26 0 1,0 68,0'/%3E%3C/circle%3E%3C/g%3E%3Ccircle cx='120' cy='20' r='3' fill='rgba(26,74,107,0.12)'/%3E%3Ccircle cx='140' cy='8' r='2' fill='rgba(26,74,107,0.08)'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
.single-event .event-article::after { content:''; position:absolute; left:-50px; top:40%; width:130px; height:130px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 130 130'%3E%3Ccircle cx='56' cy='68' r='44' fill='none' stroke='rgba(26,74,107,0.17)' stroke-width='1.3'/%3E%3Ccircle cx='76' cy='58' r='28' fill='none' stroke='rgba(26,74,107,0.11)' stroke-width='1.0'/%3E%3Ccircle cx='42' cy='84' r='5.5' fill='rgba(26,74,107,0.09)'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
.single-event .article-back { position: relative; }
.single-event .article-back::after { content:''; position:absolute; right:-20px; top:-40px; width:130px; height:140px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 130 140'%3E%3Cg opacity='0.10' stroke='rgba(26,74,107,1)' stroke-width='0.9' fill='rgba(26,74,107,1)'%3E%3Ccircle cx='24' cy='62' r='2.2'/%3E%3Ccircle cx='50' cy='44' r='2.2'/%3E%3Ccircle cx='76' cy='62' r='2.2'/%3E%3Ccircle cx='76' cy='98' r='2.2'/%3E%3Ccircle cx='50' cy='116' r='2.2'/%3E%3Ccircle cx='24' cy='98' r='2.2'/%3E%3Cline x1='24' y1='62' x2='50' y2='44'/%3E%3Cline x1='50' y1='44' x2='76' y2='62'/%3E%3Cline x1='76' y1='62' x2='76' y2='98'/%3E%3Cline x1='76' y1='98' x2='50' y2='116'/%3E%3Cline x1='50' y1='116' x2='24' y2='98'/%3E%3Cline x1='24' y1='98' x2='24' y2='62'/%3E%3C/g%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
} /* end @media not all backup */

/* [旧パターン backup] - prefers-reduced-motion 電子軌道アニメーション無効化 (archive-event/single-event) */
@media not all {
@media (prefers-reduced-motion: reduce) {
    .archive-event .event-section-current::before,
    .single-event .event-article::before {
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 110'%3E%3Cg transform='translate(80,55)'%3E%3Cellipse cx='0' cy='0' rx='68' ry='26' fill='none' stroke='rgba(26,74,107,0.16)' stroke-width='1.4'/%3E%3C/g%3E%3Ccircle cx='120' cy='20' r='3' fill='rgba(26,74,107,0.12)'/%3E%3Ccircle cx='140' cy='8' r='2' fill='rgba(26,74,107,0.08)'/%3E%3C/svg%3E");
    }
}
} /* end @media not all backup */

/* 表彰アーカイブ — ドットリーダー一覧 */
.award-archive-title { font-size: var(--font-size-3xl); font-weight: 700; margin-bottom: 32px; }
.award-list { list-style: none; padding: 0; margin: 0; }
.award-row { display: flex; align-items: baseline; padding: 14px 0; font-size: 1rem; }
.award-row__left { white-space: nowrap; font-weight: 700; flex-shrink: 0; padding-right: 8px; }
.award-row__dots {
    flex: 1;
    min-width: 24px;
    height: 0;
    border-bottom: 2px dotted var(--color-text);
    position: relative;
    top: -0.35em;
    margin: 0 10px;
}
.award-row__right { white-space: nowrap; flex-shrink: 0; padding-left: 8px; }
.award-row__affiliation { color: var(--color-text); }

/* 助成アーカイブ — ボーダーレステーブル */
.grant-archive-title { font-size: var(--font-size-3xl); font-weight: 700; margin-bottom: 32px; }
.grant-table { width: 100%; border-collapse: collapse; font-size: var(--font-size-base); }
.grant-th {
    text-align: left;
    padding: 0 20px 12px 0;
    font-weight: 400;
    text-decoration: underline;
    text-underline-offset: 4px;
    border: none;
    background: none;
    color: var(--color-text);
    white-space: nowrap;
}
.grant-th--amount { text-align: right; padding-right: 0; }
.grant-td {
    padding: 18px 20px 18px 0;
    vertical-align: top;
    border: none;
}
.grant-td--type { white-space: nowrap; }
.grant-td--recipient { white-space: nowrap; line-height: 1.6; }
.grant-td--title { line-height: 1.65; }
.grant-td--amount { white-space: nowrap; text-align: right; padding-right: 0; }
.grant-affiliation { font-size: .9em; }

/* アーカイブ下部：募集要項ブロック */
.archive-guideline-block {
    margin-top: 48px;
    padding-top: 24px;
    border-top: 1px solid var(--color-border);
}
/* 募集が複数件あるとき、1件ずつの切れ目がはっきり分かるよう余白を広めに取る */
.archive-guideline-item + .archive-guideline-item { margin-top: 44px; }
.archive-guideline-none { font-size: var(--font-size-base); color: var(--color-text-light); }

/* 募集エントリ1件分の見出し＋メタ情報（shibu_render_award_entry()が出力）。
   明るい背景向けの既定色。暗い背景（トップページ）向けの上書きは
   .section-awards-grants .shibu-award-heading / .shibu-award-meta を参照。 */
.shibu-award-heading {
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--color-primary);
    margin: 0 0 6px;
}
.shibu-award-meta {
    font-size: .85rem;
    color: var(--color-text-light);
    margin: 0 0 12px;
}

/* ページネーション */
.pagination { margin-top: 40px; display: flex; justify-content: center; }
.page-numbers { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border: 1px solid var(--color-border); border-radius: var(--radius); margin: 0 3px; color: var(--color-text); font-size: var(--font-size-sm); transition: background .2s; }
.page-numbers:hover { background: var(--color-bg); text-decoration: none; }
.page-numbers.current { background: var(--color-primary); color: var(--color-white); border-color: var(--color-primary); }

/* ===== 表彰・助成アーカイブページ デザイン統一 ===== */

/* 背景色・ジオメトリックパターン */
.main-content.archive-award,
.main-content.archive-grant {
    background: #F5F2EE;
    position: relative;
    overflow: hidden;
}
/* [旧パターン backup] - ドットグリッド・二重リング (archive-award/archive-grant) */
@media not all {
.main-content.archive-award::before, .main-content.archive-grant::before { content:''; position:absolute; top:0; right:0; width:240px; height:200px; background-image:radial-gradient(circle, rgba(26,74,107,.17) 1.2px, transparent 1.2px); background-size:14px 14px; pointer-events:none; z-index:0; }
.main-content.archive-award::after, .main-content.archive-grant::after { content:''; position:absolute; bottom:20px; left:-24px; width:210px; height:210px; background:radial-gradient(circle at 50% 50%, transparent 74px, rgba(26,74,107,.10) 74px, rgba(26,74,107,.10) 76px, transparent 76px), radial-gradient(circle at 50% 50%, transparent 44px, rgba(26,74,107,.08) 44px, rgba(26,74,107,.08) 45.5px, transparent 45.5px), radial-gradient(circle, rgba(26,74,107,.15) 1.2px, transparent 1.2px); background-size:210px 210px,210px 210px,14px 14px; background-position:0 0,0 0,0 40px; pointer-events:none; z-index:0; }
} /* end @media not all backup */
.main-content.archive-award .container,
.main-content.archive-grant .container { position: relative; z-index: 1; }

/* ── 見出し：英字サブタイトル + 日本語 h1 + 36px アンダーバー ── */
.archive-award .award-archive-title,
.archive-grant .grant-archive-title {
    font-size: clamp(1.8rem, 3.5vw, 2.4rem);
    font-weight: 700;
    color: var(--color-primary);
    position: relative;
    padding-bottom: 12px;
    margin-bottom: 48px;
}
.archive-award .award-archive-title::before {
    content: 'AWARDS';
    display: block;
    font-size: .68rem; font-weight: 600;
    letter-spacing: .38em; text-transform: uppercase;
    color: var(--color-primary); opacity: .5;
    margin-bottom: 10px; font-family: var(--font-base);
}
.archive-grant .grant-archive-title::before {
    content: 'GRANTS';
    display: block;
    font-size: .68rem; font-weight: 600;
    letter-spacing: .38em; text-transform: uppercase;
    color: var(--color-primary); opacity: .5;
    margin-bottom: 10px; font-family: var(--font-base);
}
.archive-award .award-archive-title::after,
.archive-grant .grant-archive-title::after {
    content: ''; display: block;
    position: absolute; bottom: 0; left: 0;
    width: 36px; height: 3px;
    background: var(--color-primary); border-radius: 2px;
}

/* ── award-list: ドット区切り線・色調整 ── */
.archive-award .award-row { border-bottom: 1px solid rgba(26,74,107,.10); }
.archive-award .award-list .award-row:first-child { border-top: 1px solid rgba(26,74,107,.10); }
.archive-award .award-row__left { color: var(--color-primary); }
.archive-award .award-row__dots { border-bottom-color: rgba(26,74,107,.20); }

/* ── grant-table: ヘッダー・行境界線 色調整 ── */
.archive-grant .grant-th { color: var(--color-primary); opacity: .75; }
.archive-grant .grant-row { border-bottom: 1px solid rgba(26,74,107,.10); }
.archive-grant .grant-table tbody tr:first-child { border-top: 1px solid rgba(26,74,107,.10); }
.archive-grant .grant-table-wrap { position: relative; }

/* [旧パターン backup] - 電子軌道・ずらし二重円・結晶格子 SVG (archive-award/archive-grant) */
@media not all {
.archive-award .award-list { position:relative; }
.archive-award .award-list::before { content:''; position:absolute; right:-20px; top:0; width:160px; height:110px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 110'%3E%3Cg transform='translate(80,55)'%3E%3Cellipse cx='0' cy='0' rx='68' ry='26' fill='none' stroke='rgba(26,74,107,0.16)' stroke-width='1.4'/%3E%3Ccircle r='3.2' fill='rgba(26,74,107,0.25)'%3E%3CanimateMotion dur='9s' repeatCount='indefinite' path='M68,0 A68,26 0 1,0 -68,0 A68,26 0 1,0 68,0'/%3E%3C/circle%3E%3C/g%3E%3Ccircle cx='120' cy='20' r='3' fill='rgba(26,74,107,0.12)'/%3E%3Ccircle cx='140' cy='8' r='2' fill='rgba(26,74,107,0.08)'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
.archive-award .award-list::after { content:''; position:absolute; left:-40px; bottom:20px; width:130px; height:130px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 130 130'%3E%3Ccircle cx='56' cy='68' r='44' fill='none' stroke='rgba(26,74,107,0.17)' stroke-width='1.3'/%3E%3Ccircle cx='76' cy='58' r='28' fill='none' stroke='rgba(26,74,107,0.11)' stroke-width='1.0'/%3E%3Ccircle cx='42' cy='84' r='5.5' fill='rgba(26,74,107,0.09)'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
.archive-grant .grant-table-wrap::before { content:''; position:absolute; right:-20px; top:0; width:160px; height:110px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 110'%3E%3Cg transform='translate(80,55)'%3E%3Cellipse cx='0' cy='0' rx='68' ry='26' fill='none' stroke='rgba(26,74,107,0.16)' stroke-width='1.4'/%3E%3Ccircle r='3.2' fill='rgba(26,74,107,0.25)'%3E%3CanimateMotion dur='9s' repeatCount='indefinite' path='M68,0 A68,26 0 1,0 -68,0 A68,26 0 1,0 68,0'/%3E%3C/circle%3E%3C/g%3E%3Ccircle cx='120' cy='20' r='3' fill='rgba(26,74,107,0.12)'/%3E%3Ccircle cx='140' cy='8' r='2' fill='rgba(26,74,107,0.08)'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
.archive-grant .grant-table-wrap::after { content:''; position:absolute; left:-40px; bottom:20px; width:130px; height:140px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 130 140'%3E%3Cg opacity='0.10' stroke='rgba(26,74,107,1)' stroke-width='0.9' fill='rgba(26,74,107,1)'%3E%3Ccircle cx='24' cy='62' r='2.2'/%3E%3Ccircle cx='50' cy='44' r='2.2'/%3E%3Ccircle cx='76' cy='62' r='2.2'/%3E%3Ccircle cx='76' cy='98' r='2.2'/%3E%3Ccircle cx='50' cy='116' r='2.2'/%3E%3Ccircle cx='24' cy='98' r='2.2'/%3E%3Cline x1='24' y1='62' x2='50' y2='44'/%3E%3Cline x1='50' y1='44' x2='76' y2='62'/%3E%3Cline x1='76' y1='62' x2='76' y2='98'/%3E%3Cline x1='76' y1='98' x2='50' y2='116'/%3E%3Cline x1='50' y1='116' x2='24' y2='98'/%3E%3Cline x1='24' y1='98' x2='24' y2='62'/%3E%3C/g%3E%3C/svg%3E"); background-repeat:no-repeat; background-size:100%; pointer-events:none; z-index:0; }
} /* end @media not all backup */

/* main に section の場合の spacing */
.main-content > section { }
.main-content:not(.front-page) { padding: var(--header-height) 0 80px; }
.main-content:not(.front-page) .container { padding-top: 32px; }
/* お知らせ・イベント・表彰・助成ページはページ固有の padding で上書き（上記 :not ルールより後で記述して優先） */
.main-content.archive-news,
.main-content.single-news,
.main-content.archive-event,
.main-content.single-event,
.main-content.archive-award,
.main-content.archive-grant { padding: var(--header-height) 0 100px; }
.main-content.single-news,
.main-content.single-event  { min-height: calc(100vh - var(--header-height) - 200px); }
.main-content.archive-news .container,
.main-content.single-news  .container,
.main-content.archive-event .container,
.main-content.single-event  .container,
.main-content.archive-award .container,
.main-content.archive-grant .container { padding-top: 0; }


/* ===== レスポンシブ ===== */
@media (max-width: 960px) {
    .news-layout { grid-template-columns: 1fr; gap: 28px; }
    .news-image-col { min-height: 200px; }
    .section-label--top { margin-bottom: 24px; }
    .ag-layout { grid-template-columns: 1fr; }
    .ag-single-photo { order: -1; }
    .about-layout { grid-template-columns: 1fr; gap: 24px; }
    .greeting-layout { grid-template-columns: 1fr; }
    .greeting-text-col { margin-left: 0; margin-top: 24px; }
    .greeting-photo-frame { padding: 14px 14px 0 0; }
    .fp-num-bridge { display: none; }
    .footer-inner { grid-template-columns: 1fr; }
    .event-detail-row { grid-template-columns: 140px 1fr; }
}

@media (max-width: 768px) {
    :root { --header-height: 56px; }
    .nav-toggle { display: flex; }

    /* ヘッダー高さ56pxに対して上下6pxずつ余白ができるよう、ロゴをPCより小さくする */
    .site-logo-img { height: 44px; }
    .site-logo-placeholder { width: 44px; height: 44px; }

    /* サイトタイトルが長い場合、ロゴ側を縮小可能にしてハンバーガーボタンの幅を確保する */
    .site-branding { flex-shrink: 1; min-width: 0; }
    .site-logo-link { min-width: 0; }
    .site-title-text {
        display: block;
        min-width: 0;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
        font-size: .95rem;
    }
    .global-nav {
        display: none;
        position: fixed;
        top: var(--header-height); left: 0; right: 0;
        background: rgba(18, 47, 71, .97);
        z-index: 999;
        padding: 8px 0;
    }
    .global-nav.is-open { display: block; }
    .nav-menu { flex-direction: column; gap: 0; }
    .nav-menu li a { padding: 12px 20px; border-radius: 0; }

    .hero-wrapper { height: 360px; }
    .hero-slider { padding: 0 20px 44px; }
    .hero-banner-box { padding: 11px 14px; gap: 8px; }
    .hero-banner-title { font-size: .9rem; }

    .section-news { padding: 48px 0; }
    .section-events { padding: 48px 0; }
    .section-awards-grants { padding: 48px 0; }
    .section-about { padding: 48px 0; }
    .section-greeting { padding: 48px 0; }
    .section-links { padding: 48px 0; }
    .links-section-en { margin-bottom: 8px; }

    .event-card { flex: 0 0 180px; }

    .links-grid { grid-template-columns: 1fr; }

    .news-list--archive .news-item { grid-template-columns: 64px 1fr; }
    .news-thumb { width: 64px; height: 48px; }

    .past-events-layout { grid-template-columns: 1fr; }
    .event-current-thumb { width: 120px; height: 90px; }
    .event-article-title { font-size: var(--font-size-xl); }

    /* フッター下段：折り返し許可 */
    .footer-bottom { flex-wrap: wrap; gap: 12px; }
    .footer-copy { margin-left: 0; }
}

/* ===== 受賞者一覧・助成テーブル：縦積み & 横スクロール対応 ===== */
@media (max-width: 600px) {
    /* 受賞者一覧：ドットリーダー横並びを縦積みに */
    .award-row { display: block; }
    .award-row__left { display: block; white-space: normal; padding-right: 0; padding-bottom: 3px; }
    .award-row__dots { display: none; }
    .award-row__right { display: block; white-space: normal; padding-left: 0; }

    /* 助成実績テーブル：横スクロールではなく、1件ずつカード状に縦積み表示にする（横はみ出し防止） */
    .grant-table-wrap { overflow-x: visible; }
    .grant-table, .grant-table thead, .grant-table tbody, .grant-table tr, .grant-table th, .grant-table td {
        display: block;
        width: 100%;
    }
    .grant-table thead {
        position: absolute; width: 1px; height: 1px; overflow: hidden;
        clip: rect(0 0 0 0); white-space: nowrap;
    }
    .grant-row { padding: 14px 0; }
    .grant-td { padding: 3px 0 !important; text-align: left !important; white-space: normal; }
    .grant-td--type::before,
    .grant-td--recipient::before,
    .grant-td--title::before,
    .grant-td--amount::before {
        display: inline-block; min-width: 5.5em;
        font-weight: 600; color: var(--color-primary); opacity: .7;
    }
    .grant-td--type::before { content: "助成種別："; }
    .grant-td--recipient::before { content: "採択者："; }
    .grant-td--title::before { content: "題目："; }
    .grant-td--amount::before { content: "金額："; }

    /* 今年度イベント：サムネイル縮小 */
    .event-current-link { gap: 16px; }
    .event-current-thumb { width: 96px; height: 72px; }

    /* フィルター複数並びを折り返し */
    .archive-filters { flex-wrap: wrap; }
}

@media (max-width: 480px) {
    /* コンテナ横余白を縮小してコンテンツ幅を確保 */
    .container { padding: 0 16px; }
    .header-inner { padding: 0 16px; }
    .footer-inner { padding: 0 16px; }

    .hero-wrapper { height: 280px; }
    .hero-banner-title { font-size: .85rem; }
    .about-en-title { font-size: 1.7rem; }

    /* サイトタイトルが長い場合、さらに幅が狭い実機でも省略幅を抑える */
    .site-title-text { font-size: .82rem; }

    /* 助成テーブル：カード表示時のフォント縮小 */
    .grant-table { font-size: .82rem; }
    .grant-td { padding: 2px 0 !important; }

    /* 受賞者一覧：フォント縮小 */
    .award-row { font-size: .88rem; }

    /* お知らせ個別：タイトル縮小 */
    .news-article-title { font-size: var(--font-size-xl); }

    /* 挨拶写真プレースホルダー：高さ削減 */
    .greeting-photo-placeholder { height: 240px; }

    /* 支部表彰/助成：写真エリアの高さ削減 */
    .ag-single-photo { min-height: 160px; }

    /* 各アーカイブ見出しの縮小 */
    .archive-title,
    .award-archive-title,
    .grant-archive-title { font-size: var(--font-size-2xl); }

    /* セクション余白をさらに詰める */
    .section-events { padding: 36px 0; }
    .main-content:not(.front-page) { padding-bottom: 56px; }
    .main-content.archive-news,
    .main-content.single-news,
    .main-content.single-page { padding: var(--header-height) 0 64px; }
}


/* =====================================================
   フロントページ限定演出
===================================================== */

/* 1. ヒーロー高さ（85〜90vh）*/
.front-page .hero-wrapper {
    height: 87vh;
    min-height: 500px;
}

/* 2. パララックス：背景を上下に余裕を持たせる */
.front-page .hero-bg {
    inset: -18% 0;       /* 上下 -18% で bg を 136% の高さに拡張 */
    height: auto;
    will-change: transform;
}

/* 3. セクションフェードイン（初期：非表示） */
.fp-animate {
    opacity: 0;
    transform: translateY(26px);
    transition: opacity .65s ease, transform .65s ease;
}
.fp-animate.is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* 4. イベントセクション：背景・余白・装飾 */
.front-page .section-events {
    position: relative;
    overflow: hidden;
    background: #F5F2EE;
    padding: 76px 0 124px;
}
/* 装飾数字「02」 */
.front-page .section-events::before {
    content: '02';
    position: absolute;
    left: 2%;
    top: 6%;
    transform: none;
    font-size: clamp(9rem, 15vw, 14rem);
    font-weight: 700;
    color: rgba(80,60,40,.035);
    font-family: var(--font-base);
    line-height: 1;
    pointer-events: none;
    user-select: none;
    z-index: 0;
    letter-spacing: -.04em;
}
/* [旧パターン backup] - event-deco SVG 幾何学装飾コンテナ (フロントページイベントセクション) */
@media not all {
.event-deco { position:absolute; inset:0; pointer-events:none; z-index:0; overflow:visible; }
.event-deco-svg { position:absolute; overflow:visible; }
.event-deco-svg--tr { top:0; right:0; width:320px; height:300px; opacity:1; }
.event-deco-svg--bl { bottom:0; left:0; width:300px; height:280px; opacity:1; }
} /* end @media not all backup */
.front-page .section-events .container { position: relative; z-index: 3; }

/* フロントページ：カルーセルを全幅近くに拡大（コンテナ外に配置） */
.front-page .event-carousel-wrap {
    padding-left: clamp(20px, 3.5vw, 56px);
    padding-right: clamp(20px, 3.5vw, 56px);
    box-sizing: border-box;
}

/* フロントページ：イベントカード 写真重視デザイン */
.front-page .event-section-heading-wrap {
    text-align: center;
}
/* 見出しをお知らせセクションと揃える */
.front-page .event-section-heading-wrap .section-label {
    font-size: clamp(1.8rem, 3.5vw, 2.4rem);
}
.event-section-en {
    display: block;
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .38em;
    text-transform: uppercase;
    color: var(--color-primary);
    opacity: 0.5;
    margin-bottom: 10px;
}
.front-page .event-carousel-track { gap: 28px; }
.front-page .event-card { flex: 0 0 380px; }
.front-page .event-card-link {
    position: relative;
    height: 250px;
    border-radius: var(--radius-lg);
    overflow: hidden;
    display: block;
    color: var(--color-white);
    box-shadow: 0 4px 20px rgba(0,0,0,.14);
    transition: transform .25s ease, box-shadow .25s ease;
    text-decoration: none;
}
.front-page .event-card-link:hover {
    transform: translateY(-4px);
    box-shadow: 0 10px 28px rgba(0,0,0,.22);
    text-decoration: none;
}
.front-page .event-card-link:hover .event-card-img {
    opacity: 1;
    box-shadow: none;
}
.front-page .event-card-img {
    position: absolute;
    inset: 0;
    height: 100%;
    border-radius: 0;
    background: var(--color-primary);
}
.event-card-badge {
    position: absolute;
    top: 14px;
    left: 14px;
    background: rgba(255,255,255,.92);
    backdrop-filter: blur(4px);
    color: var(--color-primary);
    font-size: .7rem;
    font-weight: 600;
    padding: 4px 12px;
    border-radius: 20px;
    letter-spacing: .04em;
    z-index: 1;
}
.event-card-body {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    background: rgba(0,0,0,.70);
    padding: 12px 18px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    z-index: 1;
}
.front-page .event-card-title {
    font-size: .9rem;
    font-weight: 600;
    color: var(--color-white);
    line-height: 1.45;
    flex: 1;
    margin: 0;
}
.event-card-arrow {
    color: rgba(255,255,255,.8);
    font-size: 1.1rem;
    flex-shrink: 0;
    transition: transform .2s;
}
.front-page .event-card-link:hover .event-card-arrow { transform: translateX(3px); }

/* 5. 幾何学アニメーション キーフレーム */
@keyframes fp-rotate-cw  { to { transform: rotate(360deg); } }
@keyframes fp-rotate-ccw { to { transform: rotate(-360deg); } }
@keyframes fp-float-up   { 0%, 100% { transform: translateY(0); }      50% { transform: translateY(-16px); } }
@keyframes fp-float-dn   { 0%, 100% { transform: translateY(0) rotate(45deg); } 50% { transform: translateY(12px) rotate(45deg); } }

.deco-ring      { animation: fp-rotate-cw  30s linear       infinite; transform-box: fill-box; transform-origin: center; }
.deco-circle-lg { animation: fp-float-up   14s ease-in-out  infinite; }
.deco-circle-sm { animation: fp-float-dn   10s ease-in-out  infinite; }
.deco-triangle  { animation: fp-float-up   18s ease-in-out  infinite 3s; }
.deco-lines     { animation: fp-rotate-ccw 45s linear       infinite; transform-box: fill-box; transform-origin: center; }

/* 6. prefers-reduced-motion 対応（一括無効化）*/
@media (prefers-reduced-motion: reduce) {
    .front-page .hero-bg {
        inset: 0;
        will-change: auto;
    }
    .fp-animate {
        opacity: 1;
        transform: none;
        transition: none;
    }
    .deco-ring,
    .deco-circle-lg,
    .deco-circle-sm,
    .deco-triangle,
    .deco-lines,
    .deco-orbit { animation: none; }
    /* SVG SMIL animateMotion も停止 */
    animate, animateMotion, animateTransform { display: none; }
}

/* 7. モバイル：ヒーロー高さ調整 & パララックス無効化 */
@media (max-width: 768px) {
    .front-page .hero-wrapper {
        height: 78vh;
        min-height: 380px;
    }
    .front-page .hero-bg {
        inset: 0;          /* モバイルではパララックス用余白を解除 */
        will-change: auto;
    }
    /* バナー枠（.hero-slides）の高さ：モバイルは折り返しで最大4〜5行程度になりうるため
       余裕を持たせる（110px→132px）。長いタイトルでも枠内に収まることを確認済み。 */
    .front-page .hero-slides {
        height: 132px;
    }

    /* お知らせバナー（New表示）とスクロールインジケーターの重なり対策。
       両者ともヒーロー下端からの絶対配置のため、モバイル幅ではバナー分の
       高さだけスクロールインジケーターを押し上げる。
       .hero-slider はバナーがある時だけDOMに出力されるため、
       隣接セレクタで「バナー表示時のみ」インジケーターを押し上げる。 */
    .front-page .scroll-indicator {
        gap: 4px;
    }
    .front-page .scroll-indicator__ring {
        width: 38px;
        height: 38px;
        padding-top: 7px;
    }
    .front-page .scroll-indicator::after {
        font-size: 9px;
    }
    .front-page .hero-slider ~ .scroll-indicator {
        bottom: 184px; /* .hero-slides の高さ(132px) + slider下余白(36px) + 隙間(16px) */
    }
}
@media (max-width: 480px) {
    .front-page .hero-wrapper {
        height: 72vh;
        min-height: 320px;
    }
}

/* =====================================================
   8. ヒーロー：キャッチコピー + バナー右下配置
===================================================== */

/* オーバーレイは front-page.php の inline style で制御するため CSS ルールなし */

/* 明朝体キャッチコピー */
.hero-catchcopy {
    position: absolute;
    left: 8%;
    top: 28%;
    z-index: 2;
    max-width: 60%;
    pointer-events: none;
}

/* サブコピー（英字・小） */
.hero-subcopy {
    font-family: var(--font-base);
    font-size: .72rem;
    font-weight: 400;
    letter-spacing: .28em;
    text-transform: uppercase;
    color: rgba(255,255,255,.6);
    margin-bottom: 18px;
}

/* メインキャッチコピー */
.hero-catch-text {
    font-family: 'Noto Serif JP', 'Yu Mincho', '游明朝', 'Hiragino Mincho ProN', serif;
    font-size: clamp(3rem, 7vw, 5.8rem);
    font-weight: 700;
    color: var(--color-white);
    line-height: 1.55;
    letter-spacing: .06em;
}
/* シャドウはON設定時のみ */
.hero-catchcopy--shadow .hero-catch-text {
    text-shadow: 0 2px 28px rgba(0,0,0,.55), 0 1px 8px rgba(0,0,0,.35);
}

/* デコレーションライン */
.hero-catch-deco {
    display: block;
    width: 44px;
    height: 1px;
    background: rgba(255,255,255,.5);
    margin-top: 28px;
}

/* バナースライダー：左下に固定 */
.front-page .hero-slider {
    top: auto;
    right: auto;
    bottom: 0;
    left: 0;
    padding: 0 48px 52px;
    flex-direction: row;
    align-items: flex-end;
    width: auto;
    gap: 0;
}
.front-page .hero-slides {
    width: 720px;
    max-width: calc(100vw - 104px);
    height: 110px;
}
.front-page .hero-banner-title {
    font-size: .88rem;
    white-space: normal;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}
.front-page .hero-dots {
    position: absolute;
    bottom: 44px;
    left: 48px;
    margin-top: 0;
    justify-content: flex-start;
}

/* =====================================================
   8b. PC：重要バナー表示時の重なり対策
   PCのバナー枠は -webkit-line-clamp:2 により、タイトルの長さに関わらず
   常に2行分の高さ（約69px）で固定される。そのためバナー表示中は、画面の
   高さに関わらずScrollの位置（bottom:32px）と常に約30px重なってしまう。
   → バナーがある時だけ、Scrollを中央から右側にずらして回避する
     （min-width:769pxのみ・バナーがない時は今までどおり中央）。
   あわせて、輪（.scroll-indicator__ring）の縦の中心をバナー枠の縦の中心に
   揃えるため、bottomを32px→62pxに変更（バナー枠は高さがタイトルの長さに
   関わらず常に一定＝約69pxのため、この値は画面の高さに関わらず一定でよい）。
   さらに画面の高さが低い場合（実機でウィンドウを最大化していない等）は、
   モバイルと同じ理由でキャッチコピーがバナー・横線と重なるため、
   高さ約780px以下の時だけキャッチコピーを縮小・上寄せする。
===================================================== */
@media (min-width: 769px) {
    .front-page .hero-slider ~ .scroll-indicator {
        left: auto;
        right: 60px;
        bottom: 62px;
        transform: none;
    }
}
@media (min-width: 769px) and (max-height: 700px) {
    .hero-catchcopy { top: 16%; }
    .hero-subcopy { font-size: .6rem; margin-bottom: 10px; }
    .hero-catch-text { font-size: clamp(2.2rem, 6vw, 4rem); }
}
@media (min-width: 769px) and (max-height: 780px) {
    .hero-wrapper:has(.hero-slider) .hero-catchcopy { top: 16%; }
    .hero-wrapper:has(.hero-slider) .hero-subcopy { font-size: .6rem; margin-bottom: 10px; }
    .hero-wrapper:has(.hero-slider) .hero-catch-text { font-size: clamp(2.2rem, 6vw, 4rem); }
}

/* =====================================================
   9. お知らせセクション（フロントページ）：温かみオフホワイト + 大型装飾
===================================================== */
.front-page .section-news {
    background: #F5F2EE;
    padding: 100px 0;
    position: relative;
    overflow: hidden;
}
/* 背景装飾：控えめな「01」（より薄く・小さく） */
.front-page .section-news::before {
    content: '01';
    position: absolute;
    right: 2%;
    top: 50%;
    transform: translateY(-50%);
    font-size: clamp(9rem, 15vw, 14rem);
    font-weight: 700;
    color: rgba(80,60,40,.035);
    font-family: var(--font-base);
    line-height: 1;
    pointer-events: none;
    user-select: none;
    z-index: 0;
    letter-spacing: -.04em;
}
/* コンテンツを装飾より前面に */
.front-page .section-news .container { position: relative; z-index: 3; }
/* 画像カラムを拡大 + 幾何学装飾のための基準 */
.front-page .news-image-col {
    min-height: 520px;
    position: relative;
}
.front-page .news-section-img-placeholder {
    min-height: 520px;
    background: linear-gradient(135deg, #ddd8d0, #ccc7be);
    position: relative;
    z-index: 1;
}
.front-page .news-section-img {
    position: relative;
    z-index: 1;
}
/* [旧パターン backup] - news-image-deco SVG 幾何学装飾コンテナ (フロントページお知らせセクション) */
@media not all {
.news-image-deco { position:absolute; inset:-32px; pointer-events:none; z-index:0; overflow:visible; }
.news-image-deco svg { width:100%; height:100%; overflow:visible; }
} /* end @media not all backup */
/* 写真カラムを大きく */
.front-page .news-layout {
    grid-template-columns: 6fr 5fr;
    gap: 40px;
    align-items: center;
}
/* 英字サブタイトル */
.news-section-heading { margin-bottom: 24px; }
.news-section-en {
    display: block;
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .38em;
    text-transform: uppercase;
    color: var(--color-primary);
    opacity: 0.5;
    margin-bottom: 10px;
}
/* 見出しを大きく + デフォルト色 */
.front-page .news-section-label {
    font-size: clamp(1.8rem, 3.5vw, 2.4rem);
    color: var(--color-primary);
    margin-bottom: 0;
}
.front-page .news-section-label::after {
    background: var(--color-primary);
}
/* リスト */
.front-page .news-item {
    border-bottom-color: var(--color-border);
}
.front-page .news-list > .news-item:first-child {
    border-top: 1px solid var(--color-border);
}
.front-page .news-item:hover {
    background: rgba(0,0,0,.03);
}
/* 日付・タイトル：デフォルト色に戻す */
.front-page .news-date {
    color: var(--color-text-light);
}
.front-page .news-title-link {
    color: var(--color-text);
}
.front-page .news-title-link:hover {
    color: var(--color-primary);
}
/* もっと見るリンク：デフォルト色に戻す */
.front-page .btn-more-text {
    color: var(--color-primary);
    border-bottom-color: var(--color-primary);
}
.front-page .btn-more-text:hover {
    color: var(--color-primary-dk);
    border-bottom-color: var(--color-primary-dk);
    text-decoration: none;
}

/* .front-page .news-layout（6fr 5fr固定・メディアクエリなし、上の「9.」内）の方が
   960px時点の .news-layout 1カラム化ルール（レスポンシブセクション内）より
   詳細度が高く上書きしてしまうため、front-page側にも同じ960pxで明示的に
   1カラム化を指定する。詳細度が同じ場合はソース順で後が勝つため、
   このルールは上の「9.」より後方に置く必要がある。 */
@media (max-width: 960px) {
    .front-page .news-layout {
        grid-template-columns: 1fr;
        gap: 28px;
    }
    .front-page .news-image-col {
        min-height: 240px;
    }
}

/* =====================================================
   10. モバイル調整（ヒーローキャッチコピー + バナー）
===================================================== */
@media (max-width: 768px) {
    .hero-catchcopy {
        left: 6%;
        top: 22%;
        max-width: 80%;
    }
    .hero-subcopy { font-size: .68rem; margin-bottom: 14px; }
    .hero-catch-deco { margin-top: 22px; }
    /* バナーと切り替えドットを横並び(PC)から縦並びに変更し、ドットを
       固定位置ではなくバナー枠の直後に自然に追従させる（バナーの高さは
       タイトルの長さで変わるため、固定pxではドットがバナー内に入り込むことがある）。 */
    .front-page .hero-slider {
        padding: 0 20px 36px;
        flex-direction: column;
        align-items: flex-start;
    }
    .front-page .hero-slides {
        width: calc(100vw - 40px);
        max-width: none;
    }
    /* スマホ：バナー折り返し許可。display:block で PC用の -webkit-line-clamp（2行省略）を
       無効化し、全文を折り返して表示する（display を変えないと、overflow:visible にしても
       高さだけ2行分に固定されたまま残り、3行目以降が枠の外に表示されてしまう）。 */
    .front-page .hero-banner-title {
        display: block;
        white-space: normal;
        overflow: visible;
        text-overflow: clip;
        font-size: .9rem;
    }
    .front-page .hero-dots { position: static; margin-top: 10px; }
    .front-page .section-events { padding: 52px 0 84px; }
    .front-page .event-card { flex: 0 0 280px; }
    .front-page .event-card-link { height: 200px; }

    /* イベントカルーセル：モバイルはカルーセル操作をやめ、縦並び1カラムにする。
       横スクロール用のtranslateXはJS側（main.js）でモバイル時は
       適用しないようにしている。 */
    .front-page .event-carousel-wrap {
        flex-direction: column;
        align-items: stretch;
        gap: 0;
    }
    .front-page .carousel-prev,
    .front-page .carousel-next {
        display: none;
    }
    .front-page .event-carousel {
        overflow: visible;
    }
    .front-page .event-carousel-track {
        flex-direction: column;
        gap: 16px;
    }
    .front-page .event-card {
        flex: 0 0 auto;
        width: 100%;
    }
}

@media (max-width: 480px) {
    .hero-catch-text {
        font-size: clamp(2.2rem, 8.5vw, 3rem);
        line-height: 1.5;
    }
    .hero-subcopy { letter-spacing: .18em; }
    .front-page .section-events { padding: 40px 0 64px; }
    .front-page .event-card { flex: 0 0 240px; }
}

/* 10b. モバイル：画面の高さが低い場合（実機Safariでアドレスバー表示時など）の対策。
   キャッチコピー（top:%で上から配置）とScroll・バナー（bottom:pxで下から配置）は
   基準が異なるため、ヒーローの実高さが低くなると余白が詰まり重なることがある。
   幅の条件を必ず併記し、PC（ブラウザの窓を低くした場合）には影響しないようにする。
   上の @media (max-width:480px) より後ろに置き、幅・高さ両方に該当する場合は
   こちらの縮小指定を優先させる（キャッチコピー同士が競合しても重なり解消側を優先）。 */
@media (max-width: 768px) and (max-height: 700px) {
    .hero-catchcopy { top: 14%; }
    .hero-subcopy { font-size: .62rem; margin-bottom: 10px; }
    .hero-catch-text { font-size: clamp(2rem, 7vw, 2.6rem); }
}
@media (max-width: 768px) and (max-height: 560px) {
    .scroll-indicator { display: none; }
}

/* =====================================================
   11. セクション境界ブリッジ装飾
   実SVG要素 + 負マージンで確実に境界またぎを実現。
   height:120px / margin±-60px → レイアウト上の高さは0、
   視覚的には上下60pxずつ両セクションにオーバーラップ。
   z-index:2 でセクション（z-index:auto）より前面にペイント。
===================================================== */
.fp-bridge {
    position: relative;
    height: 120px;
    margin-top: -60px;
    margin-bottom: -60px;
    z-index: 2;
    pointer-events: none;
}
/* [旧パターン backup] - fp-bridge-svg 配置 + deco-orbit アニメーション */
@media not all {
.fp-bridge-svg { position:absolute; top:0; left:0; width:100%; height:100%; display:block; overflow:visible; }
.deco-orbit { animation:fp-rotate-cw 20s linear infinite; transform-box:fill-box; transform-origin:center; }
} /* end @media not all backup */

/* キャンバスパターン用CSS */
.mol-pattern-canvas {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
    pointer-events: none;
    z-index: 0;
    display: block;
}
/* .mol-pattern-wrap: フロントページの news〜links 6セクションをまとめて覆う親要素。
   中の Canvas は1枚だけで、各セクションの背景色はそれぞれ維持したまま
   前面に薄い分子ネットワークを重ねる。z-index の層構成は以下のとおり（このラッパー内限定）：
     0: .ag-bg-layer（awards-grants背景写真）/ 各セクションの背景装飾文字（::before）
     1: .section-awards-grants--has-bg::after（暗背景セクションの暗転オーバーレイ）
     2: .mol-pattern-canvas（共有Canvas。上記いずれよりも前面）
     3: 各セクションの .container 等、実際に読ませるコンテンツ（Canvasより前面）
   ※アーカイブ・個別ページの .mol-pattern-canvas は従来どおり z-index:0（上の基本ルール）のまま。 */
.mol-pattern-wrap {
    position: relative;
}
.mol-pattern-wrap > .mol-pattern-canvas {
    z-index: 2;
}
