/* =========================================================
   一般社団法人ラフテル - Google Sites "Impression" theme reproduction
   ========================================================= */
:root {
  --color-primary: #226e93;
  --color-primary-hover: #1b577a;
  --color-link: #1155cc;
  --color-accent-blue: #1e6c93;
  --color-section-blue: #1e6c93;
  --color-text: #000000;
  --color-text-light: #666666;
  --color-bg: #ffffff;
  --color-bg-alt: #f2f2f2;
  --color-footer: #1e6c93;
  --color-footer-text: #000000;
  --color-border: #e0e0e0;
  --content-max: 1280px;
  --content-pad: 1216px;
  --header-h: 56px;
  --font-main: "Lato", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--font-main);
  color: var(--color-text);
  background: var(--color-bg);
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--color-link); text-decoration: underline; }
a:hover { color: var(--color-primary-hover); }

/* ========== HEADER ========== */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: #fff;
  border-bottom: 1px solid transparent;
  min-height: var(--header-h);
}
.header-inner {
  max-width: 100%;
  padding: 0 24px;
  height: var(--header-h);
  display: flex;
  align-items: center;
  gap: 14px;
}
.logo-link {
  display: flex;
  align-items: center;
  gap: 14px;
  text-decoration: none;
  color: #000;
  flex-shrink: 0;
}
.logo-link:hover { color: #000; }
.logo-img {
  height: 56px;
  width: auto;
  display: block;
}
.logo-text {
  font-size: 19px;
  font-weight: 700;
  color: #000;
  letter-spacing: 0;
  white-space: nowrap;
}
nav.primary {
  margin-left: auto;
  display: flex;
  align-items: center;
}
nav.primary ul {
  list-style: none;
  display: flex;
  gap: 0;
  align-items: center;
}
nav.primary a {
  display: block;
  padding: 0 16px;
  height: var(--header-h);
  line-height: var(--header-h);
  font-size: 15px;
  color: #000;
  text-decoration: none;
  font-weight: 400;
  position: relative;
  white-space: nowrap;
}
nav.primary a:hover { color: var(--color-primary); }
nav.primary a.active {
  color: var(--color-primary);
  font-weight: 700;
}
nav.primary a.active::after {
  content: "";
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: 0;
  height: 3px;
  background: var(--color-primary);
}
.search-icon {
  padding: 0 10px;
  color: #5f6368;
  font-size: 20px;
  cursor: pointer;
  background: none;
  border: 0;
}
.nav-toggle {
  display: none;
  background: none;
  border: 0;
  font-size: 24px;
  cursor: pointer;
  padding: 6px 10px;
  margin-left: auto;
  color: #000;
}
@media (max-width: 1080px) {
  nav.primary a { padding: 0 10px; font-size: 14px; }
  .logo-text { font-size: 17px; }
}
@media (max-width: 900px) {
  .nav-toggle { display: block; }
  .search-icon { display: none; }
  nav.primary {
    position: absolute;
    top: var(--header-h);
    left: 0;
    right: 0;
    background: #fff;
    max-height: 0;
    overflow: hidden;
    transition: max-height .3s;
    border-bottom: 1px solid var(--color-border);
  }
  nav.primary.open { max-height: 600px; }
  nav.primary ul {
    flex-direction: column;
    padding: 8px 0;
    align-items: stretch;
    width: 100%;
  }
  nav.primary a { height: auto; line-height: 1.6; padding: 12px 20px; }
  nav.primary a.active::after { left: 0; right: auto; width: 4px; top: 0; bottom: 0; height: auto; }
}

/* ========== HERO (home) ========== */
/* 原本Google Sitesの寸法: コンテナ最大1280px / 左右48px padding / 上下24px padding */
.hero-home {
  background: #fff;
  padding: 24px 0;
  margin: 0;
}
.hero-home-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 48px;
}

