/* ガイダンス案件管理ツール 管理画面スタイル
   UketsukeAI のデザインを流用（Tabler CDN + カスタム）。 */

/* ── レイアウト（上部ヘッダーメニュー型） ── */
body { background: #f5f7fb; }
.wrapper { display: flex; flex-direction: column; min-height: 100vh; }
.page-wrapper { flex: 1; min-width: 0; }
.page-header { padding: 1.25rem 0 .5rem; }

/* ── 上部ヘッダーナビ ── */
.app-topnav { background:#fff; border-bottom:1px solid #e6ebf1; box-shadow:0 1px 2px rgba(16,24,40,.03); position:sticky; top:0; z-index:1000; }
.topnav-inner { max-width:1320px; margin:0 auto; display:flex; align-items:center; gap:.35rem; padding:0 1.1rem; min-height:56px; flex-wrap:wrap; }
.app-topnav .brand { display:flex; align-items:center; gap:.5rem; font-weight:700; color:#1f2937; font-size:1rem; margin-right:.9rem; white-space:nowrap; }
.app-topnav .brand .ti { color:#2f6fed; font-size:1.3rem; }
.topnav-links { display:flex; align-items:center; gap:.12rem; flex-wrap:wrap; }
.app-topnav .nav-link { display:inline-flex; align-items:center; gap:.35rem; padding:.45rem .6rem; border-radius:.5rem;
  color:#5b6472; text-decoration:none; font-size:.85rem; white-space:nowrap; transition:background .12s, color .12s; }
.app-topnav .nav-link .ti { font-size:1.05rem; opacity:.85; }
.app-topnav .nav-link:hover { background:#f1f5f9; color:#1f2937; }
.app-topnav .nav-link.active { background:#eef4ff; color:#2f6fed; font-weight:600; }
.app-topnav .nav-divider { width:1px; height:20px; background:#e2e8f0; margin:0 .4rem; }
.topnav-user { margin-left:auto; display:flex; align-items:center; gap:.6rem; padding-left:.5rem; }
.topnav-user .tu-meta { display:flex; flex-direction:column; line-height:1.15; text-align:right; }
.topnav-user .user-name { font-size:.8rem; color:#1f2937; font-weight:600; }
.topnav-user .user-role { font-size:.68rem; color:#94a3b8; }
.topnav-user .tu-logout { display:inline-flex; width:34px; height:34px; align-items:center; justify-content:center; border-radius:.5rem;
  color:#64748b; border:1px solid #e2e8f0; text-decoration:none; transition:.12s; }
.topnav-user .tu-logout:hover { background:#fee2e2; color:#dc2626; border-color:#fecaca; }
@media (max-width:1100px) { .topnav-inner { gap:.2rem; } .app-topnav .nav-link { padding:.4rem .5rem; font-size:.82rem; } }
.page-title { font-size: 1.35rem; font-weight: 700; color: #1f2937; margin: 0; }
.page-body { padding: 1rem 0 3rem; }

/* ── サイドバー ── */
.app-sidebar {
  width: 248px; flex-shrink: 0; background: #1d273b; color: #cbd5e1;
  display: flex; flex-direction: column; position: sticky; top: 0; height: 100vh;
}
.app-sidebar .brand {
  display: flex; align-items: center; gap: .55rem; padding: 1.1rem 1.25rem;
  font-weight: 700; font-size: 1.02rem; color: #fff; border-bottom: 1px solid #2a374f;
}
.app-sidebar .brand .ti { font-size: 1.35rem; color: #6ea8fe; }
.app-sidebar nav { padding: .6rem .5rem; overflow-y: auto; flex: 1; }
.app-sidebar .nav-link {
  display: flex; align-items: center; gap: .6rem; padding: .6rem .75rem;
  border-radius: .5rem; color: #cbd5e1; text-decoration: none; font-size: .9rem;
  transition: background .12s, color .12s; margin-bottom: .12rem;
}
.app-sidebar .nav-link .ti { font-size: 1.15rem; opacity: .9; }
.app-sidebar .nav-link:hover { background: #273349; color: #fff; }
.app-sidebar .nav-link.active { background: #2f6fed; color: #fff; }
.app-sidebar .nav-section {
  font-size: .68rem; text-transform: uppercase; letter-spacing: .06em;
  color: #64748b; padding: .9rem .85rem .35rem; font-weight: 700;
}
.app-sidebar .sidebar-footer {
  border-top: 1px solid #2a374f; padding: .85rem 1rem; font-size: .8rem;
}
.app-sidebar .sidebar-footer .user-name { color: #fff; font-weight: 600; }
.app-sidebar .sidebar-footer .user-role { color: #7b8aa5; font-size: .72rem; }

/* ── ダッシュボード（整列グリッド＋並び替え） ── */
.dash-kpis { display:grid; grid-template-columns:repeat(4, 1fr); gap:1rem; }
.dash-kpis .stat-card { height:100%; }
@media (max-width:820px){ .dash-kpis { grid-template-columns:repeat(2, 1fr); } }
.dash-alerts { display:grid; grid-template-columns:repeat(auto-fit, minmax(300px, 1fr)); gap:1rem; margin-top:1rem; }
.dash-alerts .card { height:100%; display:flex; flex-direction:column; }
.dash-alerts .alert-scroll { max-height:236px; overflow-y:auto; margin:.15rem -.25rem 0; padding:0 .25rem; }
.dash-alerts .alert-row { display:flex; justify-content:space-between; gap:.75rem; padding:.4rem .5rem; border-radius:.45rem; text-decoration:none; color:#334155; font-size:.85rem; }
.dash-alerts .alert-row:hover { background:#f4f7fb; }
.dash-alerts .alert-row + .alert-row { border-top:1px solid #f1f3f7; }

.dash-toolbar { display:flex; align-items:center; gap:.5rem; }
.dash-grid { display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:1rem; margin-top:1rem; }
@media (max-width:900px){ .dash-grid { grid-template-columns:1fr; } }
.dash-block { display:flex; flex-direction:column; }
.dash-block .card-body { display:flex; flex-direction:column; flex:1; }
.dash-block .db-head { display:flex; align-items:center; justify-content:space-between; gap:.5rem; margin-bottom:.6rem; }
.dash-block .db-title { font-weight:700; font-size:.95rem; color:#1f2937; }
.dash-block .drag-handle { cursor:grab; color:#c3cbd6; padding:.15rem .3rem; border-radius:.35rem; line-height:1; transition:.12s; }
.dash-block .drag-handle:hover { color:#2f6fed; background:#eff5ff; }
.dash-block .drag-handle:active { cursor:grabbing; }
.dash-block.dragging { opacity:.45; }
.dash-block.drop-before { box-shadow:-3px 0 0 0 #2f6fed; }
.dash-block.drop-after { box-shadow:3px 0 0 0 #2f6fed; }
.chart-wrap { position:relative; height:264px; flex:1; }

/* ── ダッシュボード タブ ── */
.dash-tabs { display:flex; flex-wrap:wrap; gap:.25rem; border-bottom:1px solid #e6ebf1; margin:1.25rem 0 .25rem; }
.dash-tab { padding:.55rem 1rem; font-size:.9rem; color:#64748b; background:none; border:none; border-bottom:2px solid transparent;
  margin-bottom:-1px; cursor:pointer; border-radius:.4rem .4rem 0 0; transition:.12s; }
.dash-tab:hover { color:#1f2937; background:#f4f7fb; }
.dash-tab.active { color:#2f6fed; border-bottom-color:#2f6fed; font-weight:700; background:#fff; }
.dash-panel { display:none; }
.dash-panel.active { display:block; }

/* KPI 前年比 */
.stat-card .stat-prev { font-size:.72rem; color:#94a3b8; margin-top:.3rem; }
.stat-card .delta-up { color:#16a34a; font-weight:600; }
.stat-card .delta-down { color:#dc2626; font-weight:600; }

/* ステータス内訳スタックバー */
.status-stack { display:flex; width:100%; height:1.5rem; border-radius:.4rem; overflow:hidden; gap:2px; background:#f1f5f9; margin-bottom:.75rem; }
.status-stack > span { display:block; }
.status-legend { display:flex; flex-wrap:wrap; gap:.4rem 1.25rem; font-size:.85rem; }
.status-legend .sl-item { display:inline-flex; align-items:center; gap:.4rem; color:#475569; }
.status-legend .sl-dot { width:.7rem; height:.7rem; border-radius:.2rem; }
.status-legend .sl-num { font-weight:700; color:#1f2937; }
.status-legend .sl-pct { color:#94a3b8; font-size:.78rem; }

/* 分析テーブル（業者別・スタッフ別・対比） */
.atable-wrap { overflow-x:auto; }
table.atable { width:100%; border-collapse:collapse; font-size:.85rem; }
table.atable thead th { text-align:left; white-space:nowrap; color:#64748b; font-weight:700; font-size:.76rem;
  padding:.55rem .6rem; border-bottom:2px solid #e6ebf1; background:#f8fafc; position:sticky; top:0; }
table.atable thead th.num { text-align:right; }
table.atable tbody td { padding:.55rem .6rem; border-bottom:1px solid #f1f3f7; vertical-align:middle; color:#1f2937; }
table.atable tbody td.num { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
table.atable tbody td .sub { font-size:.7rem; color:#a3aec0; }
table.atable tbody tr.company-row { cursor:pointer; }
table.atable tbody tr.company-row:hover td { background:#f4f8ff; }
table.atable tbody tr.grade-detail > td { background:#f9fbfd; padding:.5rem 1rem 1rem 2rem; }
/* 高校別タブ: 月別ヒートマップ・増減色 */
table.atable tbody td.heat { padding:.35rem .25rem; text-align:center; font-size:.75rem; font-weight:700;
  min-width:1.7rem; border-bottom:1px solid #fff; }
table.atable tbody td.sub-date { font-size:.75rem; color:#64748b; }
table.atable tbody tr.company-row:hover td.heat { filter:brightness(.96); }
.delta-up { color:#16a34a; font-weight:600; }
.delta-down { color:#dc2626; font-weight:600; }
.chevron { display:inline-block; width:.9rem; color:#94a3b8; transition:transform .15s; }
.chevron.open { transform:rotate(90deg); }

/* ミニバー・スタックミニ */
.minibar { height:.55rem; border-radius:.3rem; background:#eef2f7; overflow:hidden; min-width:4rem; }
.minibar > span { display:block; height:100%; border-radius:.3rem; }
.ministack { display:flex; height:.55rem; border-radius:.3rem; overflow:hidden; gap:1px; background:#eef2f7; min-width:7rem; }
.ministack > span { display:block; }

/* 月別対比の2本バー */
.yoy-row { display:flex; align-items:center; gap:.8rem; margin-bottom:.6rem; }
.yoy-row .yoy-label { width:2.6rem; color:#64748b; font-variant-numeric:tabular-nums; flex:0 0 auto; }
.yoy-row .yoy-bars { flex:1; display:flex; flex-direction:column; gap:.2rem; }
.yoy-row .yoy-bars .bar { height:.6rem; border-radius:.3rem; background:#f1f5f9; overflow:hidden; }
.yoy-row .yoy-bars .bar > span { display:block; height:100%; border-radius:.3rem; }
.yoy-row .yoy-val { flex:0 0 auto; width:11rem; text-align:right; font-size:.78rem; color:#64748b; font-variant-numeric:tabular-nums; }

/* ── カード ── */
.card { border: 1px solid #e6ebf1; border-radius: .7rem; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.03); }
.card-body { padding: 1.1rem 1.25rem; }
.stat-card { padding: 1.1rem 1.25rem; border-radius: .7rem; background: #fff; border: 1px solid #e6ebf1; display: flex; align-items: center; gap: 1rem; }
.stat-card .stat-icon { width: 46px; height: 46px; border-radius: .6rem; display: flex; align-items: center; justify-content: center; font-size: 1.4rem; color: #fff; flex-shrink: 0; }
.stat-card .stat-num { font-size: 1.6rem; font-weight: 700; line-height: 1; color: #111827; }
.stat-card .stat-label { font-size: .8rem; color: #6b7280; margin-top: .25rem; }

/* ── ボタン ── */
.btn-outline { background: transparent; border: 1px solid #d0d6de; color: #4b5563; }
.btn-outline:hover { background: #f1f5f9; border-color: #a8b1be; color: #354052; }

/* ── モーダル（Bootstrap非依存の独自オーバーレイ）── */
.modal-bg { display: none; position: fixed; inset: 0; background: rgba(15,23,42,.5); z-index: 2000; align-items: flex-start; justify-content: center; padding: 3rem 1rem; overflow-y: auto; }
.modal-bg.open { display: flex; }
.modal-bg > .modal-box { background: #fff; border-radius: .75rem; padding: 1.75rem; width: 100%; max-width: 620px; box-shadow: 0 20px 50px rgba(0,0,0,.25); }
.modal-bg > .modal-box h2 { font-size: 1.1rem; font-weight: 700; margin-bottom: 1.25rem; }
.modal-footer { display: flex; justify-content: flex-end; gap: .5rem; margin-top: 1.5rem; }

/* ── フォーム ── */
.form-group { margin-bottom: 1rem; }
.form-group label { display: block; font-size: .85rem; font-weight: 600; color: #374151; margin-bottom: .35rem; }
.form-group input, .form-group select, .form-group textarea {
  width: 100%; padding: .5rem .75rem; border: 1px solid #d0d6de; border-radius: .5rem;
  font-size: .9rem; background: #fff; color: #1f2937; box-sizing: border-box;
}
.form-group textarea { min-height: 80px; resize: vertical; }
.form-group input:focus, .form-group select:focus, .form-group textarea:focus {
  outline: none; border-color: #2f6fed; box-shadow: 0 0 0 3px rgba(47,111,237,.15);
}
.form-group .hint { font-size: .76rem; color: #94a3b8; margin-top: .3rem; }
.form-row { display: flex; gap: .8rem; }
.form-row > * { flex: 1; }
.form-check-inline { display: flex; align-items: center; gap: .5rem; }
.form-check-inline input { width: auto; }

/* ── テーブル ── */
.table-wrap { overflow-x: auto; border-radius: .5rem; }
.table-wrap table { width: 100%; border-collapse: collapse; font-size: .875rem; background: #fff; }
.table-wrap thead th { padding: .6rem 1rem; text-align: left; font-size: .72rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: #6b7280; background: #f8fafc; border-bottom: 2px solid #e6ebf1; white-space: nowrap; }
.table-wrap tbody td { padding: .7rem 1rem; border-bottom: 1px solid #f1f3f7; vertical-align: middle; color: #1f2937; }
.table-wrap tbody tr:last-child td { border-bottom: none; }
.table-wrap tbody tr:hover td { background: #f8fafc; }
.row-actions { display: flex; gap: .4rem; }
.icon-btn { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: .45rem; border: 1px solid #e2e8f0; background: #fff; color: #64748b; cursor: pointer; transition: .12s; }
.icon-btn:hover { background: #f1f5f9; color: #334155; }
.icon-btn.danger { color: #dc2626; border-color: #fecaca; }
.icon-btn.danger:hover { background: #fee2e2; }

/* ── バッジ ── */
.badge-soft { display: inline-block; padding: .18rem .55rem; border-radius: 999px; font-size: .74rem; font-weight: 600; }
.badge-green { background: #d1fae5; color: #065f46; }
.badge-gray { background: #f1f5f9; color: #64748b; }
.badge-blue { background: #dbeafe; color: #1e40af; }
.badge-amber { background: #fef3c7; color: #92400e; }
.badge-red { background: #fee2e2; color: #991b1b; }

/* ── その他 ── */
.spinner { width: 26px; height: 26px; border: 3px solid #e2e8f0; border-top-color: #2f6fed; border-radius: 50%; animation: spin .7s linear infinite; margin: 2rem auto; }
@keyframes spin { to { transform: rotate(360deg); } }
.empty-state { text-align: center; padding: 2.5rem 1rem; color: #94a3b8; }
.empty-state .ti { font-size: 2.2rem; display: block; margin-bottom: .5rem; opacity: .6; }
.toast-box { position: fixed; right: 1.25rem; bottom: 1.25rem; z-index: 3000; display: flex; flex-direction: column; gap: .5rem; }
.toast-item { padding: .7rem 1rem; border-radius: .55rem; color: #fff; font-size: .87rem; box-shadow: 0 6px 20px rgba(0,0,0,.18); animation: toastin .2s; }
.toast-item.ok { background: #16a34a; } .toast-item.err { background: #dc2626; }
@keyframes toastin { from { opacity: 0; transform: translateY(8px); } }
.text-muted-sm { color: #94a3b8; font-size: .8rem; }
.search-bar { display: flex; gap: .5rem; margin-bottom: 1rem; max-width: 420px; }

/* ── 案件一覧の見やすさ ── */
.table-wrap tbody tr:nth-child(even) td { background: #fbfcfe; }
.table-wrap tbody tr:hover td { background: #eef4ff; }
.table-wrap.sticky { max-height: 72vh; overflow: auto; }
.table-wrap.sticky thead th { position: sticky; top: 0; z-index: 3; }
.table-wrap tbody tr.row-cxl td { background: #fff5f5; }
.table-wrap tbody tr.row-cxl:hover td { background: #ffecec; }
.toolbar { display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; margin-bottom: .75rem; }
.toolbar select, .toolbar .form-control { padding: .45rem .6rem; border: 1px solid #d0d6de; border-radius: .5rem; font-size: .85rem; background: #fff; }
.count-pill { font-size: .82rem; color: #64748b; margin-left: auto; font-weight: 600; }

@media (max-width: 820px) {
  .app-sidebar { position: fixed; left: -260px; z-index: 1500; transition: left .2s; }
  .app-sidebar.show { left: 0; }
  .table-wrap { font-size: .82rem; }
}

/* ═══════════════════════════════════════════════════════════════
   案件一覧 ― その場編集スプレッドシート（客版UXを踏襲し上質化）
   ═══════════════════════════════════════════════════════════════ */

/* --- セクションカード（PDF取込・絞り込み） --- */
.panel { background:#fff; border:1px solid #e6ebf1; border-radius:.75rem; box-shadow:0 1px 2px rgba(16,24,40,.04); }
.panel + .panel { margin-top:1rem; }
.panel-pad { padding:1rem 1.15rem; }
.panel h2.panel-title { font-size:.95rem; font-weight:700; color:#1f2937; margin:0 0 .15rem; }
.panel .panel-sub { font-size:.8rem; color:#6b7280; margin:0 0 .75rem; }

/* --- PDFドロップゾーン --- */
.dropzone {
  border:2px dashed #cbd5e1; border-radius:.7rem; padding:1.75rem 1rem; text-align:center;
  color:#64748b; cursor:pointer; transition:border-color .15s, background .15s, color .15s; background:#fbfdff;
}
.dropzone:hover, .dropzone.drag { border-color:#2f6fed; background:#eff5ff; color:#2f6fed; }
.dropzone.busy { opacity:.6; pointer-events:none; }
.dropzone .dz-main { font-weight:600; font-size:.92rem; }
.dropzone .dz-sub { font-size:.76rem; color:#94a3b8; margin-top:.2rem; }
.dropzone .dz-spin { width:26px; height:26px; border:3px solid #dbe4f0; border-top-color:#2f6fed; border-radius:50%; animation:spin .7s linear infinite; margin:.6rem auto 0; }

/* --- 絞り込みバー --- */
.filterbar { display:flex; flex-wrap:wrap; align-items:flex-end; gap:.75rem; }
.filterbar .fb-field { display:flex; flex-direction:column; gap:.25rem; }
.filterbar label.fb-label { font-size:.72rem; color:#6b7280; font-weight:600; }
.filterbar select, .filterbar input[type=text] {
  padding:.4rem .55rem; border:1px solid #d0d6de; border-radius:.5rem; font-size:.85rem; background:#fff; color:#1f2937;
}
.filterbar select:focus, .filterbar input:focus { outline:none; border-color:#2f6fed; box-shadow:0 0 0 3px rgba(47,111,237,.14); }
.filterbar .fb-check { display:flex; align-items:center; gap:.4rem; font-size:.8rem; color:#4b5563; padding-bottom:.45rem; cursor:pointer; }
.filterbar .fb-count { margin-left:auto; font-size:.85rem; color:#475569; font-weight:700; padding-bottom:.45rem; }

/* --- 凡例（クラス名は framework の .legend と衝突するため専用名） --- */
.case-legend { display:block; width:100%; font-size:.76rem; color:#6b7280; margin:.15rem .1rem; line-height:1.9; }
.case-legend .lg-chip { display:inline-block; vertical-align:middle; padding:.15rem .5rem; border-radius:.4rem; font-weight:600;
  background:#fef3c7; color:#92400e; border:1px solid #fcd34d; white-space:nowrap; margin-right:.45rem; }
.case-legend .lg-txt { white-space:normal; }
.case-legend .lg-sep { margin:0 .6rem; color:#cbd5e1; }
.case-legend .lg-muted { color:#94a3b8; }
.case-legend .ti { font-size:.95rem; vertical-align:-2px; }

/* --- スプレッドシート本体 --- */
.sheet-wrap { background:#fff; border:1px solid #e6ebf1; border-radius:.75rem; overflow:auto; max-height:76vh; box-shadow:0 1px 2px rgba(16,24,40,.04); }
table.sheet { border-collapse:separate; border-spacing:0; width:max-content; min-width:100%; font-size:.8rem; }
table.sheet thead th {
  position:sticky; top:0; z-index:6; background:#f4f7fb; color:#475569; font-weight:700; font-size:.7rem;
  letter-spacing:.02em; text-align:left; white-space:nowrap; padding:.55rem .6rem; border-bottom:1px solid #e2e8f0;
}
table.sheet thead th .th-hint { color:#a3aec0; font-weight:400; margin-left:.1rem; cursor:help; }
table.sheet tbody td { padding:.3rem .45rem; border-bottom:1px solid #eef1f6; vertical-align:middle; white-space:nowrap; background:#fff; }
table.sheet tbody tr:hover td { background:#f8faff; }
table.sheet tbody tr.deadline-soon td { background:#fffbeb; }
table.sheet tbody tr.deadline-soon:hover td { background:#fef6da; }
table.sheet tbody tr.row-cxl td { background:#fef5f5; }
/* 不参加: 行全体をグレーアウト */
table.sheet tbody tr.row-decline td { background:#f1f5f9; color:#94a3b8; }
table.sheet tbody tr.row-decline:hover td { background:#e9eef4; }
table.sheet tbody tr.row-decline .cell-input,
table.sheet tbody tr.row-decline select.cell-input { color:#94a3b8; }
table.sheet tbody tr.row-decline .cell-input:focus,
table.sheet tbody tr.row-decline select.cell-input:focus { color:#1f2937; }
.table-wrap tbody tr.row-decline td { background:#f1f5f9; color:#94a3b8; }
.table-wrap tbody tr.row-decline:hover td { background:#e9eef4; }
table.sheet tbody td.col-idx { text-align:right; color:#aab4c4; font-variant-numeric:tabular-nums; padding-right:.6rem; }

/* 入力要素（セル内）: 枠を薄く、フォーカスで浮き上がる */
.cell-input {
  border:1px solid transparent; border-radius:.4rem; padding:.28rem .4rem; font-size:.8rem; background:transparent;
  color:#1f2937; width:100%; box-sizing:border-box; transition:border-color .12s, background .12s, box-shadow .12s;
}
.cell-input:hover { border-color:#dbe2ea; background:#fff; }
.cell-input:focus { outline:none; border-color:#2f6fed; background:#fff; box-shadow:0 0 0 3px rgba(47,111,237,.14); }
select.cell-input { cursor:pointer; }
.cell-input.saved { border-color:#16a34a !important; box-shadow:0 0 0 3px rgba(22,163,74,.16) !important; }
.cell-input.err { border-color:#dc2626 !important; box-shadow:0 0 0 3px rgba(220,38,38,.16) !important; }
.w-date { width:8.6rem; } .w-time { width:6rem; } .w-num { width:4.6rem; } .w-sm { width:6rem; }
.w-md { width:9rem; } .w-lg { width:11rem; } .w-status { width:6.4rem; }

/* ステータスの色ドット */
.st-cell { display:flex; align-items:center; gap:.35rem; }
.st-dot { width:.55rem; height:.55rem; border-radius:50%; flex:0 0 auto; }
.st-未確認{background:#f59e0b}.st-検討中{background:#3b82f6}.st-参加{background:#16a34a}
.st-不参加{background:#94a3b8}.st-参加CXL{background:#dc2626}.st-完了{background:#6366f1}

/* 締切間近バッジ */
.deadline-badge { display:inline-flex; align-items:center; gap:.2rem; margin-top:.2rem; font-size:.66rem; font-weight:700;
  padding:.08rem .34rem; border-radius:.35rem; background:#fef3c7; color:#92400e; border:1px solid #fcd34d; }

/* 担当スタッフ チェック群 */
.staff-box { max-height:4.6rem; overflow-y:auto; border:1px solid #e2e8f0; border-radius:.45rem; padding:.2rem .35rem; width:9.5rem; background:#fff; }
.staff-box label { display:flex; align-items:center; gap:.35rem; font-size:.74rem; padding:.05rem .1rem; border-radius:.3rem; cursor:pointer; }
.staff-box label:hover { background:#f1f5f9; }
.staff-box.saved { border-color:#16a34a; box-shadow:0 0 0 3px rgba(22,163,74,.16); }

/* 来校/希望/資料のチップ表示 */
.mini-chip { display:inline-block; font-size:.66rem; font-weight:600; padding:.06rem .3rem; border-radius:.3rem; margin-top:.15rem; }
.mini-chip.visit { background:#d1fae5; color:#065f46; }
.mini-chip.req { background:#dbeafe; color:#1e40af; }

/* 行アクション（詳細・削除）— 右端固定 */
.sheet .col-act { position:sticky; right:0; z-index:5; background:#fff; box-shadow:inset 1px 0 0 #eef1f6; }
.sheet thead .col-act { z-index:7; background:#f4f7fb; }
.mini-btn { display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; border-radius:.4rem;
  border:1px solid #e2e8f0; background:#fff; color:#64748b; cursor:pointer; transition:.12s; }
.mini-btn:hover { background:#eff5ff; color:#2f6fed; border-color:#bcd3f7; }
.mini-btn.danger:hover { background:#fee2e2; color:#dc2626; border-color:#fecaca; }

/* 料金セル */
.fee-cell { display:flex; align-items:center; gap:.2rem; }
.fee-cell .yen { color:#94a3b8; font-size:.75rem; }
.fee-assign { font-size:.68rem; color:#2f6fed; cursor:pointer; white-space:nowrap; }
.fee-assign:hover { text-decoration:underline; }

/* PDFリンク（行内） */
.pdf-link { display:block; font-size:.68rem; color:#2f6fed; cursor:pointer; margin-top:.15rem; }
.pdf-link:hover { text-decoration:underline; }

/* --- 大型モーダル（PDF確認：左PDF / 右フォーム） --- */
.modal-xl { padding: 1.25rem 1rem; }
.modal-xl .modal-box { max-width:min(96vw, 1800px); padding:0; overflow:hidden; }
.mx-head { display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; padding:1rem 1.25rem; border-bottom:1px solid #eef1f6; }
.mx-head h2 { margin:0; font-size:1.05rem; font-weight:700; }
.mx-head .mx-sub { font-size:.8rem; color:#6b7280; margin-top:.15rem; }
.mx-close { background:none; border:none; font-size:1.25rem; line-height:1; color:#94a3b8; cursor:pointer; padding:.1rem .3rem; }
.mx-close:hover { color:#475569; }
.mx-body { display:flex; min-height:0; height:calc(93vh - 66px); max-height:calc(93vh - 66px); }
.mx-pdf { width:56%; flex:0 0 56%; background:#f1f5f9; border-right:1px solid #e2e8f0; }
.mx-pdf iframe { width:100%; height:100%; min-height:70vh; border:0; display:block; }
.mx-form { flex:1; overflow-y:auto; padding:1.15rem 1.25rem; }
.mx-form .form-row { gap:.7rem; }
.mx-form .form-group { margin-bottom:.8rem; }
@media (max-width:900px){ .mx-body{flex-direction:column; height:auto; max-height:none;} .mx-pdf{width:100%; flex-basis:auto; height:56vh; border-right:0; border-bottom:1px solid #e2e8f0;} }
/* PDFなし手動登録モード：左PDFペインを隠してフォーム全幅 */
#modal-import.no-pdf .mx-pdf { display:none; }
#modal-import.no-pdf .mx-form { flex-basis:100%; }
/* 手動登録は左PDFが無いので、高さは中身なりに（PDF確認時だけ画面いっぱいにする） */
#modal-import.no-pdf .mx-body { height:auto; }

/* PDFプレビュー用モーダル */
.pdf-preview { padding: 1.25rem 1rem; }
.pdf-preview .modal-box { max-width:min(96vw, 1200px); padding:0; overflow:hidden; }
.pdf-preview-head { display:flex; align-items:center; justify-content:space-between; padding:.7rem 1rem; border-bottom:1px solid #eef1f6; }
.pdf-preview iframe { width:100%; height:calc(93vh - 66px); min-height:60vh; border:0; display:block; }

/* 保存インジケータ（右上） */
.save-flag { position:fixed; top:1rem; right:1.25rem; z-index:3200; font-size:.8rem; padding:.4rem .75rem; border-radius:.5rem;
  background:#111827; color:#fff; opacity:0; transform:translateY(-6px); transition:.18s; pointer-events:none; box-shadow:0 8px 24px rgba(0,0,0,.18); }
.save-flag.show { opacity:1; transform:translateY(0); }
.save-flag.ok { background:#16a34a; } .save-flag.err { background:#dc2626; }

/* ── はじめにやること（2026-10-28。UketsukeAI と同じ作り）──
   ログインした人が「次に何をすればいいか」を1画面で分かるようにする。
   1ステップ＝1つの説明＋1つのボタン。済んだものは実際のデータから自動でチェックが付く。 */
.gd-setup { background:#fff; border:1px solid #e6ebf1; border-radius:1rem; padding:1.35rem 1.5rem 1.1rem; margin-bottom:1rem;
  box-shadow:0 1px 2px rgba(16,24,40,.04); }
.gd-setup-head { display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; }
.gd-setup-title { font-size:1.2rem; font-weight:700; color:#111827; margin:0; }
.gd-setup-sub { color:#6b7280; font-size:.88rem; margin-top:.2rem; }
.gd-setup-close { border:0; background:none; color:#9ca3af; font-size:.85rem; cursor:pointer; padding:.25rem .5rem; border-radius:.5rem; white-space:nowrap; }
.gd-setup-close:hover { background:#f3f4f6; color:#374151; }
.gd-setup-bar { height:6px; background:#eef0f4; border-radius:99px; margin:1rem 0 .35rem; overflow:hidden; }
.gd-setup-bar > i { display:block; height:100%; background:#2f6fed; border-radius:99px; transition:width .5s ease; }
.gd-setup-count { font-size:.8rem; color:#6b7280; margin-bottom:.4rem; }
.gd-step { display:flex; gap:1rem; padding:.9rem 0; border-top:1px solid #f1f2f5; }
.gd-step:first-child { border-top:0; }
.gd-step-no { flex:0 0 32px; height:32px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-weight:700; font-size:.9rem; background:#eef4ff; color:#2f6fed; }
.gd-step.done .gd-step-no { background:#22a35a; color:#fff; }
.gd-step-body { flex:1; min-width:0; }
.gd-step-title { font-weight:700; color:#111827; font-size:.98rem; }
.gd-step.done .gd-step-title { color:#6b7280; }
.gd-step-text { color:#4b5563; font-size:.87rem; margin-top:.15rem; line-height:1.65; }
.gd-step-state { font-size:.8rem; margin-top:.3rem; color:#6b7280; }
.gd-step-state.ok { color:#1f9d55; } .gd-step-state.warn { color:#c2410c; }
.gd-step-act { flex:0 0 auto; align-self:center; display:flex; gap:.4rem; flex-wrap:wrap; justify-content:flex-end; }
.gd-btn { display:inline-flex; align-items:center; gap:.35rem; border:0; border-radius:99px; padding:.45rem 1rem; font-size:.85rem;
  font-weight:600; cursor:pointer; text-decoration:none; background:#2f6fed; color:#fff; white-space:nowrap; }
.gd-btn:hover { background:#1f5ad6; color:#fff; }
.gd-btn.ghost { background:#eef4ff; color:#2f6fed; } .gd-btn.ghost:hover { background:#dfe9ff; color:#2f6fed; }
.gd-chips { display:flex; flex-wrap:wrap; gap:.35rem; margin-top:.45rem; }
.gd-chip { display:inline-flex; align-items:center; gap:.3rem; font-size:.78rem; padding:.2rem .6rem; border-radius:99px;
  border:1px solid #e2e8f0; color:#334155; text-decoration:none; background:#fff; }
.gd-chip:hover { background:#f8fafc; color:#0f172a; }
.gd-chip.no { border-color:#fed7aa; background:#fff7ed; color:#c2410c; }
.gd-chip .ti { font-size:.9rem; }
@media (max-width: 640px) {
  .gd-setup { padding:1.1rem 1rem .9rem; }
  .gd-step { flex-wrap:wrap; gap:.7rem; }
  .gd-step-act { flex-basis:100%; justify-content:flex-start; padding-left:44px; }
  .gd-btn { white-space:normal; }
}

/* ════════════════════════════════════════════════════════════════
   見た目の仕上げ（2026-10-28）。Apple の画面のように、
   文字はくっきり・余白は広め・角は丸く・影は薄く、色は青1色に絞る。
   個別の画面のスタイルより後ろに置いて上書きする。
   ════════════════════════════════════════════════════════════════ */
:root {
  --gd-ink: #1d1d1f;          /* 本文 */
  --gd-sub: #6e6e73;          /* 補足 */
  --gd-line: rgba(0,0,0,.08); /* 区切り線 */
  --gd-bg: #f5f5f7;           /* 背景 */
  --gd-blue: #0071e3;         /* 操作の色（ボタン・リンク・選択中） */
  --gd-blue-hover: #0077ed;
  --gd-radius: 14px;
  --tblr-primary: #0071e3;
  --tblr-primary-rgb: 0,113,227;
  --tblr-font-sans-serif: -apple-system, BlinkMacSystemFont, "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", "Yu Gothic UI", "Meiryo", sans-serif;
}
body {
  background: var(--gd-bg); color: var(--gd-ink);
  font-family: var(--tblr-font-sans-serif);
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
  letter-spacing: .01em;
}
a { color: var(--gd-blue); }

/* 上のメニュー：半透明＋ぼかし */
.app-topnav {
  background: rgba(255,255,255,.78);
  -webkit-backdrop-filter: saturate(180%) blur(20px); backdrop-filter: saturate(180%) blur(20px);
  border-bottom: 1px solid var(--gd-line); box-shadow: none;
}
.app-topnav .brand { color: var(--gd-ink); font-weight: 600; letter-spacing: -.01em; }
.app-topnav .brand .ti { color: var(--gd-blue); }
.app-topnav .nav-link { color: #424245; border-radius: 8px; }
.app-topnav .nav-link:hover { background: rgba(0,0,0,.04); color: var(--gd-ink); }
.app-topnav .nav-link.active { background: rgba(0,113,227,.1); color: var(--gd-blue); font-weight: 600; }
.topnav-user .tu-logout { border-color: var(--gd-line); border-radius: 999px; }

/* 見出し */
.page-header { padding: 1.8rem 0 .8rem; }
.page-title { font-size: 1.75rem; font-weight: 700; letter-spacing: -.02em; color: var(--gd-ink); }
.text-muted-sm { color: var(--gd-sub); }

/* カード・パネル：薄い線と、ごく薄い影 */
.card, .panel, .stat-card, .gd-setup {
  border: 1px solid var(--gd-line); border-radius: var(--gd-radius);
  box-shadow: 0 1px 2px rgba(0,0,0,.03), 0 6px 20px rgba(0,0,0,.035);
}
.panel h2.panel-title, .card-title { font-weight: 600; letter-spacing: -.01em; color: var(--gd-ink); }
.stat-card .stat-num { letter-spacing: -.02em; }

/* ボタン：角を丸く、文字は少し細めに */
.btn { border-radius: 999px; font-weight: 500; letter-spacing: .01em; padding: .5rem 1.05rem;
  transition: background .15s, border-color .15s, box-shadow .15s, transform .05s; }
.btn:active { transform: scale(.98); }
.btn-primary { background: var(--gd-blue); border-color: var(--gd-blue); color: #fff; }
.btn-primary:hover, .btn-primary:focus { background: var(--gd-blue-hover); border-color: var(--gd-blue-hover); color: #fff; }
.btn-primary:disabled, .btn-primary.disabled { background: #a7c9f2; border-color: #a7c9f2; color: #fff; opacity: 1; }
.btn-outline { background: #fff; border: 1px solid rgba(0,0,0,.12); color: var(--gd-ink); }
.btn-outline:hover { background: #f5f5f7; border-color: rgba(0,0,0,.18); color: var(--gd-ink); }
.btn:focus-visible { outline: none; box-shadow: 0 0 0 4px rgba(0,113,227,.25); }
.icon-btn { border-radius: 999px; border-color: var(--gd-line); }
.gd-btn { background: var(--gd-blue); }
.gd-btn:hover { background: var(--gd-blue-hover); }
.gd-btn.ghost { background: rgba(0,113,227,.08); color: var(--gd-blue); }
.gd-btn.ghost:hover { background: rgba(0,113,227,.14); color: var(--gd-blue); }
.gd-setup-bar > i { background: var(--gd-blue); }
.gd-step-no { background: rgba(0,113,227,.08); color: var(--gd-blue); }
.gd-step.done .gd-step-no { background: #34c759; }

/* 入力欄 */
.form-group input, .form-group select, .form-group textarea,
.filterbar select, .filterbar input[type=text] {
  border: 1px solid #d2d2d7; border-radius: 10px; background: #fff; color: var(--gd-ink);
}
.form-group input:focus, .form-group select:focus, .form-group textarea:focus,
.filterbar select:focus, .filterbar input[type=text]:focus {
  outline: none; border-color: var(--gd-blue); box-shadow: 0 0 0 4px rgba(0,113,227,.18);
}
.form-group label { font-weight: 600; color: #424245; }
.form-group .hint { color: #86868b; }

/* 表 */
.table-wrap { border-radius: 12px; }
.table-wrap thead th { text-transform: none; letter-spacing: .02em; font-size: .78rem; font-weight: 600;
  color: var(--gd-sub); background: #fafafa; border-bottom: 1px solid var(--gd-line); }
.table-wrap tbody td { border-bottom: 1px solid rgba(0,0,0,.05); }
.table-wrap tbody tr:hover td { background: #fafafa; }
table.atable thead th { color: var(--gd-sub); font-weight: 600; background: #fafafa; border-bottom: 1px solid var(--gd-line); }

/* 確認の画面（モーダル）：背景をぼかし、角を大きく */
.modal-bg { background: rgba(0,0,0,.32); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.modal-bg > .modal-box { border-radius: 20px; padding: 2rem 2rem 1.6rem; box-shadow: 0 24px 60px rgba(0,0,0,.22); }
.modal-bg > .modal-box h2 { font-size: 1.3rem; font-weight: 700; letter-spacing: -.01em; color: var(--gd-ink); }

/* タブ（ダッシュボード） */
.dash-tab { border-radius: 999px; border-bottom: none; margin-bottom: .4rem; }
.dash-tabs { border-bottom: none; gap: .35rem; }
.dash-tab.active { background: var(--gd-ink); color: #fff; font-weight: 600; }
.dash-tab:hover:not(.active) { background: rgba(0,0,0,.05); }

/* お知らせ（右下に出る短い表示） */
.toast-item { border-radius: 14px; padding: .8rem 1.1rem; font-weight: 500;
  -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px); box-shadow: 0 10px 30px rgba(0,0,0,.18); }
.toast-item.ok { background: rgba(29,29,31,.9); }
.toast-item.err { background: rgba(215,0,21,.92); }

/* バッジ */
.badge-soft { font-weight: 600; }

/* ヘルプのボタン */
.gd-help-peek { border-color: var(--gd-line); color: var(--gd-ink);
  background: rgba(255,255,255,.85); -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px); }
.gd-help-peek .ti { color: var(--gd-blue); }
.gd-help-panel { border-left: 1px solid var(--gd-line); }
.page-title + .text-muted-sm, .page-title + div.text-muted-sm { margin-top: .4rem; }
/* 上のメニュー：横にはみ出さないこと（はみ出すと画面の下に横スクロールバーが出る）。
   学校グループに入っている学校はメニューが2つ増えるので、幅が足りないときはアイコンを消し、
   それでも足りなければ2段に折り返す。 */
.topnav-inner { max-width: 1440px; flex-wrap: wrap; }
.topnav-links { flex: 1 1 auto; min-width: 0; flex-wrap: wrap; }
.topnav-user { flex: 0 0 auto; }
.app-topnav .nav-link { padding: .42rem .55rem; font-size: .84rem; }
.app-topnav .brand { margin-right: .5rem; }
@media (max-width: 1760px) { .app-topnav .nav-link .ti { display: none; } .app-topnav .nav-divider { margin: 0 .2rem; } }
.page-header select { border: 1px solid #d2d2d7; border-radius: 10px; padding: .45rem .7rem; background: #fff; color: var(--gd-ink); }
