/* RehaRent base.css (white-based + navy primary) */

:root {
  /* Brand colors */
  --color-primary: #1F3A5F;
  --color-primary-hover: #162C47;
  --color-accent: #4A6FA5;
  --color-text: #222222;
  --color-bg: #FFFFFF;
  --color-muted: #F5F6F8;
  --color-border: #e6e8eb;

  /* Bootstrap overrides */
  --bs-primary: #1F3A5F;
  --bs-primary-rgb: 31, 58, 95;
  --bs-link-color: #4A6FA5;
  --bs-link-hover-color: #1F3A5F;

  /* Timeslots theme */
  --ts-available: #ffffff;
  --ts-unavailable: #E6E8EB;
  --ts-selected: #9FB0C8;           /* 選択中（薄ネイビー） */
  --ts-hover: rgba(31,58,95,0.12);  /* hover（ブランド寄せ） */
  --ts-border: #e2e8f0;             /* 枠線 */
  --ts-head-bg: #f8fafc;            /* ヘッダー背景 */
}

/* ---------- Base ---------- */

body {
  color: var(--color-text);
  background-color: var(--color-muted);
}

main {
  padding-bottom: 2rem;
}

/* Focus ring (keyboard accessibility) */
:focus-visible {
  outline: 3px solid rgba(31, 58, 95, .35);
  outline-offset: 2px;
}

/* Muted text */
.text-muted {
  color: rgba(34, 34, 34, 0.7) !important;
}

/* Links (limit to main content to avoid header/nav surprises) */
main a:not(.btn) {
  color: var(--color-accent);
}
main a:not(.btn):hover {
  color: var(--color-primary);
}

/* ---------- Navbar ---------- */

.navbar-toggler {
  border-color: rgba(31, 58, 95, .25);
}
.app-menu-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 0 !important;
  background: transparent !important;
  border-radius: 0;
  box-shadow: none !important;
  padding: 0.35rem;
}

.app-bell-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  min-width: 42px;
  padding: 0.35rem;
  color: #1f3a5f;
  text-decoration: none;
  border: 0;
  background: transparent;
}

.app-bell-btn i {
  font-size: 1.35rem;
}

.app-bell-badge {
  position: absolute;
  top: -2px;
  right: -4px;
  z-index: 2;
  min-width: 1.075rem;
  height: 1.075rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.74rem;
  padding: 0 0.34rem;
  line-height: 1;
}

.app-header-login-btn {
  min-height: 38px;
  padding: 0.4rem 0.8rem;
  font-weight: 600;
}

.app-menu-drawer {
  width: min(86vw, 360px);
}

.app-drawer-links .list-group-item {
  border-left: 0;
  border-right: 0;
  padding-left: 0;
  padding-right: 0;
  font-weight: 600;
  color: #1f3a5f;
}

.navbar .navbar-text {
  color: rgba(34, 34, 34, .6) !important;
}

/* Brand logo (SVG) */
.brand-logo {
  height: 32px;
  width: auto;
  display: block; /* remove baseline gap */
}
@media (max-width: 576px) {
  .brand-logo { height: 28px; }
}

/* ---------- Buttons ---------- */

.btn-primary {
  background-color: var(--color-primary);
  border-color: var(--color-primary);
}

.btn-primary:hover,
.btn-primary:active,
.btn-primary.active,
.show > .btn-primary.dropdown-toggle {
  background-color: var(--color-primary-hover);
  border-color: var(--color-primary-hover);
}

/* Let global :focus-visible outline be the single focus style */
.btn-primary:focus-visible {
  box-shadow: none;
}

.btn-outline-primary {
  border-color: var(--color-primary);
  color: var(--color-primary);
}
.btn-outline-primary:hover {
  background-color: var(--color-primary);
  border-color: var(--color-primary);
  color: #fff;
}

/* ---------- Cards / Sections ---------- */

.section-muted {
  background: var(--color-muted);
  border-radius: 16px;
  padding: 16px;
}

/* Card base */
.card {
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: 20px;
  box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
}

/* Card title color (use brand primary) */
.card .card-title,
.card .card-title a {
  color: var(--color-primary) !important;
  text-decoration: none;
}
.card .card-title a:hover {
  color: var(--color-primary-hover) !important;
  text-decoration: none;
}

/* Optional: emphasize a primary card by border only */
.card-primary {
  border-color: var(--color-primary);
}

/* ---------- Reservation UI helpers ---------- */

.is-selected {
  background-color: var(--color-primary);
  color: #fff;
}

.is-available {
  background-color: #fff;
  border: 1px solid #ddd;
}

/* ---------- Auth pages ---------- */

.auth-card {
  border-radius: 1rem;
}

.auth-logo {
  width: 48px;
  height: 48px;
}

.auth-container {
  max-width: 420px;
}

/* ---------- Alerts ---------- */

.alert {
  border-radius: 12px;
}

/* メニューカード全体はリンク色を使わない */
.menu-card {
  color: var(--color-text);
  text-decoration: none;
}

/* メニューカード内タイトルはメインカラー */
.menu-card .menu-title {
  color: var(--color-primary);
  font-weight: 600;
}

/* メニュー説明文 */
.menu-card .menu-desc {
  color: rgba(34, 34, 34, 0.65);
}

/* アイコンをネイビー基調に */
.menu-card .menu-icon {
  color: var(--color-primary);
  opacity: 0.85;              /* 少しだけ軽くする */
  font-size: 1.6rem;          /* 既に指定があれば不要 */
}

/* 矢印アイコンもネイビー寄りに */
.menu-card .menu-arrow {
  color: var(--color-primary);
  opacity: 0.6;
}

/* hover時の変化（やりすぎない） */
.menu-card:hover .menu-title,
.menu-card:hover .menu-icon {
  color: var(--color-primary-hover);
  opacity: 1;
}

.menu-card:hover .menu-arrow {
  color: var(--color-primary-hover);
  opacity: 0.9;
}


.menu-card {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px;
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: 20px;
  transition: box-shadow .15s ease, transform .15s ease;
}

.menu-card:hover {
  box-shadow: 0 4px 12px rgba(0,0,0,.06);
  transform: translateY(-1px);
}

/* ---------- Mobile UX: prevent double-tap zoom ---------- */

/* ボタン・リンク・カード系のダブルタップ拡大を抑制 */
button,
a,
.btn,
.menu-card,
.card,
.lock-card,
.ts-slot-block {
  touch-action: manipulation;
}

/* ===== App-wide button sizing ===== */
.btn{
  padding: 0.6rem 1.1rem;     /* ← 余白を拡張（文字は変えない） */
  min-height: 44px;           /* ← iOS / Android 推奨タップサイズ */
  line-height: 1.4;
}

/* iOS Safari 対策（300ms delay + zoom 抑制） */
button,
a {
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}

/* iOS Safari のバウンス（オーバースクロール）を抑止 */
html, body {
  overscroll-behavior-y: none;
}