/* ========== CAROUSEL ========== */
.carousel {
  position: relative;
  width: 100%;
  aspect-ratio: 1154 / 539;  /* 原本Google Sitesのヒーロー比率 */
  overflow: hidden;
  background: #000;
  display: block;
}
@media (max-width: 700px) {
  .hero-home { padding: 12px 0; }
  .hero-home-inner { padding: 0 14px; }
}
.carousel-track {
  position: relative;
  width: 100%;
  height: 100%;
}
/* スライド: 画像は左右100%、上下が枠に入りきらない分はカット(cover) */
.carousel-slide {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  transition: opacity .8s ease-in-out;
  pointer-events: none;
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
}
.carousel-slide.is-active {
  opacity: 1;
  pointer-events: auto;
}
.carousel-prev,
.carousel-next {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(0, 0, 0, 0.4);
  color: #fff;
  border: 0;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  cursor: pointer;
  font-size: 28px;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .2s, opacity .2s;
  opacity: 0;
  z-index: 2;
  font-family: inherit;
  padding: 0 0 4px;
}
.carousel:hover .carousel-prev,
.carousel:hover .carousel-next,
.carousel:focus-within .carousel-prev,
.carousel:focus-within .carousel-next {
  opacity: 1;
}
.carousel-prev { left: 12px; }
.carousel-next { right: 12px; }
.carousel-prev:hover,
.carousel-next:hover { background: rgba(0, 0, 0, 0.65); }
.carousel-dots {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 14px;
  display: flex;
  justify-content: center;
  gap: 10px;
  z-index: 2;
}
.carousel-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  border: 0;
  background: rgba(255, 255, 255, 0.55);
  cursor: pointer;
  transition: background .2s, transform .2s;
  padding: 0;
}
.carousel-dot:hover { background: rgba(255, 255, 255, 0.85); }
.carousel-dot.is-active {
  background: #fff;
  transform: scale(1.25);
}
@media (max-width: 700px) {
  .carousel-prev, .carousel-next { display: none; }
  .carousel-dots { bottom: 8px; }
  .carousel-dot { width: 8px; height: 8px; }
}

/* ========== HERO (sub pages) ========== */
.hero-sub {
  position: relative;
  height: 340px;
  overflow: hidden;
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
  display: flex;
  align-items: center;
  justify-content: center;
}
.hero-sub::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.35);
}
.hero-sub h1 {
  position: relative;
  z-index: 1;
  color: #fff;
  font-size: 48px;
  font-weight: 400;
  letter-spacing: 0.05em;
  text-align: center;
  padding: 0 20px;
  line-height: 1.2;
  text-shadow: 0 1px 6px rgba(0,0,0,.25);
}
@media (max-width: 700px) {
  .hero-sub { height: 220px; }
  .hero-sub h1 { font-size: 30px; }
}

/* ========== VISION / MISSION SECTION ========== */
.section-vision {
  background: var(--color-section-blue);
  color: #fff;
  padding: 72px 20px;
  text-align: center;
}
.section-vision .label {
  font-size: 25px;
  font-weight: 400;
  margin-bottom: 14px;
  letter-spacing: 0.05em;
}
.section-vision .text {
  font-size: 25px;
  font-weight: 400;
  margin-bottom: 32px;
}
.section-vision .text:last-child { margin-bottom: 0; }

/* ========== GENERIC SECTION ========== */
section.content-section {
  padding: 56px 20px;
  background: #fff;
}
.container {
  max-width: var(--content-pad);
  margin: 0 auto;
  padding: 0 64px;
}
@media (max-width: 700px) {
  .container { padding: 0 20px; }
  section.content-section { padding: 40px 16px; }
  .hero-home-inner { padding: 0 16px; }
}

/* Section heading (centered blue) */
h2.section-heading {
  color: var(--color-primary);
  font-size: 25px;
  font-weight: 700;
  text-align: center;
  margin-bottom: 32px;
  letter-spacing: 0.02em;
}

