/*
Theme Name: ネオポータル
Theme URI: https://neo-s.jp
Author: 株式会社ネオ
Author URI: https://neo-s.jp
Description: 物品の貸出・返却・履歴管理と、AI利用チェックリストの提出・確認を行う社内ポータルテーマ。部門単位の権限管理と、メールアドレス + 6桁認証コードによる二段階認証付き。
Version: 1.2.1
License: GPL-2.0+
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: loan-management
*/

:root {
  --lm-bg: #f5f3ee;
  --lm-bg-card: #ffffff;
  --lm-ink: #1a1a1a;
  --lm-ink-soft: #5a5a5a;
  --lm-ink-mute: #9a9a9a;
  --lm-line: #e2dfd6;
  --lm-accent: #c8553d;
  --lm-accent-soft: #f4e3dd;
  --lm-ok: #2d6a4f;
  --lm-ok-soft: #d8e8de;
  --lm-warn: #b8860b;
  --lm-warn-soft: #f5ecd3;
  --lm-danger: #9b2226;
  --lm-danger-soft: #f3dadb;
  --lm-shadow: 0 1px 2px rgba(0,0,0,0.04), 0 8px 24px rgba(0,0,0,0.06);
  --lm-radius: 4px;
}

* { box-sizing: border-box; margin: 0; padding: 0; }

body {
  font-family: 'Manrope', 'Noto Serif JP', -apple-system, BlinkMacSystemFont, sans-serif;
  background: var(--lm-bg);
  color: var(--lm-ink);
  line-height: 1.6;
  min-height: 100vh;
  padding: 2rem 1rem;
  background-image:
    radial-gradient(circle at 20% 0%, rgba(200, 85, 61, 0.04) 0%, transparent 40%),
    radial-gradient(circle at 80% 100%, rgba(45, 106, 79, 0.04) 0%, transparent 40%);
}

.lm-container { max-width: 1280px; margin: 0 auto; }
.lm-loading { text-align: center; padding: 3rem; color: var(--lm-ink-mute); }

/* === Login === */
.lm-login-card {
  /* デスクトップ・タブレット: いったん広げた幅(560px)の 2/3 ≒ 380px */
  max-width: 380px;
  width: 100%;
  margin: 4rem auto;
  background: var(--lm-bg-card);
  border: 1px solid var(--lm-line);
  border-radius: var(--lm-radius);
  padding: 2.5rem;
  box-shadow: var(--lm-shadow);
}
.lm-login-card h2 {
  font-family: 'Noto Serif JP', serif;
  font-size: 1.5rem;
  font-weight: 700;
  margin: 0 0 0.25rem;
}
.lm-login-subtitle {
  font-size: 0.7rem;
  letter-spacing: 0.3em;
  color: var(--lm-ink-mute);
  text-transform: uppercase;
  margin-bottom: 2rem;
  border-bottom: 2px solid var(--lm-ink);
  padding-bottom: 1rem;
}
.lm-login-help {
  font-size: 0.85rem;
  color: var(--lm-ink-soft);
  margin-bottom: 1.25rem;
  line-height: 1.7;
}
.lm-login-help small { color: var(--lm-ink-mute); font-size: 0.75rem; }
.lm-error {
  background: var(--lm-danger-soft);
  color: var(--lm-danger);
  padding: 0.6rem 0.9rem;
  border-radius: var(--lm-radius);
  font-size: 0.85rem;
  margin-bottom: 1rem;
}
.lm-info {
  background: var(--lm-ok-soft);
  color: var(--lm-ok);
  padding: 0.6rem 0.9rem;
  border-radius: var(--lm-radius);
  font-size: 0.85rem;
  margin-bottom: 1rem;
}
.lm-step-back {
  background: none;
  border: none;
  color: var(--lm-ink-mute);
  font-size: 0.8rem;
  cursor: pointer;
  padding: 0;
  margin-top: 1rem;
  text-decoration: underline;
}
.lm-step-back:hover { color: var(--lm-ink); }
.lm-verify-code-input {
  text-align: center;
  font-size: 1.5rem !important;
  letter-spacing: 0.5em;
  font-family: monospace !important;
  font-weight: 700;
}
.lm-verify-meta {
  font-size: 0.85rem;
  color: var(--lm-ink-soft);
  margin-bottom: 1rem;
  line-height: 1.7;
}
.lm-verify-email { font-weight: 600; color: var(--lm-ink); }
.lm-verify-timer {
  text-align: center;
  font-size: 0.85rem;
  color: var(--lm-ink-mute);
  margin-top: 0.5rem;
}
.lm-verify-timer.lm-expired { color: var(--lm-danger); }
.lm-verify-resend {
  text-align: center;
  margin-top: 1rem;
  font-size: 0.85rem;
}
.lm-verify-resend a {
  color: var(--lm-accent);
  cursor: pointer;
  text-decoration: underline;
}

/* === Header === */
.lm-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  border-bottom: 2px solid var(--lm-ink);
  padding-bottom: 1.25rem;
  margin-bottom: 2.5rem;
  gap: 1rem;
  flex-wrap: wrap;
}
.lm-brand h1 {
  font-family: 'Noto Serif JP', serif;
  font-size: clamp(1.5rem, 3vw, 2.25rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  margin: 0;
  color: var(--lm-ink);
}
.lm-brand .lm-subtitle {
  font-size: 0.7rem;
  letter-spacing: 0.3em;
  color: var(--lm-ink-mute);
  text-transform: uppercase;
  margin-top: 0.25rem;
}
.lm-header-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.75rem;
}
.lm-stats { display: flex; gap: 1.5rem; font-family: 'Noto Serif JP', serif; }
.lm-stat { text-align: right; }
.lm-stat .lm-num { font-size: 1.5rem; font-weight: 700; line-height: 1; color: var(--lm-ink); }
.lm-stat .lm-label {
  font-size: 0.65rem;
  color: var(--lm-ink-mute);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  margin-top: 0.2rem;
}
.lm-stat.lm-danger .lm-num { color: var(--lm-danger); }
.lm-stat.lm-warn .lm-num { color: var(--lm-warn); }
.lm-user-info {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.85rem;
  color: var(--lm-ink-soft);
}
.lm-user-info .lm-username { font-weight: 600; color: var(--lm-ink); }
.lm-role-badge {
  display: inline-block;
  padding: 0.1rem 0.4rem;
  background: var(--lm-accent);
  color: white;
  border-radius: 3px;
  font-size: 0.65rem;
  letter-spacing: 0.05em;
}

