/* 医療連携システム 共通スタイル - イメージカラー：青（メニュー画面は画像1配色で統一） */
:root {
  /* 青系パレット（イメージカラー） */
  --sys-blue-900: #1e3a5f;
  --sys-blue-800: #1e40af;
  --sys-blue-700: #2563eb;
  --sys-blue-600: #2c5282;
  --sys-blue-500: #3b82f6;
  --sys-blue-400: #60a5fa;
  --sys-blue-100: #dbeafe;
  --sys-blue-50: #eff6ff;
  /* 画像1：メニュー用ネイビー・背景 */
  --sys-navy: #264A78;
  --sys-page-bg: #F8FCFF;
  --sys-column-title-bg: #F0F0F0;
  /* システム用変数 */
  --sys-header-bg: var(--sys-navy);
  --sys-header-text: #fff;
  --sys-accent: var(--sys-navy);
  --sys-accent-light: var(--sys-blue-600);
  --sys-breadcrumb-bg: var(--sys-blue-50);
  --sys-content-bg: var(--sys-page-bg);
  --sys-card-bg: #fff;
  --sys-card-shadow: 0 2px 12px rgba(38, 74, 120, 0.08);
  --sys-border: #bfdbfe;
  --sys-table-header: var(--sys-blue-800);
  --sys-required: #b91c1c;
  /* 固定ヘッダー高さ（メイン領域の上余白に使用） */
  --sys-header-height: 56px;
  /* 編集不可フィールド用 */
  --sys-readonly-bg: #e9ecef;
  --sys-readonly-border: #dee2e6;
  --sys-readonly-text: #495057;
  /* 検索欄：項目ラベルの文字サイズ（一括調整用） */
  --search-label-font-size: 0.8rem;
}

body {
  font-family: 'Noto Sans JP', sans-serif;
  background: var(--sys-content-bg);
  color: #334155;
  margin: 0;
  padding: 0;
}

/* 編集不可（readonly / disabled）の入力欄：グレー背景で視覚的に区別 */
.sys-main input[readonly],
.sys-main textarea[readonly],
.sys-main input:disabled,
.sys-main select:disabled,
.sys-main .form-control[readonly],
.sys-main .form-control.bg-light[readonly] {
  background-color: var(--sys-readonly-bg) !important;
  border-color: var(--sys-readonly-border);
  color: var(--sys-readonly-text);
  cursor: not-allowed;
}
.sys-main select:disabled {
  cursor: not-allowed;
}

/* 固定ヘッダーがある画面ではメインをヘッダー下に表示 */
body:has(.app-header.fixed-top) {
  padding-top: var(--sys-header-height);
}

/* システムヘッダー */
.app-header {
  background: var(--sys-header-bg);
  color: var(--sys-header-text);
  box-shadow: 0 2px 8px rgba(0,0,0,.15);
}
.app-header .navbar-brand {
  font-weight: 700;
  color: var(--sys-header-text) !important;
  font-size: 1.1rem;
}
.app-header .nav-link {
  color: rgba(255,255,255,.92) !important;
}
.app-header .nav-link:hover {
  color: #fff !important;
}
.app-header .navbar-text {
  color: rgba(255,255,255,.92) !important;
  font-size: 0.9rem;
}
.app-header .btn-outline-secondary {
  border-color: #fff;
  background: #fff;
  color: var(--sys-navy);
}
.app-header .btn-outline-secondary:hover {
  background: rgba(255,255,255,.9);
  color: var(--sys-navy);
  border-color: #fff;
}

/* パンくず・画面タイトルバー */
.sys-breadcrumb-bar {
  background: var(--sys-breadcrumb-bg);
  border-bottom: 1px solid var(--sys-border);
  padding: 0.5rem 1rem;
}
.sys-breadcrumb-bar .breadcrumb {
  margin-bottom: 0;
  font-size: 0.875rem;
}
.sys-breadcrumb-bar .breadcrumb-item a {
  color: var(--sys-accent);
  text-decoration: none;
}
.sys-breadcrumb-bar .breadcrumb-item a:hover {
  text-decoration: underline;
}

/* メインコンテンツエリア */
.sys-main {
  padding: 1.25rem;
}
.sys-page-title {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--sys-accent);
  border-bottom: 3px solid var(--sys-accent-light);
  padding-bottom: 0.5rem;
  margin-bottom: 1rem;
}

/* カード（業務ブロック） */
.sys-card,
.content-card {
  background: var(--sys-card-bg);
  border-radius: 8px;
  box-shadow: var(--sys-card-shadow);
  border: 1px solid rgba(0,0,0,.06);
  margin-bottom: 1rem;
  overflow: hidden;
}
.sys-card-title {
  background: var(--sys-blue-100);
  border-bottom: 1px solid var(--sys-border);
  padding: 0.5rem 1rem;
  font-weight: 600;
  font-size: 0.95rem;
  color: var(--sys-accent);
}
.sys-card-body {
  padding: 1rem;
}

/* セクション番号付き（書類風） */
.sys-section-num {
  display: inline-block;
  width: 1.75rem;
  height: 1.75rem;
  line-height: 1.75rem;
  text-align: center;
  background: var(--sys-accent);
  color: #fff;
  font-size: 0.8rem;
  font-weight: 700;
  border-radius: 4px;
  margin-right: 0.5rem;
}