/* ========== NEWS LIST ========== */
.news-section { background: var(--color-bg-alt); }
.news-list {
  max-width: 1000px;
  margin: 0 auto;
  list-style: none;
  padding: 0;
}
.news-list li {
  padding: 8px 0;
  font-size: 16px;
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  align-items: baseline;
}
.news-list .date {
  color: #000;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.news-list a {
  color: var(--color-link);
  text-decoration: underline;
}
.news-list .new-badge {
  display: inline-block;
  color: #ea4335;
  font-size: 10px;
  vertical-align: super;
  margin-left: 2px;
  font-weight: 700;
  letter-spacing: 0.02em;
  border: 1px solid currentColor;
  padding: 1px 3px;
  border-radius: 2px;
  line-height: 1;
}
.news-section { padding: 48px 20px; background: var(--color-bg-alt); }

/* ========== PROGRAMS 3-COLUMN ========== */
.programs-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 32px;
  max-width: 1200px;
  margin: 0 auto;
}
.program-item {
  text-align: center;
}
.program-item a {
  text-decoration: none;
  color: var(--color-link);
}
.program-item img {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  margin-bottom: 14px;
  display: block;
}
.program-item .label {
  font-size: 18px;
  color: var(--color-link);
  text-decoration: underline;
}
@media (max-width: 720px) {
  .programs-row { grid-template-columns: 1fr; gap: 24px; }
}

/* ========== CONTENT (sub pages) ========== */
.article {
  max-width: 1000px;
  margin: 0 auto;
  padding: 48px 20px 16px;
  font-size: 16px;
  line-height: 1.85;
}
/* News page uses wider layout to match Google Sites original (1279px) */
.article.article-wide {
  max-width: 1280px;
  padding: 48px 24px 16px;
}
.article h2 {
  color: var(--color-primary);
  font-size: 25px;
  font-weight: 700;
  text-align: center;
  margin: 56px 0 28px;
}
.article h2:first-child { margin-top: 0; }
.article h3 {
  color: var(--color-primary);
  font-size: 20px;
  margin: 36px 0 14px;
  font-weight: 700;
  text-align: center;
}
.article p {
  margin-bottom: 20px;
}
.article ul, .article ol {
  margin: 0 0 20px 28px;
}
.article li { margin-bottom: 8px; }
.article a { color: var(--color-link); text-decoration: underline; }
.article strong { font-weight: 700; }

/* Two-column image + text */
.two-col {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: 32px;
  align-items: start;
  margin: 32px 0;
}
.two-col.reverse { grid-template-columns: 1fr 280px; }
.two-col.wide-img { grid-template-columns: 1fr 1fr; }
.two-col img {
  width: 100%;
  height: auto;
  display: block;
}
@media (max-width: 700px) {
  .two-col, .two-col.reverse, .two-col.wide-img { grid-template-columns: 1fr; gap: 18px; }
}

/* Gallery (3-across image gallery like taiken page) */
.gallery-3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin: 28px 0;
}
.gallery-3 img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
}
@media (max-width: 700px) {
  .gallery-3 { grid-template-columns: 1fr 1fr; }
}

/* Info/plain lists (no bullets) */
.plain-list { list-style: none; margin-left: 0; }
.plain-list li { margin-bottom: 6px; }