/* === Tabs === */
.lm-tabs {
  display: flex;
  margin-bottom: 1.5rem;
  border-bottom: 1px solid var(--lm-line);
  flex-wrap: wrap;
}
.lm-tab {
  padding: 0.75rem 1.25rem;
  background: none;
  border: none;
  font-family: inherit;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--lm-ink-mute);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
}
.lm-tab:hover { color: var(--lm-ink); }
.lm-tab.lm-active { color: var(--lm-ink); border-bottom-color: var(--lm-accent); }
.lm-tab .lm-count {
  display: inline-block;
  background: var(--lm-line);
  color: var(--lm-ink-soft);
  padding: 0.1rem 0.5rem;
  border-radius: 999px;
  font-size: 0.7rem;
  margin-left: 0.4rem;
}
.lm-tab.lm-active .lm-count { background: var(--lm-accent); color: white; }

/* === Toolbar === */
.lm-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-bottom: 1.5rem;
  align-items: center;
}
.lm-search { flex: 1; min-width: 200px; position: relative; }
.lm-search input {
  width: 100%;
  padding: 0.65rem 0.9rem 0.65rem 2.25rem;
  border: 1px solid var(--lm-line);
  border-radius: var(--lm-radius);
  background: var(--lm-bg-card);
  font-family: inherit;
  font-size: 0.9rem;
  color: var(--lm-ink);
}
.lm-search input:focus { outline: none; border-color: var(--lm-accent); }
.lm-search::before {
  content: "⌕";
  position: absolute;
  left: 0.75rem;
  top: 50%;
  transform: translateY(-50%);
  color: var(--lm-ink-mute);
  font-size: 1rem;
  pointer-events: none;
}

