/*
 * これは application.css のマニフェストファイルです。
 * 
 * Propshaft を使用しており、プリプロセッサなしでアセットが効率的に配信されます。
 * アプリ全体に適用されるスタイルはこのファイルに記述できますが、CSS の優先順位は
 * 標準のカスケード順（後の宣言や詳細度の高いスタイルが優先）に従うことに注意してください。
 *
 * メンテナンス性の向上のため、スタイルは機能ごとに別ファイルに整理することを検討してください。
 */

:root {
  /* メインカラーおよびアクセントカラー */
  --color-primary: #DE5435;
  --color-secondary: #0d3b66;
  --color-serving-header: #DE5435;
  --color-facility-header: #1f7ea8;
  --color-admin-header: #111111;

  /* 中間色 */
  --color-neutral-100: #f8f9fa;
  --color-neutral-900: #212529;

  /* スペーシング（Bootstrap 基準） */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 1rem;
}

/* ロール別ヘッダー背景 */
.bg-brand {
  background-color: var(--color-serving-header) !important;
}

.bg-facility-header {
  background-color: var(--color-facility-header) !important;
}

.bg-admin-header {
  background-color: var(--color-admin-header) !important;
}

/* 誕生日膳リマインドモーダルの説明文サイズ */
.birthday-meal-reminder-message {
  font-size: 1.3rem;
}

.birthday-meal-reminder-modal-dialog {
  max-width: 56rem;
}

.birthday-meal-reminder-modal .modal-header {
  padding: 1.15rem 1.5rem 0.9rem;
}

.birthday-meal-reminder-modal .modal-body {
  padding: 1rem 1.5rem 1.5rem;
}

.birthday-meal-reminder-targets {
  list-style: none;
  margin: 0;
  padding: 0.35rem 0 0;
}

.birthday-meal-reminder-target {
  align-items: baseline;
  column-gap: 0.55rem;
  display: grid;
  grid-template-columns: 13rem auto;
  justify-content: start;
}

.birthday-meal-reminder-target + .birthday-meal-reminder-target {
  margin-top: 0.7rem;
}

.birthday-meal-reminder-target-name {
  line-height: 1.45;
  min-width: 0;
}

.birthday-meal-reminder-target-detail {
  color: inherit;
  font-weight: 400;
  justify-self: start;
  line-height: 1.45;
  white-space: nowrap;
}

.birthday-meal-reminder-target-detail-label {
  color: inherit;
  font-weight: 400;
}

.birthday-meal-reminder-target-detail-value {
  font-weight: 700;
}

.birthday-meal-reminder-target-detail--empty {
  min-height: 1.45em;
}

.birthday-meal-reminder-dismiss-toggle {
  border-top: 1px solid #dee2e6;
  margin-top: 1rem;
  padding-top: 0.9rem;
}

.birthday-meal-reminder-dismiss-toggle .form-check-input {
  margin-top: 0.38em;
}

.birthday-meal-reminder-dismiss-label {
  cursor: pointer;
  line-height: 1.45;
}

@media (min-width: 768px) {
  .birthday-meal-reminder-target-name {
    white-space: nowrap;
  }
}

@media (max-width: 767.98px) {
  .birthday-meal-reminder-modal .modal-header,
  .birthday-meal-reminder-modal .modal-body {
    padding-left: 1.15rem;
    padding-right: 1.15rem;
  }

  .birthday-meal-reminder-target {
    grid-template-columns: 1fr;
    row-gap: 0.15rem;
  }

  .birthday-meal-reminder-target-detail {
    white-space: normal;
  }

  .birthday-meal-reminder-target-detail--empty {
    display: none;
  }
}

/* 一覧本文の視認性を高めるためのフォント拡大 */
.list-font-scale-130 {
  font-size: 130%;
}

.list-font-scale-130 .table,
.list-font-scale-130 .form-control,
.list-font-scale-130 .form-select,
.list-font-scale-130 .form-label,
.list-font-scale-130 .form-check-label,
.list-font-scale-130 .btn,
.list-font-scale-130 .page-link {
  font-size: inherit;
}

