:root {
  --blue: #0d4f9c;
  --deep: #12355b;
  --gold: #f2b705;
  --sky: #dff4ff;
  --white: rgba(255,255,255,.86);
  --glass: rgba(255,255,255,.76);
  --text: #1a2633;
  --muted: #64748b;
  --line: rgba(18,53,91,.12);
  --shadow: 0 18px 60px rgba(18,53,91,.16);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans JP", sans-serif;
  color: var(--text);
  background: #f7fbff;
  line-height: 1.75;
}
a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }
.bg-stage, .bg-video, .bg-image, .bg-overlay { position: fixed; inset: 0; z-index: -3; }
.bg-video { width: 100%; height: 100%; object-fit: cover; opacity: 1; transition: opacity .7s ease; }
.bg-image { background-size: cover; background-position: center; opacity: 0; transition: opacity .7s ease, background-image .7s ease; }
.bg-overlay {
  display: none;
}
.site-header {
  position: sticky; top: 0; z-index: 20;
  background: rgba(255,255,255,.88);
  backdrop-filter: blur(18px);
  border-bottom: 1px solid var(--line);
}
.header-inner { max-width: 1180px; margin: 0 auto; padding: 14px 20px; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.brand { display: flex; align-items: center; gap: 12px; font-weight: 800; color: var(--deep); }
.brand-mark { width: 50px; height: 50px; display: grid; place-items: center; flex: 0 0 auto; }
.brand-mark img { width: 100%; height: 100%; object-fit: contain; }
.nav { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font-size: 14px; }
.nav a { padding: 8px 10px; border-radius: 999px; color: var(--deep); }
.nav a:hover { background: rgba(13,79,156,.08); }
.login-pill { background: var(--blue) !important; color: #fff !important; }
.section { min-height: 80vh; padding: 92px 20px; display: flex; align-items: center; }
.section.compact { min-height: auto; }
.container { width: min(1180px, 100%); margin: 0 auto; }
.hero-card, .glass-card { background: var(--glass); border: 1px solid rgba(255,255,255,.64); border-radius: 32px; box-shadow: var(--shadow); backdrop-filter: blur(18px); }
.hero-card { max-width: 760px; padding: 54px; }
.hero-logo { width: 132px; height: 132px; object-fit: contain; margin-bottom: 16px; }
.badge { display: inline-flex; align-items: center; gap: 8px; background: rgba(242,183,5,.18); color: #845d00; border: 1px solid rgba(242,183,5,.24); border-radius: 999px; padding: 8px 14px; font-weight: 700; font-size: 14px; }
h1 { font-size: clamp(34px, 5vw, 68px); line-height: 1.12; margin: 20px 0 16px; color: var(--deep); letter-spacing: -.04em; }
h2 { font-size: clamp(26px, 3vw, 42px); line-height: 1.2; margin: 0 0 12px; color: var(--deep); letter-spacing: -.03em; }
h3 { margin: 0 0 8px; color: var(--deep); }
p { margin: 0 0 16px; }
.lead { font-size: 18px; color: #34495f; }
.actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 28px; }
.btn { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 10px 18px; border-radius: 999px; font-weight: 800; border: 1px solid var(--line); background: #fff; color: var(--deep); cursor: pointer; }
.btn.primary { background: var(--blue); color: #fff; border-color: var(--blue); }
.btn.gold { background: var(--gold); color: #322100; border-color: var(--gold); }
.grid { display: grid; gap: 22px; }
.grid.three { grid-template-columns: repeat(3, 1fr); }
.grid.two { grid-template-columns: repeat(2, 1fr); }
.panel { padding: 30px; }
.officer-group { margin-top: 24px; }
.officer-list { display: grid; grid-template-columns: repeat(3,1fr); gap: 16px; }
.officer-card { background: rgba(255,255,255,.8); border: 1px solid var(--line); border-radius: 24px; padding: 20px; text-align: center; }
.officer-photo { width: 120px; height: 120px; border-radius: 50%; object-fit: cover; margin: 0 auto 14px; border: 5px solid rgba(255,255,255,.95); box-shadow: 0 10px 28px rgba(18,53,91,.16); background: #eaf4ff; }
.role { display: inline-block; font-size: 13px; padding: 4px 10px; border-radius: 999px; color: var(--blue); background: rgba(13,79,156,.08); font-weight: 800; }
.name { font-size: 19px; font-weight: 900; margin-top: 8px; }
.card-list { display: grid; gap: 16px; }
.info-card { background: rgba(255,255,255,.82); border: 1px solid var(--line); border-radius: 24px; padding: 22px; }
.meta { color: var(--muted); font-size: 13px; font-weight: 700; }
.thumb { width: 100%; height: 190px; object-fit: cover; border-radius: 18px; margin-bottom: 14px; background: #e6f2ff; }
.form { display: grid; gap: 14px; }
.form label { font-weight: 800; color: var(--deep); }
.input, textarea, select { width: 100%; border: 1px solid var(--line); border-radius: 16px; padding: 13px 14px; background: rgba(255,255,255,.9); font: inherit; }
textarea { min-height: 140px; resize: vertical; }
.footer { background: rgba(18,53,91,.92); color: #fff; padding: 36px 20px; }
.footer .container { display: flex; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.empty { color: var(--muted); background: rgba(255,255,255,.7); padding: 18px; border-radius: 18px; }
.notice { background: rgba(13,79,156,.1); border: 1px solid rgba(13,79,156,.15); padding: 12px 14px; border-radius: 16px; margin-bottom: 18px; }
@media (max-width: 860px) {
  .header-inner { align-items: flex-start; flex-direction: column; }
  .nav { width: 100%; overflow-x: auto; flex-wrap: nowrap; padding-bottom: 4px; }
  .section { min-height: auto; padding: 68px 16px; }
  .hero-card { padding: 30px 22px; border-radius: 26px; }
  .hero-logo { width: 104px; height: 104px; }
  .brand-mark { width: 44px; height: 44px; }
  .grid.three, .grid.two, .officer-list { grid-template-columns: 1fr; }
  .officer-photo { width: 104px; height: 104px; }
}

/* 表側トップページ：大きく拡大されて見えないように全体を少しコンパクト化 */
.front-page .header-inner{padding:10px 20px}.front-page .brand-mark{width:42px;height:42px}.front-page .nav{gap:6px;font-size:13px}.front-page .section{min-height:70vh;padding:70px 20px}.front-page .section.compact{padding:58px 20px}.front-page .hero-card{max-width:640px;padding:38px 42px;border-radius:28px}.front-page .hero-logo{width:92px;height:92px;margin-bottom:12px}.front-page h1{font-size:clamp(30px,4vw,48px);letter-spacing:-.025em}.front-page h2{font-size:clamp(24px,2.6vw,36px)}.front-page .lead{font-size:16px}.front-page .panel{padding:24px}.front-page .officer-photo{width:104px;height:104px}.front-page .officer-card{padding:16px}.front-page .bg-video,.front-page .bg-image{object-position:center center}.front-page .glass-card,.front-page .hero-card{background:rgba(255,255,255,.82)}
@media(max-width:860px){.front-page .section{padding:54px 14px}.front-page .section.compact{padding:46px 14px}.front-page .hero-card{padding:26px 20px}.front-page .hero-logo{width:82px;height:82px}.front-page h1{font-size:30px}}

/* お知らせ：カレンダー入力された予定を見やすく表示 */
.section-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.section-title-row h2{margin-bottom:6px}.news-calendar-list{display:grid;gap:16px}.news-calendar-card{display:grid;grid-template-columns:86px 1fr;gap:16px;align-items:start;background:rgba(255,255,255,.86);border:1px solid var(--line);border-radius:24px;padding:18px}.news-date{width:72px;min-height:78px;border-radius:20px;background:linear-gradient(180deg,var(--blue),#0a3b77);color:#fff;display:grid;place-items:center;text-align:center;box-shadow:0 10px 24px rgba(13,79,156,.22);overflow:hidden}.news-date strong{font-size:30px;line-height:1}.news-date span{font-size:13px;font-weight:900;color:#ffe69a}.news-body h3{font-size:20px;margin:2px 0 8px}.news-thumb{width:140px;height:92px;object-fit:cover;border-radius:16px;float:right;margin:0 0 10px 14px;background:#e6f2ff}.pdf-btn{margin-top:4px;border-color:rgba(13,79,156,.25);background:#eef6ff;color:var(--blue)}@media(max-width:760px){.news-calendar-card{grid-template-columns:1fr}.news-date{width:100%;min-height:56px;grid-template-columns:auto auto;justify-content:center;gap:6px}.news-date strong{font-size:24px}.news-thumb{float:none;width:100%;height:160px;margin:0 0 10px}}

/* 活動報告：カードでは短く見せ、全文はポップアップで確認 */
.report-card{display:flex;flex-direction:column;min-height:100%}.report-card h3{font-size:20px;line-height:1.55}.report-excerpt{color:#26384a}.report-open{align-self:flex-start;margin-top:auto;background:#eef6ff;color:var(--blue);border-color:rgba(13,79,156,.24)}.front-modal[hidden]{display:none}.front-modal{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:24px}.front-modal-backdrop{position:absolute;inset:0;background:rgba(10,24,40,.58);backdrop-filter:blur(6px)}.front-modal-panel{position:relative;width:min(880px,100%);max-height:min(86vh,920px);overflow:auto;background:rgba(255,255,255,.96);border:1px solid rgba(255,255,255,.7);border-radius:28px;box-shadow:0 28px 90px rgba(10,24,40,.28);padding:34px}.front-modal-close{position:sticky;top:0;float:right;width:42px;height:42px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--deep);font-size:26px;font-weight:900;line-height:1;cursor:pointer;box-shadow:0 8px 22px rgba(18,53,91,.12)}.front-modal-content{clear:both}.front-modal-content h3{font-size:clamp(24px,3vw,34px);line-height:1.35;margin:6px 0 18px}.modal-report-image{width:100%;max-height:420px;object-fit:cover;border-radius:22px;margin-bottom:18px;background:#e6f2ff}.modal-report-text{font-size:16px;line-height:2;color:#1c2b3a;white-space:normal}.modal-open{overflow:hidden}@media(max-width:760px){.front-modal{padding:12px}.front-modal-panel{border-radius:22px;padding:22px;max-height:88vh}.front-modal-close{width:38px;height:38px;font-size:24px}.modal-report-image{max-height:260px}.modal-report-text{font-size:15px;line-height:1.9}}

/* 余白・三役紹介デザイン改善 2026-07 */
.front-page main{overflow:hidden}.front-page .site-header{box-shadow:0 8px 28px rgba(18,53,91,.08)}.front-page .section{min-height:auto;padding:44px 20px;align-items:flex-start;scroll-margin-top:76px}.front-page #top{min-height:calc(100vh - 64px);align-items:center;padding:44px 20px 38px}.front-page .section.compact{padding:26px 20px}.front-page .glass-card,.front-page .hero-card{border-radius:26px;box-shadow:0 14px 42px rgba(18,53,91,.14)}.front-page .panel{padding:24px}.front-page .section-title-row{margin-bottom:12px}.front-page .news-calendar-list{gap:12px}.front-page .news-calendar-card{padding:14px 16px;border-radius:22px;grid-template-columns:74px 1fr}.front-page .news-date{width:62px;min-height:68px;border-radius:18px}.front-page .news-date strong{font-size:26px}.front-page .news-body h3{font-size:19px}.front-page .lead{margin-bottom:10px}

.section-heading-line{display:grid;gap:4px;margin-bottom:18px}.section-kicker{width:max-content;display:inline-flex;align-items:center;gap:8px;padding:4px 10px;border-radius:999px;background:linear-gradient(90deg,rgba(242,183,5,.22),rgba(13,79,156,.12));color:#0d4f9c;font-size:12px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.officer-panel{background:linear-gradient(135deg,rgba(255,255,255,.9),rgba(239,247,255,.8));position:relative;overflow:hidden}.officer-panel:before{content:"";position:absolute;right:-120px;top:-160px;width:340px;height:340px;border-radius:50%;background:radial-gradient(circle,rgba(242,183,5,.28),rgba(242,183,5,0) 68%);pointer-events:none}.officer-groups-modern{position:relative;display:grid;gap:18px}.officer-group{margin:0;background:rgba(255,255,255,.74);border:1px solid rgba(13,79,156,.14);border-radius:24px;padding:0;overflow:hidden;box-shadow:0 12px 34px rgba(18,53,91,.1)}.officer-group-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 18px;background:linear-gradient(90deg,#0d4f9c,#12355b);color:#fff}.officer-group-head .group-label{display:block;font-size:18px;font-weight:900;letter-spacing:.02em}.officer-group-head strong{display:inline-flex;margin-top:4px;padding:2px 10px;border-radius:999px;background:rgba(255,255,255,.15);color:#ffe69a;font-size:12px}.officer-group .empty{margin:16px}.front-page .officer-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:rgba(13,79,156,.11);padding:1px}.front-page .officer-card{position:relative;border:0;border-radius:0;padding:20px 18px 18px;background:rgba(255,255,255,.92);text-align:left;display:grid;grid-template-columns:76px 1fr;grid-template-areas:"photo role" "photo name";column-gap:16px;align-items:center;min-height:116px;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.front-page .officer-card:hover{transform:translateY(-2px);box-shadow:0 12px 24px rgba(18,53,91,.12);background:#fff;z-index:1}.officer-photo-wrap{grid-area:photo;position:relative}.officer-photo-wrap:after{content:"";position:absolute;inset:-5px;border-radius:50%;border:2px solid rgba(242,183,5,.9);pointer-events:none}.front-page .officer-photo{width:76px;height:76px;margin:0;border:3px solid #fff;box-shadow:0 8px 22px rgba(18,53,91,.18)}.front-page .role{grid-area:role;width:max-content;max-width:100%;font-size:12px;padding:3px 10px;background:rgba(13,79,156,.1);color:#0d4f9c}.front-page .name{grid-area:name;font-size:20px;line-height:1.25;margin:6px 0 0;color:#12355b;letter-spacing:.01em}.front-page .officer-group + .officer-group{margin-top:0}

@media(max-width:980px){.front-page .officer-list{grid-template-columns:1fr}.front-page .officer-card{border-radius:0}.front-page .section.compact{padding:20px 14px}.front-page .panel{padding:20px}.front-page .news-calendar-card{grid-template-columns:64px 1fr}}
@media(max-width:760px){.front-page .section{padding:24px 12px}.front-page #top{min-height:auto;padding:28px 12px}.front-page .section.compact{padding:16px 12px}.front-page .panel{padding:18px;border-radius:22px}.front-page .news-calendar-card{grid-template-columns:1fr}.front-page .officer-group-head{padding:14px 16px}.front-page .officer-card{grid-template-columns:64px 1fr;min-height:96px;padding:16px 14px}.front-page .officer-photo{width:64px;height:64px}.front-page .name{font-size:18px}}

/* スマートフォン用：上部は三本線メニュー、下部は主要導線固定 */
.mobile-menu-toggle,
.mobile-drawer,
.mobile-bottom-nav{display:none}

.mobile-menu-toggle{appearance:none;border:1px solid rgba(13,79,156,.16);background:rgba(255,255,255,.94);width:46px;height:46px;border-radius:16px;align-items:center;justify-content:center;flex-direction:column;gap:5px;box-shadow:0 8px 20px rgba(18,53,91,.10);cursor:pointer;flex:0 0 auto}
.mobile-menu-toggle span{width:22px;height:2px;border-radius:999px;background:var(--deep);transition:transform .2s ease,opacity .2s ease}
.mobile-menu-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.mobile-menu-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.mobile-menu-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.mobile-drawer{position:absolute;left:12px;right:12px;top:calc(100% + 8px);z-index:70;grid-template-columns:1fr;gap:8px;padding:12px;border:1px solid rgba(18,53,91,.12);border-radius:22px;background:rgba(255,255,255,.96);box-shadow:0 20px 60px rgba(18,53,91,.20);backdrop-filter:blur(18px)}
.mobile-drawer a{display:flex;align-items:center;justify-content:space-between;min-height:48px;padding:10px 14px;border-radius:16px;background:rgba(239,246,255,.72);color:var(--deep);font-weight:900;border:1px solid rgba(13,79,156,.08)}
.mobile-drawer a:after{content:"›";color:var(--blue);font-size:22px;line-height:1}
.mobile-drawer[hidden]{display:none!important}
.mobile-bottom-nav{position:fixed;left:10px;right:10px;bottom:10px;z-index:85;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;padding:8px;border-radius:24px;border:1px solid rgba(18,53,91,.14);background:rgba(255,255,255,.94);box-shadow:0 16px 46px rgba(18,53,91,.22);backdrop-filter:blur(18px)}
.mobile-bottom-nav a{min-height:48px;display:flex;align-items:center;justify-content:center;text-align:center;border-radius:18px;background:#f4f9ff;color:var(--deep);font-size:13px;font-weight:900;border:1px solid rgba(13,79,156,.10);line-height:1.25}
.mobile-bottom-nav a.member-login{background:var(--blue);color:#fff;border-color:var(--blue)}

@media(max-width:860px){
  body{padding-bottom:84px}
  .site-header{position:sticky;top:0;z-index:90}
  .header-inner,.front-page .header-inner{padding:8px 12px;flex-direction:row;align-items:center;justify-content:space-between;gap:10px}
  .brand{min-width:0;gap:8px;line-height:1.2}
  .brand-mark,.front-page .brand-mark{width:38px;height:38px}
  .brand span:last-child{display:block;min-width:0;max-width:calc(100vw - 118px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:15px;font-weight:900}
  .site-header .nav{display:none!important}
  .mobile-menu-toggle{display:inline-flex}
  .mobile-drawer{display:grid}
  .mobile-bottom-nav{display:grid}
  .section{padding-top:42px}
  .front-page .section{scroll-margin-top:64px}
}

@media(max-width:380px){
  .brand span:last-child{max-width:calc(100vw - 108px);font-size:13px}
  .mobile-bottom-nav{left:6px;right:6px;bottom:6px;gap:5px;padding:6px;border-radius:20px}
  .mobile-bottom-nav a{font-size:12px;min-height:44px;border-radius:15px}
}

/* 入会フォーム：必要項目を見やすく整理 */
.join-panel{max-width:980px}.join-form{gap:18px}.form-section{display:grid;gap:14px;border:1px solid rgba(13,79,156,.12);border-radius:24px;padding:18px;background:rgba(255,255,255,.62)}.form-section h2{font-size:24px;margin:0 0 2px;padding-bottom:8px;border-bottom:1px solid rgba(13,79,156,.12)}.required,.optional{display:inline-flex;align-items:center;margin-left:6px;padding:2px 7px;border-radius:999px;font-size:11px;font-weight:900;vertical-align:middle}.required{background:#fff0f0;color:#b91c1c;border:1px solid #ffd0d0}.optional{background:#eef6ff;color:var(--blue);border:1px solid rgba(13,79,156,.16)}.join-form .btn.primary{min-height:52px;font-size:16px}@media(max-width:760px){.join-panel{padding:20px}.form-section{padding:15px;border-radius:20px}.form-section h2{font-size:21px}}

/* 全体文字サイズ調整：メニュー関係はそのまま、本文・フォーム・カードのみ少し小さく */
main,
.footer,
.login-card {
  font-size: 14px;
}
main p,
.footer p,
.login-card p {
  line-height: 1.65;
}
main h1,
.login-card h1 {
  font-size: clamp(26px, 3.4vw, 42px);
  line-height: 1.18;
}
main h2 {
  font-size: clamp(20px, 2.4vw, 30px);
  line-height: 1.25;
}
main h3 {
  font-size: 17px;
  line-height: 1.45;
}
main .lead {
  font-size: 15px;
  line-height: 1.75;
}
main .badge,
main .meta,
main .role,
main .required,
main .optional {
  font-size: 11px;
}
main .name {
  font-size: 17px;
}
main .btn,
.login-card .btn {
  font-size: 13px;
  min-height: 40px;
  padding: 8px 15px;
}
main .form label,
.login-card .form label {
  font-size: 13px;
}
main .input,
main textarea,
main select,
.login-card .input,
.login-card textarea,
.login-card select {
  font-size: 13px;
  padding: 10px 12px;
  border-radius: 13px;
}
main textarea {
  min-height: 118px;
}
main .panel {
  padding: 22px;
}
main .info-card {
  padding: 18px;
}
.front-page main {
  font-size: 14px;
}
.front-page main h1 {
  font-size: clamp(26px, 3.6vw, 42px);
}
.front-page main h2 {
  font-size: clamp(20px, 2.3vw, 30px);
}
.front-page main .lead {
  font-size: 14px;
}
.front-page main .news-body h3,
.front-page main .report-card h3 {
  font-size: 17px;
}
.front-page main .officer-group-head .group-label {
  font-size: 16px;
}
.front-page main .name {
  font-size: 17px;
}
.front-page main .news-date strong {
  font-size: 23px;
}
.front-page main .modal-report-text {
  font-size: 14px;
  line-height: 1.85;
}
.front-page main .front-modal-content h3 {
  font-size: clamp(20px, 2.5vw, 28px);
}
.join-panel .form-section h2 {
  font-size: 19px;
}
@media (max-width: 760px) {
  main,
  .footer,
  .login-card {
    font-size: 13px;
  }
  main h1,
  .front-page main h1,
  .login-card h1 {
    font-size: 24px;
  }
  main h2,
  .front-page main h2 {
    font-size: 19px;
  }
  main h3,
  .front-page main .news-body h3,
  .front-page main .report-card h3 {
    font-size: 16px;
  }
  main .lead,
  .front-page main .lead {
    font-size: 13px;
  }
  .front-page main .name {
    font-size: 16px;
  }
  main .panel {
    padding: 16px;
  }
}

/* 追加修正：メニュー以外の文字・パーツをさらにコンパクト化 */
main,
.footer,
.login-card {
  font-size: 13px;
  line-height: 1.58;
}
main p,
.footer p,
.login-card p {
  line-height: 1.62;
  margin-bottom: 10px;
}
main h1,
.login-card h1 {
  font-size: clamp(24px, 3vw, 38px);
  line-height: 1.16;
  margin: 14px 0 10px;
  letter-spacing: -0.025em;
}
main h2 {
  font-size: clamp(19px, 2.2vw, 28px);
  line-height: 1.2;
  margin-bottom: 8px;
}
main h3 {
  font-size: 15px;
  line-height: 1.4;
}
main .lead {
  font-size: 13.5px;
  line-height: 1.65;
}
.section {
  min-height: auto;
  padding: 44px 16px;
}
.section.compact {
  padding: 30px 16px;
}
.container {
  width: min(1080px, 100%);
}
.hero-card,
.glass-card {
  border-radius: 22px;
  box-shadow: 0 10px 30px rgba(18,53,91,.12);
}
.hero-card {
  max-width: 590px;
  padding: 28px 34px;
}
.hero-logo {
  width: 76px;
  height: 76px;
  margin-bottom: 10px;
}
.badge {
  font-size: 12px;
  padding: 5px 11px;
}
.actions {
  gap: 8px;
  margin-top: 18px;
}
.btn {
  min-height: 36px;
  padding: 7px 13px;
  font-size: 12.5px;
}
.grid {
  gap: 14px;
}
.panel {
  padding: 18px;
}
.info-card {
  padding: 15px;
  border-radius: 18px;
}
.thumb {
  height: 150px;
  border-radius: 14px;
  margin-bottom: 10px;
}
.meta {
  font-size: 11px;
}
.input,
textarea,
select {
  font-size: 12.5px;
  padding: 9px 11px;
  border-radius: 12px;
}
textarea {
  min-height: 105px;
}
.form label {
  font-size: 12.5px;
}

/* トップページ：ファーストビューとカードサイズを圧縮 */
.front-page .section {
  padding: 32px 16px;
}
.front-page .section.compact {
  padding: 24px 16px;
}
.front-page #top {
  min-height: 62vh;
  padding: 34px 16px;
}
.front-page .hero-card {
  max-width: 600px;
  padding: 28px 34px;
  border-radius: 22px;
}
.front-page .hero-logo {
  width: 68px;
  height: 68px;
  margin-bottom: 8px;
}
.front-page main h1,
.front-page h1 {
  font-size: clamp(25px, 3.1vw, 38px);
  line-height: 1.15;
  margin: 14px 0 10px;
}
.front-page main h2,
.front-page h2 {
  font-size: clamp(19px, 2.1vw, 27px);
}
.front-page main .lead,
.front-page .lead {
  font-size: 13.5px;
  line-height: 1.6;
}
.front-page .badge {
  font-size: 11.5px;
  padding: 5px 11px;
}
.front-page .btn {
  min-height: 36px;
  padding: 7px 14px;
  font-size: 12.5px;
}
.front-page .panel {
  padding: 18px;
}
.front-page .section-heading-line {
  gap: 2px;
  margin-bottom: 12px;
}
.front-page .section-kicker {
  font-size: 10px;
  padding: 3px 8px;
}

/* 三役・歴代三役：カード・写真・名前を縮小 */
.officer-group {
  border-radius: 20px;
}
.officer-groups-modern {
  gap: 12px;
}
.officer-group-head {
  padding: 12px 16px;
}
.officer-group-head .group-label {
  font-size: 15px;
}
.officer-group-head strong {
  font-size: 10.5px;
  padding: 2px 8px;
}
.officer-list {
  gap: 12px;
}
.officer-card {
  padding: 14px;
  border-radius: 18px;
}
.officer-photo {
  width: 84px;
  height: 84px;
  border-width: 3px;
  margin-bottom: 9px;
}
.role {
  font-size: 11px;
  padding: 3px 9px;
}
.name {
  font-size: 15.5px;
  line-height: 1.3;
  margin-top: 6px;
}
.front-page .officer-panel {
  padding: 18px;
}
.front-page .officer-panel:before {
  width: 240px;
  height: 240px;
  right: -96px;
  top: -122px;
}
.front-page .officer-list {
  gap: 10px;
  padding: 10px;
  background: rgba(13,79,156,.04);
}
.front-page .officer-card {
  grid-template-columns: 62px 1fr;
  column-gap: 12px;
  min-height: 88px;
  padding: 12px 13px;
  border-radius: 16px;
  border: 1px solid rgba(13,79,156,.10);
  text-align: left;
}
.front-page .officer-photo {
  width: 62px;
  height: 62px;
  border-width: 2px;
}
.front-page .officer-photo-wrap:after {
  inset: -4px;
  border-width: 1.5px;
}
.front-page .role {
  font-size: 10.5px;
  padding: 2px 8px;
}
.front-page .name {
  font-size: 15.5px;
  line-height: 1.25;
  margin-top: 4px;
}

/* お知らせ・活動報告も小型化 */
.news-calendar-list {
  gap: 10px;
}
.news-calendar-card,
.front-page .news-calendar-card {
  grid-template-columns: 60px 1fr;
  gap: 12px;
  padding: 12px 14px;
  border-radius: 18px;
}
.news-date,
.front-page .news-date {
  width: 52px;
  min-height: 56px;
  border-radius: 14px;
}
.news-date strong,
.front-page .news-date strong {
  font-size: 20px;
}
.news-date span,
.front-page .news-date span {
  font-size: 10px;
}
.news-body h3,
.front-page main .news-body h3,
.report-card h3,
.front-page main .report-card h3 {
  font-size: 15px;
}
.news-thumb {
  width: 112px;
  height: 74px;
  border-radius: 12px;
}
.report-card .btn {
  margin-top: 6px;
}

/* 入会・問い合わせなどフォームページ */
.join-panel {
  max-width: 860px;
}
.form-section {
  gap: 10px;
  padding: 13px;
  border-radius: 18px;
}
.form-section h2,
.join-panel .form-section h2 {
  font-size: 16px;
  padding-bottom: 6px;
}
.required,
.optional {
  font-size: 10px;
  padding: 1px 6px;
}
.join-form .btn.primary {
  min-height: 42px;
  font-size: 13px;
}

@media (max-width: 860px) {
  .section,
  .front-page .section {
    padding: 26px 12px;
  }
  .section.compact,
  .front-page .section.compact {
    padding: 18px 12px;
  }
  .hero-card,
  .front-page .hero-card {
    padding: 22px 18px;
    border-radius: 20px;
  }
  .hero-logo,
  .front-page .hero-logo {
    width: 60px;
    height: 60px;
  }
  main h1,
  .front-page main h1,
  .front-page h1,
  .login-card h1 {
    font-size: 23px;
  }
  main h2,
  .front-page main h2,
  .front-page h2 {
    font-size: 18px;
  }
  main,
  .footer,
  .login-card {
    font-size: 12.5px;
  }
  .panel,
  .front-page .panel {
    padding: 14px;
  }
  .officer-list,
  .front-page .officer-list {
    grid-template-columns: 1fr;
    gap: 8px;
    padding: 8px;
  }
  .officer-card,
  .front-page .officer-card {
    grid-template-columns: 54px 1fr;
    min-height: 76px;
    padding: 10px 11px;
  }
  .officer-photo,
  .front-page .officer-photo {
    width: 54px;
    height: 54px;
  }
  .name,
  .front-page .name {
    font-size: 14.5px;
  }
  .news-calendar-card,
  .front-page .news-calendar-card {
    grid-template-columns: 1fr;
  }
  .news-date,
  .front-page .news-date {
    width: 100%;
    min-height: 44px;
    grid-template-columns: auto auto;
    justify-content: center;
    gap: 6px;
  }
}

/* 2026-07-09 v3：メニュー以外の画面パーツをさらに小型化 */
main {
  font-size: 12px;
  line-height: 1.55;
}
main p {
  line-height: 1.55;
  margin-bottom: 8px;
}
main h1,
.login-card h1 {
  font-size: clamp(22px, 2.4vw, 32px) !important;
  line-height: 1.14 !important;
  margin: 10px 0 8px !important;
  letter-spacing: -0.02em;
}
main h2 {
  font-size: clamp(17px, 1.7vw, 23px) !important;
  line-height: 1.18 !important;
  margin-bottom: 6px !important;
}
main h3 {
  font-size: 14px !important;
  line-height: 1.35 !important;
}
main .lead {
  font-size: 12.5px !important;
  line-height: 1.55 !important;
  margin-bottom: 8px !important;
}
main .section {
  padding: 22px 14px !important;
}
main .section.compact {
  padding: 18px 14px !important;
}
main .container {
  width: min(920px, calc(100% - 24px)) !important;
}
main .glass-card,
main .hero-card,
main .panel {
  border-radius: 18px !important;
}
main .panel {
  padding: 16px !important;
}
main .hero-card {
  max-width: 520px !important;
  padding: 22px 26px !important;
}
main .badge {
  font-size: 10.5px !important;
  padding: 4px 9px !important;
}
main .btn,
.login-card .btn {
  min-height: 32px !important;
  padding: 6px 11px !important;
  font-size: 12px !important;
  border-radius: 999px;
}
main .actions {
  margin-top: 14px !important;
  gap: 7px !important;
}
main .grid {
  gap: 10px !important;
}
main .grid.two {
  gap: 10px !important;
}
main .input,
main textarea,
main select,
.login-card .input,
.login-card textarea,
.login-card select {
  font-size: 12px !important;
  padding: 7px 9px !important;
  border-radius: 10px !important;
  line-height: 1.45 !important;
}
main .form,
main .join-form {
  gap: 10px !important;
}
main .form label,
.login-card .form label {
  font-size: 12px !important;
  line-height: 1.35 !important;
}
main textarea {
  min-height: 86px !important;
}
main .notice,
main .empty {
  padding: 9px 11px !important;
  border-radius: 12px !important;
  font-size: 12px !important;
}
main .meta,
main .required,
main .optional,
main .role {
  font-size: 10px !important;
}

/* 入会フォーム専用：スクリーンショットのような大きさを抑える */
main .join-panel {
  max-width: 760px !important;
  padding: 16px 18px !important;
}
main .join-panel > .badge {
  margin-bottom: 4px;
}
main .join-panel .form-section {
  gap: 8px !important;
  padding: 11px 12px !important;
  border-radius: 14px !important;
}
main .join-panel .form-section h2 {
  font-size: 16px !important;
  line-height: 1.2 !important;
  padding-bottom: 5px !important;
  margin-bottom: 2px !important;
}
main .join-panel .required,
main .join-panel .optional {
  padding: 1px 5px !important;
  margin-left: 4px !important;
}
main .join-panel .join-form .btn.primary {
  min-height: 36px !important;
  font-size: 12.5px !important;
}

/* トップページも一段階小型化 */
.front-page main .container {
  width: min(1040px, calc(100% - 24px)) !important;
}
.front-page main #top {
  min-height: 56vh !important;
  padding: 26px 14px !important;
}
.front-page main .hero-card {
  max-width: 540px !important;
  padding: 22px 28px !important;
}
.front-page main .hero-logo {
  width: 56px !important;
  height: 56px !important;
}
.front-page main h1 {
  font-size: clamp(24px, 2.6vw, 34px) !important;
}
.front-page main h2 {
  font-size: clamp(18px, 1.8vw, 24px) !important;
}
.front-page main .panel {
  padding: 16px !important;
}
.front-page main .officer-group-head {
  padding: 10px 13px !important;
}
.front-page main .officer-group-head .group-label {
  font-size: 14px !important;
}
.front-page main .officer-list {
  gap: 8px !important;
  padding: 8px !important;
}
.front-page main .officer-card {
  grid-template-columns: 52px 1fr !important;
  min-height: 72px !important;
  padding: 9px 10px !important;
  column-gap: 10px !important;
}
.front-page main .officer-photo {
  width: 52px !important;
  height: 52px !important;
}
.front-page main .name {
  font-size: 14px !important;
  margin-top: 2px !important;
}
.front-page main .news-calendar-card {
  padding: 10px 12px !important;
  border-radius: 15px !important;
}
.front-page main .news-date {
  width: 46px !important;
  min-height: 50px !important;
}
.front-page main .news-date strong {
  font-size: 18px !important;
}

@media (max-width: 860px) {
  main {
    font-size: 12px !important;
  }
  main .container,
  .front-page main .container {
    width: min(100%, calc(100% - 16px)) !important;
  }
  main .section,
  .front-page main .section {
    padding: 18px 8px !important;
  }
  main .panel,
  main .join-panel,
  .front-page main .panel {
    padding: 13px !important;
    border-radius: 16px !important;
  }
  main h1,
  .front-page main h1,
  .login-card h1 {
    font-size: 21px !important;
  }
  main h2,
  .front-page main h2 {
    font-size: 16px !important;
  }
  main .grid.two {
    grid-template-columns: 1fr !important;
  }
  main .join-panel .form-section {
    padding: 10px !important;
  }
  .front-page main .officer-card {
    grid-template-columns: 48px 1fr !important;
    min-height: 68px !important;
  }
  .front-page main .officer-photo {
    width: 48px !important;
    height: 48px !important;
  }
}


/* 2026-07-09 v4：少し大きく戻す・トップ背景は動画優先・三役を縦長カードに変更 */
.bg-stage.is-video .bg-video { opacity: 1 !important; }
.bg-stage.is-video .bg-image { opacity: 0 !important; }
.bg-video { background: #dceaf6; }

main {
  font-size: 13px !important;
  line-height: 1.65 !important;
}
main p {
  line-height: 1.68 !important;
  margin-bottom: 10px !important;
}
main h1,
.login-card h1 {
  font-size: clamp(26px, 3vw, 40px) !important;
  line-height: 1.16 !important;
  margin: 14px 0 10px !important;
}
main h2 {
  font-size: clamp(20px, 2.15vw, 30px) !important;
  line-height: 1.22 !important;
  margin-bottom: 9px !important;
}
main h3 {
  font-size: 16px !important;
  line-height: 1.42 !important;
}
main .lead {
  font-size: 14px !important;
  line-height: 1.68 !important;
  margin-bottom: 10px !important;
}
main .section {
  padding: 34px 16px !important;
}
main .section.compact {
  padding: 28px 16px !important;
}
main .container {
  width: min(1080px, calc(100% - 24px)) !important;
}
main .panel {
  padding: 22px !important;
}
main .hero-card,
main .glass-card,
main .panel {
  border-radius: 22px !important;
}
main .badge {
  font-size: 12px !important;
  padding: 5px 11px !important;
}
main .btn,
.login-card .btn {
  min-height: 38px !important;
  padding: 8px 14px !important;
  font-size: 13px !important;
}
main .actions {
  margin-top: 18px !important;
  gap: 9px !important;
}
main .input,
main textarea,
main select,
.login-card .input,
.login-card textarea,
.login-card select {
  font-size: 13px !important;
  padding: 9px 11px !important;
  border-radius: 12px !important;
  line-height: 1.5 !important;
}
main .form label,
.login-card .form label {
  font-size: 13px !important;
}
main textarea {
  min-height: 100px !important;
}
main .meta,
main .required,
main .optional,
main .role {
  font-size: 11px !important;
}

/* トップページ：小さくしすぎた部分を少し戻し、背景の最上部は動画 */
.front-page main #top {
  min-height: 66vh !important;
  padding: 40px 16px !important;
}
.front-page main #top[data-bg="video"] {
  background: transparent !important;
}
.front-page main .hero-card {
  max-width: 620px !important;
  padding: 32px 38px !important;
  border-radius: 26px !important;
}
.front-page main .hero-logo {
  width: 78px !important;
  height: 78px !important;
  margin-bottom: 10px !important;
}
.front-page main h1 {
  font-size: clamp(30px, 3.4vw, 46px) !important;
  line-height: 1.14 !important;
}
.front-page main h2 {
  font-size: clamp(21px, 2.2vw, 31px) !important;
}
.front-page main .lead {
  font-size: 14.5px !important;
}
.front-page main .panel {
  padding: 24px !important;
}
.front-page main .news-body h3,
.front-page main .report-card h3 {
  font-size: 16px !important;
}
.front-page main .news-date strong {
  font-size: 22px !important;
}
.front-page main .news-date {
  width: 56px !important;
  min-height: 60px !important;
}

/* 入会フォーム：v3より少し大きめ、初期の大きすぎは避ける */
main .join-panel {
  max-width: 900px !important;
  padding: 24px 28px !important;
}
main .join-panel .form-section {
  gap: 11px !important;
  padding: 15px 16px !important;
  border-radius: 18px !important;
}
main .join-panel .form-section h2 {
  font-size: 19px !important;
  line-height: 1.25 !important;
  padding-bottom: 7px !important;
  margin-bottom: 4px !important;
}
main .join-panel .join-form .btn.primary {
  min-height: 42px !important;
  font-size: 13.5px !important;
}

/* 三役紹介：縦長・大きめカード */
.front-page main .officer-panel {
  padding: 24px !important;
}
.front-page main .officer-groups-modern {
  gap: 22px !important;
}
.front-page main .officer-group {
  border-radius: 26px !important;
}
.front-page main .officer-group-head {
  padding: 16px 20px !important;
}
.front-page main .officer-group-head .group-label {
  font-size: 18px !important;
}
.front-page main .officer-group-head strong {
  font-size: 12px !important;
  padding: 3px 10px !important;
}
.front-page main .officer-list {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 18px !important;
  padding: 18px !important;
  background: linear-gradient(135deg, rgba(13,79,156,.05), rgba(242,183,5,.08)) !important;
}
.front-page main .officer-card {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: flex-start !important;
  grid-template-columns: none !important;
  grid-template-areas: none !important;
  min-height: 306px !important;
  padding: 24px 18px 22px !important;
  border-radius: 26px !important;
  border: 1px solid rgba(13,79,156,.12) !important;
  background: linear-gradient(180deg, rgba(255,255,255,.96), rgba(248,252,255,.94)) !important;
  text-align: center !important;
}
.front-page main .officer-card:hover {
  transform: translateY(-3px) !important;
}
.front-page main .officer-photo-wrap {
  grid-area: auto !important;
  position: relative !important;
  width: 150px !important;
  height: 188px !important;
  margin: 0 auto 16px !important;
}
.front-page main .officer-photo-wrap:after {
  inset: -6px !important;
  border-radius: 32px !important;
  border-width: 2px !important;
}
.front-page main .officer-photo {
  width: 150px !important;
  height: 188px !important;
  border-radius: 28px !important;
  object-fit: cover !important;
  object-position: center top !important;
  margin: 0 auto !important;
  border: 4px solid rgba(255,255,255,.98) !important;
}
.front-page main .role {
  grid-area: auto !important;
  width: auto !important;
  max-width: 100% !important;
  font-size: 13px !important;
  padding: 5px 14px !important;
  margin: 2px auto 8px !important;
}
.front-page main .name {
  grid-area: auto !important;
  font-size: 24px !important;
  line-height: 1.25 !important;
  margin-top: 4px !important;
  text-align: center !important;
}

/* 歴代三役ページも縦長カード寄りに統一 */
.card-list .officer-list {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 16px !important;
}
.card-list .officer-card {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: flex-start !important;
  min-height: 260px !important;
  padding: 22px 16px !important;
  border-radius: 24px !important;
}
.card-list .officer-photo {
  width: 132px !important;
  height: 168px !important;
  border-radius: 24px !important;
  object-fit: cover !important;
  object-position: center top !important;
  margin: 0 auto 14px !important;
}
.card-list .name {
  font-size: 20px !important;
}

@media (max-width: 980px) {
  .front-page main .officer-list,
  .card-list .officer-list {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 12px !important;
    padding: 14px !important;
  }
  .front-page main .officer-card {
    min-height: 270px !important;
    padding: 20px 12px !important;
  }
  .front-page main .officer-photo-wrap,
  .front-page main .officer-photo {
    width: 122px !important;
    height: 156px !important;
  }
  .front-page main .name {
    font-size: 20px !important;
  }
}

@media (max-width: 760px) {
  main,
  .footer,
  .login-card {
    font-size: 12.5px !important;
  }
  main .container,
  .front-page main .container {
    width: min(100%, calc(100% - 16px)) !important;
  }
  main .section,
  .front-page main .section {
    padding: 22px 8px !important;
  }
  .front-page main #top {
    min-height: auto !important;
    padding: 28px 8px !important;
  }
  main .panel,
  main .join-panel,
  .front-page main .panel {
    padding: 16px !important;
    border-radius: 18px !important;
  }
  main h1,
  .front-page main h1,
  .login-card h1 {
    font-size: 24px !important;
  }
  main h2,
  .front-page main h2 {
    font-size: 18px !important;
  }
  main .hero-card,
  .front-page main .hero-card {
    padding: 24px 20px !important;
  }
  .front-page main .hero-logo {
    width: 64px !important;
    height: 64px !important;
  }
  .front-page main .officer-list,
  .card-list .officer-list {
    grid-template-columns: 1fr !important;
    gap: 14px !important;
    padding: 14px !important;
  }
  .front-page main .officer-card,
  .card-list .officer-card {
    min-height: auto !important;
    padding: 22px 16px !important;
  }
  .front-page main .officer-photo-wrap,
  .front-page main .officer-photo {
    width: 150px !important;
    height: 188px !important;
  }
  .front-page main .name {
    font-size: 22px !important;
  }
  .card-list .officer-photo {
    width: 138px !important;
    height: 176px !important;
  }
}

/* 2026-07-09 v5：活動報告は新しい順6件・PCでは3列×2段で表示 */
.front-page main #reports .reports-grid {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 16px !important;
}
.front-page main #reports .report-card {
  min-height: 100% !important;
}
@media (max-width: 860px) {
  .front-page main #reports .reports-grid {
    grid-template-columns: 1fr !important;
  }
}

/* 2026-07-09 v6：背景切替の安定化。fixed子要素の重なりを整理し、スクロール時のチラつきを抑制 */
.bg-stage {
  position: fixed !important;
  inset: 0 !important;
  z-index: -2 !important;
  overflow: hidden !important;
  pointer-events: none !important;
  background: #dceaf6 !important;
}
.bg-stage .bg-video,
.bg-stage .bg-image,
.bg-stage .bg-overlay {
  position: absolute !important;
  inset: 0 !important;
}
.bg-stage .bg-video,
.bg-stage .bg-image {
  z-index: 0 !important;
  width: 100% !important;
  height: 100% !important;
  opacity: 0;
  transition: opacity .45s ease !important;
  will-change: opacity;
}
.bg-stage .bg-video {
  object-fit: cover !important;
  object-position: center center !important;
}
.bg-stage .bg-image {
  background-size: cover !important;
  background-position: center center !important;
  background-repeat: no-repeat !important;
}
.bg-stage.is-video .bg-video,
.bg-stage.is-image .bg-image {
  opacity: 1 !important;
}
.bg-stage.is-video .bg-image,
.bg-stage.is-image .bg-video {
  opacity: 0 !important;
}
.bg-stage .bg-overlay {
  z-index: 1 !important;
  display: block !important;
  background: linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.20)) !important;
}

/* 2026-07-09 v7：背景をスクロール時に自然にフェード切替。画像レイヤー2枚で急な差替えを防止 */
.bg-stage .bg-video,
.bg-stage .bg-image {
  transition: opacity 1.35s cubic-bezier(.22, .61, .36, 1) !important;
  will-change: opacity !important;
  transform: translateZ(0) scale(1.02) !important;
}
.bg-stage .bg-image-alt {
  z-index: 0 !important;
}
@media (prefers-reduced-motion: reduce) {
  .bg-stage .bg-video,
  .bg-stage .bg-image {
    transition-duration: .2s !important;
  }
}

/* 2026-07-09 v8：クラブ基本情報セクション追加 */
.front-page main #club-info {
  scroll-margin-top: 76px !important;
}
.front-page main .club-info-panel {
  position: relative !important;
  overflow: hidden !important;
  padding: 28px !important;
  background:
    radial-gradient(circle at 8% 12%, rgba(242,183,5,.22), rgba(242,183,5,0) 30%),
    linear-gradient(135deg, rgba(255,255,255,.93), rgba(238,247,255,.86)) !important;
  border: 1px solid rgba(255,255,255,.72) !important;
}
.front-page main .club-info-panel:before {
  content: "";
  position: absolute;
  right: -150px;
  bottom: -170px;
  width: 360px;
  height: 360px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(13,79,156,.16), rgba(13,79,156,0) 66%);
  pointer-events: none;
}
.front-page main .club-info-header {
  position: relative;
  z-index: 1;
  display: grid;
  gap: 4px;
  margin-bottom: 20px;
}
.front-page main .club-info-layout {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(220px, .78fr) minmax(0, 1.55fr);
  gap: 20px;
  align-items: stretch;
}
.front-page main .club-info-summary {
  display: grid;
  align-content: center;
  gap: 18px;
  min-height: 100%;
  padding: 26px;
  border-radius: 26px;
  color: #fff;
  background: linear-gradient(150deg, #0d4f9c, #12355b 70%) !important;
  box-shadow: 0 18px 46px rgba(18,53,91,.18);
  overflow: hidden;
  position: relative;
}
.front-page main .club-info-summary:after {
  content: "We Serve";
  position: absolute;
  right: -8px;
  bottom: -12px;
  font-size: clamp(42px, 7vw, 92px);
  line-height: 1;
  font-weight: 900;
  letter-spacing: -.06em;
  color: rgba(255,255,255,.08);
  white-space: nowrap;
}
.front-page main .club-info-emblem {
  width: 92px;
  height: 92px;
  display: grid;
  place-items: center;
  border-radius: 24px;
  background: rgba(255,255,255,.95);
  box-shadow: 0 16px 34px rgba(0,0,0,.16);
}
.front-page main .club-info-emblem img {
  width: 78px;
  height: 78px;
  object-fit: contain;
}
.front-page main .club-info-label {
  display: inline-flex;
  width: max-content;
  margin-bottom: 8px;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(242,183,5,.18);
  color: #ffe69a;
  font-size: 12px !important;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.front-page main .club-info-summary strong {
  display: block;
  margin-bottom: 10px;
  color: #fff;
  font-size: clamp(28px, 3.8vw, 48px) !important;
  line-height: 1;
  letter-spacing: -.03em;
}
.front-page main .club-info-summary p {
  position: relative;
  z-index: 1;
  color: rgba(255,255,255,.88);
  margin: 0 !important;
}
.front-page main .club-info-cards {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}
.front-page main .club-info-card {
  padding: 18px 20px;
  border-radius: 22px;
  background: rgba(255,255,255,.88);
  border: 1px solid rgba(13,79,156,.12);
  box-shadow: 0 12px 30px rgba(18,53,91,.08);
}
.front-page main .club-info-card h3 {
  position: relative;
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 12px !important;
  color: var(--deep);
  font-size: 17px !important;
}
.front-page main .club-info-card h3:before {
  content: "";
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--gold);
  box-shadow: 0 0 0 5px rgba(242,183,5,.16);
}
.front-page main .club-info-card.office-card,
.front-page main .club-info-card.meeting-card {
  background: rgba(250,253,255,.9);
}
.front-page main .club-info-card.history-card {
  grid-row: span 2;
}
.front-page main .club-info-list {
  display: grid;
  gap: 9px;
  margin: 0;
}
.front-page main .club-info-list div {
  display: grid;
  grid-template-columns: 142px 1fr;
  gap: 12px;
  align-items: baseline;
  padding: 0 0 8px;
  border-bottom: 1px dashed rgba(13,79,156,.16);
}
.front-page main .club-info-list div:last-child {
  border-bottom: 0;
  padding-bottom: 0;
}
.front-page main .club-info-list dt {
  margin: 0;
  color: #52677c;
  font-weight: 900;
  font-size: 12.5px !important;
}
.front-page main .club-info-list dd {
  margin: 0;
  color: var(--deep);
  font-weight: 900;
  font-size: 14px !important;
  line-height: 1.6;
  text-align: right;
}
.front-page main .office-address {
  margin-bottom: 12px;
  padding: 14px 16px;
  border-radius: 18px;
  background: linear-gradient(135deg, rgba(13,79,156,.08), rgba(242,183,5,.08));
}
.front-page main .office-address p {
  margin: 0 !important;
  color: var(--deep);
  font-weight: 800;
  line-height: 1.75 !important;
}
.front-page main .compact-list div {
  grid-template-columns: 52px 1fr;
}
.front-page main .meeting-card {
  display: grid;
  align-content: center;
}

@media (max-width: 980px) {
  .front-page main .club-info-layout {
    grid-template-columns: 1fr !important;
  }
  .front-page main .club-info-summary {
    grid-template-columns: 92px 1fr;
    align-items: center;
  }
}
@media (max-width: 760px) {
  .front-page main .club-info-panel {
    padding: 16px !important;
  }
  .front-page main .club-info-header {
    margin-bottom: 14px;
  }
  .front-page main .club-info-summary {
    grid-template-columns: 1fr;
    gap: 12px;
    padding: 18px;
    border-radius: 20px;
  }
  .front-page main .club-info-emblem {
    width: 72px;
    height: 72px;
    border-radius: 18px;
  }
  .front-page main .club-info-emblem img {
    width: 60px;
    height: 60px;
  }
  .front-page main .club-info-summary strong {
    font-size: 30px !important;
  }
  .front-page main .club-info-cards {
    grid-template-columns: 1fr !important;
    gap: 12px;
  }
  .front-page main .club-info-card.history-card {
    grid-row: auto;
  }
  .front-page main .club-info-card {
    padding: 15px;
    border-radius: 18px;
  }
  .front-page main .club-info-list div {
    grid-template-columns: 1fr;
    gap: 2px;
  }
  .front-page main .club-info-list dd {
    text-align: left;
    font-size: 13.5px !important;
  }
  .front-page main .office-address {
    padding: 12px;
  }
}

/* 2026-07-09 v10：活動報告モーダルのスマホ改善。長文でも閉じるボタンを常に表示 */
.front-modal {
  z-index: 9999 !important;
}
.front-modal-panel {
  overscroll-behavior: contain !important;
  -webkit-overflow-scrolling: touch !important;
}
.front-modal-close {
  z-index: 10001 !important;
}
.modal-open .mobile-bottom-nav {
  display: none !important;
}
@media (max-width: 760px) {
  .front-modal {
    place-items: stretch !important;
    align-items: center !important;
    padding: calc(env(safe-area-inset-top, 0px) + 58px) 12px calc(env(safe-area-inset-bottom, 0px) + 16px) !important;
  }
  .front-modal-panel {
    width: 100% !important;
    max-height: calc(100vh - 92px) !important;
    max-height: calc(100dvh - 92px) !important;
    padding: 18px !important;
    border-radius: 22px !important;
  }
  .front-modal-close {
    position: fixed !important;
    top: calc(env(safe-area-inset-top, 0px) + 10px) !important;
    right: 14px !important;
    float: none !important;
    width: 46px !important;
    height: 46px !important;
    display: grid !important;
    place-items: center !important;
    background: #fff !important;
    border: 1px solid rgba(18,53,91,.16) !important;
    box-shadow: 0 12px 34px rgba(10,24,40,.28) !important;
  }
  .front-modal-content {
    clear: none !important;
  }
}


/* 2026-07-10 v11：スマートフォンでもトップページの三役を横並び表示。PCレイアウトは変更なし */
@media (max-width: 760px) {
  .front-page main #officers .officer-panel {
    padding: 14px 10px !important;
  }
  .front-page main #officers .officer-groups-modern {
    gap: 16px !important;
  }
  .front-page main #officers .officer-group {
    border-radius: 20px !important;
    overflow: hidden !important;
  }
  .front-page main #officers .officer-group-head {
    padding: 12px 14px !important;
  }
  .front-page main #officers .officer-group-head .group-label {
    font-size: 15px !important;
  }
  .front-page main #officers .officer-list {
    grid-template-columns: repeat(3, minmax(92px, 1fr)) !important;
    gap: 8px !important;
    padding: 10px !important;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
    scroll-snap-type: x proximity !important;
  }
  .front-page main #officers .officer-card {
    min-width: 92px !important;
    min-height: 184px !important;
    padding: 12px 6px 14px !important;
    border-radius: 18px !important;
    scroll-snap-align: start !important;
  }
  .front-page main #officers .officer-photo-wrap,
  .front-page main #officers .officer-photo {
    width: clamp(84px, 27vw, 112px) !important;
    height: clamp(106px, 34vw, 140px) !important;
  }
  .front-page main #officers .officer-photo-wrap {
    margin-bottom: 9px !important;
  }
  .front-page main #officers .officer-photo-wrap:after {
    inset: -4px !important;
    border-radius: 22px !important;
  }
  .front-page main #officers .officer-photo {
    border-radius: 18px !important;
    border-width: 3px !important;
  }
  .front-page main #officers .role {
    font-size: 10.5px !important;
    padding: 3px 8px !important;
    margin: 0 auto 5px !important;
    white-space: nowrap !important;
  }
  .front-page main #officers .name {
    font-size: clamp(13px, 3.8vw, 16px) !important;
    line-height: 1.25 !important;
    word-break: keep-all !important;
    overflow-wrap: anywhere !important;
  }
}
