@charset "utf-8";
/* CSS Document */

/* =====================
   Design Tokens
===================== */
:root {
  --c-green: #2ea14a;     /* 主要グリーン */
  --c-green-2: #44c57f;   /* アクセント */
  --c-deep: #124b36;      /* 濃色 */
  --c-text: #18231d;      /* 本文 */
  --c-muted: #6b7280;     /* 補助 */
  --c-surface: #ffffff;   /* 面 */
  --c-bg: #f6f7f4;        /* ページ背景の淡色 */
  --radius: 16px;
  --shadow: 0 10px 30px rgba(16, 24, 40, .12);
  --container: 1300px;
}

/* Reset */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
font-family: "Noto Sans JP", sans-serif;
color: var(--c-text);
  background: #fff;
  line-height: 1.8;
}
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
ul { margin: 0; padding: 0; list-style: none; }
.container { width: var(--container); margin-inline: auto; }

/* header only: 1300px + rounded bar */
.site-header .container { width: 1300px; }

html{scroll-behavior:smooth}


/* =====================
   Header / Global Nav
===================== */
.site-header {
  position: sticky;
  top: 38px;
  z-index: 30;
  background: transparent;
  border-bottom: 0;
}

.header-inner {
  height: 84px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  background: #fff;
  border-radius: 10px;
  box-shadow: var(--shadow);
  padding-inline: 20px;
}

.brand {
  display: block;
  width: 236px;
  display: flex;
  align-items: center;
  gap: 14px;
}

.brand img { width: 100%; border-radius: 10px; }

.brand .title { font-weight: 800; letter-spacing: .02em; }

nav.primary { display: flex; align-items: center; gap: 0px; }

nav.primary a { padding: 15px 12px; border-radius: 3px; }

/* nav: green dot bullets */
nav.primary a.nav-item::before {
  content: "";
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 999px;
  background: var(--c-green);
  margin-right: 4px;
  vertical-align: middle;
}

/* nav: join pill with beginner mark */
nav.primary a.join {
  background: #eef2f5;
  color: #1f2937;
  border-radius: 3px;
  padding: 16px 14px;
  margin: 0 10px;
}
nav.primary a.join::before {
  content: "";
  background: url("../images/ic-beginner.svg");
  width: 16px;
  height: 16px;
  margin-right: 4px;
  vertical-align: middle;
  display: inline-block;
}

.join--contact::before {
  content: "";
  background: url("../images/ic-tel.svg");
  width: 16px;
  height: 16px;
  margin-right: 4px;
  vertical-align: middle;
  display: inline-block;
}


.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 10px 18px;
  border-radius: 999px;
  font-weight: 400;
  border: 1px solid transparent;
}
.btn-green { background: var(--c-green); color: #fff; }
.btn-green:hover { filter: brightness(1.05); }



/* =====================
   Hero
===================== */
.hero {
  position: relative;
  isolation: isolate;
  height: 1200px;
  min-height: auto;
  margin-top: -84px;
  padding-top: calc(38px + 84px + 120px);
  padding-bottom: 0;
  background: #c7cdd6 url("../images/mv.jpg") center/cover no-repeat;
}

.hero-wrap {
  position: relative;
  height: 100%;
  display: block;
  overflow: visible;
}

.hero-photo { display: none; }

.hero-photo::before {
  content: "";
  position: absolute;
  inset: 0;
  background: url("https://images.unsplash.com/photo-1582719478250-c89cae4dc85b?q=80&w=1920&fit=crop") center/cover no-repeat;
  opacity: .88;
}

.hero-photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(0,0,0,.35), rgba(0,0,0,0) 56%);
}

.hero-copy { position: relative; }

.hero-copy-inner {
  width: 100%;
  max-width: 1100px;
  color: #fff;
  text-align: left;
  margin-bottom: 190px;
}

.hero-copy h1 {
  margin: 0 0 14px;
  font-size: 48px;
  line-height: 1.8;
  font-weight: 400;
  color: #fff;
  text-shadow: 0 4px 18px rgba(131, 157, 194, .38);
font-family: "Kosugi Maru", sans-serif;
overflow: hidden;
  white-space: nowrap;
	letter-spacing: 3px;
}

.hero-copy h1 .char {
  display: inline-block;
  opacity: 0;
  transform: translateY(14px);
  animation: rise .7s ease-out forwards;
	
}

@keyframes rise { to { opacity: 1; transform: translateY(0); } }

.hero-copy p { display: none; }

/* 新着情報カード（ヒーロー下にオーバーラップ） */
.news-board {
  position: absolute;
  left: 0;
  right: 0;
  top: 590px;
  margin-top: 0;
  z-index: 5;
  display: block;
}

.news-card {
  width: 100%;
  background: #fff;
  border-radius: 18px;
  box-shadow: var(--shadow);
  padding: 25px;
  border: 1px solid #eef2f6;
  display: grid;
  grid-template-columns: 260px 1fr;
  gap: 24px;
  z-index: 5;
  position: relative;
}

.news-head {
  display: flex;
  flex-direction: column;
  gap: 0px;
  margin: 0;
  padding-right: 8px;
	text-align: center;
	padding-top: 30px;
}

.news-head h2{
  font-size: 38px;
  line-height: 1.4;
  margin: 0;
  font-weight: 400;
  color: #1f3344;
  font-family: "Kosugi Maru", sans-serif;
}


.news-head .en { color: var(--c-green); font-weight: 400; font-size: 20px; letter-spacing: 1px; }

.news-list { display: grid; gap: 12px; }

.news-item {
  display: grid;
  grid-template-rows: auto auto auto;
  gap: 6px;
  padding: 20px 0;
  border-radius: 0;
  border: none;
  background: transparent;
  border-top: 1px solid #e5e7eb;
}

