/* yakumemo — Phase 0 基盤整備
 * - すべてのリテラル色は :root の CSS 変数経由で参照する
 * - ステータスクラスは英語化 (.s-report-pending 等)
 * - 2 カラムシェル + サイドバーを追加
 * - 既存の見た目は維持 (デザイン刷新は Phase 1+ で実施)
 */

:root {
  /* カラーパレット (刷新版) */
  --color-primary:        #2A9B9B;
  --color-primary-dark:   #1F7F7F;
  --color-primary-light:  #E8F4F4;
  --color-navy:           #1E3A5F;
  --color-danger:         #D9534F;
  --color-danger-bg:      #FAE5E5;
  --color-danger-border:  #E5B5B5;
  --color-warning:        #E67E22;
  --color-warning-bg:     #FFF8F0;
  --color-warning-border: #F5D7A3;
  --color-warning-text:   #8B6008;
  --color-success:        #27AE60;
  --color-success-bg:     #D4EDDA;
  --color-success-text:   #1E7E34;
  --color-info:           #D6EFF7;
  --color-info-text:      #1F5A7F;
  --color-purple:         #534AB7;
  --color-text:           #333;
  --color-text-muted:     #666;
  --color-text-subtle:    #888;
  --color-text-faint:     #AAA;
  --color-border:         #E0E0E0;
  --color-border-light:   #EEE;
  --color-bg:             #FFFFFF;
  --color-bg-section:     #FAFAFA;
  --color-bg-muted:       #F8F8F8;

  /* フォントサイズ */
  --font-size-xs:   10px;
  --font-size-sm:   11px;
  --font-size-base: 13px;
  --font-size-md:   14px;
  --font-size-lg:   15px;
  --font-size-xl:   18px;
  --font-size-2xl:  20px;

  /* 角丸 */
  --radius-sm:   3px;
  --radius-md:   4px;
  --radius-lg:   6px;
  --radius-pill: 10px;

  /* スペーシング */
  --space-xs:  4px;
  --space-sm:  8px;
  --space-md:  12px;
  --space-lg:  16px;
  --space-xl:  20px;
  --space-2xl: 24px;

  /* サイドバー幅 */
  --sidebar-width: 180px;
}

*, *::before, *::after { box-sizing: border-box; }

body {
  font-family: system-ui, sans-serif;
  font-size: var(--font-size-md);
  margin: 0;
  background: #f5f5f5;
  color: #222;
}

/* ---- Phase 0: 2 カラムシェル ---- */
.app-shell {
  display: flex;
  min-height: 100vh;
}
.app-main {
  flex: 1;
  padding: var(--space-2xl) 28px;
  max-width: 1200px;
  margin: 0 auto;
  width: 100%;
}

/* ---- Phase 0: サイドバー ---- */
.sidebar {
  background: var(--color-primary-light);
  border-right: 0.5px solid #B0D8D8;
  padding: var(--space-lg) 0;
  width: var(--sidebar-width);
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
}
.sidebar-header {
  padding: 0 var(--space-lg) var(--space-xl);
  border-bottom: 0.5px solid #B0D8D8;
  margin-bottom: var(--space-md);
}
.sidebar-logo {
  font-weight: 500;
  font-size: 16px;
  color: var(--color-primary-dark);
}
.sidebar-nav {
  display: flex;
  flex-direction: column;
}
.sidebar-item {
  padding: 10px var(--space-lg);
  color: var(--color-primary-dark);
  text-decoration: none;
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  font-size: var(--font-size-base);
}
.sidebar-item:hover {
  background: rgba(255, 255, 255, 0.3);
}
.sidebar-item.active {
  background: var(--color-primary-dark);
  color: #fff;
  font-weight: 500;
}
.sidebar-item.disabled {
  color: var(--color-text-faint);
  cursor: not-allowed;
}
.sidebar-item-sub {
  font-size: 9px;
  color: var(--color-text-faint);
  margin-left: var(--space-xs);
}

