:root {
  color-scheme: light;
  --bg: #f6f7f9;
  --panel: #ffffff;
  --ink: #18202a;
  --muted: #667085;
  --line: #d8dee7;
  --accent: #1264a3;
  --accent-strong: #0f4f7f;
  --warn: #a15c00;
  --bad: #a4262c;
  --good: #177245;
  font-family:
    Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
    sans-serif;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

button,
input,
textarea {
  font: inherit;
}

button {
  min-height: 38px;
  border: 1px solid var(--accent);
  border-radius: 6px;
  background: var(--accent);
  color: #ffffff;
  padding: 0 14px;
  cursor: pointer;
}

button:hover {
  background: var(--accent-strong);
}

button.secondary {
  background: #ffffff;
  color: var(--accent);
}

button.danger {
  border-color: var(--bad);
  color: var(--bad);
}

button.danger:hover {
  background: #fff1f1;
}

.app-shell {
  width: min(1440px, calc(100vw - 32px));
  margin: 0 auto;
  padding: 24px 0 32px;
}

.app-header {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: flex-end;
  margin-bottom: 18px;
}

.eyebrow {
  margin: 0 0 4px;
  color: var(--accent);
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
}

h1,
h2 {
  margin: 0;
  letter-spacing: 0;
}

h1 {
  font-size: 28px;
}

h2 {
  font-size: 17px;
}

.header-actions,
.control-row,
.section-title {
  display: flex;
  gap: 10px;
  align-items: center;
  flex-wrap: wrap;
}

.input-panel,
.table-panel,
.json-panel,
.catalog-panel,
.hospital-panel,
.inbound-panel,
.review-panel,
.snapshot-panel,
.composer-panel,
.summary-card {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 8px;
}

.input-panel {
  overflow: hidden;
}

.control-row {
  margin: 16px 16px 12px;
}

.status-text {
  min-height: 20px;
  color: var(--muted);
  font-size: 13px;
}

.error-text {
  color: var(--bad);
  font-size: 12px;
  line-height: 1.35;
}

.inbound-error-row {
  background: #fff6f6;
}

label {
  display: flex;
  gap: 8px;
  align-items: center;
  color: var(--muted);
  font-size: 14px;
}

.filter-control {
  position: relative;
  display: flex;
  gap: 8px;
  align-items: center;
  color: var(--muted);
  font-size: 14px;
}

.filter-label {
  white-space: nowrap;
}

.subject-label {
  flex: 1 1 420px;
}

.compact-number-label {
  flex: 0 0 auto;
}

.number-with-unit {
  display: inline-flex;
  gap: 4px;
  align-items: center;
  color: var(--ink);
}

.number-with-unit input {
  width: 72px;
}

input[type="date"],
input[type="email"],
input[type="number"],
input[type="password"],
input[type="text"],
input[type="time"],
input[type="file"],
select {
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--ink);
  min-height: 38px;
  padding: 6px 8px;
}

input[type="email"],
input[type="number"],
input[type="password"],
input[type="text"],
input[type="time"] {
  width: 100%;
}

select {
  min-width: 130px;
}

.select-like {
  display: inline-flex;
  align-items: center;
  min-width: 180px;
  justify-content: flex-start;
  text-align: left;
}

.auth-toolbar {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}

.auth-toolbar label {
  color: var(--muted);
}

.auth-toolbar select {
  min-width: 150px;
}

.login-page {
  min-height: 100vh;
  background: var(--bg);
}

.login-shell {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 24px;
}

.login-card {
  width: min(420px, 100%);
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: 0 18px 52px rgb(15 23 42 / 12%);
}

.login-card .eyebrow {
  margin: 18px 18px 4px;
}

.login-card h1 {
  margin: 0 18px 4px;
  font-size: 22px;
}

.icon-button {
  width: 38px;
  min-width: 38px;
  padding: 6px;
  font-size: 18px;
  line-height: 1;
}

.auth-dialog {
  width: min(460px, calc(100vw - 32px));
}

.auth-form {
  display: grid;
  gap: 14px;
  padding: 16px;
}