/* テーブル（システム一覧風） */
.sys-table,
.table.sys-table {
  margin-bottom: 0;
}
.sys-table thead th,
.table.sys-table thead th {
  background: var(--sys-table-header) !important;
  color: #fff !important;
  font-weight: 600;
  font-size: 0.8rem;
  border-color: var(--sys-table-header);
  padding: 0.3rem 0.65rem; /* 表ヘッダーセルの余白（上下 左右） */
}
/* マスタ一覧共通：行の高さ・文字サイズを統一（事業所マスタに合わせる） */
.sys-table td,
.table.sys-table td {
  padding: 0.3rem 0.65rem; /* 表データセルの余白（上下 左右） */
  font-size: 0.8rem;
}
.sys-table tbody tr:hover,
.table.sys-table tbody tr:hover {
  background-color: var(--sys-blue-50);
}

/* 表ははみ出し可。表自体にスクロールバーは持たせず、画面全体のスクロールで見る */
.table-scroll {
  display: block;
  width: 100%;
  overflow-x: visible;
  overflow-y: visible;
}
/* 事業所一覧：表を画面左端から表示（右の突き抜けと同じ要領で左端まで引き出す） */
.sys-main .table-scroll.table-from-edge {
  width: 100vw;
  max-width: none;
  margin-left: calc(-50vw + 50%);
  box-sizing: border-box;
  padding-left: 1rem;   /* 左余白（0.5rem / 1.5rem など好みで） */
}
/* 表は内容幅のまま伸ばす（min-width を有効にすると画面幅まで引き伸ばす＝列数が少ない表で余白が不自然になりやすい） */
.table-scroll .sys-table,
.table-scroll .table.sys-table,
.table-scroll .flatly-table-style {
  width: max-content !important;
  min-width: 0%;/* 100% = 画面幅まで引き伸ばす */
  table-layout: auto;
  border: 1px solid #ddd;
}
.table-scroll .sys-table td,
.table-scroll .table.sys-table td,
.flatly-table-style td {
  white-space: nowrap;
  border: 1px solid #ddd;
}
.flatly-table-style th {
  white-space: nowrap;
  border: 1px solid #666;
}
/* 事業所一覧（統合列）：セル内改行・長文折り返し */
.office-list-combined td {
  white-space: normal;
  word-break: break-word;
  font-size: 0.8rem;   /* 文字サイズ変更、0.9rem や 1rem で大きくなる */
}

/* マスタ一覧共通：行選択チェックボックスサイズを統一 */
.sys-table .form-check-input.row-check {
  width: 1em;
  height: 1em;
}
/* マスタ一覧共通：印列（チェック列）の幅を統一 */
.sys-table th.col-check,
.sys-table td.col-check,
.table.sys-table th.col-check,
.table.sys-table td.col-check {
  width: 2em;
  min-width: 2em;
  max-width: 2em;
  padding-left: 0.1rem;
  padding-right: 0.1rem;
}
/* ヘッダーとして縦にも固定する（参考：disp_search_schlist / style.css .sticky-header th） */
.sticky-header th {
  position: sticky !important;
  top: 0;
  z-index: 2;
  white-space: nowrap;
  background-color: var(--sys-table-header) !important;
  color: #fff !important;
  box-shadow: 0 1px 0 0 var(--sys-table-header);
}
/* 固定ナビがある画面では表ヘッダーをナビ直下に張り付かせる */
body:has(.app-header.fixed-top) .sticky-header th {
  top: var(--sys-header-height);
}
/* ライト系（参考の #f8f9fa） */
.sticky-header.table-light th {
  background-color: #f8f9fa !important;
  color: #212529 !important;
  box-shadow: 0 1px 0 0 #dee2e6;
}

/* マスタ登録・編集画面：一覧表と同じ文字サイズ（0.8rem）に統一 */
.sys-master-edit .form-label,
.sys-master-edit .form-control,
.sys-master-edit .form-select,
.sys-master-edit .form-check-label,
.sys-master-edit textarea.form-control {
  font-size: 0.8rem;
}
/* マスタ・編集画面：入力欄の補足文（ラベルと同じ 0.8rem で統一） */
.sys-master-edit .sys-edit-hint {
  font-size: 0.8rem;
  color: #6c757d;
}

/* コンボボックス用：リストだけ角ばせる（入力欄は他と同様に角丸のまま）、ホバーは青＋白文字 */
.sys-master-edit .sys-combo-list {
  font-size: 0.8rem;
  padding: 0.15rem 0;
  border: 1px solid #ced4da;
  border-radius: 0;
  background-color: #fff;
  box-shadow: none;
}
.sys-master-edit .sys-combo-list .dropdown-item {
  font-size: 0.8rem;
  padding-top: 0.2rem;
  padding-bottom: 0.2rem;
  padding-left: 0.5rem;
}
.sys-master-edit .sys-combo-list .dropdown-item:hover {
  background-color: #1967d2;
  color: #fff;
}

/* 編集画面：表形式レイアウト（ラベル右寄せ・入力左寄せ） */
.sys-master-edit-table {
  table-layout: auto;
  width: 100%;
}

/* 2列の表（左=ラベル、右=入力。表として枠線を表示）
 * 詳細度を高くして .sys-master-edit-table の後続ルールに負けないようにする */
