/* 配車ボード（事務局用）のページ固有スタイル */

/* スタットタイル（数字は文字色トークン。系列色は使わない） */
.stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--sp-3);
  margin-bottom: var(--sp-4);
}
@media (max-width: 720px) { .stats { grid-template-columns: 1fr 1fr; } }
.stat {
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  padding: var(--sp-3) var(--sp-4);
}
.stat .num {
  font-size: var(--fs-2xl);
  font-weight: 800;
  color: var(--c-text);
  font-variant-numeric: tabular-nums;
  line-height: 1.2;
}
.stat .lbl { font-size: var(--fs-xs); color: var(--c-text-sub); font-weight: 700; }

/* 2カラム構成 */
.cols { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: var(--sp-4); align-items: start; }
@media (max-width: 980px) { .cols { grid-template-columns: minmax(0, 1fr); } }

/* 車両ボード */
.board-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-4); margin-bottom: var(--sp-4); }
@media (max-width: 720px) { .board-grid { grid-template-columns: 1fr; } }
.vehicle-card {
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--r-lg);
  overflow: hidden;
}
.vehicle-head {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  padding: var(--sp-3) var(--sp-4);
  /* 車両の色は上の太い帯（印）で示す。文字は地の上にほぼ黒で置く（車両色の上の白文字は7:1に届かないため） */
  background: var(--c-surface-2);
  color: var(--c-text);
  border-top: 12px solid var(--c-line-strong);
  border-bottom: 1px solid var(--c-line);
  font-weight: 700;
}
.vehicle-head .cap { margin-left: auto; font-size: var(--fs-xs); }
.stopline {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  padding: var(--sp-2) var(--sp-4);
  border-bottom: 1px solid var(--c-line);
  font-size: var(--fs-sm);
}
.stopline:last-child { border-bottom: none; }
/* 済んだ停車: 薄くせず、取り消し線＋補足の文字色で示す */
.stopline.done { color: var(--c-text-faint); text-decoration: line-through; background: var(--c-surface-2); }
.stopline .t { font-weight: 800; min-width: 46px; font-variant-numeric: tabular-nums; }
.stopline .pill {
  font-size: var(--fs-xs);
  font-weight: 700;
  border-radius: var(--r-full);
  padding: 1px 10px;
}
.stopline .pill.up { background: var(--c-ok-soft); color: var(--c-ok); }
.stopline .pill.down { background: var(--c-info-soft); color: var(--c-info); }
.stopline .who { margin-left: auto; color: var(--c-text-sub); }
.stopline .okmark { color: var(--c-ok); font-weight: 800; }
.stopline.empty { color: var(--c-text-faint); }

/* 模式地図 */
#map { width: 100%; height: auto; background: var(--c-surface-2); border-radius: var(--r-md); }
.map-legend { display: flex; gap: var(--sp-4); margin-bottom: var(--sp-2); flex-wrap: wrap; }
.map-legend .key { display: flex; align-items: center; gap: 6px; font-size: var(--fs-sm); font-weight: 700; color: var(--c-text-sub); }
.map-legend .sw { width: 18px; height: 4px; border-radius: 2px; }

/* オペレータ入力 */
.op-two { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-3); }
.check-inline { display: flex; align-items: center; gap: var(--sp-2); font-size: var(--fs-md); font-weight: 700; min-height: var(--tap-min); }
.check-inline input { width: 24px; height: 24px; }
.op-result {
  margin-top: var(--sp-3);
  background: var(--c-primary-soft);
  border: 1.5px solid var(--c-primary);
  border-radius: var(--r-md);
  padding: var(--sp-3) var(--sp-4);
}
.op-answer { font-size: var(--fs-lg); font-weight: 800; margin-bottom: var(--sp-3); }
.op-answer .sub { display: block; font-size: var(--fs-sm); font-weight: 600; color: var(--c-text-sub); }
.op-actions { display: flex; gap: var(--sp-2); }
.op-actions .btn { flex: 1; }

/* ログ */
.log {
  font-size: var(--fs-xs);
  line-height: 1.9;
  max-height: 320px;
  overflow-y: auto;
  color: var(--c-text-sub);
}
.log .li { padding-left: 1em; text-indent: -1em; }
.log .li.reject { color: var(--c-danger); font-weight: 700; }
.log .li.ops { color: var(--c-info); }