.auth-form label {
  display: grid;
  gap: 6px;
  align-items: start;
}

.auth-actions {
  display: flex;
  gap: 10px;
  align-items: center;
  justify-content: flex-end;
}

.auth-actions .status-text {
  margin-right: auto;
}

.app-settings-dialog {
  width: min(560px, calc(100vw - 32px));
}

.app-settings-form section {
  padding: 14px;
}

.app-settings-form h4 {
  margin: 0 0 12px;
  font-size: 15px;
}

.settings-grid {
  display: grid;
  gap: 12px;
}

.settings-grid label {
  display: grid;
  gap: 6px;
}

.imap-config-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  padding: 14px;
}

.imap-config-form label {
  min-width: 0;
}

.imap-config-form .checkbox-label,
.imap-config-form .settings-dialog-actions {
  grid-column: 1 / -1;
}

.checkbox-label {
  flex-direction: row;
  align-items: center;
}

.checkbox-label input {
  width: auto;
  min-height: auto;
}

.prefecture-popover,
.status-popover {
  position: absolute;
  z-index: 20;
  top: calc(100% + 6px);
  left: 0;
  max-height: 520px;
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  box-shadow: 0 14px 30px rgb(24 32 42 / 16%);
  padding: 12px;
}

.prefecture-popover {
  width: min(720px, calc(100vw - 40px));
}

.status-popover {
  width: min(360px, calc(100vw - 40px));
}

.prefecture-popover-actions,
.status-popover-actions {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 10px;
}

.prefecture-options {
  display: grid;
  grid-template-columns: repeat(2, minmax(260px, 1fr));
  gap: 12px;
}

.prefecture-group {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 10px;
}

.prefecture-group-title {
  display: grid;
  grid-template-columns: 18px minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
  min-height: 28px;
  margin-bottom: 8px;
  color: var(--ink);
  font-size: 13px;
  font-weight: 700;
}

.prefecture-group-title input {
  width: 16px;
  height: 16px;
}

.prefecture-check {
  display: grid;
  grid-template-columns: 18px minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
  min-height: 26px;
  color: var(--ink);
}

.prefecture-check input {
  width: 16px;
  height: 16px;
}

.prefecture-checks {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4px 10px;
}

@media (min-width: 900px) {
  .prefecture-checks {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

.prefecture-count {
  color: var(--muted);
  font-size: 12px;
}

.status-options {
  display: grid;
  gap: 6px;
}

.status-check {
  display: grid;
  grid-template-columns: 18px minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  min-height: 30px;
  color: var(--ink);
}

.status-check input {
  width: 16px;
  height: 16px;
}

.status-count {
  color: var(--muted);
  font-size: 12px;
}

textarea {
  display: block;
  width: calc(100% - 32px);
  min-height: 280px;
  margin: 0 16px 16px;
  border: 1px solid var(--line);
  border-radius: 6px;
  resize: vertical;
  padding: 12px;
  line-height: 1.55;
  color: var(--ink);
}

.summary-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(120px, 1fr));
  gap: 10px;
  margin: 14px 0;
}

.summary-grid:empty {
  display: none;
}

.summary-card {
  padding: 12px;
}

.summary-card span {
  display: block;
  color: var(--muted);
  font-size: 12px;
}

.summary-card strong {
  display: block;
  margin-top: 4px;
  font-size: 24px;
}

.catalog-panel {
  margin-bottom: 14px;
  overflow: hidden;
}

.hospital-panel {
  margin-bottom: 14px;
  overflow: hidden;
}

.composer-panel {
  margin-bottom: 14px;
  overflow: hidden;
}

.snapshot-panel {
  margin-bottom: 14px;
  overflow: hidden;
}

.review-panel {
  margin-bottom: 14px;
  overflow: hidden;
}

.inbound-panel {
  margin-bottom: 14px;
  overflow: hidden;
}

.filter-row {
  display: flex;
  gap: 10px;
  align-items: center;
  flex-wrap: wrap;
  padding: 12px 14px;
  border-bottom: 1px solid var(--line);
}

.filter-row label:first-child {
  flex: 1 1 260px;
}