/* === Buttons === */
.lm-btn {
  padding: 0.65rem 1.1rem;
  border: 1px solid var(--lm-ink);
  background: var(--lm-ink);
  color: white;
  font-family: inherit;
  font-size: 0.85rem;
  font-weight: 600;
  cursor: pointer;
  border-radius: var(--lm-radius);
  white-space: nowrap;
  text-decoration: none;
  display: inline-block;
}
.lm-btn:hover { background: #000; color: white; }
.lm-btn.lm-secondary { background: transparent; color: var(--lm-ink); }
.lm-btn.lm-secondary:hover { background: var(--lm-ink); color: white; }
.lm-btn.lm-accent { background: var(--lm-accent); border-color: var(--lm-accent); }
.lm-btn.lm-accent:hover { background: #a8412d; border-color: #a8412d; }
.lm-btn.lm-small { padding: 0.35rem 0.7rem; font-size: 0.75rem; }
.lm-btn.lm-danger { background: transparent; color: var(--lm-danger); border-color: var(--lm-danger); }
.lm-btn.lm-danger:hover { background: var(--lm-danger); color: white; }
.lm-btn.lm-block { display: block; width: 100%; }

/* === Panel & Table === */
.lm-panel {
  background: var(--lm-bg-card);
  border: 1px solid var(--lm-line);
  border-radius: var(--lm-radius);
  overflow-x: auto;
  box-shadow: var(--lm-shadow);
}
.lm-table { width: 100%; border-collapse: collapse; font-size: 0.875rem; }
.lm-table thead th {
  text-align: left;
  padding: 0.85rem 1rem;
  font-weight: 600;
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--lm-ink-mute);
  border-bottom: 1px solid var(--lm-line);
  background: #fafaf7;
}
.lm-table tbody td { padding: 0.9rem 1rem; border-bottom: 1px solid var(--lm-line); vertical-align: middle; }
.lm-table tbody tr:last-child td { border-bottom: none; }
.lm-table tbody tr:hover { background: #fafaf7; }
.lm-table td.lm-actions { text-align: right; white-space: nowrap; }
.lm-table td.lm-actions .lm-btn { margin-left: 0.4rem; }

.lm-badge {
  display: inline-block;
  padding: 0.2rem 0.6rem;
  border-radius: 999px;
  font-size: 0.7rem;
  font-weight: 600;
}
.lm-badge.lm-borrowed { background: var(--lm-warn-soft); color: var(--lm-warn); }
.lm-badge.lm-overdue { background: var(--lm-danger-soft); color: var(--lm-danger); }
.lm-badge.lm-returned { background: var(--lm-line); color: var(--lm-ink-soft); }

/* ===== 監査ログ ===== */
.lm-badge.lm-audit-create {
  background: rgba(34, 139, 34, 0.12);
  color: #1a6e1a;
}
.lm-badge.lm-audit-update {
  background: var(--lm-warn-soft);
  color: var(--lm-warn);
}
.lm-badge.lm-audit-return {
  background: rgba(60, 110, 180, 0.12);
  color: #2b5a90;
}
.lm-badge.lm-audit-delete {
  background: var(--lm-danger-soft);
  color: var(--lm-danger);
}

/* テーブル: 列幅と整列 */
.lm-audit-table th:nth-child(1),
.lm-audit-table td:nth-child(1) { width: 7.5rem; white-space: nowrap; }
.lm-audit-table th:nth-child(2),
.lm-audit-table td:nth-child(2) { width: 4.5rem; white-space: nowrap; }
.lm-audit-table th:nth-child(3),
.lm-audit-table td:nth-child(3) { width: 13rem; }
.lm-audit-table th:nth-child(4),
.lm-audit-table td:nth-child(4) { min-width: 12rem; }
.lm-audit-table th:nth-child(6),
.lm-audit-table td:nth-child(6) { width: 7rem; white-space: nowrap; text-align: right; }

/* 日時セル: 日付＋時刻を縦に */
.lm-audit-time-cell {
  font-variant-numeric: tabular-nums;
  line-height: 1.3;
}
.lm-audit-date {
  font-size: 0.85em;
  color: var(--lm-ink);
}
.lm-audit-clock {
  font-size: 0.75em;
  color: var(--lm-ink-mute);
}

.lm-audit-actor-cell {
  font-family: monospace;
  font-size: 0.85em;
  color: var(--lm-ink-soft);
  word-break: break-all;
}

/* 差分: セル内コンパクト表示 */
.lm-audit-diff {
  font-size: 0.85em;
  line-height: 1.5;
}
.lm-audit-diff-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3em;
  align-items: baseline;
  padding: 1px 0;
}
.lm-audit-diff-row + .lm-audit-diff-row {
  border-top: 1px dashed var(--lm-line);
  padding-top: 3px;
  margin-top: 2px;
}
.lm-audit-field {
  font-weight: 600;
  color: var(--lm-ink-soft);
  flex: 0 0 auto;
}
.lm-audit-from { color: var(--lm-ink-mute); text-decoration: line-through; text-decoration-color: rgba(0,0,0,0.2); }
.lm-audit-arrow { color: var(--lm-ink-mute); font-weight: 600; }
.lm-audit-to { color: var(--lm-ink); font-weight: 500; }
.lm-audit-empty {
  color: var(--lm-ink-mute);
  font-style: italic;
}
.lm-audit-deleted {
  color: var(--lm-ink-mute);
  font-size: 0.85em;
}
.lm-audit-trail {
  padding: 10px 16px;
  text-align: center;
  color: var(--lm-ink-mute);
  font-size: 0.85em;
  border-top: 1px solid var(--lm-line);
}
.lm-snapshot-tag {
  display: inline-block;
  margin-left: 0.5em;
  padding: 2px 8px;
  font-size: 0.7em;
  font-weight: 600;
  letter-spacing: 0.05em;
  background: var(--lm-line);
  color: var(--lm-ink-soft);
  border-radius: 3px;
  vertical-align: middle;
}

/* ===== 方向（lending/borrowing） ===== */
.lm-badge.lm-direction-lending {
  background: rgba(20, 130, 130, 0.12);
  color: #0f6464;
}
.lm-badge.lm-direction-borrowing {
  background: rgba(110, 60, 160, 0.12);
  color: #5a2e85;
}

.lm-direction-chips {
  display: flex;
  gap: 4px;
  align-items: center;
}
.lm-chip {
  padding: 4px 10px;
  font-size: 0.8em;
  border: 1px solid var(--lm-line);
  background: transparent;
  color: var(--lm-ink-soft);
  border-radius: 999px;
  cursor: pointer;
  font-family: inherit;
}
.lm-chip:hover {
  background: var(--lm-line);
}
.lm-chip.lm-active {
  background: var(--lm-ink);
  color: #fff;
  border-color: var(--lm-ink);
}

/* ===== Phase 4a: 部門・ロール ===== */
.lm-dept-name {
  display: inline-block;
  padding: 0.15rem 0.5rem;
  background: var(--lm-line);
  color: var(--lm-ink);
  border-radius: 3px;
  font-size: 0.8rem;
  font-weight: 600;
  margin-right: 0.4rem;
}
.lm-role-badge.lm-role-global {
  background: #c8553d;
  color: white;
}
.lm-role-badge.lm-role-dept {
  background: var(--lm-warn);
  color: white;
}

/* ===== Phase 4c: メンバー管理 ===== */
.lm-member-role-select {
  padding: 0.3rem 0.5rem;
  font-size: 0.85em;
  font-family: inherit;
  border: 1px solid var(--lm-line);
  border-radius: 3px;
  background: var(--lm-bg-card, #fff);
  color: var(--lm-ink);
}
.lm-member-role-select:disabled {
  background: var(--lm-bg);
  color: var(--lm-ink-mute);
  cursor: not-allowed;
}
.lm-member-time {
  font-size: 0.85em;
  color: var(--lm-ink-mute);
}

.lm-member-add {
  display: flex;
  gap: 0.5rem;
  margin-bottom: 0.75rem;
  align-items: center;
}
.lm-member-add .lm-input {
  flex: 1;
}
.lm-input {
  padding: 0.4rem 0.6rem;
  border: 1px solid var(--lm-line);
  border-radius: 3px;
  background: var(--lm-bg-card, #fff);
  color: var(--lm-ink);
  font-family: inherit;
  font-size: 0.9em;
}
.lm-input:focus {
  outline: none;
  border-color: var(--lm-accent, #c8553d);
}

.lm-empty { padding: 3rem 1rem; text-align: center; color: var(--lm-ink-mute); font-size: 0.9rem; }
.lm-empty .lm-icon { font-size: 2rem; display: block; margin-bottom: 0.5rem; opacity: 0.4; }

.lm-overdue-row { background: rgba(155, 34, 38, 0.04); }
.lm-purpose-tag {
  display: inline-block;
  padding: 0.15rem 0.5rem;
  background: var(--lm-accent-soft);
  color: var(--lm-accent);
  border-radius: 3px;
  font-size: 0.7rem;
  font-weight: 600;
}
.lm-item-meta { font-size: 0.75rem; color: var(--lm-ink-mute); margin-top: 0.15rem; }

/* === Modal === */
.lm-modal-backdrop {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(26, 26, 26, 0.5);
  backdrop-filter: blur(4px);
  z-index: 100000;
  align-items: center;
  justify-content: center;
  padding: 1rem;
}
.lm-modal-backdrop.lm-show { display: flex; }
.lm-modal {
  background: var(--lm-bg-card);
  border-radius: var(--lm-radius);
  width: 100%;
  max-width: 600px;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: 0 20px 60px rgba(0,0,0,0.2);
}
.lm-modal.lm-modal-wide { max-width: 880px; }
.lm-modal-header {
  padding: 1.25rem 1.5rem;
  border-bottom: 1px solid var(--lm-line);
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.lm-modal-header h2 { font-family: 'Noto Serif JP', serif; font-size: 1.15rem; font-weight: 700; margin: 0; }
.lm-close { background: none; border: none; font-size: 1.5rem; cursor: pointer; color: var(--lm-ink-mute); line-height: 1; padding: 0; }
.lm-modal-body { padding: 1.5rem; }
.lm-modal-footer {
  padding: 1rem 1.5rem;
  border-top: 1px solid var(--lm-line);
  display: flex;
  justify-content: flex-end;
  gap: 0.5rem;
}

.lm-form-section-title {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--lm-accent);
  margin: 0.25rem 0 0.75rem;
  padding-bottom: 0.4rem;
  border-bottom: 1px solid var(--lm-accent-soft);
}
.lm-form-section-title:not(:first-child) { margin-top: 1.5rem; }
.lm-form-row { margin-bottom: 1rem; }
.lm-form-row label {
  display: block;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--lm-ink-soft);
  margin-bottom: 0.35rem;
}
.lm-form-row input,
.lm-form-row textarea,
.lm-form-row select {
  width: 100%;
  padding: 0.6rem 0.8rem;
  border: 1px solid var(--lm-line);
  border-radius: var(--lm-radius);
  font-family: inherit;
  font-size: 0.9rem;
  background: var(--lm-bg-card);
  color: var(--lm-ink);
}
.lm-form-row input:focus,
.lm-form-row textarea:focus,
.lm-form-row select:focus { outline: none; border-color: var(--lm-accent); }
.lm-form-row textarea { resize: vertical; min-height: 70px; }
.lm-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; }

/* === Detail view === */
.lm-detail-grid {
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: 0.5rem 1rem;
  font-size: 0.875rem;
}
.lm-detail-grid dt {
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--lm-ink-mute);
  padding-top: 0.15rem;
}
.lm-detail-grid dd {
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--lm-line);
  word-break: break-word;
  margin: 0;
}
.lm-detail-grid dd:last-of-type { border-bottom: none; }
.lm-detail-section-title {
  font-family: 'Noto Serif JP', serif;
  font-size: 0.95rem;
  font-weight: 700;
  margin: 1rem 0 0.5rem;
  padding-bottom: 0.3rem;
  border-bottom: 2px solid var(--lm-ink);
}
.lm-detail-section-title:first-child { margin-top: 0; }