.demo-ops .btn { margin-bottom: var(--sp-2); }

/* 印刷（運行表のみを出す） */
@media print {
  .appbar, .notice, .print-hide, .col-side, .stats { display: none !important; }
  body { background: #fff; }
  .container { max-width: none; padding: 0; }
  .cols { display: block; }
  .board-grid { display: block; }
  .vehicle-card { break-inside: avoid; border: 1.5px solid #000; margin-bottom: 8mm; }
  .vehicle-head { color: #000; border-bottom: 1.5px solid #000; }
  .stopline { font-size: 12pt; }
}

/* 車両ヘッダの経路リンク・定期路線の凡例 */
.vehicle-head .head-link {
  color: var(--c-text);
  font-size: var(--fs-xs);
  font-weight: 700;
  border: 1.5px solid currentColor;
  border-radius: var(--r-full);
  padding: 2px 10px;
  text-decoration: underline;
  margin-left: var(--sp-2);
}
.map-legend .key.faint { color: var(--c-text-faint); }
.map-legend .sw.fixed {
  background: none;
  border-top: 3px dashed #3D4F45;
  opacity: 0.5;
  height: 0;
}

/* 地図の表示切替・Googleマップ埋め込み */
.map-mode { margin-bottom: var(--sp-3); }
.map-mode label { min-height: 44px; font-size: var(--fs-sm); }
#gmapWrap iframe {
  width: 100%;
  aspect-ratio: 4 / 5;
  border: 0;
  border-radius: var(--r-md);
  background: var(--c-surface-2);
}

/* ===== 表示切替（すべて / 受付・配車 / 地図 / ログ） ===== */
.view-switch {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--sp-2);
  max-width: 560px;
  margin-bottom: var(--sp-4);
}
.view-switch label { min-height: 44px; font-size: var(--fs-sm); }

/* 受付・配車: 地図・ログ・試作操作を隠す */
body[data-view="dispatch"] #mapSec,
body[data-view="dispatch"] #logSec,
body[data-view="dispatch"] #demoSec { display: none; }

/* 地図: 地図だけを大きく1画面表示 */
body[data-view="map"] .stats,
body[data-view="map"] #unassignedCard,
body[data-view="map"] #boardSec,
body[data-view="map"] .col-side { display: none; }
body[data-view="map"] .cols { display: block; }
body[data-view="map"] #mapSec { max-width: 860px; margin: 0 auto; }

/* ログ: ログだけを大きく1画面表示 */
body[data-view="log"] .stats,
body[data-view="log"] .col-main { display: none; }
body[data-view="log"] .cols { display: block; }
body[data-view="log"] #opCard,
body[data-view="log"] #demoSec { display: none; }
body[data-view="log"] #logSec { max-width: 860px; margin: 0 auto; }
body[data-view="log"] #logSec .log { max-height: 70vh; }

/* 印刷は表示切替に関係なく運行表を出す */
@media print {
  body[data-view] .col-main, body[data-view] #boardSec { display: block !important; }
}

/* ===== PC（幅1100px以上）: 全画面固定レイアウト・ページスクロール無し ===== */
@media (min-width: 1100px) {
  body {
    height: 100dvh;
    overflow: hidden;
    display: flex;
    flex-direction: column;
  }
  .appbar { flex: none; }
  .container.wide {
    flex: 1;
    min-height: 0;
    max-width: none;      /* 画面全体を使う */
    width: 100%;
    display: flex;
    flex-direction: column;
    padding-bottom: var(--sp-3);
  }
  .notice, .view-switch, .stats { flex: none; }
  .notice { padding-top: var(--sp-2); padding-bottom: var(--sp-2); margin-bottom: var(--sp-3); }
  .view-switch { margin-bottom: var(--sp-3); }
  .stats { margin-bottom: var(--sp-3); }

  /* 2カラム領域が残り高さを使い切り、中身は各カラム内でスクロール */
  .cols {
    flex: 1;
    min-height: 0;
    overflow: hidden;
  }
  .col-main, .col-side {
    height: 100%;
    min-height: 0;
    overflow-y: auto;
    padding-right: 2px;
  }

  /* 「すべて」表示でも地図カードが1画面に収まるよう高さを絞る（縦長図は左右余白で調整） */
  #map { max-height: calc(100dvh - 360px); }

  /* 地図ビュー: 地図カードを残り高さいっぱいに */
  body[data-view="map"] .cols { display: flex; }
  body[data-view="map"] .col-main {
    width: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
  }
  body[data-view="map"] #mapSec {
    flex: 1;
    min-height: 0;
    max-width: none;
    width: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    margin-bottom: 0;
  }
  body[data-view="map"] #map {
    flex: 1;
    min-height: 0;
    max-height: none;
    width: 100%;
    height: auto;
  }
  body[data-view="map"] #gmapWrap:not([hidden]) {
    flex: 1;
    min-height: 0;
  }
  body[data-view="map"] #gmapWrap iframe {
    height: 100%;
    aspect-ratio: auto;
  }

  /* ログビュー: ログカードを残り高さいっぱいに */
  body[data-view="log"] .cols { display: flex; }
  body[data-view="log"] .col-side {
    width: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
  }
  body[data-view="log"] #logSec {
    flex: 1;
    min-height: 0;
    max-width: 1000px;
    width: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    margin: 0 auto;
  }
  body[data-view="log"] #logSec .log {
    flex: 1;
    min-height: 0;
    max-height: none;
  }
}