.saved-table-wrap {
  max-height: 460px;
  overscroll-behavior: contain;
}

.inbound-table-wrap {
  max-height: 220px;
}

.review-table-wrap {
  max-height: 260px;
}

.catalog-history-tree {
  display: grid;
  gap: 8px;
  max-height: 320px;
  overflow: auto;
  padding: 10px;
}

.catalog-history-node {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.catalog-history-summary {
  display: grid;
  grid-template-columns: 170px 100px 140px 88px minmax(220px, 1fr) 190px;
  gap: 10px;
  align-items: center;
  min-height: 42px;
  padding: 0 10px;
  cursor: pointer;
}

.catalog-history-kind {
  display: inline-flex;
  gap: 8px;
  align-items: center;
}

.catalog-history-subject {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.catalog-history-children {
  display: grid;
  border-top: 1px solid var(--line);
  background: #fbfcfd;
}

.catalog-history-update,
.catalog-history-empty {
  display: grid;
  grid-template-columns: 24px 100px 100px 140px minmax(220px, 1fr) 190px;
  gap: 10px;
  align-items: center;
  min-height: 34px;
  padding: 0 10px;
  border-top: 1px solid var(--line);
  font-size: 13px;
}

.catalog-history-update:first-child,
.catalog-history-empty:first-child {
  border-top: 0;
}

.catalog-history-branch {
  color: var(--muted);
  text-align: center;
}

.catalog-history-empty {
  color: var(--muted);
}

.inline-actions {
  display: flex;
  gap: 6px;
  align-items: center;
  flex-wrap: wrap;
}

.inline-actions button {
  min-height: 32px;
  padding: 0 10px;
}

.composer-layout {
  display: grid;
  grid-template-columns: minmax(220px, 0.28fr) minmax(0, 1fr);
  gap: 14px;
  padding: 14px;
}

.composer-actions {
  display: flex;
  flex-direction: column;
  gap: 8px;
  align-items: stretch;
}

.composer-send-row {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 10px 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}

.composer-send-row label {
  align-items: stretch;
  flex-direction: column;
  gap: 5px;
}

#composer-status {
  color: var(--muted);
  font-size: 13px;
}

#reply-draft {
  min-height: 160px;
}

.select-cell {
  text-align: center;
}

.favorite-cell {
  text-align: center;
}

.favorite-button {
  min-width: 34px;
  min-height: 30px;
  border-color: #d0d5dd;
  background: #ffffff;
  color: #667085;
  padding: 0;
  font-size: 18px;
  line-height: 1;
}

.favorite-button:hover,
.favorite-button.is-favorite {
  border-color: #c58b00;
  background: #fff7df;
  color: #a15c00;
}

.favorite-shift-row > td {
  background: #fffbea;
}

.select-cell input {
  width: 18px;
  height: 18px;
}

.saved-calendar-panel {
  border-bottom: 1px solid var(--line);
}

.saved-calendar-panel summary {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  padding: 12px 14px;
  color: var(--accent);
  cursor: pointer;
  font-weight: 700;
}

.calendar-toolbar {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
  padding: 8px 14px;
  border-bottom: 1px solid var(--line);
}

#date-filter-status {
  color: var(--muted);
  font-size: 13px;
}

.month-calendars {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  padding: 10px 14px 14px;
}

.month-calendar {
  border: 1px solid var(--line);
  border-radius: 8px;
  overflow: hidden;
  background: #ffffff;
}

.month-title {
  padding: 8px 10px;
  border-bottom: 1px solid var(--line);
  background: #eef2f6;
  font-weight: 700;
}

.calendar-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
}

.calendar-weekday,
.calendar-day,
.calendar-blank {
  min-height: 36px;
  border: 0;
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: #ffffff;
  color: var(--ink);
  padding: 4px;
  text-align: center;
}