.list-font-scale-130 .btn-sm,
.list-font-scale-130 .form-control-sm,
.list-font-scale-130 .form-select-sm {
  font-size: 0.875em;
}

/*
 * facility 詳細画面の項目カードは共通 Bootstrap の border を触らずに、
 * 専用 class で枠線だけ少し強めて境界を認識しやすくする。
 */
.facility-detail-card {
  background-color: var(--color-neutral-100);
  border: 2px solid #adb5bd;
  border-radius: 0.5rem;
}

/* 喫食予定一覧カレンダー内の文字サイズを拡大 */
.mealplan-tab-content-large {
  font-size: 400%;
}

/*
 * カレンダー入力（month）のスタイル
 * Webkit系ブラウザでの表示調整と背景色の設定
 */
input[type="month"].form-control,
input[type="month"].form-control-sm {
  -webkit-appearance: auto;
  appearance: auto;
  background-color: #fff;
}

input[type="month"]::-webkit-calendar-picker-indicator {
  cursor: pointer;
}

/* インライン通知メッセージのマージン調整 */
.notice-inline {
  margin-bottom: var(--space-2);
}

/* 月変更確認ダイアログ */
.mealplan-confirm-backdrop {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background: rgba(0, 0, 0, 0.4);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1050;
  padding: 1.5rem;
}

.mealplan-confirm-dialog {
  background: #fff;
  border-radius: 8px;
  max-width: 420px;
  width: 100%;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
  padding: 1.5rem;
}

.mealplan-confirm-title {
  font-size: 1.2rem;
  margin-bottom: 0.75rem;
}

.mealplan-confirm-message {
  margin-bottom: 1.5rem;
}

.mealplan-confirm-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  justify-content: flex-end;
}

.mealplan-confirm-actions .btn {
  min-width: 140px;
}

.mealplan-confirm-actions .btn-link {
  min-width: auto;
}

/* カレンダーテーブルの共通セルスタイル */
.calendar th,
.calendar td {
  text-align: center;
  vertical-align: middle;
  padding: 0.5rem;
  font-size: 0.9rem;
}

/*
 * 喫食予定一覧カレンダーのスクロール固定表示
 * ヘッダー行（日付）を上に固定、利用者名・食種ラベル列を左に固定
 */
.mealplan-calendar-scroll {
  --mealplan-name-column-width: 8.75rem;
  --mealplan-name-column-offset: var(--mealplan-name-column-width);
  --mealplan-label-column-width: 1.6em;
  max-height: 80vh;
  overflow: auto;
}

.mealplan-calendar-scroll .calendar {
  border-collapse: separate;
  border-spacing: 0;
}

/* border-collapse: separate 時のセル罫線を補完 */
.mealplan-calendar-scroll .calendar th,
.mealplan-calendar-scroll .calendar td {
  border: 1px solid #dee2e6;
}

/* ヘッダー行（日付）を上部固定、日付列幅を均一化 */
.mealplan-calendar-scroll .calendar thead th:not(.sticky-name):not(.sticky-label) {
  position: sticky;
  top: 0;
  background: #fff;
  z-index: 4;
  border-bottom: 2px solid #dee2e6;
  min-width: 1.6em;
  width: 1.6em;
  padding: 0.1rem 0.05rem;
  line-height: 1;
  box-sizing: border-box;
}

/* 利用者名列を左側固定 */
.mealplan-calendar-scroll .calendar .sticky-name {
  position: sticky;
  left: 0;
  background: #fff;
  z-index: 3;
}

/* 食種ラベル列を利用者名列の右に固定 */
.mealplan-calendar-scroll .calendar .sticky-label {
  position: sticky;
  background: #f8f8f8;
  z-index: 3;
  /* ::after の影表示のため relative コンテキストを確保 */
}

/* ヘッダー行の固定列も上部固定する */
.mealplan-calendar-scroll .calendar thead .sticky-name,
.mealplan-calendar-scroll .calendar thead .sticky-label {
  top: 0;
  border-bottom: 2px solid #dee2e6;
  padding: 0.1rem 0.05rem;
  line-height: 1;
  box-sizing: border-box;
}