/* ========== INFO BLOCK (for structured info on sub-pages) ========== */
.info-block {
  max-width: 800px;
  margin: 24px auto;
  padding: 20px 28px;
  background: #f4f4f4;
  font-size: 15px;
  line-height: 1.9;
}
.info-block dl {
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: 8px 20px;
}
.info-block dt { font-weight: 700; color: #555; }
@media (max-width: 600px) {
  .info-block dl { grid-template-columns: 1fr; gap: 0; }
  .info-block dt { margin-top: 10px; }
}

/* ========== FOOTER (原本Google Sites互換)
   背景: #1e6c93 (ティールブルー)
   ロゴ: 白い正方形の中に黒いブドウイラスト
   テキスト: 白
   アイコン: 全て同サイズ (~94px) で横並び */
.site-footer {
  background: var(--color-footer);
  color: #fff;
  padding: 40px 20px;
  margin-top: 0;
}
.footer-inner {
  max-width: 1184px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: auto 1fr auto auto auto;
  gap: 28px;
  align-items: center;
}
.footer-logo {
  background: #fff;
  padding: 10px;
  width: 165px;
  height: 165px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.footer-logo img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  mix-blend-mode: normal;
}
.footer-text {
  font-size: 15px;
  line-height: 1.9;
  color: #fff;
}
.footer-text .brand-name {
  font-size: 16px;
  font-weight: 400;
  margin-bottom: 4px;
}
.sns-btn {
  display: block;
  width: 165px;
  height: 165px;
  transition: transform .2s;
}
.sns-btn:hover { transform: translateY(-2px); }
.sns-btn img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}
@media (max-width: 1100px) {
  .sns-btn { width: 120px; height: 120px; }
  .footer-logo { width: 120px; height: 120px; }
}
@media (max-width: 900px) {
  .footer-inner {
    grid-template-columns: 1fr;
    text-align: center;
    justify-items: center;
    gap: 18px;
  }
  .sns-btn { width: 100px; height: 100px; }
  .footer-logo { width: 100px; height: 100px; }
}

/* Footer credit line (copyright) - 原本にはない要素なので非表示 */
.footer-credit {
  display: none;
}

/* ========== NEWS ARTICLES (Google Sites互換のレイアウト) ========== */
.news-article {
  padding-top: 56px;
  border-top: 1px solid #e8e8e8;
  margin-top: 56px;
}
.news-article:first-of-type {
  border-top: 0;
  padding-top: 0;
  margin-top: 0;
}
.news-article h2 {
  color: var(--color-primary);
  font-size: 24px;
  font-weight: 700;
  text-align: center;
  margin: 0 0 28px;
  line-height: 1.45;
}
.news-article .news-lead {
  text-align: center;
  font-weight: 700;
  margin-bottom: 24px;
  font-size: 17px;
}
.news-detail {
  margin: 8px auto 24px;
  max-width: 720px;
  line-height: 2.05;
  font-size: 16px;
}
.news-detail p { margin: 0; }
.news-detail .ind { display: inline-block; min-width: 5.5em; }
.news-figure {
  margin: 22px auto;
  max-width: 720px;
  text-align: center;
}
.news-figure.poster { max-width: 520px; }
.news-figure.wide { max-width: 860px; }
.news-figure img {
  width: 100%;
  height: auto;
  display: block;
  margin: 0 auto;
}
.news-figure figcaption {
  margin-top: 12px;
  font-size: 15px;
  color: #333;
  text-align: left;
  line-height: 1.75;
}
.news-figures-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  max-width: 860px;
  margin: 22px auto;
}
.news-figures-2 figure { margin: 0; }
.news-figures-2 img { width: 100%; height: auto; display: block; }
.news-figures-2 figcaption {
  margin-top: 8px;
  font-size: 14px;
  color: #333;
  line-height: 1.7;
}
@media (max-width: 700px) {
  .news-figures-2 { grid-template-columns: 1fr; }
}

/* Bosyu (募集) article: poster left, details right */
.news-bosyu-row {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) 2fr;
  gap: 32px;
  align-items: start;
  margin: 28px 0;
}
.news-bosyu-row .poster {
  margin: 0;
}
.news-bosyu-row .poster img {
  width: 100%;
  height: auto;
  display: block;
}
.news-bosyu-row .details {
  font-size: 15px;
  line-height: 1.95;
}
.news-bosyu-row .details .news-lead {
  text-align: left;
  font-weight: 700;
  margin: 0 0 14px;
  font-size: 16px;
}
.news-bosyu-row .details .news-detail {
  max-width: none;
  margin: 0 0 12px;
  padding: 12px 16px;
  background: #f4f4f4;
}
.news-bosyu-row .details .news-detail dl {
  font-size: 14px;
}
@media (max-width: 700px) {
  .news-bosyu-row { grid-template-columns: 1fr; gap: 16px; }
}