.calendar-weekday {
  min-height: 28px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.calendar-weekday.weekday,
.calendar-day.weekday,
.calendar-blank {
  background: #f6f7f9;
}

.calendar-weekday.saturday,
.calendar-day.saturday {
  background: #eef7ff;
}

.calendar-weekday.sunday-holiday,
.calendar-day.sunday-holiday {
  background: #fff1f1;
}

.calendar-day {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 2px;
  cursor: pointer;
}

.calendar-day:hover {
  background: #eef6fc;
  color: var(--ink);
}

.calendar-day.has-shifts {
  color: var(--accent);
  font-weight: 700;
}

.calendar-day.saturday.has-shifts:not(.selected) {
  color: #0b5cad;
}

.calendar-day.sunday-holiday.has-shifts:not(.selected) {
  color: #a4262c;
}

.calendar-day.selected {
  background: var(--accent);
  color: #ffffff;
}

.calendar-day.today {
  box-shadow: inset 0 0 0 2px var(--accent);
}

.calendar-count {
  color: #7b9bb8;
  font-size: 11px;
  font-weight: 600;
}

.calendar-day.selected .calendar-count {
  color: #eaf4ff;
}

.advanced-filter-panel {
  border-bottom: 1px solid var(--line);
}

.advanced-filter-panel summary {
  min-height: 44px;
  padding: 12px 14px;
  color: var(--accent);
  cursor: pointer;
  font-weight: 700;
}

.advanced-filter-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(180px, 1fr));
  gap: 10px;
  padding: 0 14px 14px;
}

.advanced-filter-grid label {
  align-items: stretch;
  flex-direction: column;
  gap: 5px;
}

.advanced-filter-grid .checkbox-label {
  align-items: center;
  flex-direction: row;
  gap: 8px;
  min-height: 38px;
  padding-top: 20px;
}

.checkbox-label input {
  width: 18px;
  height: 18px;
}

.advanced-filter-grid button {
  align-self: end;
}

.hospital-list {
  max-height: 520px;
  overflow: auto;
  padding: 8px 10px 10px;
}

.hospital-region,
.hospital-prefecture {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.hospital-region + .hospital-region {
  margin-top: 8px;
}

.hospital-region > summary,
.hospital-prefecture > summary {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 34px;
  cursor: pointer;
  list-style-position: inside;
}

.hospital-region > summary {
  padding: 0 10px;
  background: #eef2f6;
  color: var(--ink);
  font-weight: 700;
}

.hospital-region > summary span,
.hospital-prefecture > summary span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
}

.hospital-region-body {
  display: grid;
  gap: 6px;
  padding: 6px;
}

.hospital-prefecture > summary {
  padding: 0 8px;
  background: #f6f7f9;
  color: #344054;
  font-weight: 700;
}

.hospital-rows {
  display: grid;
}

.hospital-row {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr);
  gap: 8px;
  align-items: center;
  min-height: 34px;
  padding: 5px 8px;
  border-top: 1px solid var(--line);
}

.hospital-row .favorite-button {
  min-width: 28px;
  min-height: 26px;
  font-size: 16px;
}

.hospital-row.is-favorite {
  background: #fffbea;
}

.hospital-name {
  color: var(--ink);
  font-weight: 650;
}

.empty-panel {
  padding: 14px;
}

.settings-dialog {
  width: min(720px, calc(100vw - 32px));
  max-height: min(760px, calc(100vh - 32px));
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 0;
  color: var(--ink);
}

.settings-dialog::backdrop {
  background: rgb(24 32 42 / 36%);
}

.settings-dialog-header,
.settings-dialog-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
}

.settings-dialog-header {
  border-bottom: 1px solid var(--line);
}

.settings-dialog-header h3 {
  margin: 0;
  font-size: 16px;
}

.settings-dialog-header button {
  margin-left: auto;
}

.settings-dialog-actions {
  justify-content: flex-end;
  border-top: 1px solid var(--line);
}

.settings-dialog-actions button:first-child {
  margin-right: auto;
}

.column-settings {
  max-height: 560px;
  overflow: auto;
  padding: 8px 14px;
}

.column-setting-row {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) 180px;
  gap: 12px;
  align-items: center;
  min-height: 42px;
  border-bottom: 1px solid var(--line);
}

.column-setting-row:last-child {
  border-bottom: 0;
}

.column-setting-visible,
.column-setting-width {
  color: var(--ink);
}