.sys-master-edit-table.sys-master-edit-table-2col {
  table-layout: auto;
  width: 100%;
  border-collapse: collapse;
}
/* 左列は内容（一番長いラベル）に合わせて幅を自動調整 */
.sys-master-edit-table.sys-master-edit-table-2col col.sys-edit-col-label {
  width: 1%;
}
.sys-master-edit-table.sys-master-edit-table-2col col.sys-edit-col-input {
  width: auto;
}
.sys-master-edit-table.sys-master-edit-table-2col tbody tr > th:first-child {
  width: 1%;
  min-width: 0;
  box-sizing: border-box;
  white-space: nowrap;
}
/* 左列：背景色・縦線・余白・左揃え */
.sys-master-edit-table.sys-master-edit-table-2col .sys-edit-th {
  width: 1%;
  min-width: 0;
  white-space: nowrap;
  padding: 0.5rem 1rem 0.5rem 1rem;
  background-color: #f0f4f8;
  border-right: 2px solid #dee2e6;
  font-weight: 400;
  font-size: 0.8rem;
  text-align: left;
}
/* アンケート：あり・過去あり時に出る詳細行の名前列のみ色を変え、疾患名と区別 */
.sys-master-edit-table.sys-master-edit-table-2col tbody.enquete-detail .sys-edit-th {
  background-color: #e4e8ec;
}
/* 右列：縦線と入力欄の間に少し隙間 */
.sys-master-edit-table.sys-master-edit-table-2col td {
  padding-left: 0.75rem;
}
.sys-master-edit-table.sys-master-edit-table-2col .sys-edit-td-inputs .form-control,
.sys-master-edit-table.sys-master-edit-table-2col .sys-edit-td-inputs .form-select {
  vertical-align: middle;
}
/* マスタ・編集画面：入力欄の幅は各画面の style（width/max-width）で指定。全画面でウィンドウ幅が狭いときは欄が縮むように .sys-main の min-width を上書き */
.sys-master-edit-table td .form-control,
.sys-master-edit-table td .form-select {
  min-width: 0;
}