/* Report article: 4-column grid. First column is ~2x width with one large
   image+caption; columns 2-4 stack 2 smaller image+caption pairs each. */
.news-report-grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 18px 18px;
  align-items: start;
  margin: 24px 0;
}
.news-report-grid .col {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.news-report-grid figure {
  margin: 0;
}
.news-report-grid img {
  width: 100%;
  height: auto;
  display: block;
}
/* First column's figcaption is larger (matches large image) */
.news-report-grid .col:first-child figcaption {
  margin-top: 8px;
  font-size: 14px;
  line-height: 1.75;
  color: #000;
  text-align: left;
}
/* Columns 2-4 figcaption is smaller */
.news-report-grid figcaption {
  margin-top: 6px;
  font-size: 12px;
  line-height: 1.6;
  color: #000;
  text-align: left;
}
@media (max-width: 900px) {
  .news-report-grid { grid-template-columns: repeat(2, 1fr); gap: 20px; }
}
@media (max-width: 500px) {
  .news-report-grid { grid-template-columns: 1fr; }
}

/* Trio: 2 photos + 1 text caption side-by-side (toilet, harumatsuri2024) */
.news-trio-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1.4fr;
  gap: 24px;
  align-items: start;
  margin: 28px 0;
}
.news-trio-row .photo {
  margin: 0;
}
.news-trio-row .photo img {
  width: 100%;
  height: auto;
  display: block;
}
.news-trio-row .caption {
  font-size: 15px;
  line-height: 1.85;
}
.news-trio-row .caption p {
  margin: 0 0 10px;
}
@media (max-width: 800px) {
  .news-trio-row { grid-template-columns: 1fr 1fr; }
  .news-trio-row .caption { grid-column: 1 / -1; }
}
@media (max-width: 500px) {
  .news-trio-row { grid-template-columns: 1fr; }
}

/* ========== ABOUT PAGE LAYOUTS (Google Sites互換)
   原本実測値: H2 高さ~21px (font-size ~22px) / 本文 14pt (~18.67px) / line-height 1.38
   見出しカラー: #226e93 (--color-primary と一致) */
.about-section {
  margin: 56px 0;
  padding-top: 4px;
}
.about-section h2 {
  color: var(--color-primary);
  font-size: 25px;
  font-weight: 700;
  text-align: center;
  margin: 0 0 28px;
  line-height: 1.4;
}

/* 2-col [image | text] row used in 立ち上げの経緯 and 代表メッセージ.
   原本ピクセル実測: 画像幅 364px、ブロック開始 x=64、ブロック幅 ~1175px。
   画像列を360px固定にして原本サイズと一致させる。 */
.about-row-img-text {
  max-width: 1180px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 360px 1fr;
  gap: 40px;
  align-items: start;
}
.about-row-img-text .about-img {
  margin: 0;
}
.about-row-img-text .about-img img {
  width: 100%;
  height: auto;
  display: block;
}
.about-row-img-text .about-text {
  /* 原本: font-size 14pt (~18.67px), line-height 1.38, color #000000 */
  font-size: 14pt;
  line-height: 1.38;
  color: #000;
}
.about-row-img-text .about-text p {
  margin: 0 0 14px;
}
.about-row-img-text .about-text p:last-child { margin-bottom: 0; }
@media (max-width: 800px) {
  .about-row-img-text { grid-template-columns: 1fr; gap: 18px; }
  .about-row-img-text .about-img { max-width: 320px; margin: 0 auto; }
}

/* byline (e.g. "一般社団法人ラフテル　代表理事　松原悟") - 原本は本文と同サイズ
   「松原悟」は原本でFacebookへのリンク (下線付き) */
.about-byline {
  text-align: center;
  font-weight: 700;
  margin: -10px 0 28px;
  font-size: 14pt;
  color: #000;
}
.about-byline a {
  color: var(--color-link);
  text-decoration: underline;
}