.column-setting-visible input {
  width: 18px;
  height: 18px;
}

.column-setting-width {
  justify-content: flex-end;
}

.column-setting-width input {
  width: 84px;
}

.shift-detail-dialog {
  width: min(640px, calc(100vw - 24px));
}

.raw-block-dialog {
  width: min(860px, calc(100vw - 24px));
}

.shift-detail-content {
  max-height: min(680px, calc(100vh - 120px));
  overflow: auto;
  padding: 12px 14px 14px;
}

.raw-block-content {
  max-height: min(720px, calc(100vh - 120px));
  overflow: auto;
  padding: 12px 14px 14px;
}

.shift-detail-meta {
  display: grid;
  gap: 3px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--line);
}

.shift-detail-meta span {
  color: var(--muted);
  font-size: 13px;
}

.shift-detail-sections {
  display: grid;
  gap: 10px;
  padding-top: 10px;
}

.shift-detail-section {
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 10px;
}

.shift-detail-section h4 {
  margin: 0 0 6px;
  font-size: 13px;
}

.raw-block-meta {
  display: grid;
  gap: 3px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--line);
}

.raw-block-meta span {
  color: var(--muted);
  font-size: 13px;
}

.raw-block-pre {
  margin: 12px 0 0;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #fbfcfd;
  padding: 12px;
  color: var(--ink);
  font-family:
    ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo,
    monospace;
  font-size: 12px;
  line-height: 1.55;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.result-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(360px, 0.75fr);
  gap: 14px;
  align-items: start;
}

.table-panel,
.json-panel {
  min-height: 420px;
  overflow: hidden;
}

.section-title {
  justify-content: flex-start;
  min-height: 52px;
  padding: 0 14px;
  border-bottom: 1px solid var(--line);
}

.section-title > span {
  margin-left: auto;
}

.collapse-toggle {
  min-height: 30px;
  margin-left: 8px;
  border-color: var(--line);
  background: #ffffff;
  color: var(--accent);
  padding: 0 10px;
}

.collapse-toggle:hover {
  background: #eef6fc;
}

[data-collapsible].is-collapsed > :not(.section-title) {
  display: none;
}

#table-count {
  color: var(--muted);
  font-size: 13px;
}

.table-wrap {
  max-height: 640px;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
}

table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

.saved-shift-grid {
  width: max-content;
  min-width: 100%;
  table-layout: fixed;
}

.saved-shift-grid th,
.saved-shift-grid td {
  overflow-wrap: anywhere;
}

.saved-shift-grid th {
  padding: 0;
}

.saved-table-header-cell {
  position: relative;
  min-height: 38px;
  padding: 7px 12px 7px 8px;
  line-height: 1.2;
}

.column-resize-handle {
  position: absolute;
  top: 0;
  right: -4px;
  z-index: 2;
  width: 8px;
  height: 100%;
  cursor: col-resize;
  user-select: none;
  touch-action: none;
}

.column-resize-handle:hover,
body.is-resizing-table-column .column-resize-handle {
  background: rgb(18 100 163 / 18%);
}

body.is-resizing-table-column {
  cursor: col-resize;
  user-select: none;
}

th,
td {
  border-bottom: 1px solid var(--line);
  padding: 7px 8px;
  text-align: left;
  vertical-align: top;
}

th {
  position: sticky;
  top: 0;
  background: #eef2f6;
  color: #344054;
  z-index: 1;
}

td {
  line-height: 1.35;
}

.facility {
  min-width: 150px;
  font-weight: 650;
  white-space: normal;
  word-break: break-all;
  overflow-wrap: anywhere;
}

.pay-cell {
  max-width: 220px;
}

.note-cell {
  min-width: 180px;
  max-width: 260px;
}

.raw-button {
  min-height: 30px;
  padding: 0 10px;
}

.detail-cell {
  text-align: center;
}

.detail-button {
  min-height: 28px;
  padding: 0 8px;
}

.stacked-values {
  display: grid;
  gap: 2px;
  line-height: 1.2;
}

.stacked-cell {
  white-space: nowrap;
}

.status-select {
  min-width: 118px;
}