/* ヘッダー行の固定列は最前面 */
.mealplan-calendar-scroll .calendar thead .sticky-name {
  z-index: 6;
}

.mealplan-calendar-scroll .calendar thead .sticky-label {
  z-index: 5;
}

/* 利用者区切り線：利用者の先頭行に太い上罫線 */
.mealplan-calendar-scroll .calendar .user-first-row td,
.mealplan-calendar-scroll .calendar .user-first-row th {
  border-top: 2.5px solid #6c757d;
}

/* トップへ戻るボタン */
.scroll-top-btn,
.mealplan-scroll-top-btn {
  display: none;
  position: fixed;
  bottom: 1.5rem;
  right: 1.5rem;
  z-index: 1050;
  width: 3rem;
  height: 3rem;
  border-radius: 50%;
  font-size: 1.2rem;
  line-height: 1;
  padding: 0;
  opacity: 0.8;
  box-shadow: 0 2px 6px rgba(0,0,0,0.25);
}

.scroll-top-btn:hover,
.mealplan-scroll-top-btn:hover {
  opacity: 1;
}

/*
 * 献立カレンダーのラッパーとテーブルレイアウト
 * 横スクロール対応と最小幅設定
 */
.meal-calendar-wrapper {
  position: relative;
  overflow-x: auto;
}

.meal-calendar-wrapper .calendar {
  table-layout: fixed;
  min-width: 960px;
}

/* ヘッダー行の固定表示 */
.meal-calendar-wrapper .calendar thead th {
  position: sticky;
  top: 0;
  background: #fff;
  z-index: 2;
}

/*
 * 左側固定カラムの設定
 * 利用者名カラムとラベルカラムの固定表示
 */
.sticky-col {
  position: sticky;
  left: 0;
  background: #fff;
  z-index: 3;
}

.sticky-col.name-col {
  left: 0;
  min-width: 180px;
}

.sticky-col.label-col {
  left: 180px;
  min-width: 56px;
  width: 56px;
}

/* カレンダーのカラム幅設定 */
.calendar-name-column {
  width: 12.5rem;
  vertical-align: middle;
}

.calendar-label-column {
  width: 2.5em;
  font-weight: 600;
  background-color: #f8f8f8;
}

/* 喫食予定一覧カレンダーの固定列幅（sticky-label の left に合わせる） */
.mealplan-calendar-scroll .calendar-name-column {
  min-width: var(--mealplan-name-column-width);
  width: var(--mealplan-name-column-width);
  box-sizing: border-box;
}

/* 一覧カレンダーの全セルを行高圧縮・日付列幅均一化 */
.mealplan-calendar-scroll .calendar td:not(.sticky-name):not(.sticky-label) {
  padding: 0.1rem 0.05rem;
  line-height: 1;
  min-width: 1.6em;
  width: 1.6em;
  box-sizing: border-box;
}

.mealplan-calendar-scroll .calendar .meal-mark {
  font-size: 1.6rem;
}

.mealplan-calendar-scroll .calendar .calendar-label-column {
  min-width: var(--mealplan-label-column-width);
  width: var(--mealplan-label-column-width);
  padding: 0.1rem 0.15rem;
  font-size: 1.3rem;
  line-height: 1;
  box-sizing: border-box;
}

.mealplan-calendar-scroll .sticky-label {
  left: var(--mealplan-name-column-offset);
}

/* ラベル列の右に影を付けてスクロール時の境界を明示 */
.mealplan-calendar-scroll .calendar .sticky-label::after {
  content: '';
  position: absolute;
  top: 0;
  right: -4px;
  bottom: 0;
  width: 4px;
  background: linear-gradient(to right, rgba(0,0,0,0.06), transparent);
  pointer-events: none;
}

/* 喫食予定一覧画面の固定列を省スペース化 */
.mealplan-tab-content-large .sticky-col.name-col {
  width: 8.75rem;
  min-width: 8.75rem;
}