/* 印刷時は固定レイアウトを解除（全ページに流し込む） */
@media print {
  body { height: auto !important; overflow: visible !important; display: block !important; }
  .cols, .col-main { height: auto !important; overflow: visible !important; }
}

/* 地図・ログの1画面表示中は注意帯を隠して表示領域を広げる（「すべて」では表示） */
body[data-view="map"] .notice,
body[data-view="log"] .notice { display: none; }

/* ===== 全域図のGoogleマップ（Maps JS API） ===== */
#gmap-all {
  width: 100%;
  height: min(56vh, 620px);
  border-radius: var(--r-md);
  background: var(--c-surface-2);
}
.gmap-hub-label {
  transform: translateY(-22px);
  font-size: 12px;
  font-weight: 700;
  color: #1D2A23;
  text-shadow: 0 1px 3px #fff, 0 -1px 3px #fff, 1px 0 3px #fff, -1px 0 3px #fff;
}
@media (min-width: 1100px) {
  body[data-view="map"] #gmap-all:not([hidden]) {
    flex: 1;
    min-height: 0;
    height: auto;
  }
}

/* ===== 車両8台対応 ===== */
/* 車両カードは台数に応じて折り返し */
.board-grid { grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); }
/* 稼働していない車両: 薄くせず、破線の枠で示す */
.vehicle-card.inactive { border: 2px dashed var(--c-line-strong); background: var(--c-surface-2); }

/* 地図の車両タブ（最大8+1個）を折り返し */
.map-mode { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); }

/* 車両管理の行 */
.fleet-row {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  padding: var(--sp-2) 0;
  border-bottom: 1px solid var(--c-line);
}
.fleet-row:last-child { border-bottom: none; }
.fleet-row .dot { width: 14px; height: 14px; border-radius: 50%; flex: none; }
.fleet-row .fname { flex: 1; min-width: 0; min-height: 40px; font-size: var(--fs-sm); padding: var(--sp-2); }
.fleet-row .fsel { width: auto; min-height: 40px; font-size: var(--fs-sm); padding: var(--sp-1) var(--sp-2); }
.fleet-row .factive { display: flex; align-items: center; gap: 4px; font-size: var(--fs-xs); font-weight: 700; white-space: nowrap; }
.fleet-row .factive input { width: 18px; height: 18px; }
.fleet-row .fdel { min-height: 36px; padding: 0 10px; }
#btnAddVehicle { margin-top: var(--sp-3); }

/* 車両管理は「すべて」表示のときだけ出す */
body[data-view="dispatch"] #fleetSec,
body[data-view="map"] #fleetSec,
body[data-view="log"] #fleetSec { display: none; }

/* ============================================================
   事業者別の表示・運休・お知らせ（2026-09 追加）
   ============================================================ */

/* 印刷のときだけ出す見出し */
.print-only { display: none; }