.muted {
  color: var(--muted);
}

.badge {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  border-radius: 999px;
  padding: 0 8px;
  font-size: 12px;
  font-weight: 700;
}

.badge.high {
  background: #e8f5ee;
  color: var(--good);
}

.badge.medium {
  background: #fff4df;
  color: var(--warn);
}

.badge.low {
  background: #fdebec;
  color: var(--bad);
}

#json-preview {
  max-height: 640px;
  margin: 0;
  overflow: auto;
  padding: 14px;
  background: #101828;
  color: #e5e7eb;
  font-size: 12px;
  line-height: 1.5;
}

@media (max-width: 1024px) {
  .summary-grid {
    grid-template-columns: repeat(3, minmax(120px, 1fr));
  }

  .result-layout {
    grid-template-columns: 1fr;
  }

  .month-calendars {
    grid-template-columns: 1fr;
  }

  .advanced-filter-grid {
    grid-template-columns: repeat(2, minmax(180px, 1fr));
  }

  .prefecture-options {
    grid-template-columns: repeat(2, minmax(150px, 1fr));
  }

  .catalog-history-summary {
    grid-template-columns: 160px 96px 130px 80px minmax(220px, 1fr);
  }

  .catalog-history-summary .muted {
    grid-column: 1 / -1;
  }

  .catalog-history-update,
  .catalog-history-empty {
    grid-template-columns: 24px 90px 96px 130px minmax(220px, 1fr);
  }

  .catalog-history-update .muted {
    grid-column: 2 / -1;
  }
}

