@charset "UTF-8";
/* 客室タイプ別 空室状況（page-vacancy.php 専用）
   色・書体・余白は ~/.claude/sites/rurikei/DESIGN.md に従う。新色は作らない。
   モック ~/Desktop/Claude作業/01_サイト・LP/rurikei-vacancy-mock/css/vacancy.css と同一内容＋末尾のテーマ統合用ブロック。
   全て .lp-vacancy スコープ。共通ヘッダー/フッターには一切効かせない。
   2026-10-05 新規 */

.lp-vacancy {
  --rv-green: #348039;
  --rv-text: #333333;
  --rv-cream: #FFF4E6;
  --rv-peach: #F7CEB2;
  --rv-green-soft: #6FAE73;   /* 緑の薄め。日付セルの施設タグ用 */
  --rv-pink: #DC3E63;   /* ASOBIYUKU ロゴのピンク。土日祝の日付に使う */
  --rv-line: rgba(52, 128, 57, .28);
  --rv-mute: rgba(51, 51, 51, .42);

  font-family: "Noto Sans JP", "Helvetica Neue", Arial, "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif;
  color: var(--rv-text);
  background: #fff;
  font-size: 15px;
  line-height: 1.2;
  -webkit-text-size-adjust: 100%;
}
.lp-vacancy *,
.lp-vacancy *::before,
.lp-vacancy *::after { box-sizing: border-box; }
.lp-vacancy img { max-width: 100%; height: auto; }
.lp-vacancy ul { list-style: none; margin: 0; padding: 0; }
.lp-vacancy p { margin: 0; }
.lp-vacancy button { font: inherit; color: inherit; }

/* テーマの本文コンテナ .l-inner（PC: width:83.90625vw + padding:0 25px）の内側と同じ幅・
   同じ縮み方にする。1440px では 1158px（.l-inner の内寸 1158.25px）で従来どおり。 */
.rv-inner { width: min(1158px, calc(83.90625vw - 50px)); margin-inline: auto; }

/* ---------------- 見出し・リード ---------------- */
.rv-intro .rv-inner { padding: 64px 0 0; }
.rv-h2 {
  margin: 0;
  font-family: "Jost", "Noto Sans JP", sans-serif;
  font-size: 56px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 5.6px;
  color: var(--rv-green);
  display: flex;
  align-items: flex-end;   /* ロゴの下端と見出しの下端を揃える */
  gap: 18px;
  flex-wrap: wrap;
}
.rv-h2__logo { width: 96px; height: auto; flex: none; margin-right: 6px; }
.rv-h2__title {
  font-family: "Noto Sans JP", sans-serif;
  font-size: 36px; font-weight: 700; letter-spacing: 4px; line-height: 1;
  color: var(--rv-green);
  padding-bottom: 2px;
}
.lp-vacancy .rv-lead { margin-top: 26px; font-size: 15px; line-height: 1.6; max-width: 834px; }