/* Timeline (活動経歴) — 原本どおり日付を上に、説明をインデント */
.about-timeline {
  max-width: 720px;
  margin: 0 auto;
  font-size: 14pt;
  line-height: 1.38;
  color: #000;
}
.about-timeline dt {
  font-weight: 700;
  color: #000;
  margin-top: 14px;
}
.about-timeline dt:first-child { margin-top: 0; }
.about-timeline dd {
  margin: 0 0 0 1.2em;
}

/* Map block */
.about-map {
  max-width: 720px;
  margin: 0 auto 16px;
  overflow: hidden;
}
.about-map iframe {
  display: block;
  width: 100%;
  border: 0;
}
.about-address {
  text-align: center;
  font-size: 14pt;
  margin: 12px 0 0;
  color: #000;
}

/* ========== SHOKUDOU PAGE LAYOUTS (Google Sites互換)
   原本のセクション別カラム構造を再現。
   各セクションは中央寄せ最大1180px、本文14pt/line-height 1.55 */
.shokudou-section {
  margin: 48px 0;
}
.shokudou-section h2 {
  color: var(--color-primary);
  font-size: 25px;
  font-weight: 700;
  text-align: center;
  margin: 0 0 24px;
}

.shokudou-row-2col,
.shokudou-row-img-text-img,
.shokudou-row-2img-text,
.shokudou-row-3img-text,
.shokudou-row-2img-gap-text,
.shokudou-row-default {
  max-width: 1180px;
  margin: 0 auto;
  display: grid;
  gap: 28px;
  align-items: start;        /* 全アイテムを上端揃え */
}
.shokudou-row-2col > *,
.shokudou-row-img-text-img > *,
.shokudou-row-2img-text > *,
.shokudou-row-3img-text > *,
.shokudou-row-2img-gap-text > *,
.shokudou-row-default > * {
  align-self: start;          /* 子要素も明示的に上端揃え */
  margin-top: 0;              /* 内部余白で押し下げないようにする */
}
.shokudou-row-2col .img > img,
.shokudou-row-img-text-img .img > img,
.shokudou-row-2img-text .img > img,
.shokudou-row-3img-text .img > img,
.shokudou-row-2img-gap-text .img > img {
  vertical-align: top;        /* img の baseline 余白を除去 */
}
.shokudou-row-2col,
.shokudou-row-img-text-img,
.shokudou-row-2img-text,
.shokudou-row-3img-text,
.shokudou-row-2img-gap-text {
  font-size: 14pt;
  line-height: 1.55;
}

/* 2-col [IMG | TEXT] for クラウドファンディング */
.shokudou-row-2col {
  grid-template-columns: 1fr 2fr;
}

/* 3-col [IMG | TEXT | IMG] for 主要セクション (sec 2, 5) */
.shokudou-row-img-text-img {
  grid-template-columns: 1fr 2fr 1fr;
}

/* 3-col [IMG | IMG | TEXT] for event report sections */
.shokudou-row-2img-text {
  grid-template-columns: 1fr 1fr 2fr;
}

/* 4-col [IMG | IMG | IMG | TEXT] for ドコデモこども食堂 */
.shokudou-row-3img-text {
  grid-template-columns: 1fr 1fr 1fr 2fr;
}

/* 4-col [IMG | IMG | gap | TEXT] for フードパントリー */
.shokudou-row-2img-gap-text {
  grid-template-columns: 1fr 1fr 1fr 2fr;
}

.shokudou-section .img {
  margin: 0;
}
.shokudou-section .img img {
  width: 100%;
  height: auto;
  display: block;
}

/* ドコデモこども食堂・フードパントリーは食品写真のみなので正方形クロップで高さを揃える */
.shokudou-row-3img-text .img img,
.shokudou-row-2img-gap-text .img img {
  aspect-ratio: 1 / 1;
  object-fit: cover;
}

/* イベント記事 (2img-text) はA4ポスターを含むため、自然な縦横比を保持。
   隣接画像は上端を揃えるが、高さは画像本来のサイズに任せる。 */