.mealplan-tab-content-large .sticky-col.label-col {
  left: 8.75rem;
  min-width: 3rem;
  width: 3rem;
}

.mealplan-tab-content-large .mealplan-calendar-scroll {
  --mealplan-name-column-width: 8.75rem;
  --mealplan-label-column-width: 1.6em;
}

.mealplan-tab-content-large .calendar th,
.mealplan-tab-content-large .calendar td {
  font-size: 1.8rem;
}

/* 土日の背景色設定 */
.sunday {
  background-color: #ffe8e8 !important;
}

.master-color-field .master-color-code-input {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  text-transform: uppercase;
}

.master-color-field .master-color-picker {
  width: 4rem;
  min-width: 4rem;
  padding: 0.2rem;
}

.master-color-swatch {
  display: inline-block;
  width: 1rem;
  height: 1rem;
  border: 1px solid #ced4da;
  border-radius: 999px;
  background-color: #fff;
  flex-shrink: 0;
}

.master-color-swatch--large {
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 0.5rem;
}

.master-color-swatch--empty {
  background-image:
    linear-gradient(45deg, transparent calc(50% - 1px), #adb5bd 50%, transparent calc(50% + 1px)),
    linear-gradient(-45deg, transparent calc(50% - 1px), #adb5bd 50%, transparent calc(50% + 1px));
  background-color: #fff;
}

.master-color-code {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}

.master-color-fill {
  border: 1px solid transparent;
}

.master-color-fill--inline {
  display: inline-block;
  padding: 0.2rem 0.55rem;
  border-radius: 0.5rem;
}

.master-color-fill--cell {
  display: block;
  width: 100%;
  padding: 0.35rem 0.55rem;
  border-radius: 0.5rem;
}

.saturday {
  background-color: #e8f4ff !important;
}

/* 喫食予定一覧の利用者名リンク */
.user-link {
  display: inline-block;
}

.mealplan-tab-content-large .user-link {
  font-size: 1.9rem;
  padding: 0;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

@media (max-width: 991.98px) {
  .mealplan-tab-content-large .sticky-col.name-col {
    width: 3.5rem;
    min-width: 3.5rem;
  }

  .mealplan-tab-content-large .sticky-col.label-col {
    left: 3.5rem;
  }

  .mealplan-tab-content-large .calendar-name-column {
    width: 3.5rem;
    min-width: 3.5rem;
  }

  .mealplan-tab-content-large .user-link {
    writing-mode: vertical-rl;
    text-orientation: upright;
    white-space: normal;
    max-width: none;
    text-overflow: clip;
    padding: 0;
    line-height: 1.1;
  }

  .mealplan-tab-content-large .mealplan-calendar-scroll {
    --mealplan-name-column-width: 3.5rem;
  }
}

.user-link:hover {
  text-decoration: underline;
}

/* 完了マークとセル幅の設定 */
.meal-mark {
  font-size: 2.4rem;
  color: #28a745;
}

.meal-label-header {
  min-width: 80px;
  z-index: 4;
}

.meal-label-cell {
  min-width: 80px;
}

/*
 * 食事選択セルのスタイル
 * クリック可能な矩形領域
 */
.meal-select {
  display: flex;
  justify-content: center;
}

.meal-value {
  width: 44px;
  height: 44px;
  line-height: 44px;
  border: 1px solid #dee2e6;
  border-radius: 4px;
  cursor: pointer;
  user-select: none;
  background-color: white;
}

.meal-value:hover {
  background-color: #f8f9fa;
}

/*
 * ユーザータイプによる表示制御
 * 通所/入所による行や設定項目の出し分け
 */
.user-type-residential .day-only {
  display: none !important;
}

.user-type-day .residential-only {
  display: none !important;
}

body:not(.user-type-day) .day-only {
  display: none;
}

body:not(.user-type-day) .residential-only {
  display: table-row;
}

.user-type-day .breakfast-setting,
.user-type-day .dinner-setting {
  display: none !important;
}

@media (max-width: 767.98px) {
  .facility-user-search-panel {
    font-size: 0.9rem;
    padding: 0.85rem !important;
  }

  .facility-user-search-panel .form-label,
  .facility-user-search-panel .form-check-label,
  .facility-user-search-panel .text-muted.small {
    font-size: 0.85rem;
  }

  .facility-user-search-panel .form-control,
  .facility-user-search-panel .form-select,
  .facility-user-search-panel .btn {
    font-size: 0.9rem;
  }

  .facility-user-search-panel .facility-user-date-mode {
    align-items: flex-start !important;
    flex-wrap: wrap;
    gap: 0.35rem 0.75rem !important;
  }

  .facility-user-search-panel .facility-user-date-mode .form-label {
    width: 100%;
    margin-bottom: 0.2rem !important;
  }

  .facility-user-search-panel .facility-user-search-actions .form-check {
    margin-left: 0 !important;
  }
}

@media (min-width: 768px) and (max-width: 991.98px) {
  .facility-user-search-panel {
    font-size: 1rem;
    padding: 1rem !important;
  }

  .facility-user-search-panel .form-label,
  .facility-user-search-panel .form-check-label,
  .facility-user-search-panel .text-muted.small {
    font-size: 0.95rem;
  }

  .facility-user-search-panel .form-control,
  .facility-user-search-panel .form-select,
  .facility-user-search-panel .btn {
    font-size: 0.95rem;
  }

  .facility-user-search-panel .facility-user-date-mode {
    align-items: flex-start !important;
    flex-wrap: wrap;
    gap: 0.4rem 0.9rem !important;
  }

  .facility-user-search-panel .facility-user-date-mode .form-label {
    width: 100%;
    margin-bottom: 0.2rem !important;
  }

  .facility-user-search-panel .facility-user-search-actions .form-check {
    margin-left: 0 !important;
  }
}

@media (min-width: 992px) {
  .facility-user-search-panel {
    font-size: 1rem;
    padding: 1rem !important;
  }

  .facility-user-search-panel .form-label,
  .facility-user-search-panel .form-check-label,
  .facility-user-search-panel .text-muted.small {
    font-size: 0.95rem;
  }

  .facility-user-search-panel .form-control,
  .facility-user-search-panel .form-select,
  .facility-user-search-panel .btn {
    font-size: 0.95rem;
  }
}

/*
 * モバイルオフキャンバスメニュー
 * 既存の視認性を維持するため、リンクサイズは従来値を継承する
 */

#sidebarMenu .nav-link {
  font-size: 0.875rem;
  font-weight: 500;
}

#sidebarMenu .nav-link.active {
  color: #DE5435;
}

.sidebar-heading {
  font-size: 0.75rem;
}

/*
 * デスクトップヘッダーメニュー
 * ドロップダウン展開時にヘッダー高さを変えないよう、メニューは絶対配置で表示する
 */

.header-menu {
  position: relative;
  font-size: 1.75rem;
}

.header-menu .navbar-nav {
  flex-wrap: nowrap;
  white-space: nowrap;
}

.header-menu .dropdown {
  position: relative;
}

.header-menu .nav-link {
  font-size: inherit;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.9);
  border-radius: 0.375rem;
  padding: 0.4rem 0.65rem;
}

