/* 公開 Web サイト共通(管理画面の main.css とは別)
 * 色は :root の変数だけで決める。メイン・アクセントが変わったら --pub-primary* / --pub-accent* を直す
 *   --pub-primary      #0F8B8D: 見出しの飾り・枠など(白い文字を載せると 4.5:1 に届かないので、文字の背景には使わない)
 *   --pub-primary-dark #0B6E70: 白い文字を載せる背景・リンクの文字(白との差 6:1)
 *   --pub-accent       #F5A623: 主ボタン(文字は --pub-text。差 7.9:1)
 * 幅: PC 1024px 以上 / タブレット 768〜1023px / スマホ 767px 以下
 */
:root {
  --pub-primary: #0F8B8D;
  --pub-primary-dark: #0B6E70;
  --pub-primary-soft: #E7F4F4;
  --pub-accent: #F5A623;
  --pub-accent-dark: #DB8E0F;
  --pub-text: #212121;
  --pub-muted: #5F5F5F;
  --pub-border: #E0E0E0;
  --pub-border-strong: #BDBDBD;
  --pub-bg: #FFFFFF;
  --pub-bg-soft: #F6F8F8;
  --pub-ph: #EEEEEE;
  --pub-radius: 8px;
  --pub-max: 1120px;
  --pub-font: 'Noto Sans JP', 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Yu Gothic', Meiryo, sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }
body.pub {
  margin: 0;
  background: var(--pub-bg);
  color: var(--pub-text);
  font-family: var(--pub-font);
  font-size: 15px;
  line-height: 1.7;
}
.pub img { max-width: 100%; height: auto; }
/* :where で詳細度を 0 にし、カードなどのクラスの色が勝つようにする */
.pub :where(a) { color: var(--pub-primary-dark); }
.pub :where(a):hover { color: var(--pub-text); }
.pub :focus-visible { outline: 3px solid var(--pub-accent); outline-offset: 2px; }
.pub ul { list-style: none; margin: 0; padding: 0; }

.pub-container { width: 100%; max-width: var(--pub-max); margin: 0 auto; padding-inline: 20px; }
.pub-visually-hidden {
  position: absolute !important; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap;
}
.pub-skip { position: absolute; left: 8px; top: -100px; z-index: 100; background: var(--pub-bg); padding: 8px 12px; }
.pub-skip:focus { top: 8px; }

/* 画像の仮置き(画像ができたら <img> に置き換える) */
.pub-ph {
  display: flex; align-items: center; justify-content: center;
  background: var(--pub-ph); border: 1px dashed #9E9E9E; color: var(--pub-muted); font-size: 12px;
}
.pub-ph--4x3 { aspect-ratio: 4 / 3; border-radius: 6px; }
.pub-ph--16x10 { aspect-ratio: 16 / 10; border: 0; border-bottom: 1px dashed #9E9E9E; }

.pub-btn {
  font: inherit; font-weight: 700; min-height: 44px; padding: 0 20px; border-radius: 4px; border: 0;
  display: inline-flex; align-items: center; justify-content: center; cursor: pointer; text-decoration: none;
}
.pub-btn--accent { background: var(--pub-accent); color: var(--pub-text); }
.pub-btn--accent:hover { background: var(--pub-accent-dark); }

/* ---------- ヘッダー ---------- */
.pub-header { background: var(--pub-bg); border-bottom: 1px solid var(--pub-border-strong); }
.pub-header__lang-bar { background: var(--pub-bg-soft); border-bottom: 1px solid var(--pub-border); }
.pub-header__lang-inner { height: 36px; display: flex; align-items: center; justify-content: flex-end; gap: 4px; font-size: 13px; color: #424242; }
.pub-lang { display: flex; align-items: center; }
.pub-lang li + li::before { content: "|"; color: #9E9E9E; }
.pub-lang a { display: inline-flex; align-items: center; min-height: 32px; padding: 0 10px; color: var(--pub-text); text-decoration: none; }
.pub-lang a[aria-current="true"] { font-weight: 700; text-decoration: underline; text-underline-offset: 4px; }
.pub-header__main {
  padding-top: 12px; padding-bottom: 12px;
  display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 24px;
}
.pub-logo {
  width: 140px; height: 40px; border: 1px dashed #9E9E9E; border-radius: 4px;
  display: flex; align-items: center; justify-content: center; font-size: 13px; color: var(--pub-muted); text-decoration: none;
}
.pub-header__main .pub-logo { justify-self: center; }
.pub-gnav { min-width: 0; overflow-x: auto; }
.pub-gnav ul { display: flex; justify-content: flex-end; gap: 4px; white-space: nowrap; }
.pub-gnav a {
  display: flex; align-items: center; min-height: 44px; padding: 0 12px;
  color: var(--pub-text); text-decoration: none; font-weight: 700; border-bottom: 3px solid transparent;
}
.pub-gnav a:hover { color: var(--pub-primary-dark); }
.pub-gnav a[aria-current="page"] { border-bottom-color: var(--pub-primary); }

/* トップだけ: 画面上部に固定。スクロール中(body.is-scrolling)は隠す */
@media (min-width: 1024px) {
  .pub-header--float { position: sticky; top: 0; z-index: 20; transition: opacity .2s, transform .2s, box-shadow .2s; }
  .is-scrolled .pub-header--float { box-shadow: 0 2px 8px rgba(0, 0, 0, .12); }
  .is-scrolling .pub-header--float:not(:focus-within) { opacity: 0; transform: translateY(-100%); pointer-events: none; }
}

.pub-header__sp { display: none; }

/* メニューボタン・ドロワー(タブレット・スマホ) */
.pub-menu-btn {
  display: none; position: fixed; right: 16px; bottom: calc(16px + env(safe-area-inset-bottom, 0px)); z-index: 40;
  width: 56px; height: 56px; border-radius: 50%; border: 0; cursor: pointer;
  background: var(--pub-primary-dark); color: #FFFFFF; box-shadow: 0 2px 8px rgba(0, 0, 0, .25);
  align-items: center; justify-content: center; transition: opacity .2s, transform .2s;
}
.pub-menu-btn__close { display: none; }
.pub-menu-btn[aria-expanded="true"] .pub-menu-btn__open { display: none; }
.pub-menu-btn[aria-expanded="true"] .pub-menu-btn__close { display: block; }
.is-scrolling .pub-menu-btn[aria-expanded="false"] { opacity: 0; transform: translateY(16px); pointer-events: none; }

.pub-drawer { position: fixed; inset: 0; z-index: 30; display: flex; justify-content: flex-end; }
.pub-drawer[hidden] { display: none; }
.pub-drawer__overlay { position: absolute; inset: 0; background: rgba(0, 0, 0, .45); }
.pub-drawer__panel {
  position: relative; width: 82%; max-width: 320px; height: 100%; overflow-y: auto; background: var(--pub-bg);
  padding: 24px 16px 96px; display: flex; flex-direction: column; gap: 16px;
}
.pub-drawer__title { margin: 0; font-size: 13px; font-weight: 700; color: var(--pub-muted); }
.pub-drawer ul { border-top: 1px solid var(--pub-border); }
.pub-drawer li { border-bottom: 1px solid var(--pub-border); }
.pub-drawer a {
  display: flex; align-items: center; justify-content: space-between; min-height: 52px; padding: 0 4px;
  color: var(--pub-text); text-decoration: none;
}
.pub-drawer a[aria-current="page"] { font-weight: 700; color: var(--pub-primary-dark); }
.pub-drawer a span { color: #757575; }
body.is-drawer-open { overflow: hidden; }

/* ---------- フッター ---------- */
.pub-footer { background: var(--pub-primary-dark); color: #FFFFFF; font-size: 14px; }
.pub-footer a { color: #FFFFFF; }
.pub-footer a:hover { color: #FFFFFF; text-decoration-thickness: 2px; }
.pub-footer__inner { padding-top: 40px; padding-bottom: 24px; display: flex; flex-direction: column; gap: 28px; }
.pub-footer__top { display: flex; flex-wrap: wrap; gap: 24px 48px; justify-content: space-between; }
.pub-footer__company { display: flex; flex-direction: column; gap: 12px; font-size: 13px; color: #E0E0E0; }
.pub-logo--footer { border-color: #BDBDBD; color: #E0E0E0; }
.pub-footer__nav ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 40px; }
.pub-footer__nav a { display: flex; align-items: center; min-height: 36px; }
.pub-footer__sns { display: flex; gap: 12px; align-items: flex-start; }
.pub-footer__sns a {
  width: 44px; height: 44px; border: 1px solid #BDBDBD; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
}
.pub-footer__copy { border-top: 1px solid rgba(255, 255, 255, .35); padding-top: 16px; font-size: 12px; color: #E0E0E0; }

/* ---------- トップ: メインビジュアル ---------- */
.pub-hero { position: relative; overflow: hidden; min-height: 480px; display: flex; flex-direction: column; justify-content: flex-end; background: var(--pub-primary-soft); }
.pub-hero__slide { position: absolute; inset: 0; opacity: 0; transition: opacity 1s ease; display: flex; flex-direction: column; }
.pub-hero__slide.is-current { opacity: 1; }
/* 仮の背景(画像ができたら消す) */
.pub-hero__slide:nth-child(1) { background: #CFE6E6; }
.pub-hero__slide:nth-child(2) { background: #D8ECEA; }
.pub-hero__slide:nth-child(3) { background: #C6E0E1; }
.pub-hero__slide:nth-child(4) { background: #DCEDEE; }
.pub-hero__slide:nth-child(5) { background: #D2E8E6; }
.pub-hero__ph { position: absolute; top: 64px; right: 20px; font-size: 13px; color: #424242; }
.pub-hero__copy { padding-top: 64px; }
.pub-hero__catch { margin: 0; font-size: 34px; font-weight: 700; line-height: 1.35; }
.pub-hero__sub { margin: 8px 0 0; color: #424242; }

.pub-hero__ctrl {
  position: absolute; top: 12px; right: 20px; z-index: 2; display: flex; align-items: center; gap: 4px;
  background: rgba(255, 255, 255, .85); border-radius: 999px; padding: 0 4px;
}
.pub-hero__dot, .pub-hero__play {
  width: 28px; height: 36px; padding: 0; border: 0; background: transparent; cursor: pointer;
  display: flex; align-items: center; justify-content: center; color: var(--pub-text);
}
.pub-hero__play { width: 36px; }
.pub-hero__dot::before {
  content: ""; width: 8px; height: 8px; border-radius: 50%; border: 2px solid var(--pub-text); background: var(--pub-text);
}
.pub-hero__dot[aria-current="true"]::before { width: 12px; height: 12px; background: #FFFFFF; border-color: var(--pub-primary-dark); }
.pub-hero__icon-play { display: none; }
.pub-hero.is-paused .pub-hero__icon-play { display: block; }
.pub-hero.is-paused .pub-hero__icon-pause { display: none; }

.pub-hero__search-wrap { position: relative; z-index: 1; padding-top: 180px; padding-bottom: 48px; }
.pub-search {
  background: var(--pub-bg); border: 1px solid var(--pub-border-strong); border-radius: var(--pub-radius);
  padding: 16px; display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end;
  box-shadow: 0 4px 16px rgba(0, 0, 0, .08);
}
.pub-search label { flex: 1 1 160px; display: flex; flex-direction: column; gap: 6px; font-size: 13px; }
.pub-search .pub-search__kw { flex: 2 1 220px; }
.pub-search input, .pub-search select {
  font: inherit; height: 44px; width: 100%; padding: 0 12px;
  border: 1px solid var(--pub-border-strong); border-radius: 4px; background: var(--pub-bg); color: var(--pub-text);
}
.pub-search .pub-btn { flex: 1 1 140px; }

/* ---------- トップ: 各セクション ---------- */
.pub-sections { display: flex; flex-direction: column; gap: 64px; padding-top: 56px; padding-bottom: 72px; }
.pub-section { display: flex; flex-direction: column; gap: 16px; }
.pub-section__head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.pub-h2 { margin: 0; font-size: 20px; }
.pub-h2::after { content: ""; display: block; width: 32px; height: 3px; margin-top: 6px; background: var(--pub-accent); border-radius: 2px; }
.pub-more { font-size: 14px; }
.pub-empty { margin: 0; color: var(--pub-muted); }

/* 高さは 5 件分(テキスト 3 件・リンク 2 件のときの高さ)。超えたらスクロール */
.pub-news { border-top: 1px solid var(--pub-border); border-bottom: 1px solid var(--pub-border); max-height: 330px; overflow-y: auto; overscroll-behavior: contain; }
.pub-news li:last-child { border-bottom: 0; }
.pub-news li { border-bottom: 1px solid var(--pub-border); padding: 12px 0; display: flex; flex-wrap: wrap; gap: 4px 20px; }
.pub-news__date { color: var(--pub-muted); font-size: 13px; flex: 0 0 auto; min-width: 8em; }
.pub-news a { color: var(--pub-text); flex: 1 1 280px; display: inline-flex; align-items: center; gap: 6px; align-self: flex-start; }
.pub-news__text { flex: 1 1 280px; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.pub-news__body { margin: 0; font-size: 14px; overflow-wrap: anywhere; }
.pub-news a svg { color: var(--pub-muted); flex: 0 0 auto; }

.pub-cats { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; }
.pub-cats a { display: flex; flex-direction: column; gap: 8px; text-decoration: none; color: var(--pub-text); }
.pub-cats a:hover .pub-cats__name { color: var(--pub-primary-dark); text-decoration: underline; }
.pub-cats__name { font-weight: 700; font-size: 14px; }

.pub-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(196px, 1fr)); gap: 20px; }
.pub-tour {
  height: 100%; display: flex; flex-direction: column; gap: 8px; text-decoration: none; color: var(--pub-text);
  border: 1px solid var(--pub-border); border-radius: var(--pub-radius); overflow: hidden; transition: border-color .15s, box-shadow .15s;
}
.pub-tour:hover { border-color: var(--pub-primary); box-shadow: 0 2px 10px rgba(0, 0, 0, .08); color: var(--pub-text); }
.pub-tour__tags { padding: 0 14px; display: flex; gap: 6px; flex-wrap: wrap; }
.pub-tag { border: 1px solid var(--pub-primary-dark); color: var(--pub-primary-dark); border-radius: 999px; padding: 1px 8px; font-size: 12px; }
.pub-tag--en { border-color: var(--pub-accent); background: #FEF3E0; color: var(--pub-text); }
.pub-tour__name { padding: 0 14px; font-size: 15px; line-height: 1.5; }
.pub-tour__meta { padding: 0 14px; font-size: 13px; color: var(--pub-muted); }
.pub-tour__price { margin-top: auto; padding: 0 14px 14px; font-size: 15px; font-weight: 700; }
.pub-tour__price small { font-size: 12px; font-weight: 400; color: var(--pub-muted); }

/* トップの農園カード: 画像が上、農園名・所在地が下。影付き */
.pub-farm {
  height: 100%; display: flex; flex-direction: column; text-decoration: none; color: var(--pub-text);
  background: var(--pub-bg); border-radius: 6px; overflow: hidden;
  box-shadow: 0 1px 4px rgba(0, 0, 0, .18); transition: box-shadow .15s;
}
.pub-farm:hover { box-shadow: 0 3px 12px rgba(0, 0, 0, .22); }
.pub-farm__media { position: relative; }
.pub-farm__img { display: flex; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border: 0; }
span.pub-farm__img { border-bottom: 1px dashed #9E9E9E; }
.pub-farm__badge {
  position: absolute; top: 0; left: 0; padding: 4px 8px;
  background: rgba(0, 0, 0, .62); color: #FFFFFF; font-size: 12px; line-height: 1.4;
}
.pub-farm__body { padding: 10px 10px 14px; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.pub-farm__name, .pub-farm__addr { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.pub-farm__name { font-size: 15px; font-weight: 400; }
.pub-farm__addr { font-size: 13px; color: #424242; }

/* 横スクロールの一覧(トップの農園から探す)。ボタンは top.js が、スクロールできるときだけ出す */
.pub-scroller { position: relative; }
.pub-scroller__track {
  display: grid; grid-auto-flow: column; grid-auto-columns: 276px; gap: 16px;
  overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scroll-behavior: smooth;
  scrollbar-width: thin;
}
/* カードの影が切れないよう、周りに余白をとる(.pub ul の padding: 0 より強くするため .pub を付ける)。下はスクロールバーとの間 */
.pub .pub-scroller__track { padding: 4px 4px 16px; scroll-padding-inline: 4px; }  /* scroll-padding: 吸着の位置を余白に合わせ、左端で scrollLeft が 0 になるようにする */
.pub-scroller__track > li { scroll-snap-align: start; }
/* 前後のボタン: 画像の高さの中ほどに重ねる。端に来た向きのボタンは隠す */
.pub-scroller__btn {
  position: absolute; top: 64px; z-index: 1; width: 44px; height: 44px; border-radius: 50%;
  border: 1px solid var(--pub-border); background: rgba(255, 255, 255, .95); color: #424242; font-size: 22px; line-height: 1;
  display: flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 1px 6px rgba(0, 0, 0, .2);
}
.pub-scroller__btn:hover { color: var(--pub-primary-dark); border-color: var(--pub-primary); }
.pub-scroller__btn:disabled { visibility: hidden; }
.pub-scroller__btn--prev { left: -8px; }
.pub-scroller__btn--next { right: -8px; }

.pub-cal { border: 1px solid var(--pub-border); border-radius: var(--pub-radius); padding: 16px; display: flex; flex-direction: column; gap: 12px; }
.pub-cal__head { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 16px; }
.pub-cal__nav {
  width: 44px; height: 44px; border: 1px solid var(--pub-border-strong); border-radius: 4px;
  display: flex; align-items: center; justify-content: center; font-size: 20px; text-decoration: none; color: var(--pub-text);
}
.pub-cal__nav:hover { border-color: var(--pub-primary); color: var(--pub-primary-dark); }
.pub-cal__nav.is-disabled { color: #BDBDBD; border-color: var(--pub-border); }
.pub-cal__table { width: 100%; table-layout: fixed; border-collapse: separate; border-spacing: 4px; margin: -4px; width: calc(100% + 8px); }
.pub-cal__table th { font-size: 12px; font-weight: 400; color: var(--pub-muted); }
.pub-cal__table th.is-sun { color: #B3261E; }
.pub-cal__table th.is-sat { color: #1A5FB4; }
.pub-cal__table td { padding: 0; }
.pub-cal__day {
  min-height: 56px; border: 1px solid var(--pub-border); border-radius: 4px; padding: 4px;
  display: flex; flex-direction: column; align-items: center; gap: 2px; font-size: 13px; text-decoration: none; color: var(--pub-text);
}
a.pub-cal__day:hover { border-color: var(--pub-primary); background: var(--pub-primary-soft); }
.pub-cal__day.is-past { background: #FAFAFA; color: #9E9E9E; }
.pub-cal__mark { font-weight: 700; }
.pub-cal__legend { margin: 0; font-size: 12px; color: var(--pub-muted); }

.pub-sns { display: flex; flex-wrap: wrap; gap: 20px; }
.pub-sns__box { flex: 1 1 320px; min-height: 280px; border-radius: var(--pub-radius); }
.pub-sns__box--ig {
  border: 1px solid var(--pub-border); padding: 24px; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 12px; text-align: center; color: var(--pub-primary-dark);
}
.pub-sns__box--ig p { margin: 0; color: var(--pub-text); }
.pub-sns__box--fb { display: flex; justify-content: center; }
.pub-sns__box--fb iframe { width: 100%; max-width: 500px; height: 500px; border: 0; overflow: hidden; }
.pub-btn--outline { border: 1px solid var(--pub-primary-dark); background: var(--pub-bg); color: var(--pub-primary-dark); }
.pub-btn--outline:hover { background: var(--pub-primary-soft); }

/* ---------- 下層ページ共通 ---------- */
.pub-page { padding-top: 48px; padding-bottom: 72px; display: flex; flex-direction: column; gap: 32px; }
.pub-page__title { margin: 0; font-size: 26px; }
.pub-page__title::after { content: ""; display: block; width: 40px; height: 3px; margin-top: 8px; background: var(--pub-accent); border-radius: 2px; }

.pub-page--narrow { max-width: 760px; }
.pub-crumb { margin-bottom: -16px; font-size: 13px; color: var(--pub-muted); }
.pub-crumb ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; }
.pub-crumb li + li::before { content: "›"; margin: 0 8px; }

/* ---------- 入力フォーム ---------- */
.pub-alert { margin: 0; padding: 12px 16px; border: 1px solid #B3261E; border-radius: 4px; background: #FDECEA; color: #8C1D18; font-weight: 700; }
.pub-form { display: flex; flex-direction: column; gap: 24px; }
.pub-form__lead { margin: 0; }
.pub-field { display: flex; flex-direction: column; gap: 6px; }
.pub-field > label { font-weight: 700; font-size: 14px; }
.pub-req { margin-left: 4px; padding: 0 6px; border-radius: 2px; background: #B3261E; color: #FFFFFF; font-size: 11px; font-weight: 700; vertical-align: 1px; }
.pub-req--opt { background: transparent; color: var(--pub-muted); border: 1px solid var(--pub-border-strong); }
.pub-field input:not([type="checkbox"]), .pub-field select, .pub-field textarea {
  font: inherit; width: 100%; padding: 0 12px; min-height: 48px;
  border: 1px solid var(--pub-border-strong); border-radius: 4px; background: var(--pub-bg); color: var(--pub-text);
}
.pub-field textarea { padding: 12px; resize: vertical; line-height: 1.7; }
.pub-field [aria-invalid="true"] { border-color: #B3261E; border-width: 2px; }
.pub-field__hint { margin: 0; font-size: 13px; color: var(--pub-muted); }
.pub-field__error { margin: 0; font-size: 13px; color: #B3261E; font-weight: 700; }
.pub-check { display: flex; align-items: center; gap: 10px; min-height: 44px; cursor: pointer; }
.pub-check input { width: 20px; height: 20px; flex: 0 0 auto; margin: 0; accent-color: var(--pub-primary-dark); }
.pub-form__submit { align-self: center; width: 100%; max-width: 320px; min-height: 52px; }

/* ---------- 完了画面 ---------- */
.pub-done {
  border: 1px solid var(--pub-border-strong); border-radius: var(--pub-radius); padding: 40px 20px;
  display: flex; flex-direction: column; align-items: center; gap: 12px; text-align: center;
}
.pub-done p { margin: 0; }
.pub-done__title { margin: 0; font-size: 22px; }
.pub-done__note { font-size: 13px; color: var(--pub-muted); }
.pub-done .pub-btn { margin-top: 12px; }

/* ---------- 規約一覧(タブ。terms.js が .is-tabs を付ける。JS が無いときはタブ = ページ内リンクで全文書を表示) ---------- */
.pub-terms { display: flex; flex-direction: column; gap: 24px; min-width: 0; }
.pub-terms__tabs { display: flex; flex-wrap: wrap; gap: 8px; scroll-margin-top: 16px; }
.pub-terms__tab {
  display: flex; align-items: center; min-height: 44px; padding: 0 16px;
  border: 1px solid var(--pub-border-strong); border-radius: 999px; background: var(--pub-bg);
  color: var(--pub-text); text-decoration: none; font-weight: 700; font-size: 14px;
}
.pub-terms__tab:hover { border-color: var(--pub-primary); color: var(--pub-primary-dark); }
.pub-terms__tab[aria-selected="true"], .pub-terms__tab[aria-current="true"] { background: var(--pub-primary-dark); border-color: var(--pub-primary-dark); color: #FFFFFF; }
.pub-terms__tabs--bottom { padding-top: 24px; border-top: 1px solid var(--pub-border); }
.pub-terms:not(.is-tabs) .pub-terms__tabs--bottom { display: none; }
.pub-terms__panel { display: flex; flex-direction: column; gap: 16px; min-width: 0; scroll-margin-top: 16px; }
.pub-terms__panel[hidden] { display: none; }
.pub-terms:not(.is-tabs) .pub-terms__panel + .pub-terms__panel { margin-top: 40px; }
.pub-terms__title { margin: 0; font-size: 20px; padding-bottom: 8px; border-bottom: 2px solid var(--pub-primary); }
.pub-terms__body { min-width: 0; font-size: 14px; line-height: 1.9; overflow-wrap: anywhere; }
.pub-terms__body p { margin: 0 0 8px; }
.pub-terms__body h3 { margin: 28px 0 8px; font-size: 16px; }
.pub-terms__body h3:first-child { margin-top: 0; }
.pub-terms__body h4 { margin: 20px 0 8px; font-size: 15px; }
.pub .pub-terms__list { margin: 0 0 8px; }
.pub-terms__list li { position: relative; padding-left: 1.2em; }
.pub-terms__list li::before { content: "・"; position: absolute; left: 0; }
.pub-terms__indent { padding-left: 1.5em; margin-bottom: 8px; }
/* 旅行条件書の末尾の会社名・登録番号 */
.pub-terms__body .pub-terms__sign { margin-top: 24px; text-align: right; }
.pub-terms__table { overflow-x: auto; margin: 4px 0 16px; }
.pub-terms__table table { border-collapse: collapse; min-width: 100%; font-size: 13px; line-height: 1.6; }
.pub-terms__table th, .pub-terms__table td { border: 1px solid var(--pub-border-strong); padding: 8px 10px; vertical-align: top; text-align: left; overflow-wrap: normal; }
.pub-terms__table th { background: var(--pub-bg-soft); min-width: 5.5em; }
.pub-terms__table p { margin: 0; }

.pub-page__head { display: flex; flex-direction: column; gap: 12px; }
.pub-page__lead { margin: 0; color: #424242; }

/* ---------- ページ送り(_pager.html) ---------- */
.pub-pager ul { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 6px; }
.pub-pager__num, .pub-pager__step {
  min-width: 44px; min-height: 44px; padding: 0 12px; border: 1px solid var(--pub-border-strong); border-radius: 4px;
  display: flex; align-items: center; justify-content: center; text-decoration: none; color: var(--pub-text);
}
a.pub-pager__num:hover, a.pub-pager__step:hover { border-color: var(--pub-primary); color: var(--pub-primary-dark); }
.pub-pager__num[aria-current="page"] { background: var(--pub-primary-dark); border-color: var(--pub-primary-dark); color: #FFFFFF; font-weight: 700; }
.pub-pager__step.is-disabled { color: #9E9E9E; border-color: var(--pub-border); }
.pub-pager__gap { padding: 0 4px; color: var(--pub-muted); }

/* ---------- ツアー一覧・検索 ---------- */
.pub-tour-search { display: flex; flex-wrap: wrap; gap: 32px; align-items: flex-start; }
.pub-tour-filter {
  flex: 1 1 260px; border: 1px solid var(--pub-border); border-radius: var(--pub-radius); padding: 16px;
  display: flex; flex-direction: column; gap: 16px;
}
.pub-tour-filter__cats { margin: 0; padding: 0; border: 0; gap: 0; }
.pub-tour-filter__cats legend { margin-bottom: 6px; font-weight: 700; font-size: 14px; padding: 0; }
.pub-tour-filter .pub-check { min-height: 36px; font-size: 14px; }
.pub-tour-filter .pub-btn { width: 100%; min-height: 48px; }
.pub-tour-filter .pub-btn--outline { min-height: 44px; font-weight: 400; }
.pub-tour-result { flex: 999 1 560px; min-width: 0; display: flex; flex-direction: column; gap: 16px; }
.pub-tour-result__bar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; }
.pub-tour-result__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; }
.pub-seg { display: flex; }
.pub-tour-result__views { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.pub-tour-result__clear { min-height: 44px; font-weight: 400; }
.pub-seg__item {
  min-height: 44px; padding: 0 20px; display: flex; align-items: center; text-decoration: none; color: var(--pub-text);
  border: 1px solid var(--pub-primary-dark); background: var(--pub-bg);
}
.pub-seg__item:first-child { border-radius: 4px 0 0 4px; }
.pub-seg__item + .pub-seg__item { border-left: 0; border-radius: 0 4px 4px 0; }
.pub-seg__item:hover { background: var(--pub-primary-soft); color: var(--pub-text); }
.pub-seg__item[aria-current="true"] { background: var(--pub-primary-dark); color: #FFFFFF; font-weight: 700; }
.pub-sort { display: flex; align-items: center; gap: 8px; font-size: 13px; }
.pub-sort select { font: inherit; height: 40px; padding: 0 8px; border: 1px solid var(--pub-border-strong); border-radius: 4px; background: var(--pub-bg); color: var(--pub-text); }
.pub .pub-tour-list { display: flex; flex-direction: column; gap: 16px; }
.pub-tour-row {
  display: flex; flex-wrap: wrap; gap: 16px; padding: 12px; text-decoration: none; color: var(--pub-text);
  border: 1px solid var(--pub-border); border-radius: var(--pub-radius); transition: border-color .15s, box-shadow .15s;
}
.pub-tour-row:hover { border-color: var(--pub-primary); box-shadow: 0 2px 10px rgba(0, 0, 0, .08); color: var(--pub-text); }
.pub-tour-row__img { flex: 1 1 220px; min-width: 0; aspect-ratio: 16 / 10; object-fit: cover; border-radius: 6px; }
span.pub-tour-row__img { border: 1px dashed #9E9E9E; }
.pub-tour__img { display: block; width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.pub-tour-row__body { flex: 999 1 300px; min-width: 0; display: flex; flex-direction: column; gap: 8px; }
.pub-tour-row__body .pub-tour__tags { padding: 0; }
.pub-tour-row__name { font-size: 17px; line-height: 1.5; }
.pub-tour-row__summary { font-size: 14px; color: #424242; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; }
.pub-tour-row__meta { font-size: 13px; color: var(--pub-muted); }
.pub-tour-row__foot { margin-top: auto; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 8px; }
.pub-tour-row__next { font-size: 13px; color: var(--pub-muted); display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.pub-tour-row__price { font-size: 17px; font-weight: 700; }
.pub-tour-row__price small { font-size: 12px; font-weight: 400; color: var(--pub-muted); }
/* 空き状況。色だけで区別しないよう文字も出す */
.pub-seat { border-radius: 999px; padding: 0 8px; font-size: 12px; font-weight: 700; border: 1px solid; }
.pub-seat--open { color: var(--pub-primary-dark); border-color: var(--pub-primary-dark); }
.pub-seat--few { color: #8A4B00; border-color: var(--pub-accent); background: #FEF3E0; }
.pub-seat--full { color: #5F5F5F; border-color: #BDBDBD; background: #F5F5F5; }
.pub-cal__count { font-size: 12px; font-weight: 700; color: var(--pub-primary-dark); }
.pub-tour-empty { border: 1px solid var(--pub-border); border-radius: var(--pub-radius); padding: 32px 20px; display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; }
.pub-tour-empty p { margin: 0; }
.pub-tour-empty__title { font-weight: 700; font-size: 17px; }
.pub-tour-empty .pub-btn { margin-top: 8px; }

/* ---------- 農園一覧 ---------- */
.pub-farm-search { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: flex-start; max-width: 640px; }
.pub-farm-search__kw { flex: 999 1 280px; }
.pub-farm-search .pub-btn { flex: 1 1 120px; min-height: 48px; margin-top: 27px; }
.pub-result-count { margin: 0; font-size: 14px; color: var(--pub-muted); }
.pub-farm-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 24px; }
.pub-farm-card {
  height: 100%; display: flex; flex-direction: column; text-decoration: none; color: var(--pub-text);
  border: 1px solid var(--pub-border); border-radius: var(--pub-radius); overflow: hidden; transition: border-color .15s, box-shadow .15s;
}
.pub-farm-card:hover { border-color: var(--pub-primary); box-shadow: 0 2px 10px rgba(0, 0, 0, .08); color: var(--pub-text); }
.pub-farm-card__img { display: block; width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.pub-farm-card__body { flex: 1; padding: 12px 16px 16px; display: flex; flex-direction: column; gap: 6px; }
.pub-farm-card__name { font-size: 17px; line-height: 1.5; }
.pub-farm-card__addr { font-size: 13px; color: var(--pub-muted); }
.pub-farm-card__intro { font-size: 14px; color: #424242; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 5; line-clamp: 5; overflow: hidden; }  /* 紹介文は 5 行まで */
.pub-farm-card__count { margin-top: auto; padding-top: 4px; font-size: 13px; font-weight: 700; }

/* ---------- 農園紹介 ---------- */
.pub-farm-detail { display: flex; flex-wrap: wrap; gap: 32px; align-items: flex-start; }
.pub-gallery { flex: 1 1 420px; min-width: 0; display: flex; flex-direction: column; gap: 8px; }
.pub-gallery__img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--pub-radius); font-size: 13px; }
span.pub-gallery__img { display: flex; }  /* 写真が無いときの枠(.pub-ph)は文字を真ん中に */
.pub .pub-gallery__thumbs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }  /* 画像は 4 枚まで(GP.MEMBER_IMAGE_MAX) */
.pub-gallery__thumb { width: 100%; padding: 0; border: 2px solid transparent; border-radius: 6px; background: none; cursor: pointer; }
.pub-gallery__thumb[aria-current="true"] { border-color: var(--pub-primary-dark); }
.pub-gallery__thumb-img { display: block; width: 100%; aspect-ratio: 1 / 1; object-fit: cover; border-radius: 4px; }
.pub-farm-detail__info { flex: 1 1 420px; min-width: 0; display: flex; flex-direction: column; gap: 16px; }
.pub-farm-detail__name { margin: 0; font-size: 28px; line-height: 1.4; overflow-wrap: anywhere; }
.pub-farm-detail__addr { margin: 0; display: flex; gap: 8px; align-items: flex-start; color: #424242; }
.pub-farm-detail__addr svg { flex: 0 0 auto; margin-top: 4px; }
.pub-farm-detail__intro { line-height: 1.9; color: #424242; overflow-wrap: anywhere; }
.pub-farm-detail__intro p { margin: 0 0 12px; }
/* PC: 画像と文章を横に並べ、紹介文が長いときは画像を画面上部に固定してついてこさせる(下に空白を作らない) */
@media (min-width: 1024px) {
  .pub-farm-detail { flex-wrap: nowrap; }
  .pub-gallery { position: sticky; top: 24px; }
}

/* ---------- 会社概要 ---------- */
.pub-company__lead { background: var(--pub-primary-soft); border-radius: var(--pub-radius); padding: 24px 28px; }
.pub-company__lead p { margin: 0; }
.pub-company__lead p + p { margin-top: 8px; }
.pub-company { margin: 0; border-top: 1px solid var(--pub-border); }
.pub-company > div { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 8px 24px; padding: 20px 0; border-bottom: 1px solid var(--pub-border); }
.pub-company dt { font-weight: 700; color: var(--pub-primary-dark); }
.pub-company dd { margin: 0; overflow-wrap: anywhere; }
.pub-company dd p { margin: 0; }
.pub-company dd > * + * { margin-top: 8px; }
.pub-company__sub { font-weight: 700; }
.pub-company__sub:not(:first-child) { margin-top: 16px !important; }
.pub .pub-company__list li { position: relative; padding-left: 1.2em; }
.pub-company__list li::before { content: ""; position: absolute; left: .3em; top: .75em; width: 6px; height: 6px; border-radius: 50%; background: var(--pub-primary); }
.pub-company__note { font-size: 14px; color: var(--pub-muted); }

/* ---------- タブレット・スマホ(1023px 以下) ---------- */
@media (max-width: 1023px) {
  .pub-header__pc { display: none; }
  .pub-header__sp { height: 56px; padding: 0 12px 0 16px; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
  .pub-logo--sp { width: 112px; height: 36px; }
  .pub-header__sp .pub-lang a { min-height: 44px; padding: 0 8px; font-size: 13px; }
  .pub-menu-btn { display: flex; }
  .pub-footer__inner { padding-bottom: 88px; }
}

/* ---------- スマホ(767px 以下) ---------- */
@media (max-width: 767px) {
  .pub-container { padding-inline: 16px; }
  .pub-footer__inner { padding-top: 20px; gap: 12px; align-items: center; text-align: center; }
  .pub-footer__top { flex-direction: column; align-items: center; gap: 12px; }
  .pub-footer__company, .pub-footer__pc-only { display: none; }
  .pub-footer__nav ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 0 16px; font-size: 12px; }
  .pub-footer__sns a { border: 0; }
  .pub-footer__copy { border-top: 0; padding-top: 0; }

  .pub-hero { min-height: 0; }
  .pub-hero__catch { font-size: 24px; }
  .pub-hero__ph { top: 56px; right: 16px; }
  .pub-hero__ctrl { right: 16px; }
  .pub-hero__search-wrap { padding-top: 200px; padding-bottom: 32px; }
  .pub-news { max-height: 307px; }  /* スマホは 5 件分(460px)の 2/3 */
  .pub-sections { gap: 48px; padding-top: 40px; padding-bottom: 56px; }
  .pub-cats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pub-cal { padding: 12px 8px; }
  .pub-cal__table { border-spacing: 2px; margin: -2px; width: calc(100% + 4px); }
  .pub-cal__day { min-height: 48px; padding: 2px; }

  .pub-page { padding-top: 32px; padding-bottom: 56px; gap: 24px; }
  .pub-page__title { font-size: 22px; }
  .pub-company__lead { padding: 16px; }
  .pub-company > div { grid-template-columns: minmax(0, 1fr); padding: 16px 0; }
  .pub-crumb { margin-bottom: -8px; }
  .pub-done { padding: 28px 16px; }
  .pub-terms__tab { flex: 1 1 calc(50% - 4px); justify-content: center; padding: 0 8px; }
  .pub-terms__indent { padding-left: 1em; }
  .pub-farm-search .pub-btn { margin-top: 0; }
  .pub-farm-cards { gap: 16px; }
  .pub-tour-search { gap: 24px; }
  .pub-seg__item { padding: 0 14px; }
  .pub-farm-detail { gap: 24px; }
  .pub-farm-detail__name { font-size: 24px; }
  .pub-scroller__track { grid-auto-columns: 78%; gap: 12px; }  /* 次のカードが少し見えるようにする */
  .pub-scroller__btn { display: none; }  /* スマホは指でスクロール */
}

@media (prefers-reduced-motion: reduce) {
  .pub *, .pub *::before { transition: none !important; }
  .pub-scroller__track { scroll-behavior: auto; }
}
