/*
 * 画面（操作領域）のスタイル：ヘッダー・ページ一覧・編集フォーム・ダイアログ。
 * 帳票（.a4 など）のスタイルは report.css に分離している。ここから帳票のクラスは触らない。
 *
 * 目次：1. 色・余白の基準  2. 印刷  3. 共通部品  4. 画面全体  5. ヘッダー  6. ページ一覧
 *       7. 編集エリア  8. プレビュー  9. ダイアログ・処理中  10. 中幅/狭幅  11. PDF生成時
 */

/* ---- 1. 色・余白の基準 ---- */
:root{
  --bg:#eef1f4;--surface:#fff;--line:#c8d0da;--line-soft:#e1e6ec;--field-line:#8c99ab;
  --text:#1c2733;--muted:#586577;
  --primary:#0b5cad;--primary-dark:#084a8c;--primary-soft:#e6f0fa;
  --danger:#a8261d;--danger-soft:#fdeceb;--ok:#0f6b3a;--warn:#8a4b00;--warn-soft:#fff4e0;
  --focus:#1366d6;--radius:6px;
}
body{background:var(--bg)}
.viewbar{display:none}
.skip-link{position:absolute;left:8px;top:-80px;z-index:100;background:#fff;color:var(--text);padding:8px 14px;border:2px solid var(--focus);border-radius:var(--radius)}
.skip-link:focus{top:8px}

/* ---- 2. 印刷（ブラウザの印刷：プレビューだけを出す） ---- */
@media print{
  header,aside,main,.viewbar,.preview-head,.skip-link{display:none!important}
  .layout{display:block}
  .preview{display:block;padding:0}
}

@media screen{
/* ---- 3. 共通部品 ---- */
.ui{font-size:15px;line-height:1.5}
.ui button{font:inherit;min-height:36px;padding:6px 14px;border:1px solid var(--field-line);border-radius:var(--radius);background:var(--surface);color:var(--text);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.ui button:hover:not(:disabled){background:var(--primary-soft);border-color:var(--primary)}
.ui button:disabled{color:#7b8696;background:#f1f3f5;border-color:var(--line);cursor:not-allowed}
.ui button.primary{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:700}
.ui button.primary:hover:not(:disabled){background:var(--primary-dark);border-color:var(--primary-dark)}
.ui button.danger{color:var(--danger);border-color:#d3918b}
.ui button.danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger)}
.ui :focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.ui .hint{color:var(--muted);font-size:13px;margin:4px 0 12px}
.ui .pill{display:inline-block;font-size:12px;padding:2px 10px;border-radius:999px;background:#fff;border:1px solid var(--line);color:var(--text)}
.ui .field{display:flex;flex-direction:column;gap:4px}
.ui .field>span{font-weight:700;font-size:14px}
.ui .field :is(input,textarea,select){display:block;width:100%;margin:0;padding:8px 10px;min-height:38px;border:1px solid var(--field-line);border-radius:var(--radius);background:#fff;color:var(--text);font:inherit}
.ui .field textarea{min-height:140px;line-height:1.6;resize:vertical}
.ui .field :is(input,textarea,select):disabled{background:#eceff2;color:#7b8696;border-color:var(--line);cursor:not-allowed}

/* ---- 4. 画面全体 ---- */
body{height:100vh;display:flex;flex-direction:column;overflow:hidden}
.layout{flex:1;min-height:0;display:grid;grid-template-columns:300px minmax(0,1fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr)}

/* ---- 5. ヘッダー ---- */
.app-header{flex:none;display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;min-height:56px;padding:8px 16px;background:var(--surface);color:var(--text);border-bottom:1px solid var(--line)}
.app-header .brand{margin-right:auto;font-size:17px}
.app-header .hgroup{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:4px 6px;background:#f3f5f8;border-radius:8px}
#state{font-size:13px;font-weight:700;padding:3px 10px;border-radius:999px;border:1px solid transparent}
#state:empty{display:none}
#state[data-status="dirty"]{background:var(--warn-soft);border-color:#d99a3a;color:var(--warn)}
#state[data-status="dirty"]::before{content:"● "}
#state[data-status="saved"]{background:#e5f5ec;border-color:#6dbb91;color:var(--ok)}
#state[data-status="saved"]::before{content:"✓ "}

/* ---- 6. ページ一覧 ---- */
.page-list{padding:0;overflow:auto;min-width:0;background:var(--surface);border-right:1px solid var(--line)}
.page-list .side-head{position:sticky;top:0;z-index:2;padding:12px;background:var(--surface);border-bottom:1px solid var(--line-soft)}
.page-list .side-title{font-weight:700;margin-bottom:8px}
.page-list .sideBtns{display:flex;gap:6px}
.page-list .sideBtns button{padding:6px 12px}
.page-list #remove{margin-left:auto}
#pages{position:relative;padding:4px 12px 16px}
.page-list .chapter-label{margin:14px 0 4px;padding-bottom:3px;border-bottom:1px solid var(--line-soft);font-size:12px;font-weight:700;color:var(--muted)}
.page-list .chapter-label:first-child{margin-top:6px}
.page-list .page{display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:0 2px;margin:5px 0;padding:2px 6px 2px 2px;background:var(--surface);border:1px solid var(--line);border-width:1px 1px 1px 4px;border-radius:var(--radius)}
.page-list .page.active{border-color:var(--primary);background:var(--primary-soft)}
.page-list .page.excluded{border-style:dashed dashed dashed solid;background:#f6f7f9}
.page-list .page.excluded.active{background:var(--primary-soft)}
.page-list .page.excluded .page-select b{color:var(--muted)}
.page-list .page.dragging{opacity:.45}
.page-list .drag-handle{align-self:stretch;display:flex;align-items:center;justify-content:center;border-radius:4px;color:var(--muted);font-size:18px;line-height:1;cursor:grab;user-select:none;touch-action:none}
.page-list .drag-handle:hover{background:rgba(11,92,173,.1);color:var(--primary)}
#pages.is-dragging{cursor:grabbing;user-select:none}
.page-list .drop-line{position:absolute;left:12px;right:12px;height:3px;border-radius:2px;background:var(--primary);pointer-events:none}
.page-list .page-select{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:0;width:100%;min-height:44px;padding:4px 6px;border:0;background:transparent;text-align:left;font-weight:400}
.page-list .page-select:hover:not(:disabled){background:rgba(11,92,173,.08);border-color:transparent}
.page-list .page-select small{display:flex;flex-wrap:wrap;align-items:center;gap:6px;color:var(--muted);font-size:12px}
.page-list .page-select b{overflow-wrap:anywhere;font-size:15px;line-height:1.35;text-align:left}
.page-list .badge{padding:0 8px;border-radius:999px;background:var(--primary);color:#fff;font-size:11px;font-weight:700;line-height:18px}
.page-list .badge.off{background:#fff;color:var(--muted);border:1px solid var(--muted);line-height:16px}

/* ---- 7. 編集エリア ---- */
main.editor{padding:16px 20px 20px;overflow:auto;min-width:0}
.editor .steps{margin-bottom:12px;padding:10px 14px;background:var(--primary-soft);border:1px solid #9dc1e6;border-radius:8px}
.editor .steps p{margin:0}
.editor .steps .manual-note{margin-top:4px;font-size:13px}
.editor .editor-panel{padding:20px 20px 0;background:var(--surface);border:1px solid var(--line);border-radius:8px}
.editor .editor-head h2{margin:0;font-size:20px;line-height:1.35;overflow-wrap:anywhere}
.editor .editor-head .hint{margin:4px 0 16px}
.editor .include-bar{margin-bottom:16px;padding:10px 14px;background:#f6f8fa;border:1px solid var(--line);border-radius:8px}
.editor .include-bar .hint{margin:4px 0 0 30px}
.editor .include-toggle{display:flex;align-items:center;gap:10px;font-weight:700;cursor:pointer}
.editor .include-toggle input{flex:none;width:20px;height:20px;margin:0;cursor:pointer}
.editor .is-excluded .include-bar{background:var(--warn-soft);border-color:#d99a3a}
.editor .form-body{min-width:0;margin:0;padding:0;border:0}
.editor .is-excluded .form-body{opacity:.55;filter:grayscale(1)}
.editor .pdfBtns{position:sticky;bottom:0;z-index:1;display:flex;flex-wrap:wrap;gap:8px;margin:20px -20px 0;padding:12px 20px;background:var(--surface);border-top:1px solid var(--line);border-radius:0 0 8px 8px}
.editor .pdfBtns button{border-color:var(--primary);color:var(--primary);font-weight:700}
.editor .pdfBtns button:disabled{border-color:var(--line);color:#7b8696}
.editor .pdfBtns button:hover:not(:disabled){background:var(--primary-soft)}
.editor .form-group{min-width:0;margin:0 0 16px;padding:14px 16px 16px;border:1px solid var(--line-soft);border-radius:8px}
.editor .form-group>legend{padding:0 8px;font-weight:700;color:var(--primary)}
.editor .form-group>.hint{margin-top:0}
.editor .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px 16px}
.editor .wide{grid-column:1/-1}
.editor .card{margin:0 0 12px;padding:12px 14px;background:#fafbfc;border:1px solid var(--line);border-radius:8px}
.editor .card .field+.field{margin-top:10px}
.editor .card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.editor .card-no{font-size:13px;font-weight:700;color:var(--muted)}
.editor .table-wrap{max-width:100%;margin-bottom:12px;overflow-x:auto;border:1px solid var(--line);border-radius:6px}
.edit-table{width:100%;min-width:660px;border-collapse:collapse;font-size:14px}
.edit-table th,.edit-table td{padding:6px 8px;border-bottom:1px solid var(--line-soft);text-align:left}
.edit-table th{background:#f1f4f7;font-weight:700;white-space:nowrap}
.edit-table th:first-child,.edit-table td:first-child{width:48px;text-align:center}
.edit-table td.empty{width:auto;padding:16px;color:var(--muted);text-align:center}
.edit-table td input{width:100%;min-width:140px;min-height:36px;padding:6px 8px;border:1px solid var(--field-line);border-radius:4px;font:inherit}
.edit-table td input:disabled{background:#eceff2;color:#7b8696;border-color:var(--line)}
.signature-editor{margin-top:12px}
.signature-note{margin:0 0 12px;font-size:13px;color:var(--muted)}
.signature-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-top:12px}
.signature-card{padding:12px;background:#fafbfc;border:1px solid var(--line);border-radius:8px}
.signature-card h4{margin:0 0 10px;font-size:14px}
.signature-card .field+.field{margin-top:8px}
.stamp-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px}
.stamp-preview{width:54px;height:54px;object-fit:contain;border:1px dashed #aaa;background:#fff}
.stamp-none{color:var(--muted);font-size:13px}

/* ---- 8. プレビュー（外側の枠だけ。帳票本体には触れない） ---- */
.preview{min-width:0;padding:0 16px 16px;overflow:auto;background:#d9dfe6;border-left:1px solid var(--line)}
.preview-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:12px 0 10px;background:#d9dfe6}
.preview-head b{font-size:15px}
.preview-empty{width:210mm;min-height:80mm;margin:0 auto;padding:24mm;background:#fff;border:1px dashed #9aa9ba;text-align:center;color:#66758a}

/* ---- 9. ダイアログ・処理中 ---- */
dialog.ui{width:min(520px,calc(100vw - 32px));padding:0;border:1px solid var(--line);border-radius:10px;color:var(--text);box-shadow:0 12px 40px rgba(0,0,0,.28)}
dialog.ui::backdrop{background:rgba(16,33,58,.45)}
dialog.ui .dlg-body{padding:20px 24px 8px}
dialog.ui h2{margin:0 0 8px;font-size:18px}
dialog.ui .dlg-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px;padding:14px 24px;background:#f6f7f9;border-top:1px solid var(--line-soft);border-radius:0 0 10px 10px}
#busy{position:fixed;inset:0;z-index:30;display:grid;place-items:center;background:#0008}
#busy:focus{outline:0}
#busy>div{display:grid;gap:10px;width:min(380px,calc(100vw - 32px));padding:24px;background:#fff;border-radius:8px;color:var(--text)}
#busy b{font-size:17px}
#busy progress{width:100%;height:14px}
#busy #busyText{font-size:13px;color:var(--muted);overflow-wrap:anywhere}
#busy small{color:var(--muted)}

/* ---- 10. 中幅（1200px以下：編集/プレビュー切替）・狭幅（800px以下：ページ全体を縦スクロール） ---- */
@media (max-width:1200px){
  .viewbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;flex:none;position:sticky;top:0;z-index:5;padding:8px 16px;background:var(--surface);border-bottom:1px solid var(--line)}
  .viewbar #toggleList{display:none;max-width:100%;overflow:hidden}
  .viewbar #toggleList span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .viewbar .seg{display:inline-flex}
  .viewbar .seg button{border-radius:0}
  .viewbar .seg button:first-child{border-radius:var(--radius) 0 0 var(--radius)}
  .viewbar .seg button:last-child{margin-left:-1px;border-radius:0 var(--radius) var(--radius) 0}
  .viewbar .seg button[aria-pressed="true"]{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:700}
  .viewbar .seg button[aria-pressed="true"]::before{content:"✓"}
  .viewbar .seg button[aria-pressed="true"]:hover:not(:disabled){background:var(--primary-dark);border-color:var(--primary-dark)}
  .layout{grid-template-columns:260px minmax(0,1fr)}
  .layout[data-view="edit"] .preview{display:none}
  .layout[data-view="preview"] main{display:none}
  .layout[data-view="preview"] .preview{display:block}
}
@media (max-width:800px){
  body{display:block;height:auto;overflow:visible}
  .layout{display:block}
  .app-header{padding:8px 12px}
  .app-header .brand{flex:1 0 100%}
  .viewbar{padding:8px 12px}
  .viewbar #toggleList{display:inline-flex}
  .layout[data-list="closed"] aside{display:none}
  .page-list{max-height:55vh;border-right:0;border-bottom:1px solid var(--line)}
  main.editor{padding:12px;overflow:visible}
  .editor .editor-panel{padding:16px 14px 0}
  .editor .pdfBtns{margin:16px -14px 0;padding:10px 14px}
  .preview{padding:0 12px 16px;border-left:0}
  .preview-head{position:static;padding:12px 0 8px}
  dialog.ui .dlg-body{padding:16px 16px 8px}
  dialog.ui .dlg-actions{padding:12px 16px}
}

/* ---- 11. PDF生成時：プレビューが非表示の画面でも、画面外で描画して出力する（処理中表示の下。終了後は元に戻る） ---- */
body.pdf-capture .layout .preview{display:block!important;position:absolute;left:-10000px;top:0;z-index:-1;width:900px;height:auto;overflow:visible}
}