/* ---- alert bar ---- */
.alert-bar {
  background: #fff3cd;
  border: 1px solid #ffc107;
  border-radius: var(--radius-md);
  padding: var(--space-sm) var(--space-md);
  margin-bottom: var(--space-md);
}
.alert-bar-header {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-sm);
}
.alert-icon  { font-size: 1.2rem; }
.alert-count-badge {
  display: inline-block;
  background: var(--color-danger);
  color: #fff;
  font-weight: bold;
  font-size: 12px;
  padding: 2px 10px;
  border-radius: 12px;
  letter-spacing: 0.04em;
}
.alert-toggle { margin-left: auto; }
.alert-list {
  list-style: none;
  padding: var(--space-sm) 0 0;
  margin: var(--space-sm) 0 0;
  border-top: 1px dashed #ffc107;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.alert-item-row {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  flex-wrap: wrap;
}
.alert-item-name   { font-weight: 600; }
.alert-item-reason { color: #555; font-size: var(--font-size-base); }
.alert-item-row .btn-review { margin-left: auto; }

/* ---- tabs ---- */
.tab-nav {
  display: flex;
  gap: var(--space-xs);
  margin-bottom: 0;
  border-bottom: 2px solid var(--color-navy);
}
.tab {
  padding: var(--space-sm) var(--space-lg);
  border: 1px solid #ccc;
  border-bottom: none;
  background: var(--color-border-light);
  cursor: pointer;
  border-radius: var(--radius-md) var(--radius-md) 0 0;
  font-size: var(--font-size-base);
}
.tab.active {
  background: #fff;
  border-color: var(--color-navy);
  border-bottom: 2px solid #fff;
  margin-bottom: -2px;
  font-weight: bold;
}

.tab-content {
  background: #fff;
  border: 1px solid var(--color-navy);
  border-top: none;
  padding: var(--space-lg);
  border-radius: 0 0 var(--radius-md) var(--radius-md);
}

/* ---- card ---- */
.card {
  background: #fff;
  border: 1px solid #ddd;
  border-radius: var(--radius-md);
  padding: var(--space-md) var(--space-lg);
  margin-bottom: var(--space-md);
}

/* ---- tables ---- */
table {
  width: 100%;
  border-collapse: collapse;
}
th, td {
  padding: 7px 10px;
  border: 1px solid #ddd;
  text-align: left;
}
thead th {
  background: #f0f4f8;
  font-weight: 600;
}
tbody tr:hover { background: var(--color-bg-section); }

.info-table th { width: 160px; background: #f0f4f8; }

/* ---- buttons ---- */
.btn {
  display: inline-block;
  padding: 5px 12px;
  border: 1px solid #888;
  border-radius: var(--radius-sm);
  cursor: pointer;
  font-size: var(--font-size-base);
  background: #fff;
}
.btn-primary        { background: var(--color-navy);    color: #fff; border-color: var(--color-navy); }
.btn-secondary      { background: #6c757d;             color: #fff; border-color: #6c757d; }
.btn-danger         { background: var(--color-danger); color: #fff; border-color: var(--color-danger); }
.btn-outline-primary { background: #fff; color: var(--color-primary-dark); border: 0.5px dashed var(--color-primary); }
.btn-outline-primary:hover { background: var(--color-primary-light); }
.btn-sm        { padding: 3px 8px; font-size: 12px; }
.btn-back      { padding: 4px 10px; font-size: var(--font-size-base); }
.btn:disabled  { opacity: 0.5; cursor: not-allowed; }
.btn-link {
  background: none;
  border: none;
  color: var(--color-navy);
  cursor: pointer;
  text-decoration: underline;
  padding: 0;
  font-size: inherit;
}
.btn-review { background: var(--color-warning-text); color: #fff; border-color: var(--color-warning-text); }

/* ---- status badges ---- */
.status {
  display: inline-block;
  padding: 2px 6px;
  border-radius: var(--radius-sm);
  font-size: 12px;
  background: var(--color-border);
}
/* Phase 0: クラス名は英語化（utils/status.js のマッピングと整合） */
.s-report-pending  { background: var(--color-info);       color: var(--color-info-text); }
.s-report-drafting { background: var(--color-info);       color: var(--color-info-text); }
.s-send-pending    { background: var(--color-warning-bg); color: var(--color-warning-text); border: 1px solid var(--color-warning-border); }
/* L5: 送信エラーあり は専用色（強調赤）。他状態とは色重複させない。 */
.s-send-error {
  background: var(--color-danger-bg);
  color: var(--color-danger);
  border: 1px solid var(--color-danger-border);
  font-weight: bold;
}
.s-sent { background: var(--color-success-bg); color: var(--color-success-text); }

.badge {
  display: inline-block;
  background: #888;
  color: #fff;
  border-radius: 10px;
  padding: 0 6px;
  font-size: var(--font-size-sm);
  min-width: 18px;
  text-align: center;
}
.badge-ds {
  background: var(--color-purple);
  color: #fff;
  padding: 2px 6px;
  border-radius: var(--radius-sm);
  font-size: 12px;
}

/* ---- forms ---- */
section h3  { margin: 0 0 10px; font-size: var(--font-size-lg); border-bottom: 1px solid var(--color-border-light); padding-bottom: var(--space-xs); }
section h4  { margin: var(--space-md) 0 6px; font-size: var(--font-size-base); color: #555; }
label {
  display: block;
  margin-bottom: var(--space-sm);
  font-size: var(--font-size-base);
  color: #444;
}
label input,
label textarea {
  display: block;
  width: 100%;
  margin-top: 3px;
  padding: 5px var(--space-sm);
  border: 1px solid #ccc;
  border-radius: var(--radius-sm);
  font-size: var(--font-size-base);
  font-family: inherit;
}
label input[readonly],
label textarea[readonly] {
  background: #f5f5f5;
  color: var(--color-text-muted);
}
.readonly-fields { border-left: 3px solid #cce5ff; padding-left: 10px; }

/* ---- detail header ---- */
.detail-header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: var(--space-lg);
}
.detail-header h2 { margin: 0; flex: 1; }

/* ---- action section ---- */
.action-section {
  display: flex;
  gap: var(--space-sm);
  align-items: center;
  margin-bottom: var(--space-md);
}

/* ---- reimport ---- */
.reimport-section {
  margin-top: 10px;
  border: 1px dashed #aaa;
  border-radius: var(--radius-sm);
  padding: var(--space-sm);
}
.reimport-section summary { cursor: pointer; font-weight: 600; color: #555; }

/* ---- step indicator ---- */
.step-indicator {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: var(--space-lg);
  font-size: var(--font-size-base);
}
.step       { padding: var(--space-xs) 10px; border-radius: 12px; background: var(--color-border); color: #555; }
.step.done  { background: var(--color-info); color: var(--color-info-text); }
.step.active{ background: var(--color-navy); color: #fff; font-weight: bold; }
.step-sep   { color: #999; }

/* ---- FAX section ---- */
.fax-section h3 { margin-bottom: 10px; }
.fax-recipients { display: flex; flex-direction: column; gap: var(--space-sm); margin-bottom: var(--space-md); }
.fax-recipient {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-sm);
  padding: var(--space-sm) var(--space-md);
  border: 1px solid #ddd;
  border-radius: var(--radius-md);
  background: var(--color-bg-section);
}
.fax-pending { background: var(--color-bg-section); }
.fax-sent    { background: var(--color-success-bg); border-color: #c3e6cb; }
.fax-error   { background: var(--color-danger-bg); border-color: var(--color-danger-border); }
.fax-check-label { display: flex; align-items: center; gap: 6px; font-weight: 500; }
.fax-kind    { font-size: var(--font-size-sm); color: var(--color-text-subtle); }
.fax-meta    { font-size: 12px; color: #555; }
.fax-status-badge { font-size: 12px; padding: 2px 6px; border-radius: var(--radius-sm); background: var(--color-border); }
.fax-badge-sent   { background: var(--color-success-bg); color: var(--color-success-text); }
.fax-badge-error  { background: var(--color-danger-bg);  color: #721c24; }
.fax-badge-pending{ background: var(--color-warning-bg); color: var(--color-warning-text); }
.mock-toggle {
  font-size: var(--font-size-sm); color: var(--color-text-subtle); margin-left: auto;
  display: flex; align-items: center; gap: var(--space-xs);
}
.mock-result { font-size: var(--font-size-sm); border: 1px solid #ccc; border-radius: 2px; }
.unset { color: #c00; font-style: italic; }

/* ---- reimport tabs ---- */
.reimport-tabs { display: flex; gap: var(--space-xs); margin-bottom: var(--space-sm); }
.reimport-tab.active { background: var(--color-navy); color: #fff; border-color: var(--color-navy); }

/* ---- pdf info ---- */
.pdf-info { font-size: 12px; color: #555; display: flex; align-items: center; gap: var(--space-sm); margin-top: 6px; }

/* ---- modal ---- */
.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.4);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 100;
}
.modal {
  background: #fff;
  border-radius: var(--radius-lg);
  padding: var(--space-2xl);
  min-width: 280px;
  box-shadow: 0 4px 20px rgba(0,0,0,0.2);
}
.modal p { margin: 0 0 var(--space-lg); font-size: var(--font-size-lg); }
.modal-actions { display: flex; gap: var(--space-sm); justify-content: flex-end; }

/* ---- misc ---- */
.empty { color: var(--color-text-subtle); font-style: italic; }
.error { color: #c00; }
.hint  { color: var(--color-text-muted); font-size: 12px; }
.msg   { font-size: 12px; color: var(--color-success-text); margin-left: var(--space-sm); }
.pdf-entry { display: inline-flex; align-items: center; flex-wrap: wrap; gap: var(--space-xs) var(--space-sm); }
/* Step 3-1 (B1): 日付ラベル / 医療機関名 を 2 行で表示する */
.pdf-entry-line1 { display: block; flex-basis: 100%; }
.pdf-entry-line2 { display: block; flex-basis: 100%; color: var(--color-text); font-size: var(--font-size-base); }
.pdf-badge { background: #e8f4fd; border: 1px solid #9ecbf0; padding: 1px 6px; border-radius: var(--radius-sm); font-size: 12px; }
.pdf-none  { color: var(--color-text-faint); font-size: 12px; }
.pdf-list  { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: var(--space-xs); }

.editor-section   { margin-bottom: var(--space-md); }

/* ---- Phase B (M1): dev-toolbar (app-toolbar は Phase 0 で撤去) ---- */
.dev-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-sm);
  align-items: center;
  padding: var(--space-sm) 10px;
  background: #fff4e0;
  border: 1px dashed #e08a3c;
  border-radius: var(--radius-md);
  margin: var(--space-xs) 0 var(--space-md);
}
.dev-toolbar .btn-dev {
  background: #fff;
  border-color: #e08a3c;
  color: #8a4a00;
}
.dev-toolbar .btn-dev:hover { background: #fde6c8; }
.dev-badge {
  display: inline-block;
  background: #e08a3c;
  color: #fff;
  font-weight: bold;
  font-size: var(--font-size-sm);
  padding: 2px var(--space-sm);
  border-radius: 10px;
  letter-spacing: 0.04em;
}

/* ---- Phase B (M3): required mark + section colors ---- */
.required {
  color: #c00;
  font-weight: bold;
  margin-left: 3px;
}
.section-solamichi {
  background: #f6f6f6;
  border-left: 4px solid #b0b0b0;
}
.section-yakumemo {
  background: #f0f8ff;
  border-left: 4px solid #4a90d9;
}

/* ---- Phase B (L1): recipient kind icon ---- */
.fax-kind-icon {
  font-size: 18px;
  width: 24px;
  text-align: center;
  flex-shrink: 0;
}

/* ================================================================
   Phase 1: ホーム画面 v4.1 + 基盤調整
   ================================================================ */

/* ---- Phase 1: page header ---- */
.page-header {
  display: flex;
  align-items: center;
  gap: var(--space-md);
  padding-bottom: var(--space-md);
  border-bottom: 3px solid var(--color-navy);
  margin-bottom: var(--space-lg);
}
.page-header-title {
  margin: 0;
  font-size: var(--font-size-xl);
  color: var(--color-navy);
  flex: 1;
}
.ph-sub {
  font-size: var(--font-size-base);
  color: var(--color-text-muted);
}

/* ---- Phase 1: filter bar & buttons ---- */
.filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-sm);
  align-items: center;
  margin-bottom: var(--space-md);
  padding: var(--space-sm) var(--space-md);
  background: var(--color-bg-muted);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  font-size: var(--font-size-sm);
}
.filter-bar label { margin: 0; font-size: var(--font-size-sm); color: var(--color-text-muted); }
.filter-bar input[type="date"],
.filter-bar input[type="text"] {
  padding: 3px 6px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  font-size: var(--font-size-sm);
  background: #fff;
}
.filter-btn {
  padding: 3px 10px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-pill);
  background: #fff;
  cursor: pointer;
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
  transition: background 0.1s, color 0.1s;
}
.filter-btn:hover {
  background: var(--color-primary-light);
  border-color: var(--color-primary);
  color: var(--color-primary-dark);
}
.filter-btn.active  { background: var(--color-navy); color: #fff; border-color: var(--color-navy); }
.filter-btn.cleared { background: var(--color-bg-muted); color: var(--color-text-faint); border-style: dashed; }

/* ---- Phase 1: carePlan status badges ---- */
.s-draft     { background: var(--color-info);       color: var(--color-info-text); }
.s-confirmed { background: var(--color-success-bg); color: var(--color-success-text); }
.s-revising  { background: var(--color-warning-bg); color: var(--color-warning-text); border: 1px solid var(--color-warning-border); }

/* ---- Phase 1: trigger type badges (Tab1) ---- */
.kind-badge {
  display: inline-block;
  padding: 1px 7px;
  border-radius: var(--radius-pill);
  font-size: var(--font-size-xs);
  font-weight: 600;
  letter-spacing: 0.02em;
}
.kind-visit  { background: var(--color-info);       color: var(--color-info-text); }
.kind-doctor { background: var(--color-warning-bg); color: var(--color-warning-text); border: 1px solid var(--color-warning-border); }

/* ---- Phase 1: sidebar dev section ---- */
.sidebar-dev-section {
  margin-top: auto;
  padding: var(--space-sm) var(--space-md);
  border-top: 1px dashed #e08a3c;
  background: #fff9f0;
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}
.sidebar-dev-badge {
  font-size: var(--font-size-xs);
  align-self: flex-start;
}
.sidebar-btn-dev {
  width: 100%;
  text-align: left;
  font-size: var(--font-size-xs) !important;
  padding: 3px 6px !important;
  background: #fff;
  border-color: #e08a3c;
  color: #8a4a00;
}
.sidebar-btn-dev:hover { background: #fde6c8; }

/* ================================================================
   Phase 2: 患者一覧 v4 + 計画書未作成一覧 v2
   ================================================================ */

/* ---- page-header right slot ---- */
.ph-right { margin-left: auto; }

/* ---- patient name cell (2行: カナ + 漢字) ---- */
.patient-name-cell  { display: flex; flex-direction: column; gap: 2px; }
.patient-name-kana  { font-size: var(--font-size-xs); color: #888; min-height: 1em; }
.patient-name-main  { color: var(--color-primary-dark); font-weight: 500; }

/* ---- 汎用 2行セル (上: 主情報 / 下: 補足) ---- */
.multi-line-cell     { display: flex; flex-direction: column; gap: 2px; }
.multi-line-cell-sub { font-size: 12px; color: #666; }

/* ---- phone ---- */
.phone-list  { display: flex; flex-direction: column; gap: 2px; }
.phone-entry { display: flex; align-items: center; gap: 4px; font-family: monospace; font-size: var(--font-size-sm); }
.phone-note  { font-family: inherit; color: #888; font-size: var(--font-size-xs); }

/* ---- empty cell ---- */
.empty-cell { color: #888; }

/* ---- patient-list search bar ---- */
.patient-search-bar {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  margin-bottom: var(--space-md);
  padding: var(--space-sm) var(--space-md);
  background: var(--color-bg-muted);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
}
.patient-search-row {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
}
.patient-search-row label { margin: 0; white-space: nowrap; font-size: var(--font-size-sm); color: var(--color-text-muted); }
.patient-search-row input {
  flex: 1;
  padding: 4px var(--space-sm);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  font-size: var(--font-size-sm);
}
.patient-search-actions { display: flex; gap: var(--space-xs); margin-left: auto; }

/* ---- care-plan-pending: 計画書対象バッジ ---- */
.badge-eligible {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 10px;
  border: 1px solid var(--color-success-text);
  color: var(--color-success-text);
  font-size: var(--font-size-xs);
  font-weight: 600;
}

/* ---- care-plan-pending: 状態バッジ ---- */
.state-badge-unplanned { display: inline-block; padding: 2px 8px; border-radius: 10px; background: var(--color-danger-bg); color: var(--color-danger); border: 1px solid var(--color-danger-border); font-size: var(--font-size-xs); font-weight: 600; }
.state-badge-revising  { display: inline-block; padding: 2px 8px; border-radius: 10px; background: var(--color-warning-bg); color: var(--color-warning-text); border: 1px solid var(--color-warning-border); font-size: var(--font-size-xs); font-weight: 600; }

/* ============================================================
   Phase 3a: マスタ管理画面
   ============================================================ */

/* ---- master tabs ---- */
.master-tabs {
  display: flex;
  gap: 0;
  border-bottom: 0.5px solid var(--color-border);
  margin-bottom: 20px;
}
.master-tab {
  padding: 12px 20px;
  color: var(--color-text-muted);
  font-size: var(--font-size-md);
  cursor: pointer;
  position: relative;
  user-select: none;
  transition: color 0.15s;
}
.master-tab:hover {
  color: var(--color-text);
}
.master-tab.active {
  color: var(--color-text);
  font-weight: 500;
}
.master-tab.active::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 2px;
  background: var(--color-primary);
  border-radius: 1px 1px 0 0;
}

/* ---- facility card ---- */
.facility-card {
  background: var(--color-bg);
  border: 0.5px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 14px 18px;
  margin-bottom: 10px;
}
.facility-card-header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
}
.facility-card-name {
  font-size: var(--font-size-lg);
  font-weight: 500;
  color: var(--color-text);
}
.facility-card-actions {
  margin-left: auto;
  display: flex;
  gap: 6px;
}
.facility-card-info {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  font-size: 12px;
  color: var(--color-text-muted);
  padding-top: 8px;
  border-top: 0.5px solid var(--color-border-light);
}
.facility-card-note {
  font-style: italic;
  color: var(--color-text-subtle);
}

/* ---- send mode badge ---- */
.badge-send-mode {
  display: inline-block;
  padding: 2px 10px;
  border-radius: var(--radius-pill);
  font-size: var(--font-size-sm);
  font-weight: 500;
}
.badge-send-mode-instant {
  background: var(--color-primary-light);
  color: var(--color-primary-dark);
}
.badge-send-mode-scheduled {
  background: #FFF3E0;
  color: #E65100;
}

/* ---- facility members (details/summary) ---- */
.facility-members {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 0.5px solid var(--color-border-light);
}
.facility-members summary {
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
  cursor: pointer;
  list-style: none;
  user-select: none;
}
.facility-members summary::-webkit-details-marker { display: none; }
.facility-members[open] summary { color: var(--color-text); }
.facility-members ul {
  margin: 6px 0 0 16px;
  padding: 0;
  list-style: disc;
  font-size: 12px;
  color: #555;
}
.facility-members ul li {
  padding: 2px 0;
}

/* ============================================================
   Phase 3b: マスタ編集 UI
   ============================================================ */

/* ---- 編集カード ---- */
.facility-card-editing {
  border: 1.5px solid var(--color-primary);
}
.card-editing-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 14px;
}
.card-editing-name {
  font-size: var(--font-size-md);
  color: var(--color-text-muted);
}
.badge-editing {
  display: inline-block;
  padding: 2px 10px;
  background: var(--color-primary);
  color: #fff;
  border-radius: var(--radius-sm);
  font-size: var(--font-size-sm);
  font-weight: 500;
}

/* ---- フォームレイアウト ---- */
.facility-form {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.form-row {
  display: flex;
  flex-direction: column;
}
.form-row label,
.form-row-label {
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
  margin-bottom: 4px;
}
.form-row input,
.form-row textarea {
  width: 100%;
  border: 0.5px solid #CCC;
  padding: 6px 10px;
  border-radius: var(--radius-sm);
  font-size: var(--font-size-base);
  box-sizing: border-box;
  outline: none;
}
.form-row input:focus,
.form-row textarea:focus {
  border-color: var(--color-primary);
}
.form-row textarea {
  resize: vertical;
  line-height: 1.5;
}
.form-row-2col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

/* ---- 送信モード ---- */
.send-mode-section {
  padding: 10px 14px;
  background: var(--color-bg-muted);
  border: 0.5px solid var(--color-border);
  border-radius: var(--radius-md);
}
.send-mode-options {
  display: flex;
  gap: 20px;
  align-items: center;
  flex-wrap: wrap;
  margin-top: 6px;
}
.radio-label {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: var(--font-size-base);
  cursor: pointer;
}
.scheduled-time-wrap {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: var(--font-size-base);
  color: var(--color-text-muted);
}
.scheduled-time-wrap input[type="time"] {
  padding: 3px 8px;
  border: 0.5px solid #CCC;
  border-radius: var(--radius-sm);
  font-size: var(--font-size-base);
}
.scheduled-time-wrap input[type="time"]:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* ---- 所属者エディタ ---- */
.members-editor {
  padding-top: 12px;
  border-top: 0.5px dashed #DDD;
}
.form-row-label {
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
  margin-bottom: 6px;
}
.members-list {
  margin: 0 0 8px;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.members-list li {
  display: flex;
  gap: 6px;
  align-items: center;
}
.member-name-input {
  flex: 1;
  border: 0.5px solid #CCC;
  padding: 5px 8px;
  border-radius: var(--radius-sm);
  font-size: var(--font-size-base);
}
.member-name-input:focus {
  outline: none;
  border-color: var(--color-primary);
}

/* ---- フォームアクション ---- */
.facility-form-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding-top: 14px;
  border-top: 0.5px solid var(--color-border-light);
  margin-top: 4px;
}
.required { color: var(--color-danger); }

/* ---- 削除確認モーダル拡張 ---- */
.modal-title {
  font-size: var(--font-size-lg);
  font-weight: 600;
  margin-bottom: 12px;
  color: var(--color-text);
}
.modal-warning {
  color: var(--color-danger);
  font-size: var(--font-size-sm);
  margin-top: 4px;
}

/* ================================================================
   Phase 4a — 患者詳細 リデザイン
   ================================================================ */

/* ---- 患者詳細ヘッダ ---- */
.patient-detail-header {
  display: flex;
  align-items: flex-start;
  margin-bottom: 20px;
  padding-bottom: 12px;
  border-bottom: 2px solid var(--color-primary-light);
  gap: 12px;
}
.patient-detail-header .page-header-accent {
  height: 56px;
  margin-top: 2px;
}
.patient-detail-info { flex: 1; }
.patient-name {
  font-size: var(--font-size-2xl);
  font-weight: 500;
  margin: 0;
  color: var(--color-text);
}
.patient-name-kana {
  font-size: 12px;
  color: #888;
  font-weight: 400;
  margin-left: 8px;
}
.patient-meta {
  font-size: 12px;
  color: var(--color-text-muted);
  margin-top: 4px;
}
.patient-badges {
  margin-top: 8px;
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.badge-eligible {
  padding: 2px 10px;
  border-radius: var(--radius-pill);
  font-size: 11px;
  border: 1px solid var(--color-success);
  color: var(--color-success);
}
.badge-facility {
  padding: 2px 10px;
  border-radius: var(--radius-pill);
  font-size: 11px;
  border: 1px solid var(--color-primary);
  color: var(--color-primary-dark);
}
.badge-separator {
  width: 1px;
  height: 18px;
  background: #D0D0D0;
  margin: 0 4px;
}
.badge-label { font-size: 11px; color: #888; }
.badge-category {
  padding: 2px 10px;
  background: var(--color-primary-light);
  color: var(--color-primary-dark);
  border-radius: var(--radius-pill);
  font-size: 11px;
}

/* ---- タブバー ---- */
.patient-tabs {
  display: flex;
  gap: 0;
  border-bottom: 0.5px solid var(--color-border);
  margin-bottom: 20px;
}
.patient-tab {
  padding: 12px 20px;
  color: var(--color-text-muted);
  font-size: 14px;
  cursor: pointer;
  position: relative;
  user-select: none;
}
.patient-tab:hover { color: var(--color-text); }
.patient-tab.active { color: var(--color-text); font-weight: 500; }
.patient-tab.active::before {
  content: '';
  position: absolute;
  left: 8px;
  top: 12px;
  bottom: 12px;
  width: 4px;
  background: var(--color-primary);
  border-radius: 2px;
}
.tab-count {
  background: #F5F5F5;
  color: #666;
  padding: 1px 7px;
  border-radius: 10px;
  font-size: 11px;
  margin-left: 4px;
}

/* ---- 基本情報パネル ---- */
.basic-info-panel {
  background: white;
  border: 0.5px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 18px 20px;
}
.info-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px 24px;
}
.info-row {
  display: flex;
  gap: 6px;
  align-items: baseline;
}
.info-row.info-full  { grid-column: 1 / -1; }
.info-row.info-addr  { grid-column: 1 / -1; }
.info-label {
  color: #888;
  font-size: 11px;
  width: 90px;
  flex-shrink: 0;
}
.info-value { color: var(--color-text); font-size: 13px; }

/* ---- 配薬方法 (強調表示) ---- */
.dispensing-method {
  grid-column: 1 / -1;
  display: flex;
  gap: 6px;
  align-items: flex-start;
  padding: 10px 12px;
  background: #F8FAFA;
  border-left: 3px solid var(--color-primary);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
}
.dispensing-method-label {
  font-size: 11px;
  color: #888;
  margin-bottom: 4px;
}
.dispensing-method-value {
  font-weight: 500;
  font-size: 13px;
  color: var(--color-text);
}
.dispensing-method-note {
  color: #666;
  font-size: 12px;
  margin-top: 4px;
  line-height: 1.5;
}

/* ---- 電話番号 複数行 ---- */
.phone-line {
  display: flex;
  align-items: center;
  gap: 6px;
  line-height: 1.8;
}
.phone-number {
  font-family: monospace;
  font-size: 13px;
}
.phone-note {
  font-size: 11px;
  color: #888;
}

/* ---- 報告書テーブル ---- */
.patient-tab-actions {
  margin-bottom: 12px;
}
.reports-table-wrap {
  overflow-x: auto;
}
.reports-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.reports-table th,
.reports-table td {
  padding: 8px 12px;
  text-align: left;
  border-bottom: 0.5px solid var(--color-border-light);
}
.reports-table th {
  background: var(--color-bg-section);
  font-size: 11px;
  color: var(--color-text-muted);
  font-weight: 500;
}
.reports-table tbody tr:hover { background: #FAFAFA; }
.report-row-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
td.report-row-actions { vertical-align: middle; }

/* ---- 計画書カード ---- */
.plans-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.plan-card {
  background: white;
  border: 0.5px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 14px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.plan-card-header {
  display: flex;
  align-items: center;
  gap: 10px;
}
.plan-card-month {
  font-size: 14px;
  font-weight: 500;
  color: var(--color-text);
}
.plan-card-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

/* ================================================================
   Phase 4b — 基本情報タブ 編集モード
   ================================================================ */

/* ---- ボタン追加 ---- */
.btn-outline-secondary {
  background: #fff;
  color: #6c757d;
  border: 1px solid #6c757d;
}
.btn-outline-secondary:hover { background: #f8f9fa; }
.btn-danger-outline {
  background: #fff;
  color: var(--color-danger);
  border: 1px solid var(--color-danger);
}
.btn-danger-outline:hover { background: var(--color-danger-bg); }

/* ---- ヘッダ ---- */
.header-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.patient-detail-header-editing {
  border-bottom-color: var(--color-primary);
  background: var(--color-primary-light);
  padding: 14px 0 14px;
  border-radius: var(--radius-lg);
  margin-bottom: 16px;
  padding: 12px 16px;
  border: 1.5px solid var(--color-primary);
}
.patient-header-form { flex: 1; }
.header-form-row {
  display: flex;
  align-items: flex-end;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}
.field-inline {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 140px;
}
.field-inline label {
  font-size: 11px;
  color: var(--color-text-muted);
}
.field-inline input,
.field-inline select {
  border: 0.5px solid #CCC;
  padding: 5px 8px;
  border-radius: var(--radius-sm);
  font-size: 13px;
  height: 30px;
  box-sizing: border-box;
}
.check-label {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 13px;
  cursor: pointer;
  padding-bottom: 2px;
}

/* ---- タブ 編集中ドット ---- */
.tab-editing-dot {
  color: var(--color-primary);
  font-size: 8px;
  vertical-align: middle;
  margin-left: 2px;
}

/* ---- 基本情報編集パネル ---- */
.basic-info-panel-editing {
  border: 1.5px solid var(--color-primary);
}
.editing-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 14px;
  font-size: 13px;
  color: var(--color-text-muted);
}

/* ---- 編集グリッド ---- */
.info-grid-edit {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px 24px;
}
.field {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.field > label {
  font-size: 11px;
  color: var(--color-text-muted);
  font-weight: 400;
}
.field input,
.field select {
  border: 0.5px solid #CCC;
  padding: 6px 10px;
  border-radius: var(--radius-sm);
  font-size: 13px;
  height: 32px;
  box-sizing: border-box;
  background: #fff;
}
.field input:focus,
.field select:focus {
  outline: none;
  border-color: var(--color-primary);
}
.field select:disabled { background: #F5F5F5; color: #AAA; }
.field textarea {
  border: 0.5px solid #CCC;
  padding: 6px 10px;
  border-radius: var(--radius-sm);
  font-size: 13px;
  min-height: 42px;
  resize: vertical;
  box-sizing: border-box;
  font-family: inherit;
}
.field textarea:focus { outline: none; border-color: var(--color-primary); }
.field-full  { grid-column: 1 / -1; }
.field-2col  { grid-column: 1 / 2; }

/* ---- 配薬方法セレクト ---- */
.dispensing-method-select {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr;
  gap: 8px;
}
.dispensing-note-input {
  margin-top: 6px;
  min-height: 40px;
}

/* ---- 電話番号エディタ ---- */
.phones-editor {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 6px;
}
.phone-entry-edit {
  display: grid;
  grid-template-columns: 1.4fr 1fr auto;
  gap: 6px;
  align-items: center;
}
.phone-number-input,
.phone-note-input {
  border: 0.5px solid #CCC;
  padding: 5px 8px;
  border-radius: var(--radius-sm);
  font-size: 13px;
  height: 30px;
  box-sizing: border-box;
}
.phone-number-input:focus,
.phone-note-input:focus { outline: none; border-color: var(--color-primary); }
.btn-phone-add {
  display: inline-block;
  background: white;
  color: var(--color-primary-dark);
  border: 0.5px dashed var(--color-primary);
  padding: 5px 12px;
  border-radius: var(--radius-sm);
  font-size: 12px;
  cursor: pointer;
  margin-top: 2px;
}
.btn-phone-add:hover { background: var(--color-primary-light); }

/* ---- 薬効群 ---- */
.med-cats-checkboxes {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}
.med-cats-checkboxes label {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  cursor: pointer;
}

/* ---- フォームアクション ---- */
.basic-form-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding-top: 16px;
  margin-top: 14px;
  border-top: 0.5px solid #EEE;
}

/* ═══════════════════════════════════════════════════════════════
   Phase 4c: 送信先タブ v4
   ═══════════════════════════════════════════════════════════════ */

.fax-tab-panel {
  padding: 16px 0;
}

/* ── FAX カード ──────────────────────────────────────── */
.fax-card {
  background: white;
  border: 0.5px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 14px 20px;
  margin-bottom: 10px;
  transition: border-color 0.15s;
}
.fax-card-editing {
  border: 1.5px solid var(--color-primary);
}

/* ── カードヘッダ ────────────────────────────────────── */
.fax-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 10px;
  flex-wrap: wrap;
  gap: 8px;
}
.fax-card-header-left {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.fax-kind-badge {
  padding: 2px 10px;
  background: var(--color-navy);
  color: white;
  border-radius: var(--radius-sm);
  font-size: 11px;
  font-weight: 500;
  white-space: nowrap;
}
.fax-kind-doctor  { background: var(--color-navy); }
.fax-kind-care    { background: #3a7d5a; }
.fax-kind-nursing { background: #7a5040; }
.fax-kind-custom  { background: var(--color-purple); }

.fax-card-recipient-name {
  font-size: 14px;
  font-weight: 500;
  color: var(--color-text);
}
.fax-card-facility-name {
  font-size: 11px;
  color: #888;
}

/* ── カードアクション ────────────────────────────────── */
.fax-card-actions {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}

/* ── デフォルト ON/OFF バッジ ────────────────────────── */
.badge-default-on {
  padding: 3px 10px;
  background: var(--color-primary-light);
  color: var(--color-primary-dark);
  border-radius: var(--radius-pill);
  font-size: 11px;
  font-weight: 500;
  white-space: nowrap;
}
.badge-default-off {
  padding: 3px 10px;
  background: white;
  color: #888;
  border-radius: var(--radius-pill);
  font-size: 11px;
  border: 0.5px solid #CCC;
  white-space: nowrap;
}

/* ── カードボディ ────────────────────────────────────── */
.fax-card-body {
  padding-top: 8px;
  border-top: 0.5px solid #F0F0F0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.fax-info-row {
  display: flex;
  gap: 6px;
  align-items: baseline;
  flex-wrap: wrap;
}
.fax-info-label {
  color: #888;
  font-size: 11px;
  min-width: 70px;
}
.fax-info-value {
  color: var(--color-text);
  font-size: 13px;
}
.fax-unset {
  color: #aaa;
  font-style: italic;
}
.fax-override-mark {
  display: inline-block;
  font-size: 10px;
  color: var(--color-primary-dark);
  background: var(--color-primary-light);
  padding: 1px 5px;
  border-radius: 3px;
  margin-left: 4px;
}

/* ── マスタ連動注記 ──────────────────────────────────── */
.fax-card-master-link {
  font-size: 10px;
  color: var(--color-primary-dark);
  margin-top: 8px;
  opacity: 0.8;
}

/* ── 編集フォーム ────────────────────────────────────── */
.fax-edit-form {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding-top: 4px;
}
.fax-edit-input {
  width: 100%;
  max-width: 340px;
  padding: 6px 8px;
  border: 0.5px solid var(--color-border);
  border-radius: var(--radius-sm);
  font-size: 13px;
}
.fax-edit-input:focus {
  outline: none;
  border-color: var(--color-primary);
}
.field-label {
  display: block;
  font-size: 12px;
  color: #555;
  margin-bottom: 4px;
  font-weight: 500;
}
.field-hint {
  display: block;
  font-size: 11px;
  color: #999;
  margin-top: 4px;
}

/* ── 送信モードラジオ ────────────────────────────────── */
.send-mode-options {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 14px;
}
.radio-label {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  cursor: pointer;
}
.send-mode-options input[type="time"] {
  padding: 4px 6px;
  border: 0.5px solid var(--color-border);
  border-radius: var(--radius-sm);
  font-size: 12px;
}
.send-mode-options input[type="time"]:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* ── カード編集フォームアクション ───────────────────── */
.fax-card-actions-edit {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding-top: 12px;
  margin-top: 8px;
  border-top: 0.5px solid #EEE;
}

/* ── カスタム宛先セクション ─────────────────────────── */
.custom-recipients-section {
  margin-top: 24px;
  padding-top: 16px;
  border-top: 0.5px solid var(--color-border);
}
.section-subtitle {
  font-size: 13px;
  font-weight: 500;
  color: var(--color-text);
  margin-bottom: 12px;
}

/* ── btn-link ────────────────────────────────────────── */
.btn-link {
  background: none;
  border: none;
  color: var(--color-primary);
  font-size: 13px;
  cursor: pointer;
  padding: 4px 0;
  text-decoration: none;
}
.btn-link:hover { text-decoration: underline; }

/* ── btn-danger-outline ──────────────────────────────── */
.btn-danger-outline {
  background: white;
  border: 0.5px solid var(--color-danger);
  color: var(--color-danger);
  border-radius: var(--radius-sm);
  padding: 4px 10px;
  font-size: 12px;
  cursor: pointer;
}
.btn-danger-outline:hover {
  background: #FEF0F0;
}

/* ═══════════════════════════════════════════════════════════════
   Phase 5a: 取り込みページ / 新規患者作成
   ═══════════════════════════════════════════════════════════════ */

/* ── 取り込みページ ──────────────────────────────── */
.import-container {
  max-width: 640px;
  margin: 32px auto 0;
}
.import-box {
  background: #F8FAFA;
  border: 0.5px solid #C8E0E0;
  border-radius: var(--radius-lg);
  padding: 32px 40px;
}
.import-icon {
  text-align: center;
  font-size: 32px;
  margin-bottom: 8px;
}
.import-title {
  text-align: center;
  font-size: 16px;
  font-weight: 600;
  color: var(--color-text);
  margin-bottom: 8px;
}
.import-desc {
  text-align: center;
  font-size: 12px;
  color: #888;
  margin-bottom: 20px;
  line-height: 1.6;
}
.import-textarea {
  width: 100%;
  border: 0.5px solid #CCC;
  padding: 12px 14px;
  border-radius: var(--radius-sm);
  font-size: 12px;
  box-sizing: border-box;
  resize: vertical;
  min-height: 200px;
  font-family: monospace;
  line-height: 1.6;
  color: var(--color-text);
  background: white;
}
.import-textarea:focus {
  outline: none;
  border-color: var(--color-primary);
}
.import-actions {
  display: flex;
  justify-content: center;
  gap: 12px;
  margin-top: 20px;
}
.import-alt-link {
  text-align: center;
  margin-top: 20px;
}
.import-alt-link a {
  font-size: 13px;
  color: var(--color-primary-dark);
  text-decoration: none;
}
.import-alt-link a:hover {
  text-decoration: underline;
}

/* ── 新規患者ヘッダ ──────────────────────────────── */
.patient-new-header {
  margin-bottom: 0;
}

/* ── 新規患者フッタ ──────────────────────────────── */
.new-patient-footer {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding-top: 20px;
  margin-top: 16px;
  border-top: 0.5px solid #EEE;
}

/* ── 空状態プレースホルダ ────────────────────────── */
.empty-state {
  text-align: center;
  padding: 60px 20px;
  color: #888;
}
.empty-state-icon {
  font-size: 36px;
  margin-bottom: 16px;
}
.empty-state p { margin: 6px 0; font-size: 13px; }
.empty-state .muted { font-size: 11px; color: #aaa; margin-top: 8px; }

/* ─────────────────────────────────────────────────────────────────────
   Phase 5c: 取り込みモーダル / 取り込みバナー
   ───────────────────────────────────────────────────────────────────── */

/* ── 取り込みバナー (patient-new-view の上部) ─── */
.import-notice {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  background: var(--color-primary-light);
  border-bottom: 1px solid #c8e6e6;
  font-size: var(--font-size-sm);
  color: var(--color-primary-dark);
}
.import-notice-icon { font-size: 15px; }
.import-notice-hint { color: #777; }

/* ── 候補選択モーダル ────────────────────────── */
.import-candidate-modal {
  max-width: 480px;
  width: 92vw;
}
.import-query-label {
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
  margin: 8px 0 12px;
  padding: 6px 10px;
  background: var(--color-bg-muted);
  border-radius: var(--radius-md);
}
.import-query-label strong { color: var(--color-text); }

.candidate-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 0 0 16px;
  max-height: 300px;
  overflow-y: auto;
}
.candidate-option {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 10px 14px;
  border: 0.5px solid var(--color-border);
  border-radius: var(--radius-md);
  cursor: pointer;
  transition: border-color 0.1s, background 0.1s;
  user-select: none;
}
.candidate-option:hover { background: var(--color-bg-muted); }
.candidate-option.selected {
  border: 1.5px solid var(--color-primary);
  background: var(--color-primary-light);
}
.candidate-option input[type="radio"] { display: inline-block; width: auto; margin-top: 2px; flex-shrink: 0; }
.candidate-text { flex: 1; }
.candidate-name { font-size: var(--font-size-base); font-weight: 500; }
.candidate-info { font-size: var(--font-size-xs); color: var(--color-text-subtle); margin-top: 2px; }
.candidate-option-new {
  border: 0.5px dashed var(--color-primary);
  background: #f8fafa;
  color: var(--color-primary-dark);
}
.candidate-option-new.selected {
  border: 1.5px dashed var(--color-primary);
  background: var(--color-primary-light);
}

/* ── 新規マスタ作成モーダル ──────────────────── */
.import-new-master-modal {
  max-width: 520px;
  width: 94vw;
  max-height: 88vh;
  overflow-y: auto;
}
.modal-subtitle {
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
  margin: -6px 0 16px;
}

/* ── 取り込み済み / 未入力バッジ ─────────────── */
.badge-imported {
  display: inline-block;
  padding: 1px 7px;
  background: var(--color-success-bg);
  color: var(--color-success-text);
  border-radius: var(--radius-pill);
  font-size: 9px;
  margin-left: 6px;
  font-weight: 500;
  vertical-align: middle;
}
.badge-empty {
  display: inline-block;
  padding: 1px 7px;
  background: var(--color-danger-bg);
  color: var(--color-danger);
  border-radius: var(--radius-pill);
  font-size: 9px;
  margin-left: 6px;
  font-weight: 500;
  vertical-align: middle;
}

/* ── 未入力フィールドの強調 ──────────────────── */
.field-required-empty input {
  border: 1px solid var(--color-danger-border);
  background: #fff9f9;
}
.field-invalid {
  border: 1.5px solid var(--color-danger) !important;
  background: #fff5f5 !important;
}

/* ── 警告バー ────────────────────────────────── */
.warning-bar {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 10px 12px;
  background: var(--color-warning-bg);
  border: 0.5px solid var(--color-warning-border);
  border-radius: var(--radius-md);
  margin-top: 12px;
}
.warning-icon {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--color-warning);
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 10px;
  font-weight: 600;
  flex-shrink: 0;
  margin-top: 1px;
}
.warning-text {
  font-size: var(--font-size-sm);
  color: var(--color-warning-text);
  line-height: 1.5;
}

/* ── メンバー編集 (新規作成モーダル内) ──────── */
.members-editor { margin-top: 12px; }
.form-row-label {
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
  margin-bottom: 6px;
}
.members-list {
  list-style: none;
  margin: 0 0 8px;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.member-row {
  display: flex;
  gap: 6px;
  align-items: center;
}
.member-row .member-name-input { flex: 1; }

/* ── タブ disabled 状態 ──────────────────────────── */
.patient-tab.disabled {
  opacity: 0.4;
  cursor: not-allowed;
  pointer-events: none;
}

/* ================================================================
   Phase 6a: 報告書作成画面 + 取り込みモーダル共通化
   ================================================================ */

/* ── 患者情報バー ─────────────────────────────────────── */
.report-patient-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 0 14px;
  margin-bottom: 4px;
  flex-wrap: wrap;
}
.report-patient-name {
  font-size: var(--font-size-lg);
  font-weight: 600;
  color: var(--color-text);
}
.report-patient-sep {
  color: var(--color-text-subtle);
}
.report-visit-text {
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
}

/* ── 下書きバナー ─────────────────────────────────────── */
.draft-banner {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  background: #fff7e0;
  border: 1px solid #f0c060;
  color: #7a5500;
  padding: 8px 12px;
  margin-bottom: 12px;
  border-radius: var(--radius-md);
  font-size: var(--font-size-sm);
}

/* ── レポートセクション ───────────────────────────────── */
.report-section {
  background: var(--color-bg-section);
  border: 0.5px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: 16px 20px;
  margin-bottom: 12px;
}
.report-section-header {
  display: flex;
  align-items: center;
  margin-bottom: 14px;
  justify-content: space-between;
}
.report-section-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  font-weight: 500;
  color: var(--color-text);
}
.report-section-title::before {
  content: '';
  display: inline-block;
  width: 3px;
  height: 14px;
  background: var(--color-primary);
  border-radius: 2px;
  flex-shrink: 0;
}
.report-section-note {
  font-size: 10px;
  color: var(--color-text-subtle);
}
.report-section-note-success {
  color: var(--color-primary-dark);
  font-weight: 500;
}

/* ── 自動算出ヒント ───────────────────────────────────── */
.auto-calc-hint {
  font-size: 11px;
  color: var(--color-primary-dark);
  margin: 4px 0 10px;
  display: flex;
  align-items: center;
  gap: 4px;
}
.auto-calc-hint.hidden { display: none; }

/* ── 処方内容から自動バッジ ──────────────────────────── */
.badge-auto-calc {
  display: inline-block;
  background: var(--color-primary-light);
  color: var(--color-primary-dark);
  border: 0.5px solid var(--color-primary);
  font-size: 9px;
  padding: 1px 6px;
  border-radius: var(--radius-pill);
  font-weight: 500;
  vertical-align: middle;
  margin-left: 6px;
}

/* ── Yakumemo 独自 3 カラムグリッド ─────────────────── */
.report-3col {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 12px;
  margin-bottom: 4px;
}
@media (max-width: 700px) {
  .report-3col { grid-template-columns: 1fr; }
}

/* ── フィールドラベル任意表示 ────────────────────────── */
.field-label-optional {
  font-size: 10px;
  color: var(--color-text-subtle);
  font-weight: 400;
  margin-left: 4px;
}

/* ── 報告書フッター ───────────────────────────────────── */
.report-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  padding-top: 20px;
  margin-top: 4px;
  border-top: 0.5px solid #eee;
  flex-wrap: wrap;
}
.report-footer-right {
  display: flex;
  gap: 8px;
  align-items: center;
}

/* ── 汎用取り込みモーダル ────────────────────────────── */
.import-modal {
  max-width: 560px;
  width: 94vw;
}
.import-modal .import-textarea {
  width: 100%;
  box-sizing: border-box;
  font-family: inherit;
  font-size: var(--font-size-sm);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  padding: 8px 10px;
  resize: vertical;
  margin-top: 8px;
  color: var(--color-text);
  line-height: 1.6;
}
.import-modal .import-textarea:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 2px var(--color-primary-light);
}

/* ── PDF 情報 ───────────────────────────────────────── */
.pdf-info {
  margin-top: 8px;
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}

/* ═══════════════════════════════════════════════════════
   Phase 6b: 送信先選択画面
   ═══════════════════════════════════════════════════════ */

/* ── ステップインジケーター ─────────────────────────── */
.fax-step-indicator {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  padding: 10px 0 16px;
}

.fax-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
}

.fax-step-circle {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-weight: 600;
  border: 1.5px solid var(--color-border);
  background: var(--color-bg-section);
  color: var(--color-text-muted);
  flex-shrink: 0;
}

.fax-step-done .fax-step-circle {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: #fff;
}

.fax-step-active .fax-step-circle {
  background: var(--color-primary-light);
  border-color: var(--color-primary);
  color: var(--color-primary);
}

.fax-step-label {
  font-size: 9px;
  color: var(--color-text-muted);
  white-space: nowrap;
  text-align: center;
}

.fax-step-done .fax-step-label,
.fax-step-active .fax-step-label {
  color: var(--color-primary);
  font-weight: 500;
}

.fax-step-arrow {
  color: var(--color-text-muted);
  font-size: 14px;
  margin-top: 8px;   /* circle 中央付近に揃える */
  flex-shrink: 0;
}

/* ── 案件ヘッダーパネル ─────────────────────────────── */
.fax-header-panel {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 0 14px;
  flex-wrap: wrap;
}

.fax-patient-name {
  font-weight: 600;
  font-size: 15px;
  color: var(--color-text);
}

.fax-header-sep {
  color: var(--color-text-muted);
}

.fax-header-visit {
  font-size: 13px;
  color: var(--color-text-body, var(--color-text));
}

.fax-header-pdf {
  font-size: 11px;
}

/* ── 宛先セクション ─────────────────────────────────── */
.fax-recipients-section {
  background: var(--color-bg-section);
  border: 0.5px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: 16px 20px;
  margin-bottom: 12px;
}

.fax-recipients-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
}

.fax-section-title {
  font-size: 13px;
  font-weight: 500;
  display: flex;
  align-items: center;
  gap: 8px;
}

.fax-section-title::before {
  content: '';
  display: inline-block;
  width: 3px;
  height: 14px;
  background: var(--color-primary);
  border-radius: 2px;
}

/* ── 宛先カード ─────────────────────────────────────── */
.fax-recipient-cards {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 8px 0;
}

.fax-recipient-card {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  border: 0.5px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: #fff;
  flex-wrap: wrap;
}

.fax-recipient-card.fax-card-sent {
  background: #f0faf4;
  border-color: #a7d7b8;
}

.fax-recipient-card.fax-card-error {
  background: #fff5f5;
  border-color: #f5b8b8;
}

/* ── 種別バッジ ─────────────────────────────────────── */
.fax-kind-badge {
  display: inline-flex;
  align-items: center;
  font-size: 9px;
  font-weight: 700;
  padding: 2px 7px;
  border-radius: var(--radius-pill);
  white-space: nowrap;
  flex-shrink: 0;
  letter-spacing: 0.02em;
}

.fax-kind-doctor         { background: #dbeafe; color: #1e40af; border: 0.5px solid #93c5fd; }
.fax-kind-care-manager   { background: #fef3c7; color: #92400e; border: 0.5px solid #fcd34d; }
.fax-kind-visiting-nurse { background: #d1fae5; color: #065f46; border: 0.5px solid #6ee7b7; }
.fax-kind-temporary      { background: #ede9fe; color: #5b21b6; border: 0.5px solid #c4b5fd; }

/* ── カード内 check label ───────────────────────────── */
.fax-card-check-label {
  display: flex;
  align-items: center;
  gap: 7px;
  cursor: pointer;
  flex: 1;
  min-width: 120px;
}

.fax-card-check-label input[type="checkbox"] {
  display: inline-block;
  width: auto;
  flex-shrink: 0;
  margin: 0;
}

.fax-card-name {
  font-size: 13px;
  font-weight: 500;
}

.fax-card-fax {
  font-size: 11px;
  color: var(--color-text-muted);
  white-space: nowrap;
}

.fax-kind-dev {
  font-size: 9px;
  color: var(--color-text-muted);
}

/* ステータスバッジ (既存 fax-badge-* を補完) */
.fax-badge-pending { color: var(--color-text-muted); font-size: 11px; }
.fax-badge-sent    { color: #16a34a; font-size: 11px; font-weight: 600; }
.fax-badge-error   { color: #dc2626; font-size: 11px; font-weight: 600; }

/* ── 臨時宛先 削除ボタン ─────────────────────────────── */
.btn-temp-delete {
  margin-left: auto;
  padding: 2px 8px;
  font-size: 11px;
  color: var(--color-text-muted);
  background: none;
  border: 0.5px solid var(--color-border);
  border-radius: var(--radius-sm);
  cursor: pointer;
  line-height: 1.6;
}

.btn-temp-delete:hover {
  background: #fee2e2;
  border-color: #f5b8b8;
  color: #dc2626;
}

/* ── 臨時宛先 追加フォーム ──────────────────────────── */
.fax-temp-form {
  margin-top: 12px;
  padding: 14px;
  border: 1px solid var(--color-primary);
  border-radius: var(--radius-sm);
  background: var(--color-primary-light);
}

.fax-temp-form-title {
  font-size: 12px;
  font-weight: 600;
  color: var(--color-primary-dark);
  margin-bottom: 10px;
}

.fax-temp-form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-bottom: 10px;
}

.fax-temp-form-actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
}

/* ── 再初期化セクション ─────────────────────────────── */
.fax-action-section {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 8px 0 12px;
  flex-wrap: wrap;
}

/* ── フッター ───────────────────────────────────────── */
.fax-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 20px;
  border-top: 0.5px solid var(--color-border);
  margin-top: 12px;
}

.fax-footer-right {
  display: flex;
  align-items: center;
  gap: 10px;
}

.fax-sent-msg {
  font-size: 14px;
  font-weight: 600;
  color: #16a34a;
}

/* ═══════════════════════════════════════════════════════
   Phase 6c: 送信後ポップアップ + 臨時宛先登録処理
   ═══════════════════════════════════════════════════════ */

/* ── 送信完了ポップアップ ────────────────────────────── */
.post-send-modal {
  max-width: 460px;
  width: 94vw;
  padding: 0;
  overflow: hidden;
}

.post-send-header {
  padding: 16px 20px;
  background: var(--color-bg-section);
  border-bottom: 0.5px solid var(--color-border);
  display: flex;
  align-items: center;
  gap: 10px;
}

.success-icon {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: #16a34a;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  font-weight: 700;
  flex-shrink: 0;
}

.post-send-title {
  font-size: 15px;
  font-weight: 600;
  color: var(--color-text);
}

.post-send-body {
  padding: 18px 20px;
}

.post-send-body p {
  margin: 0 0 6px;
  font-size: 13px;
  color: var(--color-text);
  line-height: 1.6;
}

.post-send-body .muted {
  color: var(--color-text-muted);
  font-size: 12px;
}

.post-send-temps-list {
  background: var(--color-warning-bg);
  border: 0.5px solid var(--color-warning-border);
  border-radius: var(--radius-md);
  padding: 10px 14px;
  margin-top: 12px;
}

.post-send-temps-header {
  font-size: 11px;
  color: var(--color-warning-text);
  font-weight: 600;
  margin-bottom: 8px;
}

.post-send-temp-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 4px 0;
  font-size: 12px;
}

.post-send-temp-row .badge-temporary {
  background: var(--color-warning);
  color: #fff;
  padding: 1px 7px;
  border-radius: var(--radius-sm);
  font-size: 9px;
  font-weight: 700;
  flex-shrink: 0;
}

.post-send-temp-row .temp-name {
  flex: 1;
  color: var(--color-text);
  font-weight: 500;
}

.post-send-temp-row .temp-fax {
  font-family: monospace;
  color: var(--color-text-muted);
  font-size: 11px;
}

.post-send-actions {
  padding: 12px 20px;
  background: var(--color-bg-section);
  border-top: 0.5px solid var(--color-border);
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}

/* ── 登録待ちオレンジバー ────────────────────────────── */
.pending-registration-bar {
  background: var(--color-warning-bg);
  border: 1px solid var(--color-warning-border);
  border-radius: var(--radius-md);
  padding: 10px 14px;
  margin-bottom: 14px;
  display: flex;
  align-items: center;
  gap: 10px;
}

.pending-registration-icon {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--color-warning);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-weight: 700;
  flex-shrink: 0;
}

.pending-registration-text strong {
  font-size: 12px;
  color: var(--color-warning-text);
  margin-right: 6px;
}

.pending-registration-text {
  font-size: 12px;
  color: var(--color-text-muted);
}

/* ── 登録候補カード ──────────────────────────────────── */
.fax-card-pending-registration {
  background: var(--color-warning-bg);
  border: 1.5px solid var(--color-warning);
  border-radius: var(--radius-md);
  padding: 14px 16px;
  margin-bottom: 10px;
}

.fax-kind-temporary-register {
  background: var(--color-warning) !important;
  color: #fff !important;
  border: none !important;
}

.pending-edit-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 10px;
  margin: 10px 0;
}

@media (max-width: 600px) {
  .pending-edit-grid { grid-template-columns: 1fr; }
}

.pending-edit-actions {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 10px;
  border-top: 0.5px dashed var(--color-warning-border);
}

.pending-edit-actions label.check-label {
  display: flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  font-size: 12px;
  color: var(--color-text);
  width: auto;
}

.pending-edit-actions .check-label input[type="checkbox"] {
  display: inline-block;
  width: auto;
}

.pending-btns {
  display: flex;
  gap: 6px;
}

/* ============================================================
   Phase 7: 計画書作成画面 v1
   ============================================================ */

/* 薬効群自動判定バナー */
.auto-categories-banner {
  background: #F8FAFA;
  border: 0.5px solid #C8E0E0;
  border-radius: var(--radius-md);
  padding: 12px 16px;
  margin-bottom: 14px;
  display: flex;
  align-items: center;
  gap: 10px;
}
.auto-categories-banner-icon {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--color-success, #27AE60);
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 600;
  flex-shrink: 0;
}
.auto-categories-banner-body {
  flex: 1;
  font-size: 12px;
  color: var(--color-text);
  font-weight: 500;
}
.auto-categories-list {
  margin-top: 4px;
  font-size: 11px;
  color: var(--color-text-muted);
}
.auto-categories-list .badge-category {
  display: inline-block;
  padding: 1px 8px;
  background: var(--color-primary-light, #EAF4FB);
  color: var(--color-primary-dark, #1A5276);
  border-radius: var(--radius-pill, 999px);
  font-size: 10px;
  margin: 2px 2px 0;
}

/* 自動生成項目セクション */
.auto-generated-section {
  background: var(--color-bg-section, #FAFAFA);
  border: 0.5px solid var(--color-border, #DDD);
  border-radius: var(--radius-md);
  padding: 14px 18px;
  margin-bottom: 14px;
}
.auto-generated-section-header {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 12px;
}
.auto-generated-section-header .count {
  padding: 1px 8px;
  background: #F0F0F0;
  color: var(--color-text-muted, #888);
  border-radius: var(--radius-pill, 999px);
  font-size: 10px;
}
.auto-item-row {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  padding: 5px 0;
  border-bottom: 0.5px solid #EFEFEF;
}
.auto-item-row:last-child {
  border-bottom: none;
}
.auto-item-label {
  font-size: 11px;
  color: var(--color-text-subtle, #999);
  min-width: 110px;
  padding-top: 2px;
  flex-shrink: 0;
}
.auto-item-badge {
  padding: 1px 6px;
  background: #E8E8F5;
  color: #5A5A8F;
  border-radius: 8px;
  font-size: 9px;
  font-weight: 600;
  flex-shrink: 0;
  margin-top: 3px;
  white-space: nowrap;
}
.auto-item-value {
  font-size: 12px;
  color: #555;
  flex: 1;
  line-height: 1.6;
  white-space: pre-wrap;
}

/* 追記事項セクション */
.additional-notes-section {
  background: white;
  border: 1.5px solid var(--color-primary, #2980B9);
  border-radius: var(--radius-lg, 10px);
  padding: 18px 20px;
  margin-bottom: 16px;
}
.additional-notes-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
}
.badge-editable {
  display: inline-block;
  padding: 2px 10px;
  background: var(--color-primary, #2980B9);
  color: white;
  border-radius: var(--radius-sm, 4px);
  font-size: 10px;
  font-weight: 600;
}
.plan-notes-textarea {
  width: 100%;
  border: 0.5px solid #CCC;
  padding: 10px 12px;
  border-radius: var(--radius-sm, 4px);
  font-size: 13px;
  background: white;
  box-sizing: border-box;
  resize: vertical;
  min-height: 140px;
  font-family: inherit;
  line-height: 1.6;
}
.plan-notes-textarea:focus {
  outline: none;
  border-color: var(--color-primary, #2980B9);
  box-shadow: 0 0 0 2px rgba(41, 128, 185, 0.15);
}
.plan-notes-textarea:disabled {
  background: #F8F8F8;
  color: #888;
}

/* 計画書タブアクション行 */
.patient-tab-actions {
  display: flex;
  gap: 8px;
  margin-bottom: 14px;
}

/* ─────────────────────────────────────────────────────────────
   Phase 7.5: yakumemo ブランドロゴ
   ───────────────────────────────────────────────────────────── */

.yakumemo-logo,
.yakutomo-logo,
.yakutomo-logo-disabled {
  font-family: 'M PLUS Rounded 1c', 'Hiragino Sans', 'Yu Gothic', sans-serif;
  letter-spacing: 0.06em;
  display: inline-block;
  line-height: 1;
}

.yakumemo-logo .logo-light,
.yakutomo-logo .logo-light,
.yakutomo-logo-disabled .logo-light {
  font-weight: 300;
  color: var(--color-text);
}

.yakumemo-logo .logo-accent-me {
  color: #2A9B9B;
  font-weight: 700;
}

.yakutomo-logo .logo-accent-to {
  color: #1E3A5F;
  font-weight: 700;
}

.yakutomo-logo-disabled .logo-light {
  color: #AAA;
  font-weight: 300;
}

.yakutomo-logo-disabled .logo-accent-to {
  color: #AAA;
  font-weight: 700;
}

.yakumemo-logo .logo-colon,
.yakutomo-logo .logo-colon,
.yakutomo-logo-disabled .logo-colon {
  font-weight: 700;
  margin: 0 1px;
}

/* サイドバーロゴラッパー */
.sidebar-logo-wrap {
  display: flex;
  align-items: center;
  padding: 2px 0;
}

/* yakuTO:mo 予定 サイドバー項目 */
.sidebar-item-yakutomo {
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
}

.sidebar-item-yakutomo-label {
  display: flex;
  align-items: center;
}