/* 1列目（先頭ラベル）の幅を固定（多列テーブル用） */
.sys-master-edit-table col.sys-edit-col-label {
  width: 8em;
}
.sys-master-edit-table tbody tr > th:first-child {
  width: 8em;
  min-width: 8em;
  box-sizing: border-box;
}
.sys-master-edit-table .sys-edit-th {
  width: 1%;
  white-space: nowrap;
  padding-right: 0.75rem;
  font-weight: 400;
  font-size: 0.8rem;
}
/* 必須項目のラベルのみ太字（表形式） */
.sys-master-edit-table .sys-edit-th.sys-edit-th-required {
  font-weight: 700;
}
.sys-master-edit-table td {
  padding: 0.25rem 0.5rem 0.25rem 0;
  vertical-align: middle;
}
.sys-master-edit-table .sys-edit-th:not(:first-child) {
  padding-left: 1rem;
}
/* 営業・TEL/FAX/メール行：2列目以降だけ間隔を詰める（1列目は通常パディングで先頭を揃える） */
.sys-master-edit-table tr.sys-edit-row-compact .sys-edit-th,
.sys-master-edit-table tr.sys-edit-row-compact td {
  padding-left: 0.35rem;
  padding-right: 0.35rem;
}
.sys-master-edit-table tr.sys-edit-row-compact .sys-edit-th:first-child {
  padding-right: 0.75rem;
}
.sys-master-edit-table tr.sys-edit-row-compact td:first-child {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.sys-master-edit-table tr.sys-edit-row-compact .sys-edit-th:not(:first-child) {
  padding-left: 0.5rem;
}

/* 編集画面：1つ目ラベル幅を固定（表形式でない編集画面用） */
.sys-master-edit .sys-edit-label-col {
  width: 6em;
  min-width: 6em;
  flex: 0 0 6em;
}
.sys-master-edit .sys-edit-label-col-2 {
  width: 3.5em;
  min-width: 3.5em;
  flex: 0 0 3.5em;
}

/* 必須マーク */
.sys-required {
  color: var(--sys-required);
  margin-left: 2px;
}

/* 戻るボタン：flex内で伸びないよう幅は内容に合わせる */
.btn-back,
.sys-btn-back {
  background: var(--sys-blue-600);
  color: #fff;
  border: none;
  width: auto;
  min-width: auto;
  align-self: flex-start;
}
.btn-back:hover,
.sys-btn-back:hover {
  background: var(--sys-blue-800);
  color: #fff;
}
.sys-btn-primary {
  background: var(--sys-accent-light);
  color: #fff;
  border: none;
}
.sys-btn-primary:hover {
  background: var(--sys-accent);
  color: #fff;
}

/* ホーム用：グループ見出し */
.sys-grp {
  font-weight: 700;
  margin-top: 1rem;
  margin-bottom: 0.5rem;
  color: var(--sys-accent);
  font-size: 0.95rem;
}
.sys-grp::before {
  content: "■ ";
  color: var(--sys-accent-light);
}

/* 暫定バッジ（青系で抑えつつ区別） */
.badge-provisional {
  background-color: var(--sys-blue-500);
  color: #fff;
  font-size: 0.7rem;
  opacity: 0.9;
}

/* 全画面共通：common.css を読み込んだ画面で table の thead を青に */
body .table thead th {
  background: var(--sys-table-header) !important;
  color: #fff !important;
  border-color: var(--sys-table-header);
}

/* ========== 参照資料準拠：資料が画面になった書類風レイアウト ========== */
.doc-ref-banner {
  background: #fff;
  border: 2px solid var(--sys-blue-500);
  border-radius: 6px;
  padding: 0.6rem 1rem;
  margin-bottom: 1.25rem;
  font-size: 0.95rem;
  color: var(--sys-accent);
  font-weight: 600;
}
.doc-ref-banner .ref-name { color: var(--sys-blue-600); }
.doc-form {
  background: #fff;
  border: 1px solid #cbd5e1;
  border-radius: 4px;
  box-shadow: 0 1px 3px rgba(0,0,0,.06);
  margin-bottom: 1rem;
}
.doc-form .doc-section-title {
  background: var(--sys-blue-100);
  border-bottom: 1px solid var(--sys-border);
  padding: 0.5rem 1rem;
  font-weight: 700;
  font-size: 1rem;
  color: var(--sys-accent);
}
.doc-form .doc-section-num {
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
  line-height: 1.5rem;
  text-align: center;
  background: var(--sys-accent);
  color: #fff;
  font-size: 0.8rem;
  border-radius: 3px;
  margin-right: 0.5rem;
}
.doc-form .doc-section-body { padding: 1rem 1.25rem; }
.doc-graph-placeholder {
  background: #f8fafc;
  border: 1px dashed #94a3b8;
  border-radius: 6px;
  padding: 2rem;
  text-align: center;
  color: #64748b;
  font-size: 0.9rem;
  margin-bottom: 1rem;
}

/* ========== 資料そのまま：1枚の書類として表示 ========== */
.doc-sheet {
  max-width: 210mm;
  min-height: 297mm;
  margin: 0 auto 2rem;
  background: #fff;
  box-shadow: 0 2px 12px rgba(0,0,0,.12);
  padding: 2rem;
  box-sizing: border-box;
}
.doc-sheet .doc-sheet-title {
  font-size: 1.25rem;
  font-weight: 700;
  text-align: center;
  border-bottom: 2px solid #333;
  padding-bottom: 0.5rem;
  margin-bottom: 1.5rem;
}
.doc-sheet .doc-block {
  border-bottom: 1px solid #333;
  padding: 1rem 0;
  margin-bottom: 0;
}
.doc-sheet .doc-block:last-child { border-bottom: none; }
.doc-sheet .doc-block-title {
  font-weight: 700;
  font-size: 0.95rem;
  margin-bottom: 0.5rem;
  padding-bottom: 0.25rem;
}
.doc-sheet .form-control,
.doc-sheet .form-select { border-radius: 0; border-color: #333; }
.doc-sheet .form-control:focus { box-shadow: none; border-color: var(--sys-blue-500); }
.doc-sheet table { width: 100%; border-collapse: collapse; }
.doc-sheet table th,
.doc-sheet table td { border: 1px solid #333; padding: 0.4rem 0.5rem; font-size: 0.875rem; }
.doc-sheet table th { background: #f0f0f0; font-weight: 600; text-align: center; }
.doc-sheet .form-label { font-weight: 600; margin-bottom: 0.25rem; }
.doc-sheet .ref-note { font-size: 0.75rem; color: #666; margin-bottom: 1rem; }
/* シート上（画面内）の参照注記 */
.ref-note { font-size: 0.85rem; color: #64748b; margin-bottom: 0.75rem; }

/* ========== 入力枠：実務で見切れ・入力しづらくならない幅を確保 ========== */
/* 年（4桁） */
.doc-sheet input.input-year,
.sys-main input.input-year { min-width: 5rem; }
/* 月・日（1～2桁） */
.doc-sheet input.input-month,
.doc-sheet input.input-day,
.sys-main input.input-month,
.sys-main input.input-day { min-width: 2.75rem; }
/* 4桁までの数値（年齢・点数等） */
.doc-sheet input.input-num-4,
.sys-main input.input-num-4 { min-width: 4.5rem; }
/* 電話・FAX（例 03-1234-5678、06-6180-5230） */
input.input-tel,
input[type="tel"] { min-width: 11rem; }
/* 氏名・施設名など（長い名称が入る欄） */
.sys-main .form-control.input-name,
.doc-sheet .form-control.input-name { min-width: 12rem; }
/* 表内の小さい入力：血圧 118/76・時間 22:30・心拍・体温等が切れないように */
.doc-sheet table .form-control-sm,
.report-table .form-control-sm,
.record-table .form-control-sm { min-width: 4.5rem; max-width: 100%; }
.report-table .form-control-sm[placeholder*="mmHg"],
.record-table .form-control-sm[placeholder*="mmHg"] { min-width: 5.5rem; }
.report-table input[type="number"].form-control-sm,
.record-table input[type="number"].form-control-sm { min-width: 4rem; }
.doc-sheet table .form-select.form-select-sm,
.report-table .form-select.form-select-sm,
.record-table .form-select.form-select-sm { min-width: 5rem; max-width: 100%; }
/* 算定表：点数4桁（1000点等） */
.calc-table input[type="number"] { min-width: 4rem; text-align: center; max-width: 100%; }
/* 表：施設名・利用者名列が潰れないように */
.period-table th:nth-child(1),
.period-table td:nth-child(1) { min-width: 7rem; }
.period-table th:nth-child(2),
.period-table td:nth-child(2) { min-width: 6rem; }
/* 日付列：YYYY-MM-DD 表示 */
.period-table td:nth-child(3),
.period-table td:nth-child(4) { min-width: 5.5rem; }
/* 検索欄：入力しやすい幅 */
.sys-main input[name="search"],
/* 検索欄：一覧の検索エリアは .search-panel で統一（入力太字・ラベル文字サイズ） */
.sys-main .search-panel input[type="text"] { font-weight: bold; }
.sys-main .search-panel .form-label { font-size: var(--search-label-font-size); }
/* 検索欄の○○コード系：4〜5桁程度のため幅を狭く。列も内容幅に縮め空白を防ぐ（共通・各PHPの修正不要） */
.sys-main .search-panel input[name$="_code"] { max-width: 5.5em; }
.sys-main .search-panel .row > div:has(> input[name$="_code"]) {
  flex: 0 0 auto;
  width: auto;
  max-width: none;
}
/* 対象月・日付（YYYY-MM、YYYY-MM-DD）が切れないように */
input[type="month"].form-control { min-width: 10rem; }
input[type="date"].form-control { min-width: 10rem; }
input[type="time"].form-control { min-width: 6rem; }
/* 事業所・利用者など選択肢の長い select */
.sys-main .form-select { min-width: 10rem; }
/* 期間・対象月など長い選択肢の select */
.sys-main select.form-select[name="period"] { min-width: 18rem; }
/* テキストエリア・住所は最小高さと幅 */
.sys-main textarea.form-control,
.doc-sheet textarea.form-control { min-height: 4rem; }
.doc-sheet .form-control[placeholder*="住所"],
.sys-main .form-control[placeholder*="住所"] { min-width: 18rem; }
/* 名簿・一覧：利用者名・施設名列が潰れないように */
.hub-table th:first-child,
.hub-table td:first-child { min-width: 8rem; }
/* マスタ一覧の列幅は各画面の th の style="width:..." で調整する（min-width は付けない） */

/* ========== 進捗表：視覚的にわかりやすい状態表示 ========== */
.progress-table { border-collapse: collapse; }
.progress-table th { white-space: nowrap; }
.progress-table td { vertical-align: middle; }
.progress-table .cell-status { text-align: center; min-width: 4rem; }
.progress-table .status-done { background: #dcfce7; color: #166534; font-weight: 600; border-radius: 6px; padding: 0.35rem 0.6rem; display: inline-block; min-width: 2.5rem; }
.progress-table .status-pending { background: #fef3c7; color: #92400e; font-weight: 600; border-radius: 6px; padding: 0.35rem 0.6rem; display: inline-block; min-width: 2.5rem; }
.progress-table .status-link { text-decoration: none; color: inherit; }
.progress-table .status-link:hover { opacity: 0.9; text-decoration: underline; }
.progress-table .user-name { font-weight: 600; min-width: 8rem; }
.progress-legend { display: flex; flex-wrap: wrap; gap: 1rem; margin-bottom: 1rem; font-size: 0.875rem; }
.progress-legend span { display: inline-flex; align-items: center; gap: 0.35rem; }
.progress-legend .legend-done { color: #166534; }
.progress-legend .legend-pending { color: #92400e; }
.progress-table tbody tr:hover { background: var(--sys-blue-50); }

/* ========== マスタ一覧・検索ブロック共通デザイン（全画面統一） ========== */
.master-search-box {
  background: #fff;
  border-radius: 10px;
  border: 1px solid #e0f2fe;
  box-shadow: 0 2px 12px rgba(30, 58, 95, 0.08), 0 0 0 1px rgba(14, 165, 233, 0.06);
  padding: 1rem 1.25rem;
  margin-bottom: 1.25rem;
}
.master-search-box .form-label { font-weight: 700; margin-bottom: 0.25rem; color: #334155; }
.master-search-box .form-control { min-width: 12rem; border-radius: 8px; border-color: #e2e8f0; }
.master-search-box .form-control::placeholder { color: #94a3b8; }
.master-search-box .btn-primary { font-weight: 600; border-radius: 8px; background: var(--sys-blue-700); border: none; }
.master-search-box .btn-outline-secondary { border-radius: 8px; border-color: #cbd5e1; color: #475569; }
.master-page-title { font-size: 1.5rem; font-weight: 700; color: var(--sys-accent); margin-bottom: 0; }
.master-page-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; flex-wrap: wrap; gap: 0.75rem; }
.master-page-header .btn-primary { font-weight: 600; }
.master-search-box .btn-primary { font-weight: 600; }
.master-search-box .btn-outline-secondary { border-color: var(--sys-border); }

/* ========== ホーム画面（メニュー）共通レイアウト - ロール別メニューを集約 ========== */
/* 全画面1画面収め・ヘッダー下メイン（height は 100vh で html に依存しない） */
body.page-home { min-height: 100vh; height: 100vh; overflow: hidden; margin: 0; display: flex; flex-direction: column; }
body.page-home .app-header { flex-shrink: 0; }
body.page-home .menu-main { flex: 1; min-height: 0; display: flex; flex-direction: column; background: var(--sys-page-bg); }

/* 旧4列ダッシュボード（未使用時も参照用に保持） */
.menu-dashboard { flex: 1; min-height: 0; display: flex; flex-direction: column; padding: 0.75rem; background: var(--sys-page-bg); }
.menu-dashboard .dashboard-row { flex: 1; min-height: 0; display: flex; gap: 0.75rem; }
.menu-column { flex: 1; min-width: 0; display: flex; flex-direction: column; background: #fff; border: 1px solid #e2e8f0; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); overflow: hidden; }
.menu-column-title { flex-shrink: 0; padding: 0.5rem 0.75rem; font-weight: 700; font-size: 0.9rem; color: #333; background: var(--sys-column-title-bg); border-bottom: 1px solid #e2e8f0; }
.menu-column-body { flex: 1; min-height: 0; overflow-y: auto; padding: 0.5rem; display: flex; flex-direction: column; gap: 0.4rem; }
.menu-btn { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 2.5rem; padding: 0.5rem 0.75rem; text-align: center; font-size: 0.8rem; font-weight: 600; color: var(--sys-accent); background: #fff; border: 2px solid var(--sys-accent); border-radius: 8px; text-decoration: none; transition: background .15s, border-color .15s, color .15s; }
.menu-btn:hover { background: var(--sys-blue-50); border-color: var(--sys-accent); color: var(--sys-accent); }
.menu-footer { flex-shrink: 0; padding: 0.5rem 1rem; font-size: 0.8rem; color: #475569; background: var(--sys-column-title-bg); border-top: 1px solid #e2e8f0; display: flex; align-items: center; justify-content: center; min-height: 2.5rem; }
.menu-footer .desc-text, .menu-footer .placeholder { margin: 0; text-align: center; }

/* カテゴリボタン共通スタイル（全ロール共通・やや大きめ） */
.nurse-cat-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 0.6rem 0.55rem;
  background: #fff;
  color: var(--sys-accent);
  border: 2px solid var(--sys-accent);
  border-radius: 8px;
  text-decoration: none;
  font-weight: 700;
  font-size: 0.85rem;
  line-height: 1.25;
  transition: background .15s, border-color .15s, color .15s;
}
.nurse-cat-btn:hover {
  background: var(--sys-blue-50);
  color: var(--sys-accent);
  border-color: var(--sys-accent);
}
.nurse-cat-btn .bi {
  font-size: 1.4rem;
  margin-bottom: 0.25rem;
  color: var(--sys-accent);
}

/* 4大ボタン（事業所登録・利用者登録・看護記録・医師面談） */
.menu-big-row { display: flex; gap: 0.75rem; margin-bottom: 0.75rem; flex-shrink: 0; }
/* 2段目など1つだけのボタン：事業所登録などと同じ幅にそろえる */
.menu-big-row .menu-big-btn:only-child { max-width: calc((100% - 0.75rem * 3) / 4); }
.menu-big-btn {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 1rem 0.5rem;
  background: #fff;
  color: var(--sys-accent);
  border: 2px solid var(--sys-accent);
  border-radius: 10px;
  font-weight: 700;
  font-size: 0.95rem;
  line-height: 1.3;
  cursor: pointer;
  transition: background .15s, border-color .15s, color .15s, box-shadow .15s;
}
.menu-big-btn:hover { background: var(--sys-blue-50); }
.menu-big-btn.active,
.menu-big-btn[aria-expanded="true"] { background: var(--sys-blue-50); box-shadow: 0 0 0 2px var(--sys-accent-light); }
.menu-big-btn .bi { font-size: 2.5rem; margin-bottom: 0.35rem; color: var(--sys-accent); flex-shrink: 0; }
.menu-big-btn img { height: 2.5rem; width: auto; flex-shrink: 0; margin-bottom: 0.35rem; }
.menu-big-btn span { text-align: center; }
a.menu-big-btn { text-decoration: none; }

/* 大ボタン直下：サブパネル（クリックで表示） */
.menu-sub-wrap { margin-bottom: 0.75rem; flex-shrink: 0; min-height: 2.5rem; }
.menu-sub-panel {
  display: none;
  padding: 0.5rem 0.75rem;
  background: #fff;
  border: 1px solid var(--sys-border);
  border-radius: 8px;
}
.menu-sub-panel.menu-sub-panel-visible { display: block; }
.menu-sub-list { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.menu-sub-btn {
  display: inline-flex;
  align-items: center;
  padding: 0.35rem 0.6rem;
  background: #fff;
  color: var(--sys-accent);
  border: 2px solid var(--sys-accent);
  border-radius: 6px;
  font-size: 0.85rem;
  font-weight: 600;
  text-decoration: none;
  transition: background .15s, border-color .15s, color .15s;
}
.menu-sub-btn:hover { background: var(--sys-blue-50); color: var(--sys-accent); }
/* 現在ページ（リンクではない） */
.menu-sub-btn.active { cursor: default; background: var(--sys-blue-50); pointer-events: none; }
.menu-sub-btn .bi { font-size: 1rem; margin-right: 0.35rem; flex-shrink: 0; }
.menu-sub-btn img { height: 1rem; width: auto; margin-right: 0.35rem; flex-shrink: 0; vertical-align: middle; }

/* システム管理者・事業所・看護ステーション共通：マスター一覧（1つに集約） */
.home-admin, .home-nurse, .home-jigyosho { flex: 1; min-height: 0; display: flex; flex-direction: column; padding: 0.6rem 0.75rem; overflow: auto; background: var(--sys-page-bg); }
/* 小メニュー領域（大分類直下・マスタ固定より上） */
.home-admin .submenu-panel, .home-nurse .submenu-panel, .home-jigyosho .submenu-panel { margin-bottom: 0.5rem; padding: 0.5rem 0.75rem; background: #fff; border: 1px solid var(--sys-border); border-radius: 6px; }
.home-admin .submenu-panel .submenu-header, .home-nurse .submenu-panel .submenu-header, .home-jigyosho .submenu-panel .submenu-header { margin-bottom: 0.4rem; }
.home-admin .submenu-panel .submenu-title, .home-nurse .submenu-panel .submenu-title, .home-jigyosho .submenu-panel .submenu-title { font-size: 0.95rem; font-weight: 700; color: var(--sys-accent); }
.home-admin .submenu-panel .submenu-body a, .home-nurse .submenu-panel .submenu-body a, .home-jigyosho .submenu-panel .submenu-body a { display: block; padding: 0.25rem 0; font-size: 0.9rem; color: var(--sys-accent); text-decoration: none; }
.home-admin .submenu-panel .submenu-body a:hover, .home-nurse .submenu-panel .submenu-body a:hover, .home-jigyosho .submenu-panel .submenu-body a:hover { text-decoration: underline; }
.home-admin .nurse-master-section, .home-nurse .nurse-master-section, .home-jigyosho .nurse-master-section { margin-top: 0.25rem; flex: 1; min-height: 0; display: flex; flex-direction: column; overflow: hidden; }
.home-admin .nurse-master-section .master-head, .home-nurse .nurse-master-section .master-head, .home-jigyosho .nurse-master-section .master-head { display: flex; align-items: center; margin-bottom: 0.25rem; flex-shrink: 0; }
.home-admin .nurse-master-section .master-head .bi, .home-nurse .nurse-master-section .master-head .bi, .home-jigyosho .nurse-master-section .master-head .bi { font-size: 1.1rem; color: var(--sys-accent); margin-right: 0.4rem; }
.home-admin .nurse-master-section .master-head h2, .home-nurse .nurse-master-section .master-head h2, .home-jigyosho .nurse-master-section .master-head h2 { font-size: 1rem; font-weight: 700; color: var(--sys-accent); margin: 0; }
.home-admin .nurse-master-section .master-sub, .home-nurse .nurse-master-section .master-sub, .home-jigyosho .nurse-master-section .master-sub { font-size: 0.8rem; color: #6C757D; margin-bottom: 0.5rem; }
/* マスタ群：横幅は「訪問看護ステーションマスタ」が入る程度に制限 */
.home-admin .nurse-master-grid, .home-nurse .nurse-master-grid, .home-jigyosho .nurse-master-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(9.5rem, 10rem)); gap: 0.35rem; flex: 1; min-height: 0; align-content: start; justify-content: start; overflow: auto; }
@media (max-width: 768px) { .home-admin .nurse-master-grid, .home-nurse .nurse-master-grid, .home-jigyosho .nurse-master-grid { grid-template-columns: repeat(auto-fill, minmax(9rem, 9.5rem)); } }
.home-admin .master-menu-card, .home-nurse .master-menu-card, .home-jigyosho .master-menu-card { background: #fff; border: 1px solid var(--sys-border); border-radius: 5px; box-shadow: var(--sys-card-shadow); transition: box-shadow .15s, border-color .15s, background .15s; overflow: hidden; }
.home-admin .master-menu-card:hover, .home-nurse .master-menu-card:hover, .home-jigyosho .master-menu-card:hover { box-shadow: 0 4px 16px rgba(38,74,120,0.12); border-color: var(--sys-accent-light); }
/* マスタカードを大分類ボタン同様のリンクボタンにする（枠・ホバーを統一・コンパクト） */
.home-admin .master-menu-card.master-menu-card-btn, .home-nurse .master-menu-card.master-menu-card-btn, .home-jigyosho .master-menu-card.master-menu-card-btn { display: block; text-decoration: none; color: inherit; border: 2px solid var(--sys-accent); border-radius: 6px; }
.home-admin .master-menu-card.master-menu-card-btn:hover, .home-nurse .master-menu-card.master-menu-card-btn:hover, .home-jigyosho .master-menu-card.master-menu-card-btn:hover { background: var(--sys-blue-50); border-color: var(--sys-accent); box-shadow: 0 4px 16px rgba(38,74,120,0.12); }
.home-admin .master-menu-card .card-body, .home-nurse .master-menu-card .card-body, .home-jigyosho .master-menu-card .card-body { padding: 0.4rem 0.45rem; }
.home-admin .master-menu-card .icon-wrap, .home-nurse .master-menu-card .icon-wrap, .home-jigyosho .master-menu-card .icon-wrap { width: 1.5rem; height: 1.5rem; border-radius: 4px; font-size: 0.8rem; display: flex; align-items: center; justify-content: center; flex-shrink: 0; background: transparent !important; }
.home-admin .master-menu-card .icon-wrap img, .home-nurse .master-menu-card .icon-wrap img, .home-jigyosho .master-menu-card .icon-wrap img { width: 1.5rem; height: 1.5rem; object-fit: contain; }
.home-admin .master-menu-card .icon-wrap.bg-primary, .home-nurse .master-menu-card .icon-wrap.bg-primary, .home-jigyosho .master-menu-card .icon-wrap.bg-primary { background: #0D6EFD; color: #fff; }
.home-admin .master-menu-card .icon-wrap.bg-secondary, .home-nurse .master-menu-card .icon-wrap.bg-secondary, .home-jigyosho .master-menu-card .icon-wrap.bg-secondary { background: #6C757D; color: #fff; }
.home-admin .master-menu-card .icon-wrap.bg-danger, .home-nurse .master-menu-card .icon-wrap.bg-danger, .home-jigyosho .master-menu-card .icon-wrap.bg-danger { background: #DC3545; color: #fff; }
.home-admin .master-menu-card .icon-wrap.bg-success, .home-nurse .master-menu-card .icon-wrap.bg-success, .home-jigyosho .master-menu-card .icon-wrap.bg-success { background: #198754; color: #fff; }
.home-admin .master-menu-card .icon-wrap.bg-info, .home-nurse .master-menu-card .icon-wrap.bg-info, .home-jigyosho .master-menu-card .icon-wrap.bg-info { background: #0DCAF0; color: #fff; }
.home-admin .master-menu-card .icon-wrap.bg-warning, .home-nurse .master-menu-card .icon-wrap.bg-warning, .home-jigyosho .master-menu-card .icon-wrap.bg-warning { background: #FFC107; color: #fff; }
.home-admin .master-menu-card h3, .home-nurse .master-menu-card h3, .home-jigyosho .master-menu-card h3 { font-size: 0.78rem; font-weight: 700; color: #333; margin: 0; line-height: 1.25; }
.home-admin .master-menu-card .card-desc, .home-nurse .master-menu-card .card-desc, .home-jigyosho .master-menu-card .card-desc { font-size: 0.7rem; color: #6C757D; margin: 0.2rem 0 0.3rem; line-height: 1.25; }
.home-admin .master-menu-card .btn-open, .home-nurse .master-menu-card .btn-open, .home-jigyosho .master-menu-card .btn-open { font-weight: 600; font-size: 0.75rem; padding: 0.15rem 0.4rem; }

/* 医師用：左サイドバー（青ボタン4つ）＋右に1週間の予定表 */
.home-doctor { flex: 1; min-height: 0; display: flex; flex-direction: column; padding: 0.5rem 0.75rem; overflow: hidden; }
.home-doctor .menu-big-row { flex-shrink: 0; margin-bottom: 0.5rem; gap: 0.5rem; }
.home-doctor .menu-big-btn {
  padding: 0.45rem 0.6rem;
  font-size: 0.85rem;
  flex-direction: row;
  gap: 0.4rem;
  border-radius: 8px;
}
.home-doctor .menu-big-btn .bi { font-size: 1.15rem; margin-bottom: 0; }
.home-doctor .menu-big-btn span { text-align: left; }
.home-doctor .week-schedule-wrap { flex: 1; min-height: 0; }
.home-doctor .doctor-row { display: flex; gap: 0.75rem; flex: 1; min-height: 0; }
.home-doctor .doctor-sidebar { flex-shrink: 0; width: 11rem; display: flex; flex-direction: column; gap: 0.5rem; }
.home-doctor .doctor-sidebar .nurse-categories { display: flex; flex-direction: column; gap: 0.35rem; }
/* 医師サイドバー：アイコン＋文字のコンパクト横長（共通の縦並びスタイルを確実に上書き） */
.home-doctor .doctor-sidebar .nurse-cat-btn {
  flex: 0 0 auto !important;
  flex-direction: row !important;
  justify-content: flex-start;
  align-items: center;
  padding: 0.4rem 0.5rem;
  font-size: 0.8rem;
  font-weight: 700;
  min-height: 0;
}
.home-doctor .doctor-sidebar .nurse-cat-btn .bi {
  display: inline-block !important;
  font-size: 1rem;
  margin: 0 0.35rem 0 0 !important;
  color: var(--sys-accent);
  flex-shrink: 0;
}
.home-doctor .submenu-panel { margin-top: 0.25rem; padding: 0.4rem 0.6rem; background: #fff; border: 1px solid var(--sys-border); border-radius: 6px; }
.home-doctor .submenu-panel .submenu-header { margin-bottom: 0.3rem; }
.home-doctor .submenu-panel .submenu-title { font-size: 0.85rem; font-weight: 700; color: var(--sys-accent); }
.home-doctor .submenu-panel .submenu-body a { display: block; padding: 0.2rem 0; font-size: 0.8rem; color: var(--sys-accent); text-decoration: none; }
.home-doctor .submenu-panel .submenu-body a:hover { text-decoration: underline; }
.home-doctor .week-schedule-wrap { flex: 1; min-width: 0; display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--sys-border); border-radius: 6px; background: #fff; }
.home-doctor .week-schedule-title { flex-shrink: 0; padding: 0.5rem 0.75rem; font-size: 1rem; font-weight: 700; color: #fff; background: #166534; text-align: center; display: flex; align-items: center; justify-content: center; gap: 0.5rem; }
.home-doctor .week-schedule-table-wrap { flex: 1; min-height: 0; overflow: auto; }
.home-doctor .week-schedule-table { width: 100%; table-layout: fixed; border-collapse: collapse; font-size: 0.7rem; }
.home-doctor .week-schedule-table th { padding: 0.25rem 0.35rem; font-weight: 600; border: 1px solid #e2e8f0; background: var(--sys-blue-50); color: var(--sys-accent); }
.home-doctor .week-schedule-table th.day-sat { background: #e0f2fe; }
.home-doctor .week-schedule-table th.legend { background: #f8fafc; color: #475569; font-weight: 600; width: 10rem; }
.home-doctor .week-schedule-table td { padding: 0.15rem 0.3rem; border: 1px solid #e2e8f0; vertical-align: top; height: 1.4rem; font-size: 0.65rem; }
.home-doctor .week-schedule-table td.time-cell { width: 2.8rem; background: #f8fafc; color: #64748b; font-weight: 500; text-align: center; border-style: dotted; border-color: #e2e8f0; }
.home-doctor .week-schedule-table td.slot-cell { background: #fff; }
.home-doctor .week-schedule-table td.slot-unavailable { background: #fecaca; color: #991b1b; }
.home-doctor .week-schedule-table td.slot-reserved { background: #bfdbfe; color: #1e40af; }
.home-doctor .week-schedule-table td.slot-legend { background: #f8fafc; vertical-align: middle; font-size: 0.7rem; color: #475569; padding: 0.2rem 0.35rem; }
/* 5分刻みブロック（プレースホルダー用） */
.home-doctor .week-schedule-table td.schedule-block { padding: 0.2rem; font-size: 0.65rem; line-height: 1.25; color: #fff; }
.home-doctor .week-schedule-table td.schedule-block-a { background: #ea580c; color: #fff; }
.home-doctor .week-schedule-table td.schedule-block-b { background: #1e3a5f; color: #fff; }
.home-doctor .week-schedule-table td.schedule-block-c { background: #ca8a04; color: #fff; }
.home-doctor .week-schedule-table td.schedule-block-d { background: #be185d; color: #fff; }
.home-doctor .week-schedule-table td.schedule-block-ng { background: #1f2937; color: #fff; }
.home-doctor .schedule-cell-instruction { height: auto; min-height: 2.5rem; vertical-align: top; }
.home-doctor .schedule-instruction { font-size: 0.7rem; color: #333; margin-bottom: 0.2rem; }
.home-doctor .schedule-instruction-note { font-size: 0.6rem; color: #64748b; }
.home-doctor .legend-note { margin-bottom: 0.35rem; line-height: 1.3; }
.home-doctor .legend-item { display: inline-block; padding: 0.15rem 0.4rem; margin: 0.1rem 0.2rem 0.1rem 0; border-radius: 3px; font-size: 0.7rem; font-weight: 600; }
.home-doctor .legend-a { background: #ea580c; color: #fff; }
.home-doctor .legend-b { background: #1e3a5f; color: #fff; }
.home-doctor .legend-c { background: #ca8a04; color: #fff; }
.home-doctor .legend-d { background: #be185d; color: #fff; }
.home-doctor .legend-ng { background: #1f2937; color: #fff; }
