/* =============================================================
   予約システム 共通スタイル

   ★ WordPressサイトにデザインを寄せる場合は、原則この下の
     :root{} のデザイントークン(変数)を書き換えるだけでOKです。

   ★ すべてのスタイルは .rsv-app 配下に限定しています。
     WordPress連携時(get_header/get_footerを使うとき)に、テーマ側の
     Bootstrap等のCSSと .btn 等が衝突しないようにするためです。
     予約システムの表示領域は必ず .rsv-app で囲まれます
     (独立表示時は <body class="rsv-app">、WP連携時は <div class="rsv-app">)。
   ============================================================= */

:root {
  /* --- フォント(Lightning/Bootstrap系のシステムフォント優先スタック) --- */
  --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Noto Sans JP", Meiryo, sans-serif;
  --heading-font: var(--font-family);

  /* --- 基本カラー --- */
  --color-text:   #333333;
  --color-muted:  #777777;
  --color-bg:     #fafafa;
  --color-surface:#ffffff;
  --color-border: #e0e0e0;
  --color-subtle-bg: #f5f5f5;
  --color-input-border: #cccccc;

  /* --- ブランドカラー(= Lightningの「キーカラー」に合わせる) --- */
  --color-brand:            #337ab7;  /* Lightning キーカラー */
  --color-brand-contrast:   #ffffff;
  --color-brand-soft-bg:    #e7f1ff;
  --color-brand-soft-bg:    color-mix(in srgb, var(--color-brand) 12%, #ffffff);
  --color-brand-soft-border:#b6d4fe;
  --color-brand-soft-border:color-mix(in srgb, var(--color-brand) 30%, #ffffff);

  /* --- 補助カラー --- */
  --color-secondary-bg: #e0e0e0;
  --color-accent:  #b56a00;
  --color-danger:  #b3261e;
  --color-danger-bg: #fdecea;
  --color-danger-border: #f5c6c2;
  --color-saturday: #1a5fb4;
  --color-today-bg: #fff8e1;

  /* --- ヘッダー(独立表示時の会員側) --- */
  --header-bg:   var(--color-surface);
  --header-text: var(--color-text);
  --nav-link:    var(--color-brand);

  /* --- 管理画面ヘッダー --- */
  --admin-header-bg: #263238;
  --admin-header-text: #ffffff;
  --admin-nav-link: #9fd3c7;

  /* --- 形状・レイアウト --- */
  --radius: 0.375rem;
  --content-width: 720px;

  /* --- LINEブランド色 --- */
  --color-line: #06C755;
}

/* ---- スコープの基点 ---- */
.rsv-app, .rsv-app *, .rsv-app *::before, .rsv-app *::after { box-sizing: border-box; }

.rsv-app {
  font-family: var(--font-family);
  color: var(--color-text);
  line-height: 1.7;
}
/* 独立表示(WP未使用・管理画面)では body に .rsv-app が付く */
body.rsv-app { margin: 0; background: var(--color-bg); }

.rsv-app h2, .rsv-app h3 { font-family: var(--heading-font); color: var(--color-text); }

/* ---- 独立表示時のヘッダー/フッター ---- */
.rsv-app .site-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 16px;
  background: var(--header-bg);
  border-bottom: 1px solid var(--color-border);
}
.rsv-app .site-title { margin: 0; font-size: 1.2rem; }
.rsv-app .site-title a { color: var(--header-text); text-decoration: none; }
.rsv-app .site-nav a {
  margin-left: 12px;
  color: var(--nav-link);
  text-decoration: none;
}
.rsv-app .site-main {
  max-width: var(--content-width);
  margin: 24px auto;
  padding: 0 16px;
}
.rsv-app .site-footer {
  margin-top: 48px;
  padding: 16px;
  text-align: center;
  font-size: 0.85rem;
  color: var(--color-muted);
  border-top: 1px solid var(--color-border);
  background: var(--color-surface);
}

/* ---- フラッシュメッセージ ---- */
.rsv-app .flash {
  padding: 10px 14px;
  border-radius: var(--radius);
  margin-bottom: 16px;
}
.rsv-app .flash-success { background: var(--color-brand-soft-bg); color: var(--color-brand); border: 1px solid var(--color-brand-soft-border); }
.rsv-app .flash-error   { background: var(--color-danger-bg); color: var(--color-danger); border: 1px solid var(--color-danger-border); }

/* ---- フォーム ---- */
.rsv-app .form-row { margin-bottom: 16px; }
.rsv-app .form-row label { display: block; font-weight: bold; margin-bottom: 4px; }
.rsv-app .form-row input {
  width: 100%;
  max-width: 420px;
  padding: 8px 10px;
  font-size: 1rem;
  border: 1px solid var(--color-input-border);
  border-radius: var(--radius);
  background: var(--color-surface);
}
.rsv-app .required { color: var(--color-danger); }
.rsv-app .field-error { color: var(--color-danger); font-size: 0.85rem; margin: 4px 0 0; }
.rsv-app .field-note  { color: var(--color-muted);  font-size: 0.85rem; margin: 4px 0 0; }

/* ---- ボタン ---- */
.rsv-app .btn {
  display: inline-block;
  padding: 10px 20px;
  font-size: 1rem;
  border: none;
  border-radius: var(--radius);
  cursor: pointer;
  text-decoration: none;
  text-align: center;
}
.rsv-app .btn-primary   { background: var(--color-brand); color: var(--color-brand-contrast); }
.rsv-app .btn-secondary { background: var(--color-secondary-bg); color: var(--color-text); margin-left: 8px; }
.rsv-app .btn-line      { background: var(--color-line); color: #fff; }
.rsv-app .btn-disabled  { opacity: 0.5; pointer-events: none; }

/* ---- 確認テーブル ---- */
.rsv-app .confirm-table {
  width: 100%;
  max-width: 560px;
  border-collapse: collapse;
  margin-bottom: 20px;
  background: var(--color-surface);
}
.rsv-app .confirm-table th, .rsv-app .confirm-table td {
  border: 1px solid var(--color-border);
  padding: 10px 12px;
  text-align: left;
}
.rsv-app .confirm-table th { width: 35%; background: var(--color-subtle-bg); font-weight: normal; }

/* ---- カレンダー ---- */
.rsv-app .cal-nav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  max-width: 560px;
  margin-bottom: 8px;
}
.rsv-app .cal-nav a { color: var(--color-brand); text-decoration: none; }
.rsv-app .cal-nav-disabled { color: #bbb; }

.rsv-app .calendar {
  width: 100%;
  max-width: 560px;
  border-collapse: collapse;
  background: var(--color-surface);
  table-layout: fixed;
}
.rsv-app .calendar th, .rsv-app .calendar td {
  border: 1px solid var(--color-border);
  padding: 6px 4px;
  text-align: center;
  vertical-align: top;
}
.rsv-app .calendar th { background: var(--color-subtle-bg); font-weight: normal; }
.rsv-app .calendar th.cal-sun { color: var(--color-danger); }
.rsv-app .calendar th.cal-sat { color: var(--color-saturday); }
.rsv-app .cal-day  { font-size: 0.8rem; color: var(--color-muted); }
.rsv-app .cal-mark { display: block; font-size: 1.2rem; text-decoration: none; padding: 4px 0; }
.rsv-app a.cal-mark:hover { background: var(--color-brand-soft-bg); border-radius: var(--radius); }
.rsv-app .cal-open   a.cal-mark { color: var(--color-brand); font-weight: bold; }
.rsv-app .cal-few    a.cal-mark { color: var(--color-accent); font-weight: bold; }
.rsv-app .cal-full   .cal-mark, .rsv-app .cal-na .cal-mark { color: #bbb; }
.rsv-app .cal-closed .cal-mark { color: var(--color-danger); font-size: 0.9rem; padding-top: 8px; }
.rsv-app .cal-empty  { background: var(--color-bg); }

/* ---- 時間枠一覧 ---- */
.rsv-app .slot-table {
  width: 100%;
  max-width: 560px;
  border-collapse: collapse;
  background: var(--color-surface);
}
.rsv-app .slot-table th, .rsv-app .slot-table td {
  border: 1px solid var(--color-border);
  padding: 8px 12px;
  text-align: left;
}
.rsv-app .slot-table th { background: var(--color-subtle-bg); font-weight: normal; }
.rsv-app .slot-open { color: var(--color-brand); font-weight: bold; }
.rsv-app .slot-full { color: #bbb; }
.rsv-app .btn-small { padding: 6px 12px; font-size: 0.9rem; }
.rsv-app .btn-cancel { background: var(--color-danger-bg); color: var(--color-danger); border: 1px solid var(--color-danger-border); }
.rsv-app .inline-form { display: inline; margin: 0; }

/* ---- 管理画面 ---- */
.rsv-app.admin-body { background: var(--color-bg); }
.rsv-app .admin-header { background: var(--admin-header-bg); }
.rsv-app .admin-header .site-title { color: var(--admin-header-text); font-size: 1rem; }
.rsv-app .admin-header .site-title a { color: var(--admin-header-text); }
.rsv-app .admin-header .site-nav a { color: var(--admin-nav-link); }
.rsv-app .admin-main { max-width: 900px; }
.rsv-app .admin-columns { display: flex; gap: 24px; flex-wrap: wrap; margin-top: 24px; }
.rsv-app .admin-columns section { flex: 1; min-width: 280px; }
.rsv-app .admin-recent { padding-left: 1.2em; }
.rsv-app .admin-recent li { margin-bottom: 6px; }
.rsv-app .admin-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; }
.rsv-app .cal-today { background: var(--color-today-bg); }
.rsv-app .day-slot-item { margin-bottom: 4px; }
.rsv-app .checkbox-label { display: block; margin: 12px 0; }
.rsv-app .search-form { display: flex; gap: 8px; margin-bottom: 12px; }
.rsv-app .search-form input[type="text"] {
  flex: 1; max-width: 320px; padding: 8px 10px;
  border: 1px solid var(--color-input-border); border-radius: var(--radius); font-size: 1rem;
}
.rsv-app .search-form select, .rsv-app .form-row select {
  padding: 8px 10px; border: 1px solid var(--color-input-border); border-radius: var(--radius); font-size: 1rem;
}
.rsv-app .checkbox-inline { margin-right: 16px; }

/* ---- 予約完了 ---- */
.rsv-app .reservation-code { font-size: 1.3rem; font-weight: bold; letter-spacing: 1px; }

/* ---- 備考テキストエリア ---- */
.rsv-app .note-textarea {
  width: 100%;
  max-width: 420px;
  padding: 8px 10px;
  font-size: 1rem;
  border: 1px solid var(--color-input-border);
  border-radius: var(--radius);
  font-family: inherit;
}