.news-item time { color: #334155; }

.tag {
  display: inline-grid;
  place-items: center;
  padding: 0px 12px;
  border-radius: 999px;
  background: var(--c-green);
  color: #fff;
  font-weight: 500;
  font-size: .9rem;
}

.tag-holiday {
  background: #D84B77;
}

.news-item a { text-decoration: none; color: #18231d; font-size: 18px; }

.news-item h3 { margin: 0; font-size: 1.1rem; line-height: 1.6; font-weight: 500; }

.news-desc {
  margin: 0;
  color: var(--c-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.news-desc a {
font-size: 1.1rem;
text-decoration: underline;
color: #0D55AB;
}

.news-meta { display: flex; align-items: center; gap: 12px; }
.news-title { font-weight: 700; }


/* =====================
   About Section（地図＋テキスト）
===================== */
.about {
  position: relative;
  padding: 80px 0;
  background: #f9f7f5;
}

.about .grid {
  position: relative;
  display: grid;
  grid-template-columns: 1.05fr .95fr;
  gap: 10px;
  align-items: center;
	background: url(../images/feature-bg.svg) center right/contain no-repeat;
	height: 800px;
}


.pref-mask {
width: 580px;
}

/* ゆるいカーブ背景 */


.about h2 { font-size: 28px; margin: 0 0 10px; }

/* 見出し下のグラデ下線 */
.about .title-wrap {
  position: relative;
  display: block;
  width: 100%;
  margin-bottom: 12px;
}

.about .title-wrap::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  width: 100%;
  bottom: -6px;
  height: 6px;
  border-radius: 0;
  background: linear-gradient(
    90deg,
    rgba(47,179,111,.85) 0 18%,
    rgba(68,197,127,.85) 18% 28%,
    rgba(47,179,111,.45) 28% 42%,
    rgba(68,197,127,.9) 42% 52%,
    rgba(47,179,111,.6) 52% 66%,
    rgba(68,197,127,.8) 66% 78%,
    rgba(47,179,111,.5) 78% 100%
  );
}

.about .title-wrap div {
font-family: "Klee One", cursive;
font-size: 38px;
color: #18231d;
}
.about .title-wrap h2 {
font-family: "Kosugi Maru", sans-serif;
font-size: 47px;
color: #18231d;
letter-spacing: 3px;
font-weight: 400;
margin-bottom: 46px;
}

.about p { margin: 0; font-size: 18px; line-height: 2.2;}

/* =====================
   Cards（上段3・下段2レイアウト）
===================== */
.cards {
padding: 70px 0 0;
	background: #f9f5f0;

}

/* 枠：カード全体を一つの角丸で囲む */
.cards > .container {
  background: #fff;
  border-radius: 16px;
  padding: 24px 24px;
}

.card-grid--row1 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-bottom: 28px;
}

/* 1行目：本文の右に縦罫線（最後のカードは除く） */
.card-grid--row1 > .card:nth-child(-n+2) .body { border-right: 1px solid #e5e7eb; }

.card-grid--row2 {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
  margin-top: 6px;
}

/* 2行目：各カードの上に横罫線 */
.card-grid--row2 > .card { border-top: 1px solid #e5e7eb; padding-top: 18px; }

.card {
  background: transparent;
  border: none;
  border-radius: 0;
  overflow: visible;
  box-shadow: none;
}

.card img { aspect-ratio: 4/3; object-fit: cover; border-radius: 16px; }

.card .body { padding: 16px 18px; position: relative; }

.card h3 { margin: 0 0 8px; font-size: 1.08rem; }

.card h3 a {
  text-decoration: none;
  color: #0f1f1a;
  display: inline-flex;
  align-items: center;
  gap: 10px;
	color: var(--c-text);
	font-size: 20px;
	font-family: "Kosugi Maru", sans-serif;
	font-weight: 400;
}

.card h3 a::after {
  content: "";
  display: inline-block;
  width: 24px;
  height: 24px;
  border-radius: 8px;
  background-color: var(--c-green);
  background-repeat: no-repeat;
  background-position: center;
  background-size: 16px 16px;
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6 12h10"/><path d="M12 7l5 5-5 5"/></svg>');
}

.card p { margin: 0; color: var(--c-text); font-size: 16px; }

/* 下段の左右分割カード */
.card--split { display: grid; grid-template-columns: 1.1fr 1fr; align-items: center; }
.card--split img { height: 100%; aspect-ratio: auto; }
.card--split .body { display: flex; flex-direction: column; justify-content: center; }

/* ===================== */

/* =====================
   Contact Band
===================== */
.contact-band { background: #f9f5f0; padding: 60px 0;}

.contact-card {
  background: #fff;
  border-radius: 16px;
  padding: 26px 32px;
}

.contact-flex {
  display: grid;
  grid-template-columns: 1.1fr 1fr 1fr;
  align-items: center;
  gap: 32px;
}

/* 区切り線（縦） */
.contact-flex > .col { position: relative; }

.contact-flex > .col.sep::after {
  content: "";
  position: absolute;
  right: -16px;
  top: 10%;
  bottom: 10%;
  width: 1px;
  background: #e6e9ec;
}

/* 左カラム（見出し） */
.contact-title { font-size: 32px; line-height: 1.3; font-weight: 400; margin: 0; 	font-family: "Kosugi Maru", sans-serif;}
.contact-sub { color: var(--c-green); font-weight: 400; font-size: 20px; letter-spacing: 1px; }
.contact-note { color: var(--c-text); margin-top: 10px; }

/* 中央カラム（電話） */
.contact-mid-label { color: var(--c-text); margin-bottom: 6px; font-size: 18px; }
.contact-tel { font-size: 30px; font-weight: 500; color: var(--c-green); text-align: center;}
.contact-tel small { color: var(--c-text); font-weight: 400; margin-right: 8px; font-size: 18px;}

/* 右カラム（ボタン） */
.contact-actions { display: flex; justify-content: flex-end; }

/* 右カラムは中央寄せ */
.contact-right .contact-actions { justify-content: center; }

/* 左右カラムのテキストセンタリング */
.contact-left .contact-title,
.contact-left .contact-sub,
.contact-left .contact-note { text-align: center; }

.contact-mid .contact-mid-label { text-align: center; }

.contact-mail-label { color: var(--c-text); margin-bottom: 6px; font-size: 18px; text-align: center;}

.btn-contact {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 12px 28px;
  background: var(--c-green);
  color: #fff;
  border-radius: 999px;
  font-weight: 700;
}

.btn-contact::after {
  content: "";
  display: inline-block;
  width: 24px;
  height: 24px;
  border-radius: 8px;
  background: #cbe7d2;
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6 12h10"/><path d="M12 7l5 5-5 5"/></svg>');
  background-repeat: no-repeat;
  background-position: center;
  background-size: 14px 14px;
}

/* ===================== */

/* =====================
   Footer（波形と下部写真）
===================== */
.footer-top { position: relative; padding: 60px 0 0; background: #f9f5f0; }

.footer-wrap{
display:flex;align-items:center;justify-content:space-between;gap:30px;
}


.footer-links {
  display: flex;
  flex-direction: column;
  gap: 0;
  color: #476a57;
  width: 160px;
}

.footer-links a {
  display: block;
  padding: 8px 0 8px 16px;
  color: #1f2d24;
  position: relative;
}

.footer-links a::before {
  content: "";
  position: absolute;
  left: 0;
  top: 20px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--c-green);
}

.footer-cta{
display:flex;gap:20px;align-items:center
}

.footer-join{
font-size: 20px;
display:inline-flex;
align-items:center;
gap:8px;padding:36px 24px;border-radius:8px;background:#fff;color:#1f2937;text-decoration:none;width:190px;justify-content:center;
}

.footer-join span::before {
  content: "";
  background: url("../images/ic-beginner.svg");
  width: 20px;
  height: 20px;
  margin-right: 6px;
  vertical-align: middle;
  display: inline-block;
}

.footer-member{
font-size: 20px;
display:inline-flex;align-items:center;padding:36px 24px;border-radius:8px;background:var(--c-green);color:#fff;text-decoration:none;width:190px;justify-content:center
}



.footer-visual {
  position: relative;
  overflow: hidden;
  width: 100%;
  background: #f9f5f0 url(../images/footer-bg.png) right top/cover no-repeat;
  z-index: 10;
	height: 1600px;
}



.footer-visual .bg-wave {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 50%;
  width: 100%;
  transform: translateX(-50%);
  background: #cfe7dc; /* 波型の上端（可変幅対応） */
  clip-path: polygon(
    0% 24%, 20% 44%, 40% 18%, 60% 38%, 80% 22%, 100% 34%,
    100% 100%, 0% 100%
  );
}

.footer-visual .photo-hill {
  position: absolute;
  right: 0;
  bottom: 0;
  width: 68vw;
  height: 100%;
  background: url("https://images.unsplash.com/photo-1618590468068-04c82d1c7a35?q=80&w=1920&fit=crop") center 70%/cover no-repeat;
  z-index: 1;
  /* 右側が盛り上がる山形のマスク（近似）。必要に応じてトリミング済み画像に差替え可 */
  -webkit-clip-path: ellipse(85% 95% at 100% 100%);
  clip-path: ellipse(85% 95% at 100% 100%);
}

.copyright {
    background: #f9f5f0;
    /* color: #fff; */
    text-align: center;
    padding: 12px 0;
    font-size: 15px;
}

/* 小さな装飾 */
.dot { width: 6px; height: 6px; border-radius: 50%; background: var(--c-green); display: inline-block; margin-inline: 6px; }

/* === Footer left: mascot above, address below (vertical) === */
.footer-left { display: block; width: 220px; }
.footer-logo { width: 100%; display: flex; justify-content: center;margin-bottom: 20px;}
.footer-logo img { display: inline-block; width: 177px; }

/* footer widths */
.footer-cta {
  width: 500px;
  display: flex;
  gap: 20px;
  align-items: center;
  justify-content: space-between;
}
.footer-join, .footer-member {
  width: 240px;
  text-align: center;
  box-sizing: border-box;
  display: inline-flex;
  justify-content: center;
}

.news-head .en { font-size: 18px; }
.news-item:first-child { border-top: 0; }

.addr{
text-align: left;
font-size:15px;
}

/* 下段の左右分割カード：画像と本文の距離を詰める */
.card--split {
  column-gap: 12px;               /* 画像-本文の間隔（デフォは0だが視覚的に近づける） */
  grid-template-columns: auto 1fr; /* 画像幅に合わせて本文を左へ寄せやすく */
	  align-items: start;            /* もとの center → 上寄せ */
}

.card--split .body {
  padding: 0 10px 0 8px;          /* 左余白を最小化（既存 16px→8px） */
	  justify-content: flex-start;   /* もとの center → 上寄せ */
}

/* 画像のにじみ防止＆レイアウト安定（任意） */
.card--split img {
  display: block;
  border-radius: 16px;
}


/* お問い合わせフォームの文字ウェイト */
.btn-contact { font-weight: 400; }

/* カードの矢印：背景はそのまま、矢印は白に戻す */
.card h3 a::after {
  background-color: var(--c-green); /* 元の背景色に戻す */
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6 12h10"/><path d="M12 7l5 5-5 5"/></svg>');
}

/* お問い合わせボタンの矢印だけ #2ea14a に変更 */
.btn-contact::after {
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%232ea14a" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6 12h10"/><path d="M12 7l5 5-5 5"/></svg>');
}







/* =====================
   Responsive Additions (append to the end)
   既存CSSは触らず、このブロックを末尾に追記してください
===================== */

/* 汎用：PCのみの改行 <br class="pc"> を制御 */
.pc{display:none;}
@media (min-width:768px){.pc{display:inline;}}

/* コンテナを可変幅化（デスクトップの見た目は維持） */
.container{
  max-width: var(--container);
  width: min(92vw, var(--container));
}

/* ヘッダー調整（スマホ） */
@media (max-width: 1024px){
  .site-header{ top: 0; }
  .header-inner{
    height: 72px;
    border-radius: 0;
    padding-inline: 12px;
    gap: 12px;
  }
  .brand{ width: 190px; }
  nav.primary{
    gap: 6px;
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
  }
  nav.primary::-webkit-scrollbar{ display:none; }
  nav.primary a{ padding: 10px 10px; white-space: nowrap; font-size: 14px; }
  nav.primary a.join{ padding: 10px 12px; margin: 0 4px; }
  .btn{ padding: 8px 14px; font-size: 14px; }
}

/* ヒーロー（高さ・余白・文字サイズを縮小） */
@media (max-width: 1024px){
  .hero{
    height: auto;
    padding-top: calc(72px + 24px);
    background-position: left;
    background-size: cover;
		padding-bottom: 75px;
  }
  .hero-copy-inner{
  max-width: 100%;
  margin-bottom: 24px;
  margin: 60px 0;
  }
  .hero-copy h1{
  font-size: 5.5vw;
  line-height: 2;
  letter-spacing: 1.5px;
  white-space: normal;
  }
}

/* 新着情報カード：ヒーローの下に重ねない（スマホ） */
@media (max-width: 1024px){
  .news-board{
    position: static;
    margin-top: 16px;
  }
  .news-card{
    padding: 20px 16px;
    grid-template-columns: 1fr; /* 1カラム */
    gap: 12px;
  }
.news-head h2{ font-size: 26px; }
  .news-head{ padding-right: 0; padding-top: 0; }
  .news-head .en{ font-size: 14px; }
  .news-item{ padding: 14px 0; }
  .news-item a{ font-size: 16px; }
  .news-desc{ white-space: normal; } /* 省略せず2行以上可 */
}

/* About セクション：1カラム化＋固定高さ解除 */
@media (max-width: 1200px){
  .about{ padding: 56px 0; }
  .about .grid{
    grid-template-columns: 1fr;
    height: auto;
    gap: 16px;
    background-position: center right 12%;
    background-size: 80%;
  }
  .pref-mask{ width: 100%; max-width: 680px; margin: 0 auto 12px; }
  .about .title-wrap div{ font-size: 28px; }
  .about .title-wrap h2{ font-size: 36px; margin-bottom: 20px; letter-spacing: 2px; }
  .about p{ font-size: 16px; line-height: 2.2; }
}

/* Cards：ブロックのパディング最適化 */
@media (max-width: 1200px){
  .cards{ padding: 40px 0 0; }
  .cards > .container{ padding: 16px; border-radius: 12px; }
}
/* 上段3→2→1カラム、下段2→1カラム */
@media (max-width: 1024px){
  .card-grid--row1{ grid-template-columns: repeat(2, 1fr); gap: 16px; }
  .card-grid--row2{ grid-template-columns: 1fr; gap: 16px; }
  .card-grid--row1 > .card:nth-child(-n+2) .body{ border-right: 0; }
  .card--split{ grid-template-columns: 1fr; row-gap: 8px; }
  .card--split img{ aspect-ratio: 16/9; }
  .card .body{ padding: 12px 8px; }
  .card h3 a{ font-size: 25px; gap: 8px; }
  .card p{ font-size: 16px; }
}
@media (max-width: 640px){
  .card-grid--row1{ grid-template-columns: 1fr; }
  .card h3 a::after{ width: 22px; height: 22px; background-size: 14px 14px; }
}

/* Contact Band：3→1カラム、区切り線を横線に */
@media (max-width: 1024px){
  .contact-band{ padding: 40px 0; }
  .contact-card{ padding: 30px 16px 10px; border-radius: 12px; }
  .contact-flex{
    grid-template-columns: 1fr;
    gap: 30px;
  }
  .contact-flex > .col.sep::after{
    right: auto; left: 0; top: auto; bottom: auto;
    width: 100%; height: 1px; background: #e6e9ec;
		margin-top: 30px;
  }
  .contact-title{ font-size: 24px; }
  .contact-sub{ font-size: 16px; }
  .contact-note{ font-size: 14px; }
  .contact-mid-label, .contact-mail-label{ font-size: 16px; }
  .contact-tel{ font-size: 26px; }
  .btn-contact{ padding: 10px 20px; font-size: 15px; }
  .btn-contact::after{ width: 22px; height: 22px; background-size: 12px 12px; }
}

/* Footer：3カラム→縦並び */
@media (max-width: 1200px){
  .footer-top{ padding: 40px 0 0; }
  .footer-wrap{
    flex-direction: column;
    align-items: stretch;
    gap: 50px;
  }
  .footer-left{ width: 100%; display: flex; align-items: center; gap: 16px; flex-wrap: wrap;}
  .footer-logo{ margin: 0; justify-content: center; width: 100%;text-align: center;}
  .footer-logo img{ width: 50%px; }
  .addr{ font-size: 14px; width: 100%; text-align: center;}
  .footer-links{ width: 100%; flex-direction: row; flex-wrap: wrap; gap: 0; }
  .footer-links a{ width: 50%; padding: 10px 0 10px 16px; }
  .footer-cta{ width: 100%; justify-content: center; gap: 12px; }
  .footer-join, .footer-member{ width: calc(50% - 6px); padding: 20px; font-size: 16px; }
  .footer-visual{ height: 520px; background-position: center top; }
}
@media (max-width: 640px){
  .footer-links a{ width: 100%; }
  .footer-join, .footer-member{ width: 100%; }
  .footer-visual{ height: 380px; }
  .copyright{ font-size: 11px; padding: 10px 0; }
}

/* 細かな調整（タイポ・余白） */
@media (max-width: 1024px){
  .news-item h3{ font-size: 16px; }
  .contact-mid .contact-mid-label{ text-align: center; }
  .footer-links a::before{ top: 22px; width: 6px; height: 6px; }
}

/* 安全側の画像比率（にじみ防止） */
@media (max-width: 640px){
  .card img{ aspect-ratio: 16/9; }
}

/* 上部の余白がきつい画面高での安全策 */
@media (max-height: 680px) and (max-width: 480px){
  .hero{ padding-top: 72px; }
}




/* Footer CTA（スマホ）：ボタン幅＝文字数＋左右30px */
@media (max-width: 768px){
  .footer-cta{
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center !important; /* 中央寄せで縦積み */
    gap: 20px;
    justify-content: flex-start;
  }
  .footer-join,
  .footer-member{
    width: auto !important;              /* 100%を打ち消す */
    inline-size: fit-content;            /* 文字幅に合わせる（fallbackはautoでOK） */
    max-width: 90vw;                     /* 画面からはみ出し防止 */
    padding: 18px 30px !important;       /* 左右+30px（縦は18pxに統一） */
    font-size: 16px;
    text-align: center;
    margin: 0 auto;                      /* 念のため中央寄せ */
  }
}

/* Cards：スマホはすべて1列 */
@media (max-width: 768px){
  .card-grid--row1{grid-template-columns:1fr;gap:16px;}
  .card-grid--row2{grid-template-columns:1fr;gap:16px;}
  .card--split{grid-template-columns:1fr;}
  /* PC用の縦罫線を無効化 */
  .card-grid--row1>.card:nth-child(-n+2) .body{border-right:0;}
}


/* Cards：画像を常に横幅100%に */
.card img{
  width: 100%;
  aspect-ratio: 4 / 3;   /* 既存指定を尊重（トリミング前提） */
  object-fit: cover;
}

/* 分割カードでの縦伸び防止（念のため） */
.card--split img{
  width: 100%;
  height: auto;          /* 以前の height:100% 指定の影響を無効化 */
}




/* About：スマホで「テキスト→画像」の順に */
@media (max-width: 768px){
  .about .grid{
    display: flex;           /* grid → flexで順序制御 */
    flex-direction: column;  /* 縦並び */
    gap: 70px;
    height: auto;
  }
  .about .grid > div{ order: 1; }      /* テキストブロックを先頭に */
  .about .grid > figure{ order: 2; }   /* 画像を後ろに */
  .pref-mask{ width:100%; max-width:680px; margin:0 auto; }
}

/* About：スマホで背景SVGを上部・全幅に */
@media (max-width: 768px){
  /* セクション側に背景を持たせる（全幅） */
  .about{
    background: #f9f7f5 url(../images/feature-bg.svg)
                top 70px center / 100% auto no-repeat;
    /* 背景を見せるための上余白（画面幅に応じて可変） */
    padding-top: clamp(50px, 24vw, 50px);
  }
  /* grid側に設定されている背景は打ち消す */
  .about .grid{
    background: none !important;
  }
}





@media (max-width: 768px){



.col{
margin-bottom: 30px;
}


.about .title-wrap {
  margin-bottom: 42px;
}



}








/* アクセシビリティ：画面外テキスト（必要なら使用） */
.sr-only{
  position:absolute!important; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}

/* ハンバーガー初期状態（PCでは非表示） */
.hamburger{ display:none; }

/* ===== スマホ専用 ===== */
@media (max-width: 768px){

  /* ハンバーガー：右上に固定表示（ロゴと被らないよう上位Z） */
  .hamburger{
    position: fixed;
    top: 12px;
    right: 12px;
    z-index: 1100;
    width: 44px;
    height: 44px;
    border: none;
    border-radius: 8px;
    background: rgba(255,255,255,.92);
    box-shadow: 0 6px 18px rgba(16,24,40,.12);
    display: inline-flex;
    align-items:center;
    justify-content:center;
    cursor: pointer;
  }
  .hamburger span{
    position: relative;
    display:block;
    width: 24px;
    height: 2px;
    background: #18231d;
    transition: transform .25s ease, opacity .2s ease, top .25s ease, bottom .25s ease;
  }
  .hamburger span:nth-child(1){ top:-6px; position: relative; }
  .hamburger span:nth-child(2){ opacity:1; }
  .hamburger span:nth-child(3){ bottom:-6px; position: relative; }

  /* 三本線 → × 印（nav-open時） */
  body.nav-open .hamburger span:nth-child(1){
    top:0; transform: rotate(45deg);
  }
  body.nav-open .hamburger span:nth-child(2){
    opacity:0;
  }
  body.nav-open .hamburger span:nth-child(3){
    bottom:0; transform: rotate(-45deg);
  }

  /* 既存のPCナビはデフォルト非表示にして、オーバーレイとして再利用 */
  nav.primary{
    position: fixed;
    inset: 0;               /* top:0; right:0; bottom:0; left:0 の短縮 */
    z-index: 1000;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;

    /* フェードイン用 */
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity .25s ease, visibility .25s ease;

    /* 全画面オーバーレイ背景（半透明） */
    background: rgba(24,35,29,.92);
  }

  /* オーバーレイの表示（フェードイン） */
  body.nav-open nav.primary{
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }

  /* メニューアイテムの見た目（縦並び） */
  nav.primary a{
    display: block;
    color: #fff;
    font-size: 18px;
    padding: 14px 18px;
    margin: 6px 0;
    border-radius: 8px;
    text-align: center;
  }

  /* SP：お問い合わせをボタン風に */
  nav.primary a.nav-item--cta{
    background: #ffffff;
    color: #18231d;
    border: 2px solid #ff484a;
    font-weight: 600;
  }
  nav.primary a.nav-item::before{ display: none; }  /* 緑ドットは隠す */
  nav.primary a.join{
    background: #eef2f5;
    color: #1f2937;
    margin-top: 12px;
  }
  nav.primary .btn{      /* 会員専用ページボタン */
    background: var(--c-green);
    color: #fff;
    border-radius: 999px;
    margin-top: 10px;
    font-size: 16px;
    padding: 12px 20px;
  }

  /* ヘッダー行内の横並びを崩さないため、通常表示時はナビを隠す */
  .header-inner nav.primary{
    /* 上の fixed 指定が効くので、行内レイアウトから実質外れる */
  }
}




/* Hamburger icon: perfectly centered lines & X */
@media (max-width:768px){
  .hamburger{
    position: fixed; top:12px; right:12px; z-index:1100;
    width:44px; height:44px; border:none; border-radius:8px;
    background: rgba(255,255,255,.92);
    box-shadow: 0 6px 18px rgba(16,24,40,.12);
    display:inline-flex; align-items:center; justify-content:center; cursor:pointer;
  }
  .hamburger span{
    position:absolute; left:50%; top:50%;
    width:24px; height:2px; background:#18231d; border-radius:1px;
    transform-origin:center; transition: transform .25s ease, opacity .2s ease;
  }
  /* 等間隔に配置（中心基準） */
  .hamburger span:nth-child(1){ transform: translate(-50%,-50%) translateY(-6px); }
  .hamburger span:nth-child(2){ transform: translate(-50%,-50%); }
  .hamburger span:nth-child(3){ transform: translate(-50%,-50%) translateY( 6px); }

  /* open時：完全な ×（45°, -45°）＋中線消し */
  body.nav-open .hamburger span:nth-child(1){ transform: translate(-50%,-50%) rotate(45deg); }
  body.nav-open .hamburger span:nth-child(2){ opacity:0; }
  body.nav-open .hamburger span:nth-child(3){ transform: translate(-50%,-50%) rotate(-45deg); }
}


/* Kill accidental horizontal scroll on small screens */
@media (max-width:768px){
  /* 念のため大物を抑止 */
  .site-header, .hero, .news-board, .news-card, .about, .about .grid,
  .cards, .card-grid--row1, .card-grid--row2, .contact-band,
  .footer-top, .footer-wrap, .footer-visual { max-width:100%; }
}


/* 常にスクロールバー分の溝を確保してガタつき防止 */
html{ scrollbar-gutter: stable; }


/* =========================================
   Hamburger (スマホ専用) — 安定版
   ・三本線は完全左右対称／中心回転で❌へ
   ・背景の白い角丸は削除（透明）
   ・オーバーレイ上では線色を白に
   ・横スクロール抑止、縦スクロールは残す
========================================= */
@media (max-width:768px){

  /* ボタン本体（右上固定、透明、48pxタップ領域） */
  .hamburger{
    position: fixed;
    top: 12px;
    right: 12px;
    z-index: 1100;
    width: 48px;
    height: 48px;
    padding: 0;
    border: none;
    background: transparent;       /* ←白い四角を消す */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
  }

  /* 三本線（中心基準で配置） */
  .hamburger span{
    position: absolute;
    left: 50%;
    top: 50%;
    width: 26px;                   /* 線の長さ */
    height: 2px;                   /* 線の太さ */
    background: #18231d;           /* デフォは黒系 */
    border-radius: 1px;
    transform-origin: 50% 50%;
    transition: transform .24s ease, opacity .18s ease, background-color .18s ease;
  }
  .hamburger span:nth-child(1){ transform: translate(-50%,-50%) translateY(-7px); }
  .hamburger span:nth-child(2){ transform: translate(-50%,-50%); }
  .hamburger span:nth-child(3){ transform: translate(-50%,-50%) translateY( 7px); }

  /* オーバーレイ本体（全画面フェード） */
  nav.primary{
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;
    padding: 20px;
    background: rgba(24,35,29,.92);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity .25s ease, visibility .25s ease;
  }

  /* 表示時（フェードイン） */
  body.nav-open nav.primary{
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }

  /* ❌アニメ：中心回転でズレない */
  body.nav-open .hamburger span:nth-child(1){
    transform: translate(-50%,-50%) rotate(45deg);
  }
  body.nav-open .hamburger span:nth-child(2){
    opacity: 0;
  }
  body.nav-open .hamburger span:nth-child(3){
    transform: translate(-50%,-50%) rotate(-45deg);
  }

  /* オーバーレイ上は線色を白にして視認性UP */
  body.nav-open .hamburger span{ background: #ffffff; }

  /* メニュー内の見た目（整列と間隔を安定化） */
  nav.primary a{
    color: #fff;
    font-size: 18px;
    line-height: 1;
    padding: 14px 18px;
    margin: 4px 0;
    text-align: center;
    border-radius: 8px;
    display: inline-block;
  }
  nav.primary a.nav-item::before{ display: none; }
  nav.primary a.join{
    background: #eef2f5; color: #1f2937; margin-top: 12px;
  }
  nav.primary .btn{
    background: var(--c-green); color: #fff;
    border-radius: 999px; padding: 12px 20px; font-size: 16px;
  }

  /* 余計な横スクロールの抑止（保険） */
  html, body{ overflow-x: hidden; }
}

/* メニュー開閉時のガタつき対策：縦スクロールバーの溝を常時確保 */
html{ scrollbar-gutter: stable; }

/* ============================
   Hamburger FIX (final hard override)
   ・右上固定の微ズレ解消（安全域対応）
   ・白い角丸/影を完全に無効化
   ・三本線は正確に中央配置（整数px）
============================ */
@media (max-width:768px){

  /* 位置：画面右上に固定。iOS安全域も考慮 */
  header.site-header .hamburger{
    position: fixed !important;
    top: calc(10px + env(safe-area-inset-top)) !important;
    right: calc(10px + env(safe-area-inset-right)) !important;
    z-index: 1100 !important;

    /* タップ領域 */
    width: 48px !important;
    height: 48px !important;
    padding: 0 !important;

    /* 見た目：完全に透明。残っていた白角丸/影を排除 */
    background: transparent !important;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;

    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    cursor: pointer !important;

    -webkit-tap-highlight-color: transparent;
    transform: translateZ(0); /* サブピクセルにじみ回避 */
  }

  /* 三本線：中心起点で整数pxに配置（ズレ/にじみ対策） */
  header.site-header .hamburger span{
    position: absolute !important;
    left: 50% !important;
    top: 50% !important;
    width: 26px !important;     /* 線の長さ */
    height: 2px !important;     /* 太さ */
    background: #2ea14a !important;
    border-radius: 1px !important;
    transform-origin: 50% 50% !important;
    transition: transform .24s ease, opacity .18s ease, background-color .18s ease !important;
  }
  /* きっちり整数pxで上下に配置 */
  header.site-header .hamburger span:nth-child(1){
    transform: translate(-50%,-50%) translateY(-8px) !important;
  }
  header.site-header .hamburger span:nth-child(2){
    transform: translate(-50%,-50%) !important;
  }
  header.site-header .hamburger span:nth-child(3){
    transform: translate(-50%,-50%) translateY( 8px) !important;
  }

  /* 開いたときは中心で×回転。線色は白にして背景上で視認性アップ */
  body.nav-open header.site-header .hamburger span:nth-child(1){
    transform: translate(-50%,-50%) rotate(45deg) !important;
  }
  body.nav-open header.site-header .hamburger span:nth-child(2){
    opacity: 0 !important;
  }
  body.nav-open header.site-header .hamburger span:nth-child(3){
    transform: translate(-50%,-50%) rotate(-45deg) !important;
  }
  body.nav-open header.site-header .hamburger span{
    background:#fff !important;
  }

  /* オーバーレイ（念のための再定義）：フェードのみ、はみ出し抑止 */
  header.site-header nav.primary{
    position: fixed !important;
    inset: 0 !important;
    background: rgba(24,35,29,.92) !important;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    gap: 5px;
    padding: 20px;
    transition: opacity .25s ease, visibility .25s ease;
    max-width: 100vw !important;
    overflow-x: hidden !important;
		margin-top: 72px;
  }
  body.nav-open header.site-header nav.primary{
    opacity: 1; visibility: visible; pointer-events: auto;
  }

  /* 横スクロールは確実に殺す（保険） */
  html, body{ overflow-x: hidden !important; }

  /* メニュー内の見た目（微調整） */
  header.site-header nav.primary a{
    color:#fff; font-size:15px; line-height:1; padding:10px 18px; margin: 0;
    text-align:center; border-radius:8px; display:inline-block;
  }
  header.site-header nav.primary a.nav-item::before{ display:none !important; }
  header.site-header nav.primary a.join{ background:#eef2f5; color:#1f2937; margin-top:12px; }
  header.site-header nav.primary .btn{ background:var(--c-green); color:#fff; border-radius:999px; padding:12px 20px; font-size:16px; }
}

/* 縦スクロールバーのガタつき対策（常時確保） */
html{ scrollbar-gutter: stable; }

/* =========================
   Header fix
   (1) PC: stickyを確実に復活
   (2) SP: ヘッダーごと固定＋ヒーローに余白
========================= */

/* (1) PC：スクロール追従を復活 */
@media (min-width: 769px){
  .site-header{
    position: sticky !important;
    top: 38px !important;          /* 既存デザインどおりの浮き量 */
    z-index: 1200 !important;
    background: transparent;       /* 既存仕様を維持 */
  }
}

/* (2) スマホ：ヘッダーごと固定（右上のハンバーガーも一緒に動く） */
@media (max-width: 768px){
  .site-header{
    position: fixed !important;
    top: 0 !important;
    left: 0; right: 0;
    z-index: 1200 !important;
    background: transparent;
  }
  /* 角丸バーが画面端で欠けないよう丸みは外す */
  .header-inner{ border-radius: 0 !important; }

  /* ヒーロー先頭が隠れないよう上に余白を確保（安全域も考慮） */
  .hero{
    padding-top: calc(72px + env(safe-area-inset-top)) !important;
    margin-top: 0 !important;      /* 念のため */
  }
}



/* SP: ハンバーガー展開時の配色を白背景＋黒文字に */
@media (max-width: 768px){
  /* オーバーレイを不透明の白に */
  body.nav-open header.site-header nav.primary{
    background: #ffffff !important;   /* 透過なし */
  }

  /* メニューの文字色を黒系に */
  body.nav-open header.site-header nav.primary a{
    color: #18231d !important;
  }
  body.nav-open header.site-header nav.primary a.nav-item::before{
    display: none !important;
  }

  /* 参加ボタン・会員ボタンの配色（必要なら調整） */
  body.nav-open header.site-header nav.primary a.join{
    background: #f3f4f6 !important;   /* 薄グレーに統一 */
    color: #111827 !important;
		padding: 10px 30px;
		margin-bottom: 10px;
		margin-top: 20px;
  }
  /* 緑の行動ボタンはそのまま強調（白文字のまま） */
  body.nav-open header.site-header nav.primary .btn{
    background: var(--c-green) !important;
    color: #fff !important;
				padding: 10px 30px;
  }

  /* ×アイコンは白背景上で見えるよう黒に */
  body.nav-open header.site-header .hamburger span{
    background: #2ea14a !important;
  }
}

/* PCでのヘッダー固定（sticky）を強制復活 */
@media (min-width: 1025px){
  .site-header{
    position: sticky !important;
    top: 38px !important;
    z-index: 1200 !important;
    background: transparent; /* 既存デザイン維持 */
  }
}













/* =====================
   「薬剤師会について」下層ページ

   （概要／沿革／組織図）
===================== */

/* セクション全体 */
.page-about {
  padding: 80px 0 120px;
}

/* 各ブロック共通 */
.about-section {
  margin-bottom: 96px;
}

/* 見出し（中央＋緑アンダーライン） */
.about-section-heading {
  text-align: center;
  font-size: 28px;
  font-weight: 500;
  margin: 0 0 40px;
  letter-spacing: 0.08em;
  position: relative;
}

.about-section-heading::after {
  content: "";
  display: block;
  width: 80px;
  height: 4px;
  border-radius: 999px;
  background: var(--c-green);
  margin: 16px auto 0;
}

/* 概要・組織用 2カラムテーブル風レイアウト */
.corp-table {
  margin: 0;
}

.corp-row {
  display: grid;
  grid-template-columns: 180px 1fr;
  column-gap: 40px;
  padding: 20px 0;
  border-top: 1px solid #e5e7eb;
  font-size: 15px;
}

.corp-row:last-child {
  border-bottom: 1px solid #e5e7eb;
}

.corp-row dt {
  margin: 0;
  font-weight: 500;
  color: #374151;
}

.corp-row dd {
  margin: 0;
  line-height: 1.9;
}

.corp-link {
  color: #2563eb;
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* 沿革：年表レイアウト */
.history-list {
  border-top: 1px solid #e5e7eb;
}

.history-row {
  display: grid;
  grid-template-columns: 120px 80px 1fr;
  column-gap: 40px;
  padding: 20px 0;
  border-bottom: 1px solid #e5e7eb;
  font-size: 15px;
}

.history-year {
  font-size: 22px;
  font-weight: 600;
  color: var(--c-green);
}

.history-month {
  color: #4b5563;
}

.history-text {
  color: #111827;
  line-height: 1.9;
}

/* 組織図：中央の丸ボタン風 */
.org-diagram {
  margin-bottom: 32px;
}

.org-pill {
  padding: 14px 24px;
  font-size: 15px;
  letter-spacing: 0.05em;
	font-weight: 500;
	display: inline-block;
}

.org-pill span{

font-weight: 400;
  font-size: 15px;
display: inline;
}


/* =====================
   薬剤師会についてページ専用レイアウト（PC）
===================== */

/* 背景色をトップのカードと合わせる */
body.is-about-page{
  background: #f9f5f0;
}

/* Hero：高さは自動にして、上下の余白で調整 */
body.is-about-page .hero{
  height: auto !important;                     /* 固定高さを解除 */
  min-height: 0;
  margin-top: -84px;
  padding-top: calc(38px + 84px + 80px);       /* 上：ヘッダー分 + 余白 */
  padding-bottom: 160px;                       /* 下：H1の下に十分な余白を確保 */
  background-position: center;
}

/* H1の位置はheroのpaddingで管理するので、余計なmarginは無し */
body.is-about-page .hero-copy-inner{
  max-width: 900px;
  margin: 0 auto;     /* 中央に配置 */
  text-align: center; /* 中央寄せ */
}

body.is-about-page .hero h1{
  font-size: 40px;
  line-height: 1.6;
  white-space: normal;
  margin: 40px 0;
}

/* 白カード：Heroに少しだけ食い込ませる */
body.is-about-page .page-about{
  margin-top: -100px;        /* 160px(下padding)のうち100pxだけかぶせる → H1の上下余白がほぼ同じ感覚になる */
  padding: 0 0 120px;
  position: relative;
  z-index: 5;
}

body.is-about-page .page-about > .container{
  background: #ffffff;
  border-radius: 16px;
  box-shadow: var(--shadow);
  padding: 40px 80px 40px;
}

/* セクション間の余白を調整 */
body.is-about-page .about-section{
  margin-bottom: 80px;
}
body.is-about-page .about-section:last-child{
  margin-bottom: 0;
}

/* 見出し（中央＋緑ライン） */
.about-section-heading{
  text-align: center;
  font-size: 28px;
  font-weight: 400;
  margin: 0 0 40px;
  letter-spacing: 0.04em;
  position: relative;
	font-family: "Kosugi Maru", sans-serif;
}
.about-section-heading::after{
  content: "";
  display: block;
  width: 40px;
  height: 4px;
  border-radius: 999px;
  background: var(--c-green);
  margin: 7px auto 0;
}

/* 概要・組織の2カラム行 */
.corp-table{ margin: 0; }
.corp-row{
  display: grid;
  grid-template-columns: 180px 1fr;
  column-gap: 40px;
  padding: 20px 0;
  border-top: 1px solid #e5e7eb;
  font-size: 15px;
}
.corp-row:last-child{
  border-bottom: 1px solid #e5e7eb;
}
.corp-row dt{
  margin: 0;
  font-weight: 500;
  color: #374151;
}
.corp-row dd{
  margin: 0;
  line-height: 1.9;
}
.corp-link{
  color: #2563eb;
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* 沿革（年表） */
.history-list{
  border-top: 1px solid #e5e7eb;
}
.history-row{
  display: grid;
  grid-template-columns: 120px 80px 1fr;
  column-gap: 40px;
  padding: 20px 0;
  border-bottom: 1px solid #e5e7eb;
  font-size: 15px;
}
.history-year{
  font-size: 20px;
  font-weight: 600;
  color: var(--c-green);
}
.history-month{
  color: #4b5563;
	font-size: 18px;
}
.history-text{
  color: #111827;
  line-height: 1.9;
}

/* 組織図の「理事会」ピル */
.org-diagram{
  margin-bottom: 32px;
}
.org-pill{

  padding: 10px 24px;
  font-size: 20px;
  letter-spacing: 0.05em;
	background: #f3f3f3;
}

.org-pill span{
width: 100%;
font-weight: 400;
  font-size: 13px;
display: block;
}


/* =============================
   薬剤師会についてページ：レスポンシブ調整
   （タブレット〜スマホ）
============================= */

/* --- タブレット（〜1024px） --- */
@media (max-width: 1024px){

  /* 白カードの内側余白を少しコンパクトに */
  body.is-about-page .page-about > .container{
    padding: 40px 40px 60px;
    border-radius: 14px;
  }

  body.is-about-page .about-section{
    margin-bottom: 64px;
  }
}

/* --- スマホ（〜768px） --- */
@media (max-width: 768px){

  /* Hero：ヘッダーの高さ＋余白分だけ下げて、下側に余白を多めに */
  body.is-about-page .hero{
    height: auto !important;
    min-height: 0;
    margin-top: 0 !important;
    padding-top: calc(72px + env(safe-area-inset-top) + 40px) !important;
    padding-bottom: 120px !important;   /* H1の下に余白 */
    background-position: center;
  }

  body.is-about-page .hero-copy-inner{
    max-width: 100%;
    margin: 0;
    text-align: center;
  }

  body.is-about-page .hero h1{
    font-size: 24px;
    line-height: 1.7;
    white-space: normal;
  }

  /* 白カード：スマホでも少しだけヒーローにかぶせる */
  body.is-about-page .page-about{
    margin-top: -80px;
    padding-bottom: 80px;
    position: relative;
    z-index: 5;
  }

  body.is-about-page .page-about > .container{
    padding: 30px 26px 30px;
    border-radius: 12px;
    box-shadow: 0 8px 20px rgba(16,24,40,.10);
  }

  /* 見出しまわり */
  body.is-about-page .about-section{
    margin-bottom: 48px;
  }

  .about-section-heading{
    font-size: 22px;
    margin-bottom: 24px;
  }

  .about-section-heading::after{
    width: 64px;
    height: 3px;
  }

  /* 概要・組織：2カラム → 1カラム縦並び */
  .corp-row{
    display: block;
    padding: 14px 0;
  }

  .corp-row dt{
    font-size: 14px;
    margin-bottom: 2px;
    color: #6b7280;
  }

  .corp-row dd{
    font-size: 14px;
    line-height: 1.9;
  }

  /* 沿革：ブロック表示にして読みやすく */
  .history-list{
    border-top: 1px solid #e5e7eb;
  }

  .history-row{
    display: block;
    padding: 14px 0;
    border-bottom: 1px solid #e5e7eb;
    font-size: 14px;
  }

  .history-year{
    font-size: 18px;
    font-weight: 600;
    color: var(--c-green);
    margin-bottom: 2px;
  }

  .history-month{
    display: inline-block;
    margin-right: 8px;
    color: #4b5563;
  }

  .history-text{
    display: block;
    margin-top: 4px;
    line-height: 1.9;
    color: #111827;
  }

  /* 組織図のピルボタン */
  .org-diagram{
    margin-bottom: 20px;
  }

  .org-pill{
    min-width: 120px;
    padding: 10px 18px;
    font-size: 18px;
  }
}


/* 組織図：委員会ピルの上に余白を追加（理事会はそのまま） */
.about-org .org-block .org-diagram{
  margin-top: 60px;
}

@media (max-width: 768px){
  .about-org .org-block .org-diagram{
    margin-top: 24px;
  }
}









/* =====================
   あなたの街の薬局ページ
   （地図＋50音一覧）
===================== */

/* 白カード（「薬剤師会について」と同じ見え方にする） */
body.is-about-page .page-local-pharmacies {
  margin-top: -100px;
  padding: 0 0 120px;
  position: relative;
  z-index: 5;
}

body.is-about-page .page-local-pharmacies > .container {
  background: #ffffff;
  border-radius: 16px;
  box-shadow: var(--shadow);
  padding: 56px 80px 80px;
}

/* 地図セクション */
.local-lead {
  text-align: center;
  margin: 0 0 50px;
  font-size: 16px;
}

.local-map-frame {
  margin-top: 8px;
}

.local-map-embed {
  border-radius: 16px;
  overflow: hidden;
  border: 1px solid #e5e7eb;
  background: #eef2f6;
  box-shadow: var(--shadow);
}

.local-map-embed iframe {
  display: block;
  width: 100%;
  height: 480px;
  border: 0;
}

/* 50音セクション */
.local-kana {
  margin-top: 80px;
}

.kana-block {
  margin-top: 40px;
}

.kana-heading {
  font-size: 20px;
  font-weight: 600;
  margin: 0 0 12px;
}

/* テーブル（PC） */
.pharmacy-table-wrap {
  width: 100%;
  overflow-x: auto;
}

.pharmacy-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 15px;
}

.pharmacy-table thead th {
  padding: 10px 12px;
  background: #f4f4f4;
  text-align: left;
  font-weight: 600;
  border-bottom: 1px solid #e5e7eb;
}

.pharmacy-table tbody td {
  padding: 10px 12px;
  border-bottom: 1px solid #e5e7eb;
  vertical-align: top;
}

.pharmacy-table tbody tr:nth-child(even) {
  background: #f9fafb;
}

/* 店舗名を少し強調 */
.pharmacy-table tbody td:first-child a {
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* --- スマホ表示：1店舗＝カード形式で1行ずつ --- */
@media (max-width: 768px) {

  body.is-about-page .page-local-pharmacies > .container {
    padding: 32px 16px 40px;
    border-radius: 12px;
    box-shadow: 0 8px 20px rgba(16,24,40,.10);
  }

  .local-kana {
    margin-top: 56px;
  }

  .kana-block {
    margin-top: 32px;
  }

  .kana-heading {
    font-size: 18px;
    margin-bottom: 8px;
  }

  .local-map-embed iframe {
    height: 320px;
  }

  /* テーブル → カード表示 */
  .pharmacy-table thead {
    display: none;
  }

  .pharmacy-table,
  .pharmacy-table tbody,
  .pharmacy-table tr,
  .pharmacy-table td {
    display: block;
    width: 100%;
  }

  .pharmacy-table tbody tr {
    margin-bottom: 16px;
    padding: 10px 12px;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    background: #ffffff;
  }

  .pharmacy-table tbody td {
    padding: 2px 0;
    border-bottom: none;
    font-size: 14px;
  }

  /* ラベルを先頭に表示して、1項目＝1行 */
  .pharmacy-table tbody td::before {
    content: attr(data-label);
    display: inline-block;
    margin-right: 4px;
    font-size: 12px;
    color: #6b7280;
  }

  /* 店舗名は太字・1行目 */
  .pharmacy-table tbody td:first-child {
    font-weight: 600;
    margin-bottom: 4px;
  }
  .pharmacy-table tbody td:first-child::before {
    /* 「店舗名」のラベルは省略してスッキリさせる */
    content: "";
  }
}







/* 50音ナビ（ページ内リンク） */
.kana-nav {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin: 0 0 24px;
  padding: 0;
  list-style: none;
}

.kana-nav li a {
  display: inline-block;
  min-width: 56px;
  padding: 6px 12px;
  border-radius: 999px;
  border: 1px solid #e5e7eb;
  background: #f9fafb;
  font-size: 14px;
  text-align: center;
  color: #374151;
  text-decoration: none;
}

.kana-nav li a:hover {
  background: var(--c-green);
  border-color: var(--c-green);
  color: #fff;
}

/* スマホ時の調整 */
@media (max-width: 768px) {
  .kana-nav {
    gap: 6px;
    margin-bottom: 20px;
  }
  .kana-nav li a {
    font-size: 13px;
    padding: 5px 10px;
    min-width: 48px;
  }
}



/* 50音ブロック用：ヘッダーと被らないように余白を確保 */
#kana-a,
#kana-ka,
#kana-sa,
#kana-ta,
#kana-na,
#kana-ha,
#kana-ma,
#kana-ya,
#kana-ra,
#kana-wa {
  scroll-margin-top: 130px;  /* PC 用：ヘッダー分＋少し余白 */
}

@media (max-width: 768px) {
  #kana-a,
  #kana-ka,
  #kana-sa,
  #kana-ta,
  #kana-na,
  #kana-ha,
  #kana-ma,
  #kana-ya,
  #kana-ra,
  #kana-wa {
    scroll-margin-top: 100px; /* SP 用：固定ヘッダー分だけ少し控えめ */
  }
}


.kana-nav {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin: 0 0 24px;
  padding: 0;
  list-style: none;
}

.kana-nav li a {
  display: inline-block;
  min-width: 56px;
  padding: 6px 12px;
  border-radius: 999px;
  border: 1px solid #e5e7eb;
  background: #f9fafb;
  font-size: 14px;
  text-align: center;
  color: #374151;
  text-decoration: none;
}

.kana-nav li a:hover {
  background: var(--c-green);
  border-color: var(--c-green);
  color: #fff;
}


.kana-nav {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin: 0 0 24px;
  padding: 0;
  list-style: none;
}

.kana-nav li a {
  display: inline-block;
  min-width: 56px;
  padding: 6px 22px;
  border-radius: 999px;
  border: 1px solid #e5e7eb;
  background: #f9fafb;
  font-size: 18px;
  text-align: center;
font-weight: 500;
  text-decoration: none;
}

.kana-nav li a:hover {
  background: var(--c-green);
  border-color: var(--c-green);
  color: #fff;
}


@media (max-width: 768px) {
.kana-nav {

  justify-content: space-between;
  gap: 0;

}

.kana-nav li {
width: 18%;
margin-bottom: 12px
}
.kana-nav li a {
width: 100%;
font-size: 15px;
}
}




/* PCサイト時：薬局一覧テーブルの列幅を固定 */
@media (min-width: 769px) {

  .pharmacy-table {
    table-layout: fixed;   /* 各列のwidth指定を効かせる */
  }

  /* 1列目：店舗名 */
  .pharmacy-table th:nth-child(1),
  .pharmacy-table td:nth-child(1) {
    width: 260px;
  }

  /* 2列目：住所 */
  .pharmacy-table th:nth-child(2),
  .pharmacy-table td:nth-child(2) {
    width: 520px;
  }

  /* 3列目：電話番号 */
  .pharmacy-table th:nth-child(3),
  .pharmacy-table td:nth-child(3) {
    width: 180px;
  }

  /* 4列目：FAX番号 */
  .pharmacy-table th:nth-child(4),
  .pharmacy-table td:nth-child(4) {
    width: 180px;
  }

  /* 住所が長いので折り返し許可（任意） */
  .pharmacy-table td:nth-child(2) {
    word-wrap: break-word;
    word-break: break-word;
  }
}




/* =========================================
   活動内容ページ（activities.html）
   ========================================= */

/* ページ全体 */
.is-activities-page .hero {
  /* aboutページと同じトーンなら、ここは既存のままでもOK */
}

.page-activities {
  padding: 48px 0 64px;
}

@media (min-width: 768px) {
  .page-activities {
    padding: 64px 0 80px;
  }
}

/* セクション（文京区薬剤師会の活動） */
.page-activities .activities-main {
  margin-top: 0;
}

.page-activities .about-section-heading {
  font-size: 22px;
  margin-bottom: 1.5em;
}

@media (min-width: 768px) {
  .page-activities .about-section-heading {
    font-size: 2rem;
  }
}

/* リード文 */
.activities-lead {
  font-size: 18px;
  line-height: 1.8;
  margin-bottom: 70px;
  margin-top: 70px;
}

/* カード一覧：スマホは1列、PCは3列（＝2行3列） */
.activities-grid {
  display: grid;
  grid-template-columns: 1fr;   /* スマホ：1列 */
  gap: 24px;
}

@media (min-width: 768px) {
  .activities-grid {
    grid-template-columns: repeat(3, 1fr);  /* PC：3列 */
    gap: 24px 24px;
  }
}

/* カード本体 */
.activity-card {
  background-color: #fff;
  border-radius: 8px;
  border: 1px solid #e3e3e3;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  height: 100%;
}

/* サムネイル（1行目：横幅100%） */
.activity-thumb {
  width: 100%;
  overflow: hidden;
}

.activity-thumb img {
  display: block;
  width: 100%;
  height: auto;
}

/* 見出し（2行目：横幅100%） */
.activity-title {
  font-size: 22px;
  font-weight: 600;

  line-height: 1.5;
  margin-bottom: 5px;
  color: #42a145;
  text-align: center;
}

/* 本文（3行目：横幅100%） */
.activity-text {
  font-size: 16px;
  line-height: 1.8;
  padding: 0 16px 16px;
  flex: 1 1 auto;
}

/* 余白調整（必要なら） */
.page-activities .container {
  /* 必要に応じて調整 */
}



@media (max-width: 768px) {
.activities-lead {
  font-size: 16px;
  line-height: 1.8;
  margin-bottom: 40px;
  margin-top: 40px;
}
.activity-title {
  font-size: 20px;
  font-weight: 600;
  line-height: 1.5;
  margin-bottom: 5px;
	margin-top: 25px;
  color: #42a145;
  text-align: center;
}

/* 本文（3行目：横幅100%） */
.activity-text {
  font-size: 16px;
  line-height: 1.8;
  padding: 0 26px 16px;
  flex: 1 1 auto;
}
}





/* 薬剤師の仕事ページ用レイアウト */
.page-pharmacist .about-section {

}

.pharmacist-jobs {
  display: flex;
  flex-direction: column;
  gap: 24px;
  margin-top: 32px;
}

.job-card {
  display: flex;
  gap: 40px;
  padding: 24px;
  border-radius: 16px;
  background-color: #fff;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04);
}

.job-thumb img {
  display: block;
  width: 362px;
  max-width: 100%;
  height: auto;
  border-radius: 5px;
  object-fit: cover;
}

.job-body {

  flex: 1;
}

.job-title {
  font-size: 23px;
  margin-bottom: 0.5em;
	font-weight: 600;
}

.job-text {
  line-height: 2;
	font-size: 17px;
}

@media (max-width: 768px) {
  .job-card {
    flex-direction: column;
    padding: 16px;
		gap: 30px;
  }

  .job-thumb img {
    width: 100%;
  }
	
	.job-title {
  font-size: 20px;
  margin-bottom: 0.5em;
	font-weight: 600;
	margin-top: 0;
}

.job-text {
  line-height: 2;
	font-size: 16px;
}

	
	
	
}






/* Hero：スマホ時は縦長MV画像に切り替え */
@media (max-width: 768px){
  .hero{
    /* 背景色はこれまでと同じ。画像だけ差し替え */
    background: #c7cdd6 url("../images/mv-sp.jpg")
                top center / contain no-repeat;
  }
}







/* =========================
   PDFリンク追加（PC固定バナー / SP固定フッター / SPナビ表示制御）
========================= */

/* SP専用リンク：PCでは非表示 */
.sp-only{ display:none !important; }
@media (max-width:768px){
  .sp-only{ display:inline-block !important; }
}

/* ---- PC：右上固定バナー（2つ縦並び） ---- */
.pc-fixed-pdf-banners{
  display:none;
}
@media (min-width:769px){
  .pc-fixed-pdf-banners{
    display:flex;
    position: fixed;
    top: 140px;          /* 必要なら調整 */
    right: 20px;
    z-index: 1300;
    flex-direction: column;
    gap: 12px;
  }



  .pc-pdf-banner:hover{
    opacity: .8;
  }
}



@media (max-width:768px){
/* SP：固定フッター（1行3列） */
.sp-fixed-footer{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;                 /* 余計な隙間で線がズレないように */
  position: fixed;
  left: 0; right: 0; bottom: 0;
  z-index: 1300;
  padding: 8px 10px;      /* 外側に少し余白（囲み枠が見やすい） */
  background: rgba(249,245,240,.96);
  backdrop-filter: blur(6px);
}

  body{
    padding-bottom: 62px; /* 2行分（52px × 2） */
  }
}


/* PCではSP固定フッターを非表示 */
@media (min-width:769px){
  .sp-fixed-footer{
    display: none !important;
  }
}



/* =========================================
   Global Navigation
   - PC: hover dropdown (slide-down)

   - SP: hamburger overlay + accordion
========================================= */

header.site-header nav.primary .nav-group{
  position: relative;
}

@media (min-width:769px){
  header.site-header nav.primary .nav-group{
    display: inline-flex;
    align-items: center;
  }

  /* PCでは矢印ボタンは不要 */
  header.site-header nav.primary .nav-subtoggle{ display:none; }

  /* 親メニューのアイコン（▶/▼等）はPCでは不要 */
  header.site-header nav.primary .nav-group.has-sub > a.nav-parent::after{
    content: none;
    display: none;
  }

  /* ドロップダウン（上→下にスライドして表示） */
  header.site-header nav.primary .nav-submenu{
    position: absolute;
    top: calc(100% + 10px);
    left: 0;
    z-index: 1400;

    min-width: 220px;
    padding: 8px;
    background: #ffffff;
    border: 1px solid rgba(17,24,39,.10);
    border-radius: 12px;
    box-shadow: 0 16px 40px rgba(16,24,40,.14);

    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translateY(-10px);
    transition: opacity .18s ease, transform .18s ease, visibility .18s ease;
  }

  /*
    【重要】PCドロップダウンが“親→サブ”へマウス移動する瞬間に
    一旦ホバーが外れて閉じてしまう問題の対策。
    親メニューとサブメニューの間（10px）の“空白”に透明の当たり判定を作り、
    マウスを移動しても :hover が継続するようにする。
  */
  header.site-header nav.primary .nav-submenu::before{
    content: "";
    position: absolute;
    top: -12px;
    left: 0;
    right: 0;
    height: 12px;
    background: transparent;
  }

  header.site-header nav.primary .nav-submenu a{
    display: block;
    padding: 10px 12px;
    margin: 0;
    border-radius: 10px;
    font-size: 14px;
    color: #111827;
    white-space: nowrap;
  }
  header.site-header nav.primary .nav-submenu a:hover{
    background: rgba(46,161,74,.10);
  }
  header.site-header nav.primary .nav-submenu a::before{
    content: none !important;
    display: none !important;
  }

  header.site-header nav.primary .nav-group:hover .nav-submenu,
  header.site-header nav.primary .nav-group:focus-within .nav-submenu{
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateY(0);
  }
}

@media (max-width:768px){
  /* メニューが長くなるのでスクロール可能に */
  header.site-header nav.primary{
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 30px;
  }

  /*
    サブメニュー“なし”の項目も、サブメニュー“あり”の親メニューと
    できるだけ同じ見た目（左寄せ／同じ幅）に揃える。
    ※nav-group配下ではなく、nav.primary 直下の nav-item にのみ適用。
  */
  header.site-header nav.primary > a.nav-item:not(.join){
    width: min(460px, 92vw);
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    text-align: left !important;
  }

  /* 親メニュー＋開閉ボタンを横並び。サブメニューは折りたたみ */
  header.site-header nav.primary .nav-group{
    width: min(460px, 92vw);
    margin: 0 auto;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
  }

  header.site-header nav.primary .nav-group > a.nav-parent{
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    text-align: left !important;
    padding-right: 8px;
  }

  /* PC用の▾はSPでは非表示 */
  header.site-header nav.primary .nav-group.has-sub > a.nav-parent::after{
    content: none;
    display: none;
  }

  header.site-header nav.primary .nav-subtoggle{
    flex: 0 0 auto;
    width: 40px;
    height: 40px;
    border: none;
    background: transparent;
    border-radius: 10px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
  }

  header.site-header nav.primary .nav-caret{
    width: 10px;
    height: 10px;
    border-right: 2px solid var(--c-green);
    border-bottom: 2px solid var(--c-green);
    transform: rotate(45deg);
    transition: transform .2s ease;
  }

  header.site-header nav.primary .nav-submenu{
    flex: 0 0 100%;
    width: 100%;
    max-height: 0;
    overflow: hidden;
    transition: max-height .25s ease;
    padding-left: 14px;
  }

  header.site-header nav.primary .nav-group.is-open .nav-submenu{
    max-height: 520px;
  }

  header.site-header nav.primary .nav-group.is-open .nav-caret{
    transform: rotate(-135deg);
  }

  header.site-header nav.primary .nav-submenu a{
    display: block;
    padding: 10px 18px;
    margin: 0;
    font-size: 14px !important;
    text-align: left !important;
  }
  header.site-header nav.primary .nav-submenu a::before{
    content: none !important;
    display: none !important;
  }
}


/* 新着情報：iframe埋め込み */
.news-list--iframe{ display:block; }
.news-iframe{
  width: 100%;
  height: 520px; /* 必要に応じて調整 */
  border: 0;
  display: block; /* iframe下の余白防止 */
}

/* スマホ側は縦が足りなくなりやすいので少し高め */
@media (max-width: 1024px){
  .news-iframe{ height: 620px; }
}

/* =========================
   新着情報 iframe（下層ページ用）
========================= */
.news-board--static{
  position: static;
  top: auto;
  left: auto;
  right: auto;
  margin-top: 28px;
  z-index: auto;
}

/* iframe本体 */
.news-list--iframe{ display:block; }
.news-iframe{
  width: 100%;
  height: 520px; /* 必要なら調整 */
  border: 0;
  display: block; /* iframe下の余白防止 */
}

/* SPでは縦が足りなくなりやすいので高め */
@media (max-width: 1024px){
  .news-board--static .news-card{
    grid-template-columns: 1fr;
    padding: 24px;
  }
  .news-board--static .news-head{
    text-align: center;
    padding-top: 0;
  }
  .news-iframe{ height: 620px; }
}

/* お知らせCMS：news-card の幅を 1300px に合わせる（下層ページ用） */
.news-board--static .container{
  max-width: 1300px;
}

/* 念のため：カード自体は全幅で追従 */
.news-board--static .news-card{
  width: 100%;
  margin-left: auto;
  margin-right: auto;
}

/* pharmacist */
.pharmacist-lead {
  text-align: center;
  font-size: 16px;
}

@media (max-width: 1024px){
/* pharmacist */
.pharmacist-lead {
  text-align: left;
  font-size: 16px;
}
}

/* =====================
   入会について（membership.html）
===================== */
body.is-membership-page .membership-content{
max-width: 450px;
  margin: 0 auto;
}

body.is-membership-page .membership-heading{
  font-family: "Kosugi Maru", sans-serif;
  font-size: 22px;
  font-weight: 400;
  color: #1f3344;
  letter-spacing: 0.02em;
  margin: 32px 0 14px;
  padding-left: 16px;
  position: relative;
}

body.is-membership-page .membership-heading:first-child{
  margin-top: 0;
}

body.is-membership-page .membership-heading::before{
  content: "";
  position: absolute;
  left: 0;
  top: 0.9em;
  width: 8px;
  height: 8px;
  border-radius: 999px;
  background: var(--c-green);
  transform: translateY(-50%);
}

body.is-membership-page .membership-text{
  font-size: 16px;
  line-height: 2;
  margin: 0 0 22px;
}

body.is-membership-page .membership-contact{
  background: #f9fafb;
  border: 1px solid #e5e7eb;
  border-radius: 14px;
  padding: 18px 22px;
	width: 350px;
}

body.is-membership-page .membership-contact p{
  margin: 0;
  line-height: 1.9;
  font-size: 15px;
}

body.is-membership-page .membership-org{
  font-weight: 600;
  margin-bottom: 6px;
}

body.is-membership-page .membership-tel a{
  color: var(--c-green);
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 2px;
}

@media (max-width: 768px){
  body.is-membership-page .membership-heading{
    font-size: 19px;
    margin: 26px 0 12px;
  }
  body.is-membership-page .membership-contact{
    padding: 16px 16px;
  }
}

/* SPハンバーガーナビ：お問い合わせ（ミニマムボタン） */
.sp-menu-contact-btn{
  display: inline-block;
  margin-top: 20px !important;
  padding: 10px 12px;
  border-radius: 2px !important;
  color: var(--c-green);
  text-align: center;
  text-decoration: none;
	background: #f7f7f7;
	font-size: 12px !important;
}
.sp-menu-contact-btn:focus-visible{
  outline: 2px solid rgba(44, 140, 90, 0.35);
  outline-offset: 2px;
}

/* =========================
   SPハンバーガーナビ：画面高が低い端末で下部ボタンが隠れる対策
   - メニュー自体を確実に縦スクロール可能にする
   - ナビ展開中は固定フッターを非表示（最下部の被りを根本解消）
   - 画面高が低い場合はボタン類をコンパクト化
========================= */
@media (max-width:768px){

  /* ナビ展開中：固定フッターがメニューを覆わないようにする */
  body.nav-open .sp-fixed-footer{
    display:none !important;
  }

  /* オーバーレイメニュー：縦スクロールを確実に有効化（既存定義の上書き） */
  body.nav-open header.site-header nav.primary{
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;
    max-height: calc(100dvh - 72px - env(safe-area-inset-top));
    padding-bottom: 24px !important; /* 下端の余白（タップしやすさ） */
  }
}

/* 画面高が低いときは、下部の主要ボタン（入会／会員／お問い合わせ）をコンパクト化 */
@media (max-width:768px) and (max-height:700px){
  body.nav-open header.site-header nav.primary a.join{
    font-size: 15px !important;
    padding: 12px 24px !important;
    margin-top: 16px !important;
    margin-bottom: 8px !important;
  }
  body.nav-open header.site-header nav.primary .btn.btn-green{
    font-size: 15px !important;
    padding: 12px 24px !important;
  }
  body.nav-open header.site-header nav.primary .sp-menu-contact-btn{
    font-size: 12px !important;
    padding: 10px 16px !important;
    margin-top: 14px !important;
  }
}

@media (max-width:768px) and (max-height:620px){
  body.nav-open header.site-header nav.primary a.join{
    font-size: 14px !important;
    padding: 10px 22px !important;
  }
  body.nav-open header.site-header nav.primary .btn.btn-green{
    font-size: 14px !important;
    padding: 10px 22px !important;
  }
  body.nav-open header.site-header nav.primary .sp-menu-contact-btn{
    font-size: 11px !important;
    padding: 9px 14px !important;
  }
}



/* ===== SPハンバーガー：常に100vh(=実表示高さ)で固定し、スクロールを完全停止 ===== */
:root{ --vh: 1vh; }

@media (max-width: 768px){
  /* 背面スクロール停止（JSがtopを保持） */
  body.scroll-lock{
    position: fixed;
    left: 0;
    right: 0;
    width: 100%;
    height: calc(var(--vh, 1vh) * 100);
    overflow: hidden;
    overscroll-behavior: none;
  }

  /* メニューオープン時：オーバーレイを必ず100vhに、内部もスクロールさせない */
  body.nav-open header.site-header nav.primary{
    height: calc(var(--vh, 1vh) * 100) !important;
    max-height: none !important;
    overflow: hidden !important;
    -webkit-overflow-scrolling: auto !important;
  }

  /* iOSのバウンド（ラバーバンド）抑制の保険 */
  body.nav-open{
    overscroll-behavior: none;
  }
}



/* タップ時の見え方（任意） */
.sp-fixed-footer__link:active{
  transform: translateY(1px);
}

/* PC：右上固定PDFバナー（画像バナー用） */
.pc-pdf-banner__img{display:block;width:100%;height:auto;}
/* SP固定フッター：画像バナー用 */
.sp-fixed-footer__img{
  display: block;
  width: 100%;
  height: auto;
}

/* 高さと最下部余白（bottom）を調整しやすくする */
.sp-fixed-footer{
  /* ↓ここを触れば調整できます */
  --spFooterH: 70px;     /* フッターの高さ（例：60〜84pxくらいで調整） */
  --spFooterBottom: 12px;/* 画面最下部からの余白（0〜16pxくらいで調整） */
  --spFooterGap: 8px;    /* ボタン間の隙間 */

  height: var(--spFooterH);
  bottom: var(--spFooterBottom);
  gap: var(--spFooterGap);
}

/* 各リンク：画像が縦に潰れないように中央寄せ＆高さ追従 */
.sp-fixed-footer__link{
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0; /* 文字用のpaddingが残っていると高さがズレるので0 */
}










/* ---------------------------------
   Contact Form 7 iframe埋め込み
--------------------------------- */
.contact-form-embed-wrap {
  width: 100%;
  margin-top: 3rem;
}

.contact-form-embed {
  width: 100%;
  min-height: 2200px;
  border: none;
  display: block;
  background: transparent;
  overflow: hidden;
}

@media screen and (max-width: 768px) {
  .contact-form-embed {
    min-height: 2500px;
  }
}



/* =====================
   Members Page
===================== */
.member-page {
  padding-top: 180px;
  padding-bottom: 80px;
  background: #f7faf7;
}

.member-hero {
  padding: 0 0 36px;
}

.member-hero__inner {
  background: #fff;
  border-radius: 18px;
  box-shadow: var(--shadow);
  padding: 48px 56px;
  border: 1px solid #eef2f6;
}

.member-hero__title {
  margin: 0 0 18px;
  font-size: 38px;
  line-height: 1.4;
  font-weight: 500;
  color: #1f3344;
  font-family: "Kosugi Maru", sans-serif;
}

.member-hero__lead {
  margin: 0;
  font-size: 18px;
  line-height: 2;
  color: var(--c-text);
}

.member-hero__note {
  margin: 16px 0 0;
  font-size: 14px;
  color: #5f6b76;
  line-height: 1.9;
}

.member-news-board {
  margin-top: 0;
}

.member-news-card {
  width: 100%;
  background: #fff;
  border-radius: 18px;
  box-shadow: var(--shadow);
  padding: 25px;
  border: 1px solid #eef2f6;
  display: grid;
  grid-template-columns: 260px 1fr;
  gap: 24px;
  position: relative;
}

.member-news-head {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin: 0;
  padding-right: 8px;
  text-align: center;
  padding-top: 30px;
}

.member-news-head h2 {
  font-size: 34px;
  line-height: 1.4;
  margin: 0;
  font-weight: 400;
  color: #1f3344;
  font-family: "Kosugi Maru", sans-serif;
}

.member-news-head .en {
  color: var(--c-green);
  font-weight: 400;
  font-size: 18px;
  letter-spacing: 1px;
}

.member-news-list {
  display: block;
}

.member-news-iframe {
  width: 100%;
  min-height: 900px;
  border: none;
  display: block;
  background: #fff;
  overflow: hidden;
  border-radius: 12px;
}

@media screen and (max-width: 959px) {
  .member-page {
    padding-top: 140px;
    padding-bottom: 60px;
  }

  .member-hero__inner {
    padding: 34px 22px;
    border-radius: 14px;
  }

  .member-hero__title {
    font-size: 28px;
  }

  .member-hero__lead {
    font-size: 16px;
    line-height: 1.9;
  }

  .member-news-card {
    grid-template-columns: 1fr;
    gap: 18px;
    padding: 20px;
  }

  .member-news-head {
    text-align: left;
    padding-top: 0;
  }

  .member-news-head h2 {
    font-size: 28px;
  }

  .member-news-head .en {
    font-size: 16px;
  }

  .member-news-iframe {
    min-height: 1100px;
  }
}


/* =========================
   会員専用ページ
========================= */
.page-members .members-main {
  padding-bottom: 10px;
}

.members-lead {
  margin-bottom: 28px;
}

.members-description {
  font-size: 1.8rem;
  line-height: 2;
  color: var(--c-text);
}

.members-description p {
  margin: 0 0 1.2em;
}

.news-iframe--members {
  width: 100%;
  min-height: 900px;
  border: none;
  display: block;
  overflow: hidden;
  background: #fff;
}

@media screen and (max-width: 959px) {
  .members-description {
    font-size: 1.5rem;
    line-height: 1.9;
  }

  .news-iframe--members {
    min-height: 1100px;
  }
}

/* =========================
   Member Login Page
========================= */
.page-members-login{
  margin-top: -100px;
  padding: 0 0 120px;
  position: relative;
  z-index: 5;
}

.page-members-login > .container{
  background: #ffffff;
  border-radius: 16px;
  box-shadow: var(--shadow);
  padding: 48px 80px 60px;
}

.member-login-box{
  max-width: 520px;
  margin: 0 auto;
  background: #f9fafb;
  border: 1px solid #e5e7eb;
  border-radius: 16px;
  padding: 32px;
}

.member-login-form{
  display: flex;
  flex-direction: column;
  gap: 22px;
}

.member-login-field label{
  display: block;
  font-size: 15px;
  font-weight: 500;
  margin-bottom: 8px;
  color: #374151;
}

.member-login-field input{
  width: 100%;
  height: 52px;
  padding: 0 14px;
  border: 1px solid #d1d5db;
  border-radius: 10px;
  background: #fff;
  font-size: 16px;
  color: #18231d;
}

.member-login-field input:focus{
  outline: none;
  border-color: var(--c-green);
  box-shadow: 0 0 0 4px rgba(46,161,74,.12);
}

.member-login-actions{
  text-align: center;
  margin-top: 8px;
}

.member-login-submit{
  min-width: 180px;
  min-height: 50px;
  font-size: 16px;
}

.member-login-error-text{
  text-align: center;
  font-size: 16px;
  line-height: 2;
  margin: 0 0 20px;
}

.member-login-box--error{
  border-color: #f0caca;
  background: #fff8f8;
}

@media (max-width: 768px){
  .page-members-login{
    margin-top: -80px;
    padding-bottom: 80px;
  }

  .page-members-login > .container{
    padding: 30px 20px 36px;
    border-radius: 12px;
  }

  .member-login-box{
    padding: 22px 18px;
  }
}