/* 施設で絞り込むボタン列。人数チップ(.rv-chip)と同じ丸ピル */
.rv-fac { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 22px; }
.rv-fac__btn {
  display: inline-flex; align-items: center; justify-content: center;
  height: 34px; padding: 0 18px;
  border: 1px solid var(--rv-green); background: #fff; color: var(--rv-green);
  border-radius: 100px;
  font-family: "Jost", "Noto Sans JP", sans-serif;
  font-size: 13px; font-weight: 700; letter-spacing: .5px; line-height: 1;
  white-space: nowrap; cursor: pointer;
  transition: background .18s ease, color .18s ease;
}
.rv-fac__btn--ja { font-family: "Noto Sans JP", sans-serif; letter-spacing: 0; }
.rv-fac__btn:hover { background: rgba(52, 128, 57, .08); }
.rv-fac__btn[aria-pressed="true"] { background: var(--rv-green); color: #fff; }

.rv-legend { display: flex; flex-wrap: wrap; gap: 10px 22px; margin-top: 22px; }
.rv-legend__item { display: flex; align-items: center; gap: 8px; font-size: 14px; }

/* 施設タグ・文字版（既定） */
.rv-ftag {
  display: inline-flex; align-items: center; justify-content: center;
  height: 18px; padding: 0 7px; border-radius: 100px;
  font-family: "Jost", "Noto Sans JP", sans-serif;
  font-size: 10px; font-weight: 700; letter-spacing: .3px; line-height: 1; white-space: nowrap;
  color: var(--rv-green-soft); background: #fff; border: 1px solid rgba(111, 174, 115, .8);
  flex: none;
}
.rv-ftag--kobushi { font-family: "Noto Sans JP", sans-serif; letter-spacing: 0; }
/* 施設アイコン凡例。?style=icon のときだけ出す（.rv-legend の余白をそのまま使う） */
.rv-legend--fac { display: none; }
.rv--icon .rv-legend--fac { display: flex; }

/* 施設アイコン版（?style=icon） */
.rv-fic {
  display: inline-flex; align-items: center; justify-content: center;
  width: 24px; height: 24px; border-radius: 100%;
  color: var(--rv-green); background: #fff; border: 1px solid var(--rv-green);
  flex: none;
}
.rv-fic svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

/* ---------------- カレンダー ---------------- */
.rv-cal .rv-inner { padding: 40px 0 72px; }
.rv-cal__nav { display: flex; align-items: center; justify-content: center; gap: 20px; }
.rv-cal__month {
  font-family: "Jost", "Noto Sans JP", sans-serif;
  font-size: 24px; font-weight: 700; letter-spacing: 2px;
  min-width: 190px; text-align: center;
}
.rv-cal__arrow {
  width: 44px; height: 44px; border-radius: 100%;
  border: 1px solid var(--rv-green); background: #fff; color: var(--rv-green);
  font-size: 13px; line-height: 1; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  transition: background .2s ease, color .2s ease;
}
.rv-cal__arrow:hover:not(:disabled) { background: var(--rv-green); color: #fff; }
.rv-cal__arrow:disabled { opacity: .22; cursor: default; }

.rv-cal__grid {
  margin-top: 22px;
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr)); /* 文字幅で列が広がらないよう minmax(0) */
  gap: 6px;
}
.rv-wd {
  text-align: center; font-size: 12px; font-weight: 700; letter-spacing: 1px;
  padding-bottom: 4px; color: var(--rv-text);
}
.rv-wd--we { color: var(--rv-pink); }