.header-menu .nav-link:hover,
.header-menu .nav-link:focus {
  color: #fff;
  background-color: rgba(255, 255, 255, 0.16);
}

.header-menu .nav-link.active {
  color: #fff;
  background-color: rgba(255, 255, 255, 0.24);
}

.header-menu .dropdown-menu {
  position: absolute;
  top: calc(100% + 0.25rem);
  left: 0;
  margin-top: 0;
  min-width: 12rem;
  z-index: 1080;
  font-size: inherit !important;
}

.header-menu .dropdown-item {
  font-size: inherit !important;
}

.header-menu .dropdown-item.active,
.header-menu .dropdown-item:active {
  color: #fff;
  background-color: var(--color-primary);
}

.header-logout-form {
  margin-bottom: 0;
}

.header-logout-form .btn {
  white-space: nowrap;
}

/*
 * ロール別トップメニューカード
 * 見出し帯とメニュー本体の色差を明確にし、リンクの視認性を高める
 */

.top-menu-card {
  --top-card-accent: var(--color-primary);
  --top-card-accent-dark: #b93f24;
  --top-card-surface: #fff5f0;
  --top-card-hover: #ffd9cc;
  --top-card-border: rgba(222, 84, 53, 0.28);
  overflow: hidden;
  border: 1px solid var(--top-card-border);
  box-shadow: 0 0.75rem 1.5rem rgba(13, 59, 102, 0.08);
}