/* 運行日の帯 */
.daybar {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--sp-2) var(--sp-4);
  background: var(--c-primary-soft);
  border: 1.5px solid var(--c-primary);
  border-radius: var(--r-md);
  padding: var(--sp-2) var(--sp-4);
  margin-bottom: var(--sp-3);
}
.daybar .day { font-size: var(--fs-xl); font-weight: 800; color: var(--c-text); }
.daybar .deadline { font-size: var(--fs-md); font-weight: 700; color: var(--c-text-sub); }

/* だれの画面として見るか */
.opswitch-wrap {
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  padding: var(--sp-3) var(--sp-4);
  margin-bottom: var(--sp-3);
}
.opswitch-head { font-size: var(--fs-md); font-weight: 800; color: var(--c-primary); margin-bottom: var(--sp-2); }
.op-switch { max-width: 640px; }
.op-switch.seg.cols-3 { grid-template-columns: 1.8fr 1fr 1fr; }
.op-switch label { min-height: var(--tap-min); font-size: var(--fs-md); font-weight: 700; text-align: center; }
.opswitch-note { font-size: var(--fs-sm); color: var(--c-text-sub); margin-top: var(--sp-2); line-height: 1.6; }
@media (max-width: 520px) {
  .op-switch.seg.cols-3 { grid-template-columns: 1fr 1fr; }
  .op-switch label:first-child { grid-column: 1 / -1; }
}
/* 会社の画面のときは、枠の色を変えて「見ている立場」が分かるようにする */
body[data-operator="op-a"] .opswitch-wrap,
body[data-operator="op-b"] .opswitch-wrap { border-color: var(--c-info); border-left: 5px solid var(--c-info); }

/* 表示切替は5つ */
.view-switch { grid-template-columns: repeat(auto-fit, minmax(104px, 1fr)); max-width: 760px; }

/* スタットタイル（全体の画面では5枚） */
.stats.five { grid-template-columns: repeat(5, 1fr); }
@media (max-width: 980px) { .stats.five { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 720px) {
  .stats.five { grid-template-columns: 1fr 1fr; }
  .stats.five .stat:last-child { grid-column: 1 / -1; }
}

/* 車両カード: 会社名と、予約の印 */
.vehicle-head { flex-wrap: wrap; }
.vehicle-head .opname {
  font-size: var(--fs-xs);
  font-weight: 800;
  border: 1.5px solid currentColor;
  border-radius: var(--r-full);
  padding: 1px 10px;
}
.stopline { flex-wrap: wrap; }
.stopline .marks { display: inline-flex; flex-wrap: wrap; gap: 4px; }
.badge.mark { padding: 1px 8px; }
/* 予約の経路の印（電話・LINE・訪問者）は区分の名前で、警告や完了ではない。⚠・✓を付けない（絵文字と言葉で区別） */
.badge.mark.warn::before, .badge.mark.ok::before, .badge.mark.danger::before { content: none; }
.badge.mark.proxy { background: var(--c-warn-soft); color: var(--c-warn); border: 1px solid var(--c-warn); }
.badge.mark.code { background: var(--c-surface); color: var(--c-text); border: 1px solid var(--c-line-strong); font-variant-numeric: tabular-nums; }

/* 予約の一覧 */
.legend-marks { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-bottom: var(--sp-2); }
.rsv-list > li, .sus-list > li { align-items: flex-start; }
.rsv-list .t { font-size: var(--fs-lg); font-weight: 800; min-width: 52px; padding-top: 2px; }
.rsv-list .main, .sus-list .main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.rsv-list .name, .sus-list .name { font-size: var(--fs-md); font-weight: 800; }
.rsv-list .od, .sus-list .od, .calltable .od { font-size: var(--fs-md); color: var(--c-text-sub); }
.rsv-list .marks { display: flex; flex-wrap: wrap; gap: 4px; }
.rsv-list .rsv.cancelled .t, .rsv-list .rsv.cancelled .name, .rsv-list .rsv.cancelled .od { color: var(--c-text-faint); text-decoration: line-through; }
.rsv-list .btn, .sus-list .btn { min-height: 44px; flex: none; }
#rsvSec .rsv-list { max-height: 420px; overflow-y: auto; }

/* 電話受付: 担当の会社の表示 */
.op-route {
  background: var(--c-info-soft);
  border-left: 4px solid var(--c-info);
  border-radius: var(--r-sm);
  padding: var(--sp-2) var(--sp-3);
  font-size: var(--fs-md);
  margin-bottom: var(--sp-3);
}
.op-route:empty { display: none; }
.op-route.other { background: var(--c-danger-soft); border-left-color: var(--c-danger); }
.op-route .sub { display: block; font-size: var(--fs-sm); color: var(--c-text-sub); margin-top: 2px; }

/* 冬の運休 */
.sus-lead { font-size: var(--fs-md); color: var(--c-text-sub); margin-bottom: var(--sp-3); line-height: 1.6; }
#btnSuspend { min-height: 52px; font-size: var(--fs-lg); }
.sub-h { font-size: var(--fs-md); font-weight: 800; color: var(--c-text); margin: var(--sp-4) 0 var(--sp-1); }
.sus-result {
  margin-top: var(--sp-3);
  background: var(--c-danger-soft);
  border: 1.5px solid var(--c-danger);
  border-radius: var(--r-md);
  padding: var(--sp-3) var(--sp-4);
}
.sus-result .sr-title { font-size: var(--fs-lg); font-weight: 800; margin-bottom: var(--sp-2); }
.sus-result .sr-nums { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-2); text-align: center; }
.sus-result .sr-nums .n { display: block; font-size: var(--fs-3xl); font-weight: 800; line-height: 1.1; color: var(--c-text); }
.sus-result .sr-nums .l { display: block; font-size: var(--fs-sm); font-weight: 700; color: var(--c-text-sub); }
.sus-result .sr-next { margin-top: var(--sp-2); font-size: var(--fs-md); font-weight: 700; }