.rv-day {
  appearance: none; -webkit-appearance: none;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
  min-height: 78px; padding: 8px 2px; min-width: 0; overflow: hidden;
  background: #fff; border: 1px solid var(--rv-line); border-radius: 0;
  cursor: pointer; text-align: center;
  transition: background .18s ease, border-color .18s ease;
}
.rv-day__n { font-family: "Jost", "Noto Sans JP", sans-serif; font-size: 20px; font-weight: 700; line-height: 1; }
.rv-day__s { font-size: 11px; line-height: 1.2; letter-spacing: .2px; }
.rv-day__s--fac { display: flex; flex-wrap: wrap; justify-content: center; gap: 3px; margin-top: 2px; max-width: 120px; }
.rv--icon .rv-day__s--fac { max-width: none; }
.rv-day--ok:hover .rv-ftag { color: var(--rv-green); background: #fff; border-color: #fff; }
.rv-day__s--fac .rv-fic { width: 22px; height: 22px; }
.rv-day__s--fac .rv-fic svg { width: 14px; height: 14px; }
.rv-day--ok:hover .rv-fic { color: var(--rv-green); background: #fff; border-color: #fff; }
.rv-jump__fac { display: inline-flex; gap: 3px; margin-left: 8px; vertical-align: middle; }
.rv-jump__fac .rv-fic { width: 20px; height: 20px; }
.rv-jump__fac .rv-fic svg { width: 12px; height: 12px; }
.rv-day--empty { border: 0; background: transparent; min-height: 0; pointer-events: none; }

.rv-day--ok { background: var(--rv-cream); }
.rv-day--ok .rv-day__n,
.rv-day--ok .rv-day__s { color: var(--rv-green); }
.rv-day--ok:hover { background: var(--rv-green); border-color: var(--rv-green); }
.rv-day--ok:hover .rv-day__n,
.rv-day--ok:hover .rv-day__s { color: #fff; }

.rv-day--full { border-color: rgba(51, 51, 51, .14); }
.rv-day--full .rv-day__n,
.rv-day--full .rv-day__s { color: var(--rv-mute); }
/* 空き日の既定（クリーム）と同じ面色になってしまうので、背景は変えず罫線だけ動かす */
.rv-day--full:hover { border-color: var(--rv-green); }

.rv-day:disabled { background: #fff; border-color: rgba(51, 51, 51, .1); cursor: default; }
.rv-day:disabled .rv-day__n { color: rgba(51, 51, 51, .22); }
.rv-day:disabled .rv-day__s { color: rgba(51, 51, 51, .22); }

.rv-day--we:not(:disabled) .rv-day__n { color: var(--rv-pink); }
.rv-day--we.rv-day--full .rv-day__n { color: var(--rv-pink); opacity: .45; }
.lp-vacancy .rv-day--ok:hover .rv-day__n,
.lp-vacancy .rv-day--we.rv-day--ok:hover .rv-day__n { color: #fff; }
.rv-day--sel { outline: 2px solid var(--rv-green); outline-offset: -2px; }

.lp-vacancy .rv-cal__note { margin-top: 22px; font-size: 14px; line-height: 1.6; }
.lp-vacancy .rv-updated { margin-top: 18px; font-size: 12px; color: var(--rv-mute); }

/* ---------------- ボトムシート ---------------- */
.rv-sheet { position: fixed; inset: 0; z-index: 9000; }
.rv-sheet[hidden] { display: none; }
.rv-sheet__bg { position: absolute; inset: 0; background: rgba(51, 51, 51, .55); }
.rv-sheet__panel {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  width: min(900px, calc(100% - 40px));
  max-height: min(86vh, 860px);
  background: #fff; border-radius: 0;
  display: flex; flex-direction: column;
  box-shadow: 0 10px 40px rgba(51, 51, 51, .2);
  outline: none;
}
.rv-sheet__head {
  display: flex; align-items: center; gap: 14px;
  padding: 22px 24px 16px; border-bottom: 1px solid var(--rv-line);
}
.rv-sheet__title { flex: 1; font-size: 18px; font-weight: 700; letter-spacing: 1.7px; line-height: 1.4; }
.rv-sheet__x {
  flex: none; width: 40px; height: 40px; border-radius: 100%;
  border: 1px solid var(--rv-green); background: #fff; color: var(--rv-green);
  font-size: 14px; cursor: pointer;
}
.rv-sheet__x:hover { background: var(--rv-green); color: #fff; }

.rv-sheet__filter {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  padding: 14px 24px; background: var(--rv-cream);
}
.rv-sheet__filter-label { font-size: 13px; font-weight: 700; letter-spacing: 1.7px; }
.rv-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.rv-chip {
  border: 1px solid var(--rv-green); background: #fff; color: var(--rv-green);
  border-radius: 100px; padding: 7px 16px; font-size: 13px; line-height: 1.4; cursor: pointer;
  transition: background .18s ease, color .18s ease;
}
.rv-chip:hover { background: rgba(52, 128, 57, .08); }
.rv-chip[aria-pressed="true"] { background: var(--rv-green); color: #fff; }

.rv-sheet__body { flex: 1; overflow-y: auto; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; padding: 8px 24px 24px; }
.rv-sheet__foot { padding: 14px 24px 20px; border-top: 1px solid var(--rv-line); text-align: center; }

/* 施設グループ */
.rv-group { padding-top: 24px; }
.rv-group[hidden] { display: none; }
.rv-group__head { display: flex; align-items: center; gap: 14px; padding-bottom: 14px; border-bottom: 1px solid var(--rv-line); }
.rv-group__pic {
  flex: none; width: 60px; height: 60px; border-radius: 100%;
  object-fit: cover; border: 1px solid var(--rv-line); background: var(--rv-cream);
}
.rv-group__name { font-size: 17px; font-weight: 700; letter-spacing: 1.7px; line-height: 1.4; }
.lp-vacancy .rv-group__cap { margin-top: 5px; font-size: 12px; color: var(--rv-mute); }

/* 部屋カード */
.rv-card {
  display: grid; grid-template-columns: 260px 1fr; gap: 20px;
  padding: 20px 0; border-bottom: 1px solid rgba(51, 51, 51, .12);
}
.rv-card:last-child { border-bottom: 0; }
.rv-card__pic {
  width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block;
  border: 1px solid var(--rv-line); background: var(--rv-cream);
}
.rv-card__body { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; min-width: 0; }
.rv-card__shoulder {
  font-size: 11px; font-weight: 700; letter-spacing: 1px;
  background: var(--rv-cream); padding: 4px 12px; border-radius: 100px;
}
.rv-card__name { font-size: 16px; font-weight: 700; line-height: 1.5; }
.rv-card__meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.rv-card__cap {
  background: var(--rv-green); color: #fff; border-radius: 100px;
  padding: 6px 16px; font-size: 14px; font-weight: 700; letter-spacing: .5px;
}
.rv-card__range { font-size: 12px; color: var(--rv-mute); }
.rv-card__state { font-size: 14px; font-weight: 700; padding: 6px 14px; border: 1px solid var(--rv-line); }
.rv-card__state--ok { color: var(--rv-green); background: var(--rv-cream); }
.rv-card__state--few { color: var(--rv-text); background: var(--rv-peach); border-color: var(--rv-peach); }
.rv-card__price { font-size: 15px; line-height: 1.5; }
.rv-card__price b { font-family: "Jost", "Noto Sans JP", sans-serif; font-size: 20px; }
.rv-card__price span { font-size: 12px; color: var(--rv-mute); }

.rv-btn {
  display: inline-flex; align-items: center; gap: 8px;
  background: var(--rv-green); color: #fff; text-decoration: none;
  border: 1px solid var(--rv-green); border-radius: 100px;
  padding: 11px 26px; font-size: 15px; font-weight: 700; letter-spacing: 1px;
  cursor: pointer; transition: opacity .18s ease;
}
.rv-btn:hover { opacity: .82; }
.rv-btn--plain { background: #fff; color: var(--rv-green); }

/* 満室の日 */
.rv-none { padding: 32px 0 8px; text-align: center; }
.rv-none__msg { font-size: 16px; font-weight: 700; line-height: 1.6; }
.lp-vacancy .rv-none__sub { margin-top: 10px; font-size: 14px; color: var(--rv-mute); }
.rv-none__links { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin-top: 18px; }
.rv-jump {
  border: 1px solid var(--rv-green); background: var(--rv-cream); color: var(--rv-green);
  border-radius: 100px; padding: 10px 22px; font-size: 14px; font-weight: 700; cursor: pointer;
}
.rv-jump:hover { background: var(--rv-green); color: #fff; }

/* フォーカス可視化 */
.lp-vacancy button:focus-visible,
.lp-vacancy a:focus-visible { outline: 2px solid var(--rv-green); outline-offset: 2px; }

/* ---------------- SP ---------------- */
@media (max-width: 767px) {
  .rv-inner { width: min(350px, calc(100% - 40px)); }
  .rv-intro .rv-inner { padding-top: 40px; }
  .rv-h2 { font-size: 40px; letter-spacing: 4px; gap: 12px; }
  .rv-h2__logo { width: 66px; margin-right: 2px; }
  .rv-h2__title { font-size: 26px; letter-spacing: 3px; }
  .lp-vacancy .rv-lead { margin-top: 22px; font-size: 14px; }
  .rv-legend { gap: 8px 16px; margin-top: 18px; }
  .rv-legend__item { font-size: 13px; }
  .rv-fac { gap: 8px; margin-top: 18px; }
  .rv-fac__btn { height: 32px; padding: 0 13px; font-size: 12px; }

  .rv-cal .rv-inner { padding: 28px 0 56px; }
  .rv-cal__month { font-size: 20px; min-width: 150px; }
  .rv-cal__arrow { width: 40px; height: 40px; }
  .rv-cal__grid { gap: 4px; }
  .rv-day { min-height: 60px; padding: 6px 1px; gap: 2px; }
  .rv-day__n { font-size: 16px; }
  .rv-day__s { font-size: 9.5px; letter-spacing: 0; white-space: nowrap; }
  .rv-day__s--fac { gap: 2px; max-width: none; width: 100%; flex-direction: column; align-items: center; margin-top: 1px; }
  .rv--icon .rv-day__s--fac { flex-direction: row; width: 34px; }
  .rv-ftag { height: 14px; padding: 0 4px; font-size: 8px; letter-spacing: 0; max-width: 100%; }
  .rv-day { min-height: 64px; justify-content: flex-start; }
  .rv-day__s--fac .rv-fic { width: 16px; height: 16px; }
  .rv-day__s--fac .rv-fic svg { width: 10.5px; height: 10.5px; stroke-width: 2; }
  .rv-legend--fac .rv-fic { width: 22px; height: 22px; }
  .lp-vacancy .rv-cal__note { margin-top: 18px; font-size: 13px; }

  .rv-sheet__panel {
    left: 0; top: auto; bottom: 0; transform: none;
    width: 100%; max-height: 88vh; border-radius: 0;
  }
  .rv-sheet__head { padding: 18px 18px 14px; }
  .rv-sheet__title { font-size: 16px; letter-spacing: 1px; }
  .rv-sheet__filter { padding: 12px 0 12px 18px; gap: 10px; flex-wrap: nowrap; }
  .rv-sheet__filter-label { flex: none; }
  .rv-chips {
    flex-wrap: nowrap; overflow-x: auto;
    /* 横スクロール枠が枠線の下端を1px削るので、内側に余白を取って外側で相殺する */
    padding: 3px 18px 3px 3px; margin: -3px 0 -3px -3px;
    scrollbar-width: none; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain;
  }
  .rv-chips::-webkit-scrollbar { display: none; }
  .rv-chip { flex: none; }
  .rv-sheet__body { padding: 4px 18px 20px; }
  .rv-sheet__foot { padding: 10px 18px 14px; }
  .rv-sheet__foot .rv-btn { padding: 11px 20px; }

  .rv-group__pic { width: 48px; height: 48px; }
  .rv-group__name { font-size: 15px; letter-spacing: 1px; }

  .rv-card { grid-template-columns: 1fr; gap: 14px; padding: 18px 0; }
  .rv-card__pic { aspect-ratio: 16 / 9; }
  .rv-card__name { font-size: 15px; }
  .rv-card__cap { font-size: 13px; padding: 5px 14px; }
  .rv-btn { width: 100%; justify-content: center; padding: 13px 20px; }
}

/* ---------------- WPテーマ統合用の調整（2026-10-05） ---------------- */
/* このテーマは本文の上余白を FV パーツ(p-fv)が持っている。FVの無いこのページは
   固定ヘッダー .p-header（実測 PC1440:188px / 1024:150px / 768:113px / SP:73px）に
   見出しが隠れるので、自前で上を空ける。 */
.lp-vacancy { padding-top: 140px; }

/* チャットボットのボタン #chatbot-widget-button が z-index:999998 で、
   .rv-sheet の 9000 のままだとポップアップの料金表示の上に重なる。
   テーマのSP固定バー .p-floating-button は z-index:1500。 */
.lp-vacancy .rv-sheet { z-index: 1000000; }

@media (max-width: 767px) {
  .lp-vacancy { padding-top: 76px; }
  /* SP固定バー（高さ約62px）にカレンダー下端が隠れないように */
  .lp-vacancy .rv-cal .rv-inner { padding-bottom: 120px; }
}