.shokudou-row-2img-text {
  align-items: start;
}
.shokudou-row-2img-text .img img {
  width: 100%;
  height: auto;
  display: block;
}
.shokudou-section .text p {
  margin: 0 0 12px;
}
.shokudou-section .text p:last-child { margin-bottom: 0; }
.shokudou-section .text a {
  color: var(--color-link);
  text-decoration: underline;
}
.shokudou-section .spacer { /* empty placeholder column */ }

@media (max-width: 900px) {
  .shokudou-row-2col,
  .shokudou-row-img-text-img,
  .shokudou-row-2img-text,
  .shokudou-row-3img-text,
  .shokudou-row-2img-gap-text {
    grid-template-columns: 1fr;
  }
  .shokudou-section .spacer { display: none; }
}

/* ========== KIHU PAGE (Google Sites互換)
   原本: 寄付実績は4列グリッド(写真+キャプション)、PayPayはテキスト+QR、銀行情報は中央 */
.kihu-section {
  margin: 32px 0;
}
.kihu-section h2 {
  color: var(--color-primary);
  font-size: 25px;
  font-weight: 700;
  text-align: center;
  margin: 0 0 24px;
}
.kihu-intro {
  max-width: 900px;
  margin: 0 auto;
  font-size: 14pt;
  line-height: 1.55;
  color: #000;
}
.kihu-intro p { margin: 0 0 12px; }
.kihu-intro p:last-child { margin-bottom: 0; }

/* 支援企業・団体グリッド: 4列 (画像+キャプション)
   原本実測: グリッド幅 1153px (x=63-1216) - ほぼコンテンツ幅いっぱい */
.kihu-supporter-grid {
  max-width: 1180px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 22px;
}
.kihu-supporter-grid .supporter-card {
  margin: 0;
}
.kihu-supporter-grid .supporter-card img {
  width: 100%;
  height: auto;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  display: block;
}
.kihu-supporter-grid .supporter-card figcaption {
  margin-top: 8px;
  font-size: 13px;
  line-height: 1.5;
  color: #000;
  text-align: left;
}