.top-menu-card--secondary {
  --top-card-accent: var(--color-secondary);
  --top-card-accent-dark: #082947;
  --top-card-surface: #f1f7fc;
  --top-card-hover: #d7e7f5;
  --top-card-border: rgba(13, 59, 102, 0.24);
}

.top-menu-card--accent {
  --top-card-accent: #2f6b3f;
  --top-card-accent-dark: #1d4829;
  --top-card-surface: #f1faf3;
  --top-card-hover: #d8eedc;
  --top-card-border: rgba(47, 107, 63, 0.24);
}

.top-menu-card--neutral {
  --top-card-accent: #5c6670;
  --top-card-accent-dark: #2d3338;
  --top-card-surface: #f5f7f8;
  --top-card-hover: #e2e7ea;
  --top-card-border: rgba(92, 102, 112, 0.24);
}

.top-menu-card__header {
  background: linear-gradient(135deg, var(--top-card-accent) 0%, var(--top-card-accent-dark) 100%);
  color: #fff;
  font-weight: 700;
  letter-spacing: 0.04em;
  border-bottom: none;
}

.top-menu-card__list,
.top-menu-card__body {
  background-color: var(--top-card-surface);
}

.top-menu-card__link,
.top-menu-card__action {
  border-color: rgba(13, 59, 102, 0.08);
  background-color: transparent;
}

.top-menu-card__link {
  color: var(--color-neutral-900);
  font-weight: 600;
  padding-top: 0.9rem;
  padding-bottom: 0.9rem;
  transition: background-color 0.15s ease, color 0.15s ease, transform 0.15s ease;
}

.top-menu-card__link:hover,
.top-menu-card__link:focus {
  color: var(--top-card-accent-dark);
  background-color: var(--top-card-hover);
  transform: translateX(0.15rem);
}

.top-menu-card__link:focus-visible,
.top-menu-card__action-button:focus-visible {
  outline: 3px solid rgba(13, 59, 102, 0.24);
  outline-offset: -3px;
}

.top-menu-card__body .text-muted {
  color: #495057 !important;
}

.top-menu-card__action-button {
  color: var(--top-card-accent-dark);
  font-weight: 700;
}

.top-menu-card__action-button:hover,
.top-menu-card__action-button:focus {
  color: var(--top-card-accent);
}

/*
 * ナビゲーションバー
 * ブランド表示
 */

.navbar-brand {
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
  background-color: rgba(0, 0, 0, 0.25);
  box-shadow: inset -1px 0 0 rgba(0, 0, 0, 0.25);
}

.navbar .form-control {
  padding: 0.75rem 1rem;
}

/*
 * admin / facility / serving 共通レイアウトの文字サイズを拡大
 * Bootstrap の固定サイズ指定を上書きし、共通レイアウト配下のみ従来比 2 倍で表示する
 */

.admin-layout,
.facility-layout,
.serving-layout {
  font-size: 200%;
}