@media (max-width: 640px) {
  .app-shell {
    width: min(100vw - 10px, 1440px);
    padding: 6px 0 18px;
  }

  .app-header {
    align-items: flex-start;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 8px;
  }

  .header-actions,
  .control-row,
  .filter-row,
  .calendar-toolbar {
    align-items: stretch;
    flex-direction: column;
  }

  .header-actions > *,
  .control-row > *,
  .composer-actions > button {
    width: 100%;
  }

  .filter-row > * {
    width: 100%;
  }

  .header-actions > *,
  .control-row > *,
  .filter-row > *,
  .subject-label,
  .filter-row label:first-child {
    flex: none;
  }

  .calendar-toolbar {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
  }

  .desktop-only {
    display: none !important;
  }

  button,
  select,
  .select-like {
    min-width: 0;
  }

  h1 {
    font-size: 18px;
  }

  h2 {
    font-size: 15px;
  }

  button {
    min-height: 34px;
    padding: 0 10px;
  }

  .eyebrow {
    margin-bottom: 1px;
    font-size: 11px;
  }

  .section-title {
    min-height: 40px;
    padding: 0 8px;
  }

  .inbound-panel > .section-title,
  .input-panel > .section-title {
    min-height: 36px;
  }

  .filter-row,
  .control-row {
    gap: 8px;
    padding: 8px;
    margin: 0;
  }

  .catalog-panel > .filter-row {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: end;
  }

  .catalog-panel > .filter-row > label:first-child,
  .catalog-panel > .filter-row > .prefecture-filter,
  .catalog-panel > .filter-row > .status-filter,
  .catalog-panel > .filter-row > #restore-last-search {
    grid-column: 1 / -1;
  }

  .catalog-panel > .filter-row label,
  .catalog-panel > .filter-row .filter-control {
    gap: 4px;
  }

  .catalog-panel > .filter-row label:first-child {
    flex: none;
  }

  .catalog-panel > .filter-row input,
  .catalog-panel > .filter-row select,
  .catalog-panel > .filter-row .select-like {
    min-height: 34px;
  }

  .input-panel,
  .table-panel,
  .json-panel,
  .catalog-panel,
  .hospital-panel,
  .inbound-panel,
  .review-panel,
  .snapshot-panel,
  .composer-panel,
  .summary-card {
    border-radius: 6px;
  }

  .inbound-panel .filter-row,
  .input-panel .control-row {
    gap: 6px;
    padding: 6px 8px;
  }

  .inbound-panel label,
  .input-panel label {
    gap: 3px;
  }

  .inbound-panel input,
  .inbound-panel select,
  .input-panel input,
  .input-panel select {
    min-height: 34px;
    padding: 5px 8px;
  }

  .input-panel textarea {
    width: calc(100% - 16px);
    min-height: 150px;
    margin: 0 8px 8px;
    padding: 8px;
    line-height: 1.45;
  }

  .catalog-panel,
  .input-panel,
  .hospital-panel,
  .composer-panel,
  .snapshot-panel,
  .review-panel,
  .inbound-panel {
    margin-bottom: 8px;
  }

  .summary-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
    margin: 6px 0;
  }

  .advanced-filter-grid,
  .composer-layout,
  .column-setting-row {
    grid-template-columns: 1fr;
  }

  .settings-dialog-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .settings-dialog-actions button:first-child {
    margin-right: 0;
  }

  .imap-config-form {
    grid-template-columns: 1fr;
    gap: 8px;
    padding: 10px;
  }

  label {
    align-items: flex-start;
    flex-direction: column;
  }

  .filter-control {
    align-items: stretch;
    flex-direction: column;
  }

  .prefecture-popover,
  .status-popover {
    width: calc(100vw - 18px);
    max-height: 68vh;
    padding: 8px;
  }

  .prefecture-options {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .prefecture-group {
    padding: 8px;
  }

  .prefecture-group-title,
  .prefecture-check,
  .status-check {
    display: grid;
    flex-direction: initial;
  }

  .prefecture-group-title {
    grid-template-columns: 18px minmax(0, 1fr) auto;
    margin-bottom: 6px;
  }

  .prefecture-checks {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 3px 8px;
  }

  .prefecture-check {
    grid-template-columns: 18px minmax(0, 1fr);
    gap: 6px;
    min-height: 28px;
  }

  .prefecture-check .prefecture-count {
    grid-column: 2;
    margin-top: -4px;
  }

  .prefecture-count {
    font-size: 11px;
  }

  .catalog-history-summary,
  .catalog-history-update,
  .catalog-history-empty {
    grid-template-columns: 1fr;
    gap: 4px;
    padding: 10px;
  }

  .catalog-history-branch {
    display: none;
  }

  .saved-calendar-panel summary,
  .advanced-filter-panel summary {
    min-height: 38px;
    padding: 9px 8px;
  }

  .month-calendars {
    grid-template-columns: 1fr;
    padding: 8px;
  }

  .month-title {
    padding: 7px 9px;
    font-size: 15px;
  }

  .calendar-day,
  .calendar-blank {
    min-height: 40px;
    padding: 3px;
  }

  .calendar-weekday {
    min-height: 26px;
  }

  .calendar-count {
    font-size: 10px;
  }

  .saved-table-wrap {
    max-height: 58vh;
  }

  table {
    font-size: 12px;
  }

  th,
  td {
    padding: 6px 6px;
  }

  .saved-table-header-cell {
    min-height: 34px;
    padding: 6px 10px 6px 6px;
  }

  .column-settings {
    max-height: calc(100vh - 220px);
    padding: 6px 10px;
  }

  .column-setting-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
    min-height: 42px;
    padding: 4px 0;
  }

  .column-setting-visible,
  .column-setting-width {
    display: flex;
    flex-direction: row;
    align-items: center;
    min-height: 34px;
    color: var(--ink);
  }

  .column-setting-visible {
    gap: 6px;
  }

  .column-setting-width {
    justify-content: flex-end;
    gap: 4px;
    white-space: nowrap;
  }

  .column-setting-width input {
    width: 70px;
    min-height: 34px;
  }

  .favorite-button {
    min-width: 28px;
    min-height: 26px;
    font-size: 16px;
  }

  .status-select {
    min-width: 104px;
  }

  .saved-shift-grid td.facility {
    width: 10em;
    min-width: 0;
    max-width: 10em;
  }

  .saved-shift-grid td[data-column="date"] {
    max-width: 50px;
    font-size: 12px;
    line-height: 1.2;
    overflow-wrap: normal;
    word-break: normal;
  }

  .detail-button,
  .raw-button {
    min-height: 26px;
    padding: 0 7px;
  }
}