/* hero-kihu: contain mode to show the full こども食堂ラフテル banner without cropping */
.hero-sub.hero-kihu {
  background-color: #ead8b8;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}
.hero-sub.hero-kihu::after {
  display: none;       /* Don't darken the bright banner */
}
.hero-sub.hero-kihu h1 {
  display: none;       /* Banner image already contains the title visually */
}
@media (max-width: 900px) {
  .kihu-supporter-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 500px) {
  .kihu-supporter-grid { grid-template-columns: 1fr; }
}

/* 銀行振込情報: 中央寄せ */
.kihu-bank {
  max-width: 700px;
  margin: 0 auto;
  font-size: 14pt;
  line-height: 1.7;
  color: #000;
}
.kihu-bank p { margin: 0; }

/* PayPay: 左にテキスト、右にQRコード */
.kihu-paypay {
  max-width: 900px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 240px;
  gap: 32px;
  align-items: center;
}
.kihu-paypay .paypay-text {
  font-size: 14pt;
  line-height: 1.55;
  color: #000;
}
.kihu-paypay .paypay-text p { margin: 0; }
.kihu-paypay .paypay-qr {
  width: 240px;
  height: auto;
  display: block;
}
@media (max-width: 700px) {
  .kihu-paypay { grid-template-columns: 1fr; }
  .kihu-paypay .paypay-qr { margin: 0 auto; }
}

/* ========== TAIKEN PAGE (Google Sites互換)
   原本: 各キャンプセクションは [2枚積み | 1枚大] の 2x2 グリッド配置 */
.taiken-section {
  margin: 32px 0;
}
.taiken-section h2 {
  color: var(--color-primary);
  font-size: 25px;
  font-weight: 700;
  text-align: center;
  margin: 0 0 24px;
}
.taiken-text {
  max-width: 900px;
  margin: 0 auto;
  font-size: 14pt;
  line-height: 1.55;
  color: #000;
}
.taiken-text p {
  margin: 0 0 12px;
}
.taiken-text p:last-child { margin-bottom: 0; }

/* 写真グリッド: 左列に2枚を縦積み、右列に大きな1枚
   原本実測: グリッド幅 1153px (x=63-1216), ほぼコンテンツ幅いっぱい */
.taiken-photo-grid {
  max-width: 1180px;
  margin: 0 auto 16px;
  display: grid;
  grid-template-columns: 1fr 2fr;
  grid-template-rows: 1fr 1fr;
  gap: 12px;
}
.taiken-photo-grid img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.taiken-photo-grid img:nth-child(1) {
  grid-column: 1;
  grid-row: 1;
}
.taiken-photo-grid img:nth-child(2) {
  grid-column: 1;
  grid-row: 2;
}
.taiken-photo-grid img.big {
  grid-column: 2;
  grid-row: 1 / 3;
}

/* サマーキャンプの注記テキスト */
.taiken-note {
  max-width: 900px;
  margin: 16px auto;
  font-size: 14pt;
  line-height: 1.55;
  color: #000;
}

@media (max-width: 700px) {
  .taiken-photo-grid {
    grid-template-columns: 1fr;
    grid-template-rows: auto;
  }
  .taiken-photo-grid img:nth-child(n),
  .taiken-photo-grid img.big {
    grid-column: 1;
    grid-row: auto;
  }
}

/* ========== PROGRAMING PAGE (Google Sites互換)
   原本: H2見出し + 中央配置の1枚画像 + 中央配置のテキスト */
.programing-section {
  margin: 32px 0;
}
.programing-section h2 {
  color: var(--color-primary);
  font-size: 25px;
  font-weight: 700;
  text-align: center;
  margin: 0 0 28px;
}
.programing-photo {
  max-width: 960px;
  margin: 0 auto 28px;
}
.programing-photo img {
  width: 100%;
  height: auto;
  display: block;
}
.programing-text {
  /* 原本実測: text幅 ~890px (画像とほぼ同幅), 段落間隔は通常の改行のみ */
  max-width: 900px;
  margin: 0 auto;
  font-size: 14pt;
  line-height: 1.55;
  color: #000;
}
.programing-text p {
  margin: 0;
}
.programing-text a {
  color: var(--color-link);
  text-decoration: underline;
}

/* ========== UTILITIES ========== */
.text-center { text-align: center; }
.supporters {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 10px;
  margin: 20px 0;
}
.supporter-chip {
  background: #fafafa;
  border: 1px solid var(--color-border);
  padding: 10px 14px;
  font-size: 14px;
  text-align: center;
}
.supporter-fig {
  margin: 0;
  text-align: center;
}
.supporter-fig img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.supporter-fig figcaption {
  font-size: 13px;
  color: #555;
  margin-top: 6px;
}
.callout {
  padding: 18px 22px;
  background: #f8fbff;
  border-left: 4px solid var(--color-primary);
  margin: 20px 0;
}

/* ========== CONTACT FORM ========== */
.form-wrap {
  max-width: 760px;
  margin: 24px auto;
  padding: 16px;
  background: #f4f4f4;
}
.form-wrap iframe {
  display: block;
  width: 100%;
  background: #fff;
  border: 0;
  min-height: 600px;
}
.form-fallback {
  margin-top: 12px;
  font-size: 14px;
  color: #555;
  text-align: center;
}

/* ========== MAP EMBED ========== */
.map-wrap {
  max-width: 900px;
  margin: 24px auto;
  border: 1px solid var(--color-border);
  overflow: hidden;
}
.map-wrap iframe {
  display: block;
  width: 100%;
}

/* ========== PAYPAY / QR BOX ========== */
.qr-box {
  max-width: 360px;
  margin: 24px auto;
  padding: 20px;
  background: #fff;
  border: 1px solid var(--color-border);
  text-align: center;
}
.qr-box img {
  max-width: 240px;
  margin: 0 auto 12px;
}
.qr-box .qr-caption {
  font-size: 14px;
  color: #555;
}