.admin-layout .table,
.admin-layout .form-control,
.admin-layout .form-select,
.admin-layout .form-label,
.admin-layout .form-check-label,
.admin-layout .btn,
.admin-layout .page-link,
.admin-layout .nav-link,
.admin-layout .dropdown-item,
.admin-layout .list-group-item,
.admin-layout .card-header,
.admin-layout .card-body,
.admin-layout .alert,
.admin-layout .badge,
.admin-layout .navbar-brand,
.admin-layout .offcanvas-title,
.admin-layout .form-text,
.facility-layout .table,
.facility-layout .form-control,
.facility-layout .form-select,
.facility-layout .form-label,
.facility-layout .form-check-label,
.facility-layout .btn,
.facility-layout .page-link,
.facility-layout .nav-link,
.facility-layout .dropdown-item,
.facility-layout .list-group-item,
.facility-layout .card-header,
.facility-layout .card-body,
.facility-layout .alert,
.facility-layout .badge,
.facility-layout .navbar-brand,
.facility-layout .offcanvas-title,
.facility-layout .form-text,
.serving-layout .table,
.serving-layout .form-control,
.serving-layout .form-select,
.serving-layout .form-label,
.serving-layout .form-check-label,
.serving-layout .btn,
.serving-layout .page-link,
.serving-layout .nav-link,
.serving-layout .dropdown-item,
.serving-layout .list-group-item,
.serving-layout .card-header,
.serving-layout .card-body,
.serving-layout .alert,
.serving-layout .badge,
.serving-layout .navbar-brand,
.serving-layout .offcanvas-title,
.serving-layout .form-text {
  font-size: inherit !important;
}

.admin-layout .btn-sm,
.admin-layout .form-control-sm,
.admin-layout .form-select-sm,
.admin-layout .small,
.admin-layout small,
.admin-layout .sidebar-heading,
.facility-layout .btn-sm,
.facility-layout .form-control-sm,
.facility-layout .form-select-sm,
.facility-layout .small,
.facility-layout small,
.facility-layout .sidebar-heading,
.serving-layout .btn-sm,
.serving-layout .form-control-sm,
.serving-layout .form-select-sm,
.serving-layout .small,
.serving-layout small,
.serving-layout .sidebar-heading {
  font-size: 0.875em !important;
}

.admin-layout .h1,
.admin-layout h1,
.facility-layout .h1,
.facility-layout h1,
.serving-layout .h1,
.serving-layout h1 {
  font-size: 2em !important;
}

.admin-layout .h2,
.admin-layout h2,
.facility-layout .h2,
.facility-layout h2,
.serving-layout .h2,
.serving-layout h2 {
  font-size: 1.5em !important;
}

.admin-layout .h3,
.admin-layout h3,
.facility-layout .h3,
.facility-layout h3,
.serving-layout .h3,
.serving-layout h3 {
  font-size: 1.25em !important;
}

.admin-layout .h4,
.admin-layout h4,
.facility-layout .h4,
.facility-layout h4,
.serving-layout .h4,
.serving-layout h4 {
  font-size: 1.125em !important;
}

.admin-layout .h5,
.admin-layout h5,
.facility-layout .h5,
.facility-layout h5,
.serving-layout .h5,
.serving-layout h5 {
  font-size: 1em !important;
}

.admin-layout .h6,
.admin-layout h6,
.facility-layout .h6,
.facility-layout h6,
.serving-layout .h6,
.serving-layout h6 {
  font-size: 0.875em !important;
}

.serving-layout .serving-platings .platings-breakdown-table th,
.serving-layout .serving-platings .platings-breakdown-table td,
.serving-layout .serving-platings .platings-breakdown-table .fw-semibold,
.serving-layout .serving-platings .platings-breakdown-table td:last-child {
  font-size: 3rem;
}

/* ヘッダーメニューのマニュアル導線 */
.manual-navigation-link {
  color: inherit;
  line-height: 1;
  min-height: 2rem;
  min-width: 2rem;
}

.manual-navigation-link:hover,
.manual-navigation-link:focus {
  color: inherit;
  opacity: 0.8;
  text-decoration: none;
}

.manual-navigation-link:focus-visible {
  border-radius: 999px;
  outline: 2px solid currentColor;
  outline-offset: 2px;
}

.manual-navigation-link-content {
  align-items: center;
  column-gap: 0.35rem;
  display: inline-flex;
}

.manual-navigation-link-icon {
  flex-shrink: 0;
  height: 1em;
  width: 1em;
}

.manual-navigation-link-label {
  line-height: 1.2;
}