/* 詳細モーダル内のアクションボタン群（デスクトップ） */
.lm-detail-actions {
  margin-top: 1.5rem;
  padding-top: 1rem;
  border-top: 1px solid var(--lm-line);
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
}

.lm-domain-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.5rem 0.75rem;
  background: #fafaf7;
  border: 1px solid var(--lm-line);
  border-radius: 4px;
  margin-bottom: 0.4rem;
}
.lm-domain-row code { font-family: monospace; font-size: 0.9rem; }

/* CSVエクスポート等のアクションを上部右に配置するための共通クラス */
.lm-head-row { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; }
.lm-tabs-action { margin-left: auto; align-self: center; }
/* === Domain / admin row: long content guard === */
.lm-domain-row { flex-wrap: wrap; gap: 0.4rem; }
.lm-domain-row code { word-break: break-all; flex: 1 1 200px; min-width: 0; }

/* === バーガーメニュー(デスクトップでは非表示・ラッパは透過) === */
.lm-burger { display: none; }
.lm-menu { display: contents; }

/* === Responsive: tablet (≤700px) === */
@media screen and (max-width: 700px) {
  body { padding: 1rem 0.5rem; }

  /* ヘッダー */
  .lm-header { flex-direction: column; align-items: flex-start; gap: 1rem; position: relative; padding-right: 56px; }
  .lm-header-right { align-items: flex-start; width: 100%; }

  /* バーガーボタン (スマホ表示) */
  .lm-burger {
    display: flex;
    align-items: center;
    justify-content: center;
    position: absolute;
    top: 14px;
    right: 14px;
    width: 40px;
    height: 40px;
    background: var(--lm-bg-card, #fff);
    border: 1px solid var(--lm-line);
    border-radius: 4px;
    cursor: pointer;
    font-size: 1.2rem;
    line-height: 1;
    color: var(--lm-ink);
    padding: 0;
    z-index: 10;
  }
  .lm-burger:active { background: var(--lm-bg); }

  /* メニュー (ドロップダウン) */
  .lm-menu {
    display: none;
    position: absolute;
    top: 60px;
    right: 14px;
    background: #fff;
    border: 1px solid var(--lm-line);
    border-radius: 6px;
    box-shadow: 0 10px 30px rgba(0,0,0,0.18);
    z-index: 50;
    min-width: 240px;
    max-width: calc(100vw - 28px);
    padding: 12px;
  }
  .lm-menu.lm-open { display: block; }
  .lm-menu .lm-user-info {
    flex-direction: column;
    align-items: stretch;
    gap: 0.5rem;
    width: 100%;
  }
  .lm-menu .lm-user-info .lm-btn {
    width: 100%;
    text-align: left;
    justify-content: flex-start;
  }
  .lm-menu .lm-dept-name,
  .lm-menu .lm-username,
  .lm-menu .lm-role-badge {
    align-self: flex-start;
  }
  .lm-menu .lm-username {
    word-break: break-all;
    font-size: 0.85rem;
  }
  .lm-stats { gap: 1rem; flex-wrap: wrap; row-gap: 0.75rem; }
  .lm-stat { text-align: left; min-width: 70px; }
  .lm-stat .lm-num { font-size: 1.25rem; }
  .lm-user-info { flex-wrap: wrap; gap: 0.4rem 0.6rem; }

  /* ツールバー */
  .lm-toolbar { gap: 0.5rem; }
  .lm-search { flex: 1 1 100%; min-width: 0; }
  .lm-toolbar > select,
  .lm-toolbar > .lm-btn { flex: 1 1 auto; min-width: 0; }

  /* タブ */
  .lm-tab { padding: 0.65rem 0.85rem; font-size: 0.85rem; }
  .lm-tab .lm-count { margin-left: 0.3rem; padding: 0.05rem 0.4rem; }

  /* ── 貸出／借用テーブル専用：コンパクトリスト化（1項目1行、タップで詳細） ── */
  .lm-panel:has(.lm-loan-table) { overflow-x: visible; border-radius: var(--lm-radius); }
  .lm-loan-table thead { display: none; }
  .lm-loan-table tbody { display: block; }
  .lm-loan-table tbody tr {
    display: flex !important;
    align-items: center;
    gap: 0.6rem;
    padding: 0.85rem 0.9rem;
    border-bottom: 1px solid var(--lm-line);
    cursor: pointer;
    -webkit-tap-highlight-color: rgba(200, 85, 61, 0.12);
  }
  .lm-loan-table tbody tr:last-child { border-bottom: none; }
  .lm-loan-table tbody tr:active { background: rgba(200, 85, 61, 0.06); }

  /* デフォルトで非表示。物品名と状態だけ表示 */
  .lm-loan-table tbody td {
    display: none !important;
    padding: 0;
    border: none;
  }
  .lm-loan-table tbody td[data-label]::before { display: none !important; }

  /* 物品列：左側に伸びる主要情報 */
  .lm-loan-table tbody td[data-label="物品"] {
    display: block !important;
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
  }
  .lm-loan-table tbody td[data-label="物品"] strong {
    font-size: 0.95rem;
    display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .lm-loan-table tbody td[data-label="物品"] .lm-item-meta {
    font-size: 0.7rem;
    margin-top: 0.1rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  /* 借用者を物品列の補助情報として擬似的に追加（::after で構造を変えずに表示） */
  .lm-loan-table tbody td[data-label="借用者"] {
    display: block !important;
    flex: 0 1 auto;
    font-size: 0.75rem;
    color: var(--lm-ink-soft);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 35%;
  }
  .lm-loan-table tbody td[data-label="借用者"] .lm-item-meta { display: none; }

  /* 状態バッジ */
  .lm-loan-table tbody td[data-label="状態"] {
    display: block !important;
    flex: 0 0 auto;
  }

  /* 行右端のシェブロン */
  .lm-loan-table tbody tr::after {
    content: "›";
    color: var(--lm-ink-mute);
    font-size: 1.4rem;
    font-weight: 300;
    flex: 0 0 auto;
    line-height: 1;
    margin-left: -0.2rem;
  }

  /* 行内のアクションボタンはモバイルでは非表示（詳細モーダルから操作） */
  .lm-loan-table td.lm-actions { display: none !important; }

  /* ── その他のテーブル（提出状況・メンバー・部門・監査ログ等）：汎用カード化 ── */
  /* 1行 = 1カード。各セルは「ラベル : 値」の縦積みで表示する */
  .lm-table:not(.lm-loan-table) thead { display: none; }
  .lm-table:not(.lm-loan-table) tbody,
  .lm-table:not(.lm-loan-table) tbody tr,
  .lm-table:not(.lm-loan-table) tbody td { display: block; }
  .lm-table:not(.lm-loan-table) tbody tr {
    padding: 0.75rem 0.9rem;
    border-bottom: 1px solid var(--lm-line);
  }
  .lm-table:not(.lm-loan-table) tbody tr:last-child { border-bottom: none; }
  .lm-table:not(.lm-loan-table) tbody td {
    padding: 0.2rem 0;
    border: none;
    display: flex;
    gap: 0.6rem;
    align-items: baseline;
    /* 長い値（メールアドレス等）は折り返して横スクロールを防ぐ */
    min-width: 0;
    word-break: break-word;
    overflow-wrap: anywhere;
  }
  /* data-label を持つセルはラベルを前置する */
  .lm-table:not(.lm-loan-table) tbody td[data-label]::before {
    content: attr(data-label);
    flex: 0 0 6.5rem;
    color: var(--lm-ink-soft);
    font-size: 0.75rem;
    font-weight: 600;
    word-break: keep-all;
  }
  /* 空セル（colSpan の「データなし」表示）は中央寄せのまま崩さない */
  .lm-table:not(.lm-loan-table) tbody td.lm-empty {
    display: block;
    text-align: center;
  }
  /* アクション列はラベル無し・右寄せ */
  .lm-table:not(.lm-loan-table) td.lm-actions { justify-content: flex-end; }
  /* AIチェックリスト提出状況は既存カードパターンを維持しつつ、情報密度を少し上げる */
  .lm-table.lm-checklist-status-table tbody tr { padding: 0.65rem 0.85rem; }
  .lm-table.lm-checklist-status-table tbody td {
    padding: 0.15rem 0;
    gap: 0.5rem;
  }
  .lm-table.lm-checklist-status-table tbody td[data-label]::before { flex-basis: 5.5rem; }
  .lm-table.lm-checklist-status-table tbody td[data-label="メールアドレス"] {
    word-break: break-word;
    overflow-wrap: anywhere;
  }
  .lm-table.lm-checklist-status-table tbody td[data-label="チェック"] .lm-badge {
    display: inline-flex;
    max-width: 100%;
  }

  /* 詳細モーダル内のアクションボタン群：モバイルではフルワイドで縦積み */
  .lm-detail-actions {
    margin-top: 1.5rem;
    padding-top: 1rem;
    border-top: 1px solid var(--lm-line);
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
  }
  .lm-detail-actions .lm-btn { width: 100%; min-height: 44px; }

  /* モーダル */
  .lm-modal-backdrop { padding: 0; align-items: stretch; }
  .lm-modal {
    max-height: 100vh;
    border-radius: 0;
    width: 100vw;
    max-width: 100vw;
  }
  .lm-modal-header { padding: 1rem 1.1rem; }
  .lm-modal-header h2 { font-size: 1.05rem; }
  .lm-modal-body { padding: 1rem 1.1rem; }
  .lm-modal-footer {
    padding: 0.85rem 1.1rem;
    flex-wrap: wrap;
    gap: 0.5rem;
  }
  .lm-modal-footer .lm-btn { flex: 1 1 auto; min-width: 110px; }

  /* 詳細グリッド：縦積み */
  .lm-detail-grid {
    grid-template-columns: 1fr;
    gap: 0.1rem 0;
  }
  .lm-detail-grid dt {
    padding-top: 0.5rem;
    padding-bottom: 0;
    border-bottom: none;
  }
  .lm-detail-grid dd {
    padding-bottom: 0.5rem;
    padding-left: 0;
  }

  /* フォーム */
  .lm-form-grid { grid-template-columns: 1fr; }
  .lm-form-row label { font-size: 0.7rem; }

  /* ボタンタップ領域：最低44px */
  .lm-btn { min-height: 44px; padding: 0.7rem 1rem; }
  .lm-btn.lm-small { min-height: 36px; padding: 0.45rem 0.7rem; font-size: 0.8rem; }

  /* ドメイン/管理者行：縦展開 */
  .lm-domain-row { padding: 0.6rem 0.75rem; }
  .lm-domain-row code { font-size: 0.85rem; }

  .lm-head-row { flex-direction: column; align-items: flex-start; gap: 0.5rem; }
}

/* === Responsive: phone (≤480px) === */
@media screen and (max-width: 480px) {
  body { padding: 0.75rem 0.4rem; }

  .lm-brand h1 { font-size: 1.2rem; }
  .lm-brand .lm-subtitle { font-size: 0.6rem; letter-spacing: 0.2em; }

  /* タブ：もっと縮める */
  .lm-tab { padding: 0.55rem 0.7rem; font-size: 0.8rem; }

  /* 認証コード入力欄：letter-spacing控えめに */
  .lm-verify-code-input {
    font-size: 1.3rem !important;
    letter-spacing: 0.35em;
    padding-left: 0.35em !important; /* 中央揃え調整 */
  }

  /* ログインカード(モバイルは 2/3 ではなく全幅) */
  .lm-login-card { width: 100%; max-width: 100%; margin: 1.5rem auto; padding: 1.5rem 1.2rem; }
  .lm-login-card h2 { font-size: 1.25rem; }

  /* ボタン文字サイズ */
  .lm-btn { font-size: 0.85rem; }

  /* 統計：更にコンパクト */
  .lm-stats { gap: 0.75rem; }
  .lm-stat .lm-num { font-size: 1.1rem; }
  .lm-stat .lm-label { font-size: 0.6rem; letter-spacing: 0.1em; }
}

/* === Print === */
.lm-print-only { display: none; }

@media print {
  /* A4 縦・余白指定 — ブラウザのデフォルトヘッダー/フッター（URL・日時・ページ番号）を
     CSS Paged Media で空指定にして抑制（対応ブラウザのみ）。
     非対応ブラウザでは印刷ダイアログの「ヘッダーとフッター」のチェックを外して頂く必要があります。 */
  @page {
    size: A4 portrait;
    margin: 10mm 12mm;
    @top-left { content: ""; }
    @top-center { content: ""; }
    @top-right { content: ""; }
    @bottom-left { content: ""; }
    @bottom-center { content: ""; }
    @bottom-right { content: ""; }
  }

  /* 背景・カラーリセット */
  html, body {
    margin: 0 !important;
    padding: 0 !important;
    min-height: 0 !important;
    height: auto !important;
    background: none !important;
    background-image: none !important;
    color: #000 !important;
    -webkit-print-color-adjust: economy;
    print-color-adjust: economy;
  }

  /* Step 1: モーダル以外の body 直下要素を全部非表示 */
  body > *:not(.lm-modal-backdrop) { display: none !important; }

  /* Step 2: モーダルチェーンを「箱なし」にして子要素を body 直下扱いに */
  .lm-modal-backdrop,
  .lm-modal,
  .lm-modal-body {
    display: contents !important;
  }

  /* Step 3: モーダル内のヘッダー・フッター・印刷エリア以外を全て非表示 */
  .lm-modal-header,
  .lm-modal-footer,
  .lm-modal-body > *:not(.lm-print-area) {
    display: none !important;
  }

  /* Step 4: 印刷エリア本体 — 自然なブロックフローでページ先頭に配置 */
  .lm-print-area {
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    background: none !important;
    box-shadow: none !important;
    border: none !important;
    position: static !important;
    font-size: 9.5pt;
    line-height: 1.45;
    color: #000;
  }

  /* 印刷専用要素を表示 */
  .lm-print-only { display: block !important; }

  /* セクション見出し */
  .lm-print-area .lm-detail-section-title {
    font-size: 10.5pt;
    margin: 0.45rem 0 0.2rem;
    padding-bottom: 0.15rem;
    border-bottom: 1.5px solid #000;
    color: #000;
    page-break-after: avoid;
    break-after: avoid;
  }
  .lm-print-area .lm-detail-section-title:first-child { margin-top: 0; }

  /* 詳細グリッド：印刷時は2カラム固定（モバイルの縦積みを上書き） */
  .lm-print-area .lm-detail-grid {
    display: grid !important;
    grid-template-columns: 80px 1fr !important;
    gap: 0.15rem 0.6rem !important;
    font-size: 9.5pt;
  }
  .lm-print-area .lm-detail-grid dt {
    color: #555 !important;
    padding-top: 0.1rem !important;
    padding-bottom: 0 !important;
    font-size: 7.8pt !important;
    border-bottom: none !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
    font-weight: 600 !important;
  }
  .lm-print-area .lm-detail-grid dd {
    padding-left: 0 !important;
    padding-bottom: 0.2rem !important;
    border-bottom: 1px solid #ccc !important;
    color: #000 !important;
    margin: 0 !important;
  }

  /* バッジ・タグ：背景なし白黒枠 */
  .lm-print-area .lm-badge,
  .lm-print-area .lm-purpose-tag {
    background: none !important;
    border: 1px solid #555 !important;
    color: #000 !important;
    padding: 0.05rem 0.4rem !important;
    font-size: 8pt !important;
  }

  /* 印刷ヘッダー：タイトル＋メタ情報 */
  .lm-print-header {
    display: flex !important;
    justify-content: space-between;
    align-items: flex-end;
    border-bottom: 2px solid #000;
    padding-bottom: 0.35rem;
    margin: 0 0 0.6rem !important;
    page-break-after: avoid;
    break-after: avoid;
  }
  .lm-print-header h1 {
    font-family: 'Noto Serif JP', serif;
    font-size: 16pt;
    font-weight: 700;
    letter-spacing: 0.15em;
    margin: 0;
    color: #000;
  }
  .lm-print-header-meta {
    font-size: 8.5pt;
    color: #000;
    text-align: right;
    line-height: 1.4;
    display: block;
    margin: 0;
  }
  .lm-print-header-meta > div { display: block; }
  .lm-print-header-meta dt {
    display: inline;
    color: #777;
    font-size: 7pt;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    padding: 0 !important;
    border: none !important;
    font-weight: 400 !important;
  }
  .lm-print-header-meta dd {
    display: inline;
    margin: 0 0 0 0.4em;
    padding: 0 !important;
    border: none !important;
    font-weight: 600;
    color: #000;
  }

  /* 承認印欄 */
  .lm-print-seals {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.5rem;
    margin-top: 0.7rem !important;
    page-break-inside: avoid;
    break-inside: avoid;
  }
  .lm-print-seal-box {
    border: 1px solid #000;
    text-align: center;
    height: 22mm;
    display: flex;
    flex-direction: column;
    background: none !important;
  }
  .lm-print-seal-label {
    font-size: 8pt;
    letter-spacing: 0.2em;
    background: #000 !important;
    color: #fff !important;
    padding: 0.15rem 0;
    font-weight: 600;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .lm-print-seal-name {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 9pt;
    color: #000;
    padding: 0.3rem;
  }

  /* 改ページ抑制 */
  .lm-print-area > * { page-break-inside: avoid; break-inside: avoid; }
}

/* ===== Phase 4g: 使用目的選択肢の管理 ===== */
.lm-purpose-row {
  display: flex;
  gap: 0.4rem;
  align-items: center;
  margin-bottom: 0.4rem;
}
.lm-purpose-row .lm-input { flex: 1; }
.lm-purpose-row .lm-btn { padding: 0.3rem 0.6rem; }
.lm-purpose-handle {
  cursor: grab;
  user-select: none;
  color: var(--lm-ink-mute);
  padding: 0 0.3rem;
  font-size: 1.1em;
  line-height: 1;
  letter-spacing: -0.15em;
}
.lm-purpose-handle:active { cursor: grabbing; }
.lm-purpose-row.lm-purpose-dragging { opacity: 0.4; }
.lm-purpose-row.lm-purpose-drag-above { box-shadow: 0 -2px 0 var(--lm-accent, #c8553d); }
.lm-purpose-row.lm-purpose-drag-below { box-shadow: 0 2px 0 var(--lm-accent, #c8553d); }

/* ===== Phase 4i: ログイン画面統合 ===== */
.lm-login-dept-status {
  font-size: 0.85rem;
  margin-top: 0.25rem;
  min-height: 1.3em;
}
.lm-login-dept-status.lm-ok    { color: var(--lm-accent, #c8553d); }
.lm-login-dept-status.lm-error { color: var(--lm-danger, #9b2226); }

/* ===== Phase 4m: モダンデザイン ===== */

/* ログイン画面 — フルブリード写真背景 */
body.lm-modern.lm-login-active {
  background: linear-gradient(rgba(20,15,10,0.45), rgba(20,15,10,0.65)),
              url('assets/images/login-bg.svg') center/cover no-repeat;
  min-height: 100vh;
}
body.lm-modern.lm-login-active .lm-container {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  padding: 1rem;
}
body.lm-modern.lm-login-active .lm-login-card {
  background: #fff;
  box-shadow: 0 20px 60px rgba(0,0,0,0.4);
  border-radius: 8px;
  padding: 32px 36px;
}

/* メインアプリヘッダ — 写真ストリップ */
body.lm-modern .lm-header {
  background: linear-gradient(180deg, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0.5) 100%),
              url('assets/images/header-bg.svg') center/cover no-repeat,
              #2d2520;
  min-height: 140px;
  color: #fff;
  padding: 24px 28px;
  border-radius: 0;
}
body.lm-modern .lm-header h1,
body.lm-modern .lm-header .lm-subtitle,
body.lm-modern .lm-header .lm-dept-name,
body.lm-modern .lm-header .lm-username,
body.lm-modern .lm-header .lm-label {
  color: #fff;
}
body.lm-modern .lm-header .lm-subtitle {
  opacity: 0.7;
  letter-spacing: 0.3em;
  font-size: 0.65rem;
  text-transform: uppercase;
}
body.lm-modern .lm-header .lm-dept-name {
  background: rgba(255,255,255,0.15);
  border: 1px solid rgba(255,255,255,0.25);
}
body.lm-modern .lm-header .lm-btn.lm-secondary {
  background: rgba(255,255,255,0.15);
  color: #fff;
  border: 1px solid rgba(255,255,255,0.25);
}
body.lm-modern .lm-header .lm-btn.lm-secondary:hover {
  background: rgba(255,255,255,0.25);
}
body.lm-modern .lm-header .lm-stat {
  background: rgba(255,255,255,0.12);
  border-radius: 6px;
  padding: 6px 10px;
}
body.lm-modern .lm-header .lm-stat .lm-num,
body.lm-modern .lm-header .lm-stat .lm-label {
  color: #fff;
}

/* 空状態 — 中央写真イラスト */
body.lm-modern .lm-empty {
  padding: 60px 16px;
}
body.lm-modern .lm-empty::before {
  content: '';
  display: block;
  width: 200px;
  height: 140px;
  margin: 0 auto 20px;
  background: url('assets/images/empty-state.svg') center/contain no-repeat;
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0,0,0,0.15);
}
body.lm-modern .lm-empty .lm-icon {
  display: none;
}

/* Phase 4m: モダンデザイン スマホ・タブレット調整 */
@media screen and (max-width: 700px) {
  /* バーガーボタンをヘッダの暗色背景に合わせる */
  body.lm-modern .lm-burger {
    background: rgba(255,255,255,0.15);
    color: #fff;
    border: 1px solid rgba(255,255,255,0.25);
  }
  body.lm-modern .lm-burger:active {
    background: rgba(255,255,255,0.25);
  }
  /* メニューは白カードのため、ヘッダ用の白文字オーバーライドを解除 */
  body.lm-modern .lm-menu .lm-dept-name,
  body.lm-modern .lm-menu .lm-username,
  body.lm-modern .lm-menu .lm-label {
    color: var(--lm-ink);
  }
  body.lm-modern .lm-menu .lm-dept-name {
    background: var(--lm-line);
    border: none;
  }
  body.lm-modern .lm-menu .lm-btn.lm-secondary {
    background: var(--lm-bg-card, #fff);
    color: var(--lm-ink);
    border: 1px solid var(--lm-line);
  }
  body.lm-modern .lm-menu .lm-btn.lm-secondary:hover {
    background: var(--lm-bg);
  }

  /* ヘッダ: 写真ストリップを縮める */
  body.lm-modern .lm-header {
    min-height: auto;
    padding: 14px 14px;
    padding-right: 56px;
  }
  body.lm-modern .lm-header h1 {
    font-size: 1.2rem;
  }
  body.lm-modern .lm-header .lm-subtitle {
    font-size: 0.6rem;
    letter-spacing: 0.2em;
  }
  /* ステータスカードを小さく */
  body.lm-modern .lm-header .lm-stat {
    padding: 4px 8px;
  }
  /* ログインカードのパディング縮小 */
  body.lm-modern.lm-login-active .lm-login-card {
    padding: 24px 22px;
    max-width: calc(100% - 1rem);
  }
  body.lm-modern.lm-login-active .lm-container {
    padding: 0.5rem;
  }
  /* 空状態の画像を一回り小さく */
  body.lm-modern .lm-empty {
    padding: 40px 16px;
  }
  body.lm-modern .lm-empty::before {
    width: 160px;
    height: 112px;
  }
}

@media screen and (max-width: 480px) {
  /* ヘッダのボタン群を小さめに */
  body.lm-modern .lm-header .lm-btn.lm-small {
    padding: 0.4rem 0.55rem;
    font-size: 0.75rem;
  }
  /* バッジ(部門名・ロール)も small に */
  body.lm-modern .lm-header .lm-dept-name {
    font-size: 0.7rem;
    padding: 0.1rem 0.4rem;
  }
  /* 空状態の写真をさらに小さく */
  body.lm-modern .lm-empty::before {
    width: 130px;
    height: 91px;
    margin-bottom: 14px;
  }
}

/* =====================================================================
   ポータル / サイドメニュー / AIチェックリスト（ポータル化で追加）
   既存ルールには手を加えず、新規クラスのみをここに定義する。
   ===================================================================== */

/* ポータル（メニュータイル） */
.lm-portal { padding: 0.5rem 0 1rem; }
.lm-portal-lead {
  font-size: 0.95rem;
  color: var(--lm-ink-soft);
  margin: 0.5rem 0 1.25rem;
}
.lm-portal-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 1rem;
}
.lm-portal-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.5rem;
  padding: 1.5rem;
  background: var(--lm-bg-card);
  border: 1px solid var(--lm-line);
  border-radius: var(--lm-radius);
  box-shadow: var(--lm-shadow);
  cursor: pointer;
  text-align: left;
  font-family: inherit;
  transition: border-color 0.15s, transform 0.05s;
}
.lm-portal-card:hover { border-color: var(--lm-accent); }
.lm-portal-card:active { transform: translateY(1px); }
.lm-portal-card-icon { font-size: 2rem; line-height: 1; }
.lm-portal-card-title { font-size: 1.05rem; font-weight: 700; color: var(--lm-ink); }
.lm-portal-card-desc { font-size: 0.85rem; color: var(--lm-ink-mute); line-height: 1.5; }

/* サイドバー + コンテンツの2カラム */
.lm-layout { display: flex; gap: 1.25rem; align-items: flex-start; }
.lm-sidebar {
  flex: 0 0 240px;
  background: var(--lm-bg-card);
  border: 1px solid var(--lm-line);
  border-radius: var(--lm-radius);
  box-shadow: var(--lm-shadow);
  padding: 0.75rem;
  position: sticky;
  top: 1rem;
}
.lm-sidebar-menu { list-style: none; margin: 0; padding: 0; }
.lm-sidebar-home,
.lm-sidebar-item {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  width: 100%;
  padding: 0.6rem 0.7rem;
  background: transparent;
  border: none;
  border-radius: var(--lm-radius);
  cursor: pointer;
  font-family: inherit;
  font-size: 0.8rem;
  color: var(--lm-ink-soft);
  text-align: left;
}
/* ポータル（ホームへ戻る起点）はメニュー最上部に独立配置し、区切り線で機能メニューと分離 */
.lm-sidebar-home {
  font-weight: 600;
  color: var(--lm-ink);
  margin-bottom: 0.5rem;
  padding-bottom: 0.85rem;
  border-bottom: 1px solid var(--lm-line);
  border-radius: var(--lm-radius) var(--lm-radius) 0 0;
}
.lm-sidebar-home:hover,
.lm-sidebar-item:hover { background: var(--lm-bg); }
.lm-sidebar-home.lm-active,
.lm-sidebar-item.lm-active { background: var(--lm-accent-soft); color: var(--lm-accent); font-weight: 600; }
.lm-sidebar-icon { flex: 0 0 auto; font-size: 0.95rem; line-height: 1; }
/* ラベルは折り返さず、収まらない場合は省略記号で表現（不自然な途中改行を防ぐ） */
.lm-sidebar-label { flex: 1 1 auto; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lm-content { flex: 1 1 auto; min-width: 0; }

/* AIチェックリスト */
.lm-checklist-head { margin-bottom: 1rem; }
.lm-checklist-head h2 { margin: 0 0 0.25rem; font-size: 1.3rem; color: var(--lm-ink); }
.lm-checklist-sub { font-size: 0.9rem; color: var(--lm-ink-soft); }
.lm-checklist-progress {
  display: inline-block;
  margin-top: 0.6rem;
  padding: 0.3rem 0.7rem;
  border-radius: var(--lm-radius);
  background: var(--lm-warn-soft);
  color: var(--lm-warn);
  font-size: 0.85rem;
  font-weight: 600;
}
.lm-checklist-progress.lm-done { background: var(--lm-ok-soft); color: var(--lm-ok); }
.lm-checklist-section { margin-bottom: 1rem; padding: 1rem 1.25rem; }
.lm-checklist-section-title { font-weight: 700; color: var(--lm-ink); margin-bottom: 0.75rem; }
.lm-checklist-items { list-style: none; margin: 0; padding: 0; }
.lm-checklist-item { border-top: 1px solid var(--lm-line); }
.lm-checklist-item:first-child { border-top: none; }
.lm-checklist-item label {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
  padding: 0.7rem 0;
  cursor: pointer;
}
.lm-checklist-item input[type="checkbox"] { margin-top: 0.2rem; flex: 0 0 auto; width: 1.05rem; height: 1.05rem; }
.lm-checklist-text { flex: 1 1 auto; font-size: 0.9rem; line-height: 1.6; color: var(--lm-ink); }
.lm-checklist-item.lm-checked .lm-checklist-text { color: var(--lm-ink-mute); }
.lm-checklist-article {
  flex: 0 0 auto;
  font-size: 0.75rem;
  color: var(--lm-ink-mute);
  background: var(--lm-bg);
  border-radius: var(--lm-radius);
  padding: 0.15rem 0.45rem;
  white-space: nowrap;
}
/* 選択区分に該当しない項目（区分専用 / 区分未選択）。チェック不要であることを示す */
.lm-checklist-item-na label { cursor: default; }
.lm-checklist-item-na .lm-checklist-text { color: var(--lm-ink-mute); }
.lm-checklist-item-na input[type="checkbox"] { opacity: 0.4; }
.lm-checklist-na {
  flex: 0 0 auto;
  font-size: 0.72rem;
  color: var(--lm-ink-soft);
  border: 1px solid var(--lm-line);
  border-radius: var(--lm-radius);
  padding: 0.1rem 0.4rem;
  white-space: nowrap;
}
/* 区分未選択時の進捗（確認が必要な項目が未確定であることを示す） */
.lm-checklist-progress-pending { color: var(--lm-ink-soft); }
.lm-checklist-top { padding: 1.25rem; margin-bottom: 1rem; }
.lm-checklist-note {
  font-size: 0.8rem;
  color: var(--lm-ink-soft);
  line-height: 1.7;
  margin: 0.75rem 0 1rem;
}
.lm-checklist-footer { padding: 1.25rem; }
.lm-checklist-submit-row {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 1rem;
  margin-top: 0.5rem;
}
.lm-checklist-submitted { font-size: 0.85rem; color: var(--lm-ok); font-weight: 600; }

/* レスポンシブ: 狭幅ではサイドバーを上部に積む */
@media screen and (max-width: 700px) {
  .lm-layout { flex-direction: column; align-items: stretch; }
  .lm-sidebar { flex-basis: auto; width: 100%; position: static; }
  .lm-content { width: 100%; }
  .lm-sidebar-menu { display: flex; flex-direction: column; gap: 0.25rem; }
  .lm-sidebar-item { width: 100%; }
  .lm-portal-grid { grid-template-columns: 1fr; }
  .lm-checklist-item label { flex-wrap: wrap; }
  .lm-checklist-article { margin-left: 1.65rem; }
}