/* 電話で知らせる人の一覧 */
#callSec { border: 2px solid var(--c-danger); }
.call-remaining { display: flex; align-items: baseline; flex-wrap: wrap; gap: var(--sp-2); margin-bottom: var(--sp-3); }
.call-remaining .l { font-size: var(--fs-lg); font-weight: 700; }
.call-remaining .n { font-size: 3rem; font-weight: 800; line-height: 1; color: var(--c-danger); }
.call-remaining .n.zero { color: var(--c-ok); }
.calltable { width: 100%; border-collapse: collapse; font-size: var(--fs-md); }
.calltable th {
  text-align: left;
  font-size: var(--fs-sm);
  color: var(--c-text-sub);
  border-bottom: 2px solid var(--c-line-strong);
  padding: var(--sp-2);
  white-space: nowrap;
}
.calltable td { padding: var(--sp-2); border-bottom: 1px solid var(--c-line); vertical-align: middle; }
.calltable td .od { display: block; }
.calltable td .badge { margin-left: 6px; }
/* 電話済みの行: 薄くせず、面の色＋補足の文字色で示す（「済」の言葉は右端の欄に出る） */
.calltable tr.called td { background: var(--c-surface-2); color: var(--c-text-faint); }
.calltable .btn { min-height: 44px; white-space: nowrap; }
.calltable .check-inline { font-size: var(--fs-md); white-space: nowrap; }
@media (max-width: 720px) {
  .calltable thead { display: none; }
  .calltable, .calltable tbody, .calltable tr, .calltable td { display: block; width: 100%; }
  .calltable tr { border: 1px solid var(--c-line-strong); border-radius: var(--r-md); padding: var(--sp-2) var(--sp-3); margin-bottom: var(--sp-3); }
  .calltable td { border-bottom: none; padding: 4px 0; }
  .calltable td[data-label="お迎え予定"]::before { content: "お迎え予定 "; color: var(--c-text-sub); font-size: var(--fs-sm); }
  .calltable td[data-label="理由"]::before { content: "電話する理由: "; color: var(--c-text-sub); font-size: var(--fs-sm); }
}

/* 送ったお知らせの控え */
.notice-count { font-size: var(--fs-md); font-weight: 700; margin: var(--sp-2) 0; }
.outbox { max-height: 460px; overflow-y: auto; display: flex; flex-direction: column; gap: var(--sp-3); }
.ob { background: var(--c-surface-2); border-radius: var(--r-md); padding: var(--sp-3); }
.ob-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-bottom: var(--sp-1); }
.ob-time { margin-left: auto; font-size: var(--fs-sm); color: var(--c-text-sub); }
.ob-to { font-size: var(--fs-md); color: var(--c-text-sub); }
.ob-title { font-size: var(--fs-md); font-weight: 800; margin-top: 2px; }
.ob-body { font-size: var(--fs-md); white-space: pre-wrap; line-height: 1.6; overflow-wrap: anywhere; }

/* 車両管理の行は、会社の選択が入るので折り返す */
.fleet-row { flex-wrap: wrap; }
.fleet-row .fname { flex: 1 1 140px; }
.fleet-row .fsel.fop { font-weight: 700; }
.fleet-row .fsel, .fleet-row .fname, .fleet-row .fdel, .fleet-row .factive { min-height: 44px; }
.fleet-row .factive input { width: 22px; height: 22px; }

/* 表示切替との組み合わせ */
body[data-view="dispatch"] #noticeSec { display: none; }
body[data-view="map"] #callSec,
body[data-view="map"] #rsvSec { display: none; }
body[data-view="log"] #susSec,
body[data-view="log"] #noticeSec { display: none; }
/* 運休・お知らせ: 電話の一覧・運休・お知らせの控えだけを出す */
body[data-view="winter"] .stats,
body[data-view="winter"] #unassignedCard,
body[data-view="winter"] #boardSec,
body[data-view="winter"] #rsvSec,
body[data-view="winter"] #mapSec,
body[data-view="winter"] #opCard,
body[data-view="winter"] #logSec,
body[data-view="winter"] #fleetSec,
body[data-view="winter"] #demoSec { display: none; }
body[data-view="winter"] .outbox { max-height: none; }

/* PCの固定レイアウトでは、上の帯を低くまとめる */
@media (min-width: 1100px) {
  .toprow, .opswitch-wrap { flex: none; }
  .toprow { display: flex; align-items: stretch; gap: var(--sp-3); margin-bottom: var(--sp-2); }
  .toprow .daybar { flex: none; margin-bottom: 0; padding-top: 4px; padding-bottom: 4px; align-items: center; }
  .toprow .view-switch { flex: 1; margin-bottom: 0; max-width: 700px; }
  .daybar .day { font-size: var(--fs-lg); }
  .stats { margin-bottom: var(--sp-2); }
  .stat { padding: var(--sp-2) var(--sp-3); }
  .stat .num { font-size: var(--fs-xl); }
  .opswitch-wrap {
    display: grid;
    grid-template-columns: auto minmax(420px, 520px) 1fr;
    align-items: center;
    gap: var(--sp-3);
    padding-top: var(--sp-2);
    padding-bottom: var(--sp-2);
    margin-bottom: var(--sp-2);
  }
  .opswitch-head { margin-bottom: 0; }
  .opswitch-note { margin-top: 0; font-size: var(--fs-xs); line-height: 1.45; }
  .op-switch label { min-height: 44px; }
}

/* 印刷: 見出しに運行日を入れる。印は枠線で出す */
@media print {
  .print-only { display: block !important; }
  .print-head { margin-bottom: 6mm; color: #000; }
  .print-head .ph-title { font-size: 18pt; font-weight: 800; }
  .print-head .ph-sub { font-size: 11pt; }
  .daybar, .opswitch-wrap, #callSec, #rsvSec { display: none !important; }
  .vehicle-head .opname { border-color: #000; }
  .stopline .badge.mark { background: none !important; color: #000 !important; border: 1px solid #000; }
}

/* スマホ幅では上の帯が窮屈なので、印刷ボタンは出さない（印刷はPCで） */
@media (max-width: 480px) { #btnPrint { display: none; } }

/* ---- 通院ライナー（将来の案）。全体の画面のときだけ出る ---- */
.liner-sec { border: 3px solid var(--c-warn); }
.liner-future {
  padding: var(--sp-3); margin-bottom: var(--sp-3);
  font-size: var(--fs-md); font-weight: 800;
  color: var(--c-warn); background: var(--c-warn-soft);
  border: 2px solid var(--c-warn); border-radius: var(--r-md);
}
.liner-calls { padding: var(--sp-3); margin-bottom: var(--sp-3); background: var(--c-ok-soft); border: 2px solid var(--c-ok); border-radius: var(--r-md); }
.liner-calls-head { font-size: var(--fs-lg); font-weight: 800; margin-bottom: var(--sp-2); }
.liner-call { padding: var(--sp-2) 0; font-size: var(--fs-md); }
.liner-sec .od { display: block; font-size: var(--fs-md); color: var(--c-text-sub); }
