/* ============================================================================
   丸仙DX 共通スタイル

   ・デザイントークンは モック index.html（統合シェル）の値をそのまま使う
   ・UI実装ガイドライン（実装設計書 v1.3 §4）をCSS設計として最初から組み込む
       #1 画面表示は 14px 未満を使わない／本文基準 16px（帳票印刷のみ例外）
       #2 PC画面はコンテンツ幅100%・左寄せ（中央寄せは用いない）
       #3 タブレット画面は上限 900px・左寄せ
       #4 数値・日付・短ラベル列は内容幅で固定／テキスト列が余剰幅を吸収
       #5 はみ出しは切り捨てず、表を収める枠単位で overflow-x:auto
       #6 タブレット対象画面では説明を title 属性に置かない → .help で常時表示
       #7 ナビ z-index<=40／モーダル・スライドインは常にナビより前面
       #8 モーダルはヘッダ・フッタ固定＋本文スクロール
   ・画面遷移は実URL遷移＋共通レイアウト（v1.3 §5。iframe統合シェルは廃止）
   ========================================================================= */

:root{
  --primary:#B85042; --primary-dk:#8B3A2E; --primary-lt:#E5A294;
  --accent:#A7BEAE; --highlight:#EF9F27; --positive:#639922; --info:#3B82B6;
  /* ★ 定義書 §2-3 セマンティックカラー（2026-09-10 C5）。--highlight と同値だが用途が違うので別に持つ */
  --warning:#EF9F27; --negative:#B85042;
  --text-dk:#2C2C2A; --text-md:#5F5E5A; --text-lt:#888780;
  --bg-app:#F4F2EA; --bg-card:#FFFFFF; --bg-cream:#FAF8F2; --border:#D3D1C7;
  --nav-bg:#2C2C2A; --nav-hover:#3A3A38; --nav-line:#4A4A48;
  --clay-wash:#F6E5E0; --amber-wash:#FBEFD6; --blue-wash:#E4EEF6; --ink-wash:#ECEBE6; --sage-wash:#E9EFEA;
  --danger:#B23B3B;
  --radius:10px;
  --shadow:0 1px 2px rgba(44,44,42,.05),0 4px 16px rgba(44,44,42,.06);
  --shadow-lg:0 12px 44px rgba(44,44,42,.18);
  --sans:"Noto Sans JP","Hiragino Sans","Yu Gothic",sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
}

*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{font-family:var(--sans);font-size:13px;line-height:1.6;color:var(--text-dk);background:var(--bg-app);-webkit-font-smoothing:antialiased}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}
.mono{font-family:var(--mono)}
.muted{color:var(--text-md)}
/* ★ 14px を下限とする（v1.3 §4 #1） */
small,.small{font-size:12px}

/* ---- レイアウト ------------------------------------------------------- */
.shell{display:flex;min-height:100dvh}

.sidenav{width:230px;min-width:230px;height:100dvh;position:sticky;top:0;background:var(--nav-bg);color:#E8E6E0;
  display:flex;flex-direction:column;overflow-y:auto;box-shadow:2px 0 8px rgba(0,0,0,.12);z-index:40} /* ★ #7 */
.nav-brand{padding:18px 20px 14px;border-bottom:1px solid var(--nav-line)}
.nav-brand .logo{font-size:17px;font-weight:700;color:#fff;letter-spacing:.02em}
.nav-brand .logo .accent{color:var(--highlight)}
.nav-brand .sub{font-size:12px;color:#9A9890;margin-top:3px}
.nav-section{padding:14px 0 6px}
.nav-section-title{font-size:12px;color:#7A7870;letter-spacing:.08em;padding:6px 20px;font-weight:600}
.nav-item{display:flex;align-items:center;gap:10px;padding:10px 20px;font-size:13px;color:#D8D6D0;
  border:none;background:none;width:100%;text-align:left;border-left:3px solid transparent;transition:background .12s,color .12s}
.nav-item:hover{background:var(--nav-hover);color:#fff;text-decoration:none}
.nav-item.active{background:var(--nav-hover);color:#fff;border-left-color:var(--highlight);font-weight:600}
.nav-item.child{padding-left:38px;font-size:12px}
.nav-item.pending{color:#7A7870;cursor:default}
.nav-item.pending:hover{background:none;color:#7A7870}
.nav-item .ico{width:18px;text-align:center;font-size:14px;opacity:.95;flex:none}
.nav-item .lbl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* ★ 「準備中」は折り返させない。長いラベルと並ぶと 準備/中 に割れて読めなくなる */
.nav-item .tagsoon{flex:none;margin-left:8px;font-size:12px;color:#6A6860;white-space:nowrap}
.nav-item.pending .lbl{color:#8A887F}
.nav-divider{height:1px;background:var(--nav-line);margin:8px 16px}
.nav-foot-area{margin-top:auto}
.nav-foot{padding:12px 20px 16px;font-size:12px;color:#6A6860;line-height:1.7}
.nav-user{display:flex;align-items:center;gap:9px;padding:10px 12px;border-radius:8px;background:#242422;
  margin:10px 14px 8px;border:1px solid var(--nav-line)}
.nav-logout{margin:0 14px}
.nav-logout button{width:100%;min-height:38px;padding:8px 12px;font-size:12px;font-family:inherit;font-weight:600;
  border-radius:8px;border:1px solid var(--nav-line);background:rgba(255,255,255,.05);color:#D8D6D0;cursor:pointer}
.nav-logout button:hover{background:var(--nav-hover);color:#fff}
.nav-user .avatar{width:30px;height:30px;border-radius:7px;display:grid;place-items:center;font-weight:700;font-size:13px;color:#fff;flex:none}
.nav-user .nm{font-size:13px;font-weight:700;color:#fff;line-height:1.2}
.nav-user .rl{font-size:12px;color:#9A9890}

.main{flex:1;min-width:0;display:flex;flex-direction:column}
.crumb{min-height:42px;background:var(--bg-card);border-bottom:1px solid var(--border);
  display:flex;align-items:center;padding:0 16px;font-size:13px;color:var(--text-md);gap:8px}
.crumb .spacer{flex:1}
.crumb form{margin:0}
/* ★ #2 コンテンツ幅100%・左寄せ（中央寄せしない） */
.content{padding:22px 24px 60px;width:100%}
/* ★ #3 タブレット対象画面は上限900px・左寄せ */
.content.tablet{max-width:900px}

/* ---- パーツ ------------------------------------------------------------ */
.section-intro{margin:0 0 16px}
.section-intro h2{font-size:19px;margin:0 0 2px}
.section-intro p{font-size:13px;color:var(--text-md)}

.panel{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin:0 0 18px}
.panel__head{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;
  gap:12px;background:var(--bg-cream);border-radius:var(--radius) var(--radius) 0 0}
.panel__head h3{font-size:14px;margin:0}
.panel__body{padding:18px}

/* タップターゲット 44px 以上（定義書6章・タブレット） */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:10px 20px;font-size:13px;
  font-family:inherit;font-weight:600;border-radius:8px;border:1px solid var(--primary);background:var(--primary);color:#fff;cursor:pointer}
.btn:hover{background:var(--primary-dk);border-color:var(--primary-dk);text-decoration:none;color:#fff}
.btn:disabled{opacity:.45;cursor:not-allowed}
/* ★★ .btn-ghost / .btn-sm（単ハイフン）は M-06〜M-11 系モックの呼び名。
   app.css は .btn--ghost / .btn--sm で取り込んだため、単ハイフンで書かれた9画面の
   「キャンセル」「前月」等が**未定義＝主ボタンの赤のまま**出ていた（2026-08-31 総点検）。
   どちらの呼び名でも同じ見た目になるよう、別名として同じ規則に束ねる */
.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}
.btn--ghost,.btn-ghost{background:#fff;color:var(--text-dk);border-color:var(--border)}
.btn--ghost:hover,.btn-ghost:hover{background:var(--bg-cream);color:var(--text-dk);border-color:var(--text-md)}
.btn--quiet{background:none;border-color:transparent;color:var(--text-md)}
.btn--quiet:hover{background:var(--ink-wash);color:var(--text-dk)}
.btn--danger{background:#fff;color:var(--danger);border-color:var(--danger)}
.btn--danger:hover{background:var(--danger);color:#fff}
.btn--sm,.btn-sm{min-height:36px;padding:6px 14px;font-size:12px}

.field{margin:0 0 16px}
.field label{display:block;font-size:12px;color:var(--text-md);margin:0 0 4px;font-weight:600}
/* ★ チェックボックスを含むラベルは見出しではない（太字にしない・チェックと文字を揃える） */
.field label.cb-line{display:flex;align-items:center;gap:6px;font-weight:400}
.field input[type=text],.field input[type=password],.field input[type=email],.field input[type=number],.field select,.field textarea{
  width:100%;font-family:inherit;font-size:13px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text-dk)}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--clay-wash)}
.field.inline{display:flex;align-items:center;gap:8px}
.field.inline input{width:auto}
.field-row{display:flex;gap:16px;flex-wrap:wrap}
.field-row .field{flex:1;min-width:200px}

.seg{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#fff}
.seg button{min-height:44px;padding:10px 18px;font-size:13px;font-family:inherit;border:none;background:#fff;color:var(--text-md);cursor:pointer}
.seg button+button{border-left:1px solid var(--border)}
.seg button[aria-selected=true]{background:var(--primary);color:#fff;font-weight:700}

/* ★ #5 表を収める枠単位で横スクロール（切り捨てない） */
.table-frame{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{text-align:left;font-size:12px;font-weight:700;color:var(--text-md);padding:10px 14px;
  border-bottom:1px solid var(--border);white-space:nowrap;background:var(--bg-cream)}
.tbl td{padding:11px 14px;border-bottom:1px solid var(--border);vertical-align:middle}
.tbl tbody tr:hover td{background:var(--bg-cream)}
/* ★ #4 数値・日付・短ラベル列は内容幅で固定。テキスト列が余剰を吸収 */
.tbl th.tight,.tbl td.tight{width:1%;white-space:nowrap}
.tbl th.grow,.tbl td.grow{min-width:6.5em}
.cell-actions{white-space:nowrap;text-align:right}
.cell-actions .btn{margin-left:6px}

.badge{display:inline-block;font-size:12px;font-weight:700;border-radius:999px;padding:3px 11px}
.badge--admin{background:var(--ink-wash);color:var(--text-dk)}
.badge--sales{background:var(--clay-wash);color:var(--primary-dk)}
.badge--factory{background:var(--amber-wash);color:#9a6512}
.badge--accounting{background:var(--blue-wash);color:#2f6a93}

.st{display:inline-block;font-size:12px;font-weight:700;border-radius:6px;padding:3px 10px;background:var(--ink-wash);color:var(--text-md)}
.st--on{background:var(--sage-wash);color:#4d7a57}
.st--off{background:#EDEBE3;color:var(--text-md)}

.avatar{display:grid;place-items:center;border-radius:7px;color:#fff;font-weight:700;flex:none}
/* ★ 顔写真（アイコン）。未設定なら .avatar の頭文字が出る（2026-09-05） */
.avatar-img{object-fit:cover;padding:0;border:1px solid rgba(255,255,255,.25)}
.nav-avatar-form{padding:0 20px 6px}
.nav-avatar-pick{display:inline-block;font-size:11px;color:#B8B5AE;background:none;border:0;padding:0;cursor:pointer;text-decoration:underline}
.nav-avatar-pick:hover{color:#fff}
.nav-avatar-pick input[type=file]{display:none}


.note{border-radius:8px;padding:11px 14px;font-size:13px;display:flex;gap:9px;line-height:1.6;margin:0 0 16px;
  background:var(--sage-wash);border:1px solid #cfddd3;color:#456b50}
.note--amber{background:var(--amber-wash);border-color:#ecd8bd;color:#8a5418}
.note--danger{background:#FBE9E9;border-color:#e9c6c6;color:#8f2e2e}

/* ★ #6 説明は title 属性に置かない。常時1行で見せる */
.help{font-size:12px;color:var(--text-md);margin:8px 0 0;border-left:3px solid var(--border);padding-left:10px;line-height:1.7}

.errors{border:1px solid var(--danger);background:#FBE9E9;color:#8f2e2e;border-radius:8px;padding:12px 16px;margin:0 0 16px;font-size:12px}
.errors ul{margin:0;padding-left:20px}
.flash{border:1px solid #7fae5c;background:var(--sage-wash);color:#3f6b34;border-radius:8px;padding:12px 16px;margin:0 0 16px;font-size:12px}
/* ★ お知らせに添える行き先（起票した管理表など）。一覧に埋もれて辿り着けないのを防ぐ */
.flash .flash-link{margin-left:10px;font-weight:700;color:#2f5c26;text-decoration:underline}
.flash .flash-link:hover{opacity:.8}

.empty{padding:40px 18px;text-align:center;color:var(--text-md);font-size:13px}

/* ★ #7 モーダルは常にナビより前面／#8 ヘッダ・フッタ固定＋本文スクロール */
.scrim{position:fixed;inset:0;background:rgba(44,44,42,.45);display:flex;align-items:center;justify-content:center;padding:20px;z-index:100}
.modal{background:var(--bg-card);border-radius:var(--radius);box-shadow:var(--shadow-lg);width:100%;max-width:560px;
  max-height:calc(100dvh - 40px);display:flex;flex-direction:column}
.modal__head{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;
  background:var(--bg-cream);border-radius:var(--radius) var(--radius) 0 0;flex:none}
.modal__head h3{font-size:14px;margin:0}
.modal__body{padding:20px;overflow-y:auto}
.modal__foot{padding:14px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px;flex:none;background:var(--bg-cream);
  border-radius:0 0 var(--radius) var(--radius)}

[x-cloak]{display:none !important}

@media (max-width:820px){
  /* ★ 狭い画面のサイドバーは**ドロワー**（本文の上に出す）。作法は §「サイドバーの2つの姿」を見ること */
  .sidenav{position:fixed;left:0;top:0;transform:translateX(-100%)}
  .shell.nav-open .sidenav{transform:none}
  .shell.nav-open .nav-backdrop{display:block}
  .content{padding:18px 16px 60px}
}

/* ============================================================================
   モック準拠コンポーネント（2026-08-20 追加）

   ★ 40_r3_* 系モックの CSS をクラス名ごと取り込んだもの。
     画面完了条件「モックを見てきた丸仙が『同じ画面』と認識できる水準」を満たすため、
     新しい見た目を作らず、モックの語彙をそのまま使う。
   ★ 幅は _shell.js の widenLayout（1400px以上で max-width を外して左寄せ）を
     CSS 設計として最初から適用する（v1.3 §4 #2）。モック側の .wrap の
     max-width:1240px + margin:0 auto は実行時に外されているため踏襲しない。
   ========================================================================= */

:root{
  --primary-dk2:#8B3A2E;   /* モック 40_r3_* 系の --primary-dk（--primary-dk と同値になった） */
  --blue:#3B82B6; --green:#639922; --amber:#EF9F27; --gray:#9A988F;
  --accent-dk:#6B8674;
  --hairline:#ece9e2;
}

/* ---- ページ見出しバー ---------------------------------------------------- */
.topbar{background:var(--bg-card);border-bottom:1px solid var(--border);padding:12px 20px;
  display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.topbar h1{font-size:19px;color:var(--primary-dk2);margin:0}
.topbar .sub{font-size:12px;color:var(--text-lt)}
.topbar .spacer{flex:1}
.topbar form{margin:0}

/* ---- 説明バー（青＝この画面の役割／緑＝DB投入データ）--------------------- */
.aim-note{background:rgba(59,130,182,.07);border:1px solid rgba(59,130,182,.3);border-left:4px solid var(--blue);
  border-radius:8px;padding:11px 14px;margin-bottom:12px;font-size:13px;color:#255a7a;line-height:1.7}
.aim-note strong{color:#1d4d6b}
.aim-note .flow{display:inline-block;background:rgba(59,130,182,.12);border-radius:5px;padding:2px 8px;
  margin-top:4px;font-size:12px;color:#1d4d6b}
.aim-note .arw{color:var(--blue);font-weight:700;margin:0 4px}

.db-note{background:rgba(99,153,34,.08);border:1px solid rgba(99,153,34,.35);border-left:4px solid var(--green);
  border-radius:8px;padding:10px 14px;margin-bottom:14px;font-size:13px;color:#3f6b16}
.db-note strong{color:#3f6b16}
.db-note code{font-family:var(--mono);background:rgba(99,153,34,.12);padding:1px 6px;border-radius:4px;color:#2f5410}

/* ---- カテゴリタブ -------------------------------------------------------- */
.cat-tabs{display:flex;align-items:stretch;gap:0;margin-bottom:12px;border-bottom:2px solid var(--border);
  position:relative;flex-wrap:wrap}
.cat-tab{padding:6px 15px;font-size:13px;font-family:inherit;cursor:pointer;background:var(--bg-cream);
  border:1px solid var(--border);border-bottom:none;border-radius:5px 5px 0 0;color:var(--text-md);
  position:relative;margin-right:2px;white-space:nowrap;display:flex;align-items:center;text-decoration:none;
  transition:background .15s,color .15s}
.cat-tab:hover{background:var(--bg-card);color:var(--text-dk);text-decoration:none}
.cat-tab.active{background:var(--bg-card);color:var(--primary-dk2);font-weight:700;margin-bottom:-2px;
  padding-bottom:8px;border-bottom:2px solid var(--bg-card);border-top:2px solid var(--primary)}
.cat-tab .tab-name{font-weight:600}
.cat-tab.active .tab-name{font-weight:700}
.cat-tab .tab-cnt{font-size:12px;color:var(--text-lt);margin-left:6px;font-family:var(--mono)}
.cat-tab-add{padding:6px 11px;font-size:13px;color:var(--text-lt);background:transparent;
  border:1px dashed var(--border);border-bottom:none;border-radius:5px 5px 0 0;margin-right:2px}

/* ---- ツールバー ---------------------------------------------------------- */
.searchrow{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.search-box{flex:1;min-width:240px;max-width:380px;position:relative;margin:0}
.search-box input{width:100%;font-family:inherit;font-size:13px;padding:9px 12px;border:1px solid var(--border);
  border-radius:8px;background:var(--bg-card)}
.search-box input:focus{outline:none;border-color:var(--primary-lt);box-shadow:0 0 0 2px rgba(184,80,66,.12)}
.searchrow .spacer{flex:1}

.count{font-size:12px;color:var(--text-lt);margin-bottom:8px}
.count .cat-lbl{color:var(--primary-dk2);font-weight:700}

/* ---- 一覧テーブル -------------------------------------------------------- */
.list-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden;margin:0 0 18px}

/* ---- ページ送り（意匠の正は モック S-01 の .pagination） ------------------
   ★ 既定の Tailwind ビューをやめて自前ビューにした（resources/views/pagination/jyuzan）。
     既定のままだと矢印が生の SVG で画面幅いっぱいに出て、件数も英語で出る。 */
.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  padding:12px 18px;border-top:1px solid var(--hairline);font-size:13px;color:var(--text-lt)}
.pagination__count{font-variant-numeric:tabular-nums}
.pagination .page-buttons{display:flex;gap:4px;flex-wrap:wrap}
.pagination .page-btn{display:inline-flex;align-items:center;justify-content:center;min-width:34px;
  padding:4px 10px;border:1px solid var(--border);border-radius:4px;background:#fff;
  font-size:12px;font-family:inherit;color:var(--text-md);text-decoration:none;transition:all .15s}
a.page-btn:hover{background:var(--bg-cream);text-decoration:none;color:var(--text-dk)}
.pagination .page-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}
/* ★ 押せないもの（先頭での「前へ」など）は押せる見た目にしない */
.pagination .page-btn.is-disabled{opacity:.4}
.pagination .page-btn.is-gap{border-color:transparent;background:transparent}
/* 表示件数（50/100/200）。ページ送りの中に置く＝一覧の外に新しい場所を作らない */
.per-page{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.per-page__label{font-size:11px;color:var(--text-lt);margin-right:2px}
.per-page .page-btn{min-width:40px}
table.list{width:100%;border-collapse:collapse}
table.list th{font-size:12px;color:var(--text-lt);text-align:left;font-weight:700;padding:10px 12px;
  border-bottom:1.5px solid var(--border);background:var(--bg-cream);white-space:nowrap}
table.list td{font-size:13px;padding:11px 12px;border-bottom:1px solid var(--hairline);vertical-align:middle}
table.list tr:last-child td{border-bottom:none}
/* ★★ 行全体を押せるようにする（モック .list-table tbody tr の cursor:pointer が正）。
   一部のセルにだけ <a> を置くと、文字の上でしか指の形にならない。 */
/* ★ 目印は表のクラスではなく data-row-href。原価計算一覧のように
   別のクラスを持つ表でも同じ挙動になる */
tr[data-row-href]{cursor:pointer}
table.list tbody tr:hover{background:var(--bg-cream)}
/* ★ 行の中のリンクは行の色を継ぐ（行全体が押せるので、リンクだけ目立たせない） */
tr[data-row-href] a.row-link{color:inherit}
table.list th.r,table.list td.r{text-align:right}
.val-name{font-weight:700;color:var(--primary-dk2)}
.id-col{font-family:var(--mono);color:var(--text-lt);font-size:12px}
.ord-col{font-family:var(--mono);text-align:center;color:var(--blue);font-weight:700;width:64px}
.memo-cell{color:var(--text-md);font-size:12px}
.memo-cell.empty{color:#c7c5bd}
.date-cell{white-space:nowrap;font-family:var(--mono);font-size:12px;color:var(--text-dk)}
.num{font-variant-numeric:tabular-nums}

/* 行アクション（既定は淡く、行ホバーで出現＝モックの3段階ホバー） */
.ops{display:flex;gap:4px;white-space:nowrap;justify-content:flex-end;align-items:center}
.ops form{margin:0}
.rowbtn{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;font-size:12px;font-weight:600;
  font-family:inherit;border:1px solid transparent;border-radius:5px;background:transparent;color:var(--text-md);
  cursor:pointer;opacity:.4;text-decoration:none;min-height:0;
  transition:opacity .15s,border-color .15s,background .15s,box-shadow .15s}
tr:hover .rowbtn{opacity:1}
.rowbtn:hover{border-color:var(--border);background:var(--bg-cream);box-shadow:0 1px 3px rgba(0,0,0,.08);
  text-decoration:none;color:var(--text-md)}
.rowbtn.del{color:var(--primary)}
.rowbtn.del:hover{color:var(--primary)}
.rowbtn:disabled{opacity:.15;cursor:not-allowed}
.rowbtn:disabled:hover{border-color:transparent;background:transparent;box-shadow:none}

.empty-state{text-align:center;color:var(--text-lt);font-size:13px;padding:30px}

/* ---- A-01 配合管理 ------------------------------------------------------- */
.soil-meta{display:flex;gap:16px;align-items:center;margin-bottom:12px;flex-wrap:wrap}
.soil-meta-item{font-size:12px;color:var(--text-lt)}
.soil-meta-item strong{color:var(--text-md);font-weight:600}
.soil-meta-label{font-size:12px;color:var(--text-lt);margin-right:4px}

.summary-card{display:flex;gap:20px;margin-bottom:16px;padding:12px 16px;background:var(--bg-card);
  border:1px solid var(--border);border-radius:6px;align-items:center;flex-wrap:wrap}
.summary-item{text-align:center}
.summary-label{font-size:12px;color:var(--text-lt);margin-bottom:2px}
.summary-value{font-size:17px;font-weight:700;color:var(--primary-dk2);font-variant-numeric:tabular-nums}
.summary-value .unit{font-size:12px;font-weight:400;color:var(--text-lt);margin-left:2px}
.summary-divider{width:1px;height:32px;background:var(--border)}
.summary-formula{font-size:12px;color:var(--text-lt);display:flex;align-items:center;gap:6px;margin-left:auto}
.summary-formula .arrow{color:var(--primary);font-weight:700}

.zero-cost-alert{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--highlight);
  font-weight:600;white-space:nowrap}
.zero-cost-alert .alert-icon{font-size:12px}

.ratio-bar-wrap{display:flex;align-items:center;gap:4px}
.ratio-bar{width:40px;height:6px;background:#eee;border-radius:3px;overflow:hidden}
.ratio-bar-fill{height:100%;background:var(--accent-dk);border-radius:3px}
.ratio-text{font-size:12px;color:var(--text-lt);min-width:32px;text-align:right}

.comp-table{width:100%;border-collapse:collapse;background:var(--bg-card);border:1px solid var(--border);
  border-radius:6px;overflow:hidden}
.comp-table thead th{background:var(--bg-cream);font-size:12px;font-weight:700;color:var(--text-lt);
  letter-spacing:.03em;padding:6px 10px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}
.comp-table thead th.r{text-align:right}
.comp-table tbody td{padding:6px 10px;border-bottom:1px solid #f0f0ec;font-size:12px;font-variant-numeric:tabular-nums}
.comp-table tbody td.r{text-align:right}
.comp-table tbody td.name{font-weight:600;color:var(--text-dk)}
.comp-table tbody td.u{font-size:12px;color:var(--text-lt)}
.comp-table tbody tr:hover{background:rgba(184,80,66,.04)}
.comp-table tfoot td{padding:6px 10px;font-weight:700;font-size:12px;border-top:2px solid var(--border);
  background:var(--bg-cream);font-variant-numeric:tabular-nums}
.comp-table tfoot td.r{text-align:right}

.version-badge{display:inline-flex;align-items:center;padding:1px 6px;border-radius:3px;font-size:12px;
  font-weight:700;background:rgba(59,130,182,.1);color:var(--info);border:1px solid rgba(59,130,182,.2);
  font-variant-numeric:tabular-nums}
.version-badge.current{background:rgba(99,153,34,.1);color:var(--positive);border-color:rgba(99,153,34,.2)}
.version-banner{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;
  background:rgba(59,130,182,.07);border:1px solid rgba(59,130,182,.18);border-radius:6px;margin-bottom:10px;
  flex-wrap:wrap;gap:8px}
.version-banner-text{font-size:12px;font-weight:600;color:var(--info);display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0;max-width:100%}
/* ★ G2：版の名前（Excel の見出し）が長いので、狭い画面では select を枠の幅に収める */
.version-banner-text form{max-width:100%;min-width:0}
.version-banner-text select{max-width:100%}
.version-banner-actions{display:flex;gap:6px;align-items:center}
.version-banner-actions form{margin:0}
.restore-note{font-size:12px;color:var(--text-lt);font-style:italic}

.btn-add-row{display:inline-flex;align-items:center;gap:4px;padding:6px 12px;border:1px dashed var(--border);
  border-radius:4px;background:transparent;color:var(--text-lt);font-size:12px;font-family:inherit;cursor:pointer;
  min-height:0;transition:all .15s}
.btn-add-row:hover{border-color:var(--primary-lt);color:var(--primary);background:rgba(184,80,66,.04)}

/* ---- S-01 ログイン（モック index.html の 2ペイン構成） ------------------- */
.login{min-height:100dvh;display:grid;grid-template-columns:1.05fr .95fr}
.login__brandpane{position:relative;background:var(--nav-bg);color:#E8E6E0;padding:56px;
  display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}
.login__grid{position:absolute;inset:0;opacity:.10;
  background-image:linear-gradient(#fff 1px,transparent 1px),linear-gradient(90deg,#fff 1px,transparent 1px);
  background-size:46px 46px;
  -webkit-mask-image:radial-gradient(120% 100% at 28% 0%,#000 28%,transparent 76%);
  mask-image:radial-gradient(120% 100% at 28% 0%,#000 28%,transparent 76%)}
.tilechip{position:absolute;border-radius:6px;opacity:.9}
.brand-eyebrow{font-size:12px;letter-spacing:.26em;color:var(--highlight);font-weight:700}
.brand-logo{font-size:28px;font-weight:700;letter-spacing:.02em;margin-top:14px;line-height:1.3;color:#fff}
.brand-logo .x{color:var(--highlight)}
.brand-sub{color:#A8A69E;font-size:14px;margin-top:16px;max-width:30ch}
.brand-foot{font-size:12px;color:#7A7870;position:relative;z-index:1;line-height:1.7}

.login__formpane{display:flex;align-items:center;justify-content:center;padding:40px 24px;background:var(--bg-app)}
.login-card{width:100%;max-width:420px}
.login-card__head{margin-bottom:22px}
.login-card__head h2{font-size:20px;font-weight:700;margin-top:12px}
.login-card__head p{color:var(--text-md);font-size:13px;margin-top:4px}

.modeswitch{display:grid;grid-template-columns:1fr 1fr;gap:5px;background:#E7E4DA;border-radius:10px;
  padding:5px;margin-bottom:24px}
.modeswitch a,.modeswitch button{border:none;background:transparent;border-radius:7px;padding:11px 8px;
  font-weight:700;font-size:13px;color:var(--text-md);display:flex;flex-direction:column;align-items:center;
  gap:3px;text-decoration:none;font-family:inherit;cursor:pointer;min-height:0}
.modeswitch a:hover{text-decoration:none;color:var(--text-md)}
.modeswitch .sub{font-size:12px;font-weight:500;color:var(--text-md);opacity:.85}
.modeswitch [aria-selected="true"]{background:#fff;color:var(--text-dk);box-shadow:var(--shadow)}

.login-card .field label{display:block;font-size:13px;font-weight:700;margin-bottom:7px;color:var(--text-dk)}
.login-card .field input{width:100%;border:1px solid var(--border);border-radius:8px;padding:12px 14px;
  font-size:17px;background:#fff}
.formerror{background:#fbf1f1;color:var(--danger);border:1px solid #ecd2d2;border-radius:8px;padding:10px 12px;
  font-size:13px;font-weight:500;margin-bottom:16px}
.login-card .btn{width:100%}

/* ---- 2段階認証の設定（ログインと同じ2ペインの中に置く） ------------------
   ★ QRコードとリカバリコード（2列×4）を載せるので、ログインカードより広く取る。
   ★ 幅いっぱいのボタンはログインの作法。ここでは主ボタンだけに効かせ、
     「印刷する」「作り直す」のような補助ボタンは元の大きさに戻す。 */
.login-card--wide{max-width:560px}
.login-card--wide .btn--sm{width:auto}
.login-card--wide .field--code input{max-width:240px}
/* ★★ .note は横並び（display:flex）。共通シェルの広い本文では成立するが、
   560px のカードに入れると説明文が細い柱になり、ボタンの文字が縦に割れる（実測）。
   ★ リカバリコードは「説明 → 一覧 → 操作」の順で読ませたいので、この画面では縦に積む。 */
.login-card--wide .note{display:block}
.login-card--wide .recovery-list{grid-template-columns:repeat(2,1fr);margin:10px 0}
.login-card--wide .recovery-actions{margin-top:10px}
.tfa-step{font-size:14px;margin:0 0 8px}
.tfa-step--2{margin-top:22px}
.tfa-qr{margin:10px 0}
.tfa-qr svg{max-width:100%;height:auto}
/* ★★ 確定後の「ダッシュボードへ進む」は**主ボタン**（ログイン画面の「ログイン」と同格）。
   リカバリコード枠の直下に置き、「印刷する」「作り直す」（副ボタン）より強く見せる。
   ★ a に .btn を当てるので下線を消す（リンクの既定が残ると押しにくく見える）。 */
.tfa-done-lead{margin:16px 0 8px;font-size:12px;color:var(--text-md)}
a.btn{text-decoration:none}
a.btn:hover{text-decoration:none}
.tfa-done-btn{margin-bottom:4px}
/* ★ サイドバーが無いので、ログアウトの出口をカードの下に置く */
.tfa-logout{margin-top:22px;text-align:center}
.tfa-logout button{background:none;border:0;padding:0;font-family:inherit;font-size:12px;
  color:var(--text-md);text-decoration:underline;cursor:pointer}
.tfa-logout button:hover{color:var(--primary)}

.pin-display{display:flex;justify-content:center;gap:14px;margin:8px 0 22px}
.pin-display .d{width:15px;height:15px;border-radius:50%;border:2px solid var(--border);transition:.14s}
.pin-display .d.on{background:var(--primary);border-color:var(--primary)}
.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:11px}
.keypad button{border:1px solid var(--border);background:#fff;border-radius:12px;font-family:var(--mono);
  font-size:24px;font-weight:600;color:var(--text-dk);aspect-ratio:1/1;display:flex;align-items:center;
  justify-content:center;box-shadow:var(--shadow);min-height:0;padding:0}
.keypad button:active{transform:translateY(1px);background:var(--clay-wash)}
.keypad button.util{font-size:14px;font-weight:700;color:var(--text-md);box-shadow:none;background:transparent;
  border-color:transparent}
.keypad button.enter{background:var(--primary);color:#fff;border-color:var(--primary);font-size:17px;font-weight:700}
.keypad button.enter:disabled{opacity:.45}

.demo-help{margin-top:22px;border:1px dashed var(--border);border-radius:10px;background:var(--bg-cream);
  padding:12px 14px;font-size:13px;color:var(--text-md)}
.demo-help b{color:var(--text-dk)}
.demo-help table{width:100%;border-collapse:collapse;margin-top:6px}
.demo-help td{padding:2px 0;vertical-align:top;border:none}
.demo-help td:first-child{color:var(--text-dk);font-weight:700;white-space:nowrap;padding-right:12px}

@media (max-width:900px){
  .login{grid-template-columns:1fr}
  .login__brandpane{padding:32px 24px;min-height:auto}
  .brand-logo{font-size:22px}
}

.btn .small{font-size:12px;font-weight:400;opacity:.8;margin-left:2px}
.btn:disabled{opacity:.45;cursor:not-allowed}

/* ============================================================================
   S-01 案件一覧（モック 20_sample_S01_case_list_v2.html 準拠）
   ========================================================================= */
.kpi-section{margin-bottom:16px}
.kpi-bar{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}
.kpi-bar.cols-4{grid-template-columns:repeat(4,1fr)}
.kpi-bar.cols-3{grid-template-columns:repeat(3,1fr)}
.kpi-row-label{font-size:12px;font-weight:700;color:var(--text-lt);letter-spacing:.5px;margin-bottom:6px}
.kpi-bar+.kpi-row-label{margin-top:8px}
.kpi-card{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:12px 14px;
  box-shadow:0 1px 3px rgba(0,0,0,.04);position:relative;display:block;text-decoration:none;color:inherit;
  transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease}
.kpi-card:hover{transform:translateY(-3px);box-shadow:0 6px 16px rgba(0,0,0,.1);text-decoration:none;color:inherit}
.kpi-card.kpi-selected{border-left:4px solid var(--primary);transform:translateY(-3px);box-shadow:0 6px 16px rgba(0,0,0,.1)}
.kpi-section.has-selection .kpi-card:not(.kpi-selected){opacity:.4}
.kpi-section.has-selection .kpi-card:not(.kpi-selected):hover{opacity:.7}
.kpi-card .kpi-label{font-size:12px;font-weight:600;color:var(--text-lt);letter-spacing:.3px;margin-bottom:3px}
.kpi-card .kpi-value{font-size:20px;font-weight:700;color:var(--text-dk);font-variant-numeric:tabular-nums}
.kpi-card .kpi-value .kpi-unit{font-size:12px;font-weight:500;color:var(--text-lt);margin-left:2px}
.kpi-card .kpi-sub{font-size:12px;color:var(--text-lt);margin-top:1px}
.kpi-card.kpi-alert .kpi-value{color:var(--negative)}
.kpi-linked{display:inline-block;font-size:12px;font-weight:600;color:var(--info);background:rgba(59,130,182,.1);
  padding:1px 6px;border-radius:8px;position:absolute;top:8px;right:8px}
/* ★ 説明は title 属性に置かない（v1.3 §4 #6）。モックと同じ ⓘ ＋ 自前のツールチップにする。
   S-01 は PC 画面なので hover が使える（タブレット対象は M-01/M-02/M-06/M-07/M-09/M-10/M-11）。 */
.kpi-info{position:relative;display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;
  border-radius:50%;background:var(--text-lt);color:#fff;font-size:12px;font-weight:700;cursor:help;
  margin-left:4px;vertical-align:middle;line-height:1}
.kpi-info .kpi-tooltip{display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);
  background:#333;color:#fff;font-size:12px;font-weight:400;line-height:1.5;padding:8px 12px;border-radius:6px;
  white-space:nowrap;z-index:100;box-shadow:0 2px 8px rgba(0,0,0,.25)}
.kpi-info .kpi-tooltip::after{content:'';position:absolute;top:100%;left:50%;transform:translateX(-50%);
  border:5px solid transparent;border-top-color:#333}
.kpi-info:hover .kpi-tooltip{display:block}

.filter-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:14px 18px}
.filter-row{display:flex;align-items:flex-start;gap:8px;margin-bottom:8px}
.filter-row:last-child{margin-bottom:0}
.filter-row-label{font-size:12px;font-weight:700;color:var(--text-lt);width:56px;flex-shrink:0;padding-top:4px;
  text-align:right;letter-spacing:.3px}
.filter-chips{display:flex;flex-wrap:wrap;gap:5px;flex:1;align-items:center}
.filter-chip{display:inline-flex;align-items:center;gap:3px;padding:3px 10px 3px 6px;border-radius:4px;
  font-size:12px;font-weight:700;letter-spacing:.3px;border:1px solid transparent;cursor:pointer;
  text-decoration:none;background:none;font-family:inherit;min-height:0;line-height:1.5}
.filter-chip:hover{filter:brightness(.92);box-shadow:0 1px 4px rgba(0,0,0,.1);text-decoration:none}
.filter-chip::before{content:'\2713';font-size:12px;font-weight:900;width:14px;height:14px;line-height:17px;
  text-align:center;border-radius:3px;flex-shrink:0;background:rgba(255,255,255,.4)}
.filter-chip.off{background:#ECEAE4;color:var(--text-lt);border-color:#ECEAE4;opacity:.65}
.filter-chip.off::before{content:'';background:rgba(0,0,0,.08)}
.filter-chip.off:hover{opacity:.85;filter:none}
.filter-chip.fc-route_domestic{background:#E8F0F8;color:#2B6B96;border-color:#C8DCF0}
.filter-chip.fc-route_export{background:#2B6B96;color:#FFF;border-color:#2B6B96}
.filter-chip.fc-site_domestic{background:#F6E4E1;color:#A8433A;border-color:#E8C5C1}
.filter-chip.fc-site_export{background:#A8433A;color:#FFF;border-color:#A8433A}
.filter-chip.fc-repair_domestic{background:#FBF0DD;color:#9A6B12;border-color:#EDD9B5}
.filter-chip.fc-repair_export{background:#9A6B12;color:#FFF;border-color:#9A6B12}
.filter-chip.fc-pottery{background:#EDE4F2;color:#6B4C82;border-color:#D8CBE2}
.filter-chip.fc-ec_tile{background:#E2F0E0;color:#3D7A2A;border-color:#C5DFC0}
.filter-chip.fc-ec_pottery{background:#3D7A2A;color:#FFF;border-color:#3D7A2A}
.filter-chip.fc-st-inquiry{background:rgba(59,130,182,.12);color:var(--info);border-color:rgba(59,130,182,.25)}
.filter-chip.fc-st-sample_requested{background:rgba(139,58,46,.1);color:var(--primary);border-color:rgba(139,58,46,.2)}
.filter-chip.fc-st-sample_submitted{background:rgba(184,80,66,.12);color:var(--primary);border-color:rgba(184,80,66,.25)}
.filter-chip.fc-st-ordered{background:rgba(239,159,39,.12);color:#BA7517;border-color:rgba(239,159,39,.3)}
.filter-chip.fc-st-planned{background:rgba(239,159,39,.15);color:#BA7517;border-color:rgba(239,159,39,.3)}
.filter-chip.fc-st-manufacturing{background:rgba(239,159,39,.2);color:#9A6010;border-color:rgba(239,159,39,.35)}
.filter-chip.fc-st-produced{background:rgba(99,153,34,.15);color:var(--positive);border-color:rgba(99,153,34,.3)}
.filter-chip.fc-st-billed{background:rgba(99,153,34,.2);color:#4A7518;border-color:rgba(99,153,34,.35)}
.filter-chip.fc-st-completed{background:rgba(99,153,34,.12);color:var(--positive);border-color:rgba(99,153,34,.25)}
.filter-chip.fc-st-lost{background:rgba(0,0,0,.06);color:var(--text-lt);border-color:rgba(0,0,0,.12)}
.filter-chip.fc-neutral{background:var(--bg-cream);color:var(--text-dk);border-color:var(--border)}
.filter-action-btn{font-size:12px;color:var(--info);background:none;border:none;cursor:pointer;font-family:inherit;
  padding:3px 6px;text-decoration:none;min-height:0}
.filter-action-btn:hover{text-decoration:underline}
.filter-panel input[type=text],.filter-panel input[type=date],.filter-panel select{
  padding:5px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:#fff;font-family:inherit}
.filter-count{font-size:12px;color:var(--text-lt);white-space:nowrap}
.filter-count b{color:var(--text-dk);font-size:13px}

.view-tabs{display:flex;gap:0;margin-top:8px}
.view-tab{padding:8px 18px;font-size:13px;font-weight:600;font-family:inherit;color:var(--text-lt);
  background:var(--bg-cream);border:1px solid var(--border);border-bottom:none;border-radius:6px 6px 0 0;
  position:relative;top:1px;text-decoration:none;display:inline-block;min-height:0}
.view-tab:hover{color:var(--text-md);background:#F0EDE6;text-decoration:none}
.view-tab.active{color:var(--primary-dk2);background:var(--bg-card);border-bottom:1px solid var(--bg-card)}
.view-tab .tab-count{font-size:12px;font-weight:400;color:var(--text-lt);margin-left:3px}
.view-tab.active .tab-count{color:var(--primary)}
.tab-content{background:var(--bg-card);border:1px solid var(--border);border-radius:0 8px 8px 8px;overflow:hidden}

.list-table{width:100%;border-collapse:collapse;font-size:13px}
.list-table th{background:#F0EDE6;color:var(--text-md);font-weight:600;padding:9px 12px;text-align:left;
  border-bottom:2px solid var(--border);font-size:12px;white-space:nowrap}
.list-table td{padding:10px 12px;border-bottom:1px solid #E8E6DF;vertical-align:middle}
.list-table tbody tr:hover td{background:#FAF8F2}
.list-table .num{text-align:right;font-variant-numeric:tabular-nums}
.list-table .case-name-cell{font-weight:600;color:var(--text-dk);max-width:260px}
/* ★ モック S-01 の .client-line。無いと現場名と同じ太字のまま出る（写し忘れ） */
.list-table .case-name-cell .client-line{font-size:12px;font-weight:400;color:var(--text-lt);margin-top:1px}
.list-table .case-name-cell .cn-name{display:block;max-width:100%;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis}
/* 得意先は通常は専用列。狭い画面でだけ案件名の下へ畳む（モック M-03 と同じ挙動） */
.list-table .case-name-cell .cn-client{display:none;font-size:12px;font-weight:400;color:var(--text-md);
  margin-top:2px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.list-table .client-cell{font-size:12px;color:var(--text-md);white-space:nowrap}
@media (max-width:1100px){
  .list-table .th-client,.list-table .client-cell{display:none}
  .list-table .case-name-cell .cn-client{display:block}
  .list-table .case-name-cell{width:200px;max-width:200px}
}
.list-table .product-cell{font-size:12px;line-height:1.6}
.list-table .product-cell .product-more{font-size:12px;color:var(--text-lt)}
.list-table a.row-link{color:inherit;text-decoration:none;display:block}
.list-table a.row-link:hover{text-decoration:none}

.sample-mark{display:inline-block;padding:2px 8px;border-radius:10px;font-size:12px;font-weight:600;white-space:nowrap}
.sample-submitted{background:rgba(99,153,34,.15);color:var(--positive)}
.sample-requested{background:rgba(184,80,66,.12);color:var(--primary)}
.sample-none{color:var(--text-lt);font-size:12px}

.status-badge{display:inline-block;padding:2px 10px;border-radius:20px;font-size:12px;font-weight:700;
  letter-spacing:.3px;white-space:nowrap}
.st-inquiry{background:rgba(59,130,182,.12);color:var(--info)}
.st-sample_requested{background:rgba(139,58,46,.1);color:var(--primary)}
.st-sample_submitted{background:rgba(184,80,66,.12);color:var(--primary)}
.st-ordered{background:rgba(239,159,39,.12);color:#BA7517}
.st-planned{background:rgba(239,159,39,.15);color:#BA7517}
.st-manufacturing{background:rgba(239,159,39,.2);color:#9A6010}
.st-produced{background:rgba(99,153,34,.15);color:var(--positive)}
.st-billed{background:rgba(99,153,34,.2);color:#4A7518}
.st-completed{background:rgba(99,153,34,.12);color:var(--positive)}
.st-lost{background:rgba(0,0,0,.06);color:var(--text-lt)}

.type-tag{display:inline-block;padding:2px 8px;border-radius:3px;font-size:12px;font-weight:700}
.type-tag.tt-route_domestic{background:#E8F0F8;color:#2B6B96}
.type-tag.tt-route_export{background:#2B6B96;color:#FFF}
.type-tag.tt-site_domestic{background:#F6E4E1;color:#A8433A}
.type-tag.tt-site_export{background:#A8433A;color:#FFF}
.type-tag.tt-repair_domestic{background:#FBF0DD;color:#9A6B12}
.type-tag.tt-repair_export{background:#9A6B12;color:#FFF}
.type-tag.tt-pottery{background:#EDE4F2;color:#6B4C82}
.type-tag.tt-ec_tile{background:#E2F0E0;color:#3D7A2A}
.type-tag.tt-ec_pottery{background:#3D7A2A;color:#FFF}
.case-id{font-family:var(--mono);font-size:12px;color:var(--text-lt);margin-top:2px}

.funnel{display:flex;flex-direction:column;gap:6px}
.funnel-row{display:flex;align-items:center;gap:10px}
.funnel-label{font-size:12px;color:var(--text-md);width:88px;flex:none}
.funnel-bar-wrap{flex:1;background:var(--bg-cream);border-radius:4px;overflow:hidden;min-width:120px}
.funnel-bar{height:26px;display:flex;align-items:center;padding:0 8px;color:#fff;font-size:12px;font-weight:700;
  border-radius:4px;white-space:nowrap}
.funnel-value{font-size:12px;font-variant-numeric:tabular-nums;width:64px;text-align:right;flex:none}
.funnel-rate{font-size:12px;color:var(--text-lt);width:56px;text-align:right;flex:none}
.a-section{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:14px 18px;margin-bottom:14px}
.a-section-title{font-size:13px;font-weight:700;margin-bottom:10px}
.sub-tabs{display:flex;gap:6px;margin-bottom:12px}
.sub-tab{padding:6px 14px;font-size:12px;font-weight:600;font-family:inherit;border:1px solid var(--border);
  border-radius:6px;background:var(--bg-cream);color:var(--text-md);text-decoration:none;min-height:0}
.sub-tab.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.sub-tab:hover{text-decoration:none}

@media (max-width:1200px){ .kpi-bar{grid-template-columns:repeat(2,1fr)} .kpi-bar.cols-4{grid-template-columns:repeat(2,1fr)} .kpi-bar.cols-3{grid-template-columns:repeat(2,1fr)} }

/* ---- S-01 得意先コンボボックス（複数選択・モック 20_sample_S01 準拠） -------- */
.combobox-wrap{position:relative;flex:1;max-width:360px}
.combobox-input{width:100%;padding:5px 28px 5px 10px;border:1px solid var(--border);border-radius:6px;
  font-size:13px;background:#fff;outline:none;font-family:inherit}
.combobox-input:focus{border-color:var(--primary)}
.combobox-arrow{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:12px;
  color:var(--text-lt);pointer-events:none}
.combobox-list{display:none;position:absolute;top:calc(100% + 2px);left:0;right:0;background:#fff;
  border:1px solid var(--border);border-radius:6px;box-shadow:0 4px 12px rgba(0,0,0,.12);
  max-height:200px;overflow-y:auto;z-index:200}
.combobox-list.open{display:block}
.combobox-item{padding:6px 10px;font-size:13px;cursor:pointer;display:flex;align-items:center;gap:6px;
  border:none;background:none;width:100%;text-align:left;font-family:inherit;min-height:0;
  text-decoration:none;color:var(--text-dk)}
.combobox-item:hover{background:#F0EDE6;text-decoration:none;color:var(--text-dk)}
.combobox-item.selected{font-weight:700;color:var(--primary)}
.combobox-item.selected:hover{background:rgba(184,80,66,.08)}
.combobox-item .cb-check{width:14px;height:14px;border:1px solid var(--border);border-radius:3px;
  display:inline-flex;align-items:center;justify-content:center;font-size:12px;flex-shrink:0;line-height:1}
.combobox-item.selected .cb-check{background:var(--primary);border-color:var(--primary);color:#fff}
.combobox-select-all{border-bottom:1px solid var(--border);font-weight:700}

/* ---- S-02/S-03 案件登録・詳細（モック 20_sample_S02-03-04-06 準拠） -------- */
.status-flow{display:flex;align-items:center;flex-wrap:wrap;gap:2px;background:var(--bg-card);
  border:1px solid var(--border);border-radius:8px;padding:10px 14px;margin:0 0 10px}
.status-step{display:inline-flex;align-items:center;padding:5px 14px;border-radius:999px;font-size:12px;
  font-weight:600;color:var(--text-lt);background:transparent;white-space:nowrap}
/* ★ 回答書 2026-09-22 5 章 #11（手本 20_sample_S02-03-04-06_case_entry_v1）：済み＝緑／現在＝橙／通らない＝中抜きの点線／未＝薄い塗り／中止＝橙の点線枠 */
.status-step{background:rgba(0,0,0,.03);border:1px solid transparent}
.status-step.done{color:var(--positive);background:rgba(99,153,34,.08)}
.status-step.skipped{color:#A9A79E;background:transparent;border:1px dashed var(--border)}
.status-step.active{background:var(--warning);color:#fff;font-weight:700;box-shadow:0 1px 4px rgba(239,159,39,.3)}
.status-step.lost{background:rgba(0,0,0,.06);color:var(--text-lt);font-weight:700;border:1px dashed var(--border)}
.status-arrow{color:var(--border);font-size:12px;margin:0 2px;flex:none}
.status-arrow.done{color:var(--positive)}
.status-arrow.skipped{color:#E0DED5}
.status-note{font-size:12px;color:var(--text-lt);margin:0 0 14px;line-height:1.6}

.case-card{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;margin:0 0 14px}
.case-card__head{display:flex;align-items:center;gap:8px;padding:12px 18px;border-bottom:1px solid var(--border);
  background:var(--bg-cream);border-radius:8px 8px 0 0}
.case-card__head h3{font-size:13px;margin:0;font-weight:700}
.case-card__head .spacer{flex:1}
.case-card__body{padding:16px 18px}
.case-card__foot{display:flex;align-items:center;gap:10px;padding:12px 18px;border-top:1px solid var(--border);flex-wrap:wrap}
.case-card__foot .spacer{flex:1}
/* ★ 点検 2026-10-01：390px で「保留にする／失注にする／中止する／取り消す」の列が折り返さず 116px はみ出し、
     ボタンの文字が 1 字ずつ縦に割れていた。列は折り返し、ボタンの文字は折らない */
.case-card__foot .btn{white-space:nowrap}

.case-title{font-size:19px;font-weight:700;margin:0 0 2px}
.case-meta{font-size:12px;color:var(--text-md);margin:0 0 8px}
.case-meta-row{display:flex;gap:20px;flex-wrap:wrap;font-size:12px;color:var(--text-md);margin:0 0 10px}
.case-meta-row b{color:var(--text-dk)}
.case-note-box{background:var(--bg-cream);border:1px solid #E8E6DF;border-radius:6px;padding:10px 14px;
  font-size:12px;white-space:pre-wrap;margin:0 0 10px}

.badge-accum{display:inline-block;font-size:12px;font-weight:600;padding:1px 6px;border-radius:3px;
  background:rgba(59,130,182,.1);color:var(--info);border:1px solid rgba(59,130,182,.15);margin-left:4px}
.fee-tag{display:inline-block;font-size:12px;font-weight:700;padding:1px 7px;border-radius:3px;margin-right:6px;
  background:rgba(184,80,66,.10);color:var(--primary);border:1px solid rgba(184,80,66,.3)}

.type-chips{display:flex;flex-wrap:wrap;gap:5px}
.type-chip{padding:5px 13px;border-radius:5px;font-size:12px;font-weight:600;border:1px solid var(--border);
  background:var(--bg-cream);color:var(--text-md);cursor:pointer;min-height:0;font-family:inherit}
.type-chip.on{background:#E8F0F8;color:#2B6B96;border-color:#2B6B96;font-weight:700}
.entry-grid{display:grid;grid-template-columns:1fr 300px;gap:18px;align-items:start}
.entry-sub{background:var(--bg-cream);border:1px solid #E8E6DF;border-radius:6px;padding:12px 14px}
.entry-note textarea{width:100%;min-height:200px;font-family:inherit;font-size:13px;padding:10px 12px;
  border:1px solid var(--border);border-radius:8px;resize:vertical}
@media (max-width:1100px){ .entry-grid{grid-template-columns:1fr} .entry-note textarea{min-height:110px} }

/* ---- スライドインパネル（モック 20_sample_S02-03-04-06 の .slide-panel）------
   ★ 開閉の挙動もモックに合わせる:
     ・背景クリックで閉じるのは【参照モードだけ】。編集中は閉じない（入力を失わせない）
     ・パネル本文だけがスクロールし、ヘッダ・フッタは固定（v1.3 §4 #8）
     ・ナビより前面（v1.3 §4 #7） */
.slide-overlay{position:fixed;inset:0;background:rgba(0,0,0,.35);opacity:0;pointer-events:none;
  transition:opacity .25s;z-index:100}
.slide-overlay.open{opacity:1;pointer-events:auto}
.slide-panel{position:fixed;top:0;right:0;bottom:0;width:520px;max-width:100vw;background:var(--bg-card);
  box-shadow:-4px 0 24px rgba(0,0,0,.12);z-index:101;transform:translateX(100%);
  transition:transform .3s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column}
.slide-panel.open{transform:translateX(0)}
.slide-panel-header{display:flex;align-items:center;gap:10px;padding:14px 20px;border-bottom:1px solid var(--border);
  background:var(--bg-cream);flex:none}
.slide-panel-header .card-title{font-size:14px;font-weight:700;display:flex;align-items:center;gap:8px}
.mode-indicator{font-size:12px;font-weight:700;padding:2px 10px;border-radius:999px;margin-left:auto;
  background:var(--ink-wash);color:var(--text-md)}
.mode-indicator.new-mode{background:rgba(99,153,34,.15);color:var(--positive)}
.mode-indicator.edit-mode{background:rgba(239,159,39,.18);color:#9A6010}
.mode-indicator.view-mode{background:rgba(59,130,182,.12);color:var(--info)}
.slide-panel-breadcrumb{display:flex;align-items:center;gap:6px;padding:8px 20px;font-size:12px;
  color:var(--text-lt);background:var(--bg-cream);border-bottom:1px solid var(--border);flex:none}
.slide-panel-breadcrumb .crumb-home{color:var(--primary);font-weight:600;white-space:nowrap;flex:none}
.slide-panel-breadcrumb > span:last-child{line-height:1.5}
.slide-panel-body{flex:1;overflow-y:auto;padding:18px 20px}
.slide-panel-footer{display:flex;align-items:center;gap:10px;padding:12px 20px;border-top:1px solid var(--border);
  background:var(--bg-cream);flex:none;flex-wrap:wrap}
.slide-panel-footer .flow-hint{font-size:12px;color:var(--text-lt);flex:1;min-width:180px;line-height:1.5}
.form-section-label{font-size:12px;font-weight:700;color:var(--text-md);border-bottom:1px solid var(--border);
  padding-bottom:5px;margin:16px 0 10px}
.form-section-label:first-child{margin-top:0}
.radio-chips{display:inline-flex;gap:6px}
.radio-chips input[type=radio]{position:absolute;opacity:0;width:0;height:0}
.radio-chips label{display:inline-flex;align-items:center;padding:5px 13px;border-radius:5px;font-size:12px;
  font-weight:600;border:1px solid var(--border);background:var(--bg-cream);color:var(--text-md);cursor:pointer;margin:0}
.radio-chips input[type=radio]:checked + label{background:var(--chip-bg,#E8F0F8);color:var(--chip-text,#2B6B96);
  border-color:var(--chip-border,#2B6B96);font-weight:700}
@media (max-width:600px){ .slide-panel{width:100vw} }

/* ---- M-03 製造一覧（モック 10_simple_M03_mfg_list_v1 準拠） ------------------ */
.mst{display:inline-flex;align-items:center;gap:5px;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}
.mst::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.mst-prep{background:rgba(59,130,182,.12);color:var(--info)}
.mst-mfg{background:rgba(239,159,39,.18);color:#9A6010}
.mst-done{background:rgba(99,153,34,.15);color:var(--positive)}
.mst-step{font-size:12px;color:var(--text-lt);font-variant-numeric:tabular-nums;margin-left:6px}
.mst-bar{display:flex;gap:2px;margin-top:4px}
.mst-bar span{flex:1;height:5px;border-radius:2px;background:#E8E6DF}
.mst-bar span.on-prep{background:var(--info)}
.mst-bar span.on-mfg{background:var(--highlight)}
.mst-bar span.on-done{background:var(--positive)}
.due-tag{display:inline-block;font-size:12px;font-weight:700;padding:1px 7px;border-radius:3px;margin-left:6px}
.due-over{background:rgba(178,59,48,.12);color:var(--negative)}
.due-near{background:rgba(239,159,39,.18);color:#9A6010}
.mfg-no{font-family:var(--mono);font-weight:700;color:var(--primary);white-space:nowrap}
.mfg-no a{color:inherit;text-decoration:none}
.mfg-no a:hover{text-decoration:underline}

/* ---- ⚙原価設定モーダル（モック 40_r3_M04_cost_calc_v1_B の openEdit('settings') 準拠） ---- */
.set-tabs{display:flex;gap:0;margin:0 0 10px;border-bottom:1px solid var(--border)}
.set-tab{padding:6px 14px;font-size:12px;font-weight:600;font-family:inherit;border:none;background:none;
  color:var(--text-lt);cursor:pointer;min-height:0;border-bottom:2px solid transparent;margin-bottom:-1px}
.set-tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:700}
.set-table{width:100%;border-collapse:collapse;font-size:12px}
.set-table td{padding:3px 4px;vertical-align:middle}
.set-table tr.pc-section td{padding:8px 4px 3px;font-size:12px;font-weight:700;color:var(--primary-dk2);
  border-bottom:1px solid var(--border)}
.set-table tr.pc-section:first-child td{padding-top:0}
.set-table td.lbl{color:var(--text-md);white-space:nowrap;width:40%;padding-left:8px}
.set-table td.val{white-space:nowrap}
.set-table td.tag{width:1%;white-space:nowrap;text-align:right}
.set-table input{width:92px;text-align:right;font-family:var(--mono);font-size:12px;padding:3px 6px;
  border:1px solid var(--border);border-radius:4px}
/* 桁数が読めなくなるのでスピナーは出さない（値は右詰めで見せる） */
.set-table input::-webkit-outer-spin-button,.set-table input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.set-table input[type=number]{-moz-appearance:textfield;appearance:textfield}
.set-table .unit{color:var(--text-lt);font-size:12px;margin-left:5px}
.set-table tr.auto-row td.lbl{font-weight:700;color:var(--text-dk)}
.auto-val{font-family:var(--mono);font-weight:700;color:var(--primary-dk2);font-variant-numeric:tabular-nums}
.field-tag{display:inline-block;font-size:12px;padding:1px 7px;border-radius:3px;font-weight:600}
.tag-auto{background:rgba(99,153,34,.10);color:var(--positive);border:1px solid rgba(99,153,34,.20)}
.tag-input{background:rgba(184,80,66,.08);color:var(--primary);border:1px solid rgba(184,80,66,.18)}
/* 説明は i にまとめる（この画面はPC専用。タブレット画面では使わない） */
.set-tip{position:relative;display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;
  border:1px solid var(--border);border-radius:50%;font-size:11px;font-weight:700;color:var(--text-lt);
  margin-left:5px;cursor:help;background:var(--bg-card)}
.set-tip .tip-body{display:none;position:absolute;left:20px;top:-4px;z-index:5;width:260px;padding:7px 10px;
  background:var(--nav-bg);color:#fff;border-radius:5px;font-size:12px;font-weight:400;line-height:1.5;
  text-align:left;box-shadow:var(--shadow-lg)}
.set-tip:hover .tip-body,.set-tip:focus .tip-body{display:block}
.set-memo{margin-top:10px;padding:8px 10px;border:1px solid var(--border);border-radius:4px;background:#fff}
.set-memo label{font-size:12px;font-weight:700;color:var(--text-lt);display:block;margin-bottom:3px}
.set-memo input{width:100%;font-size:12px;font-family:inherit;padding:4px 6px;border:1px solid var(--border);
  border-radius:3px}
.set-hint{margin-top:6px;padding:6px 10px;background:rgba(59,130,182,.06);border-radius:4px;font-size:12px;
  color:var(--text-md);line-height:1.5}
.btn-add-row{padding:3px 10px;font-size:12px;font-family:inherit;border:1px dashed var(--border);
  border-radius:4px;background:transparent;color:var(--text-lt);min-height:0}

/* ---- M-04 製造管理表入力（モック 10_simple_M04_mfg_sheet_dashboard_v1 準拠） -----
   ★ .panel / .kpi / .mfg-no は既存画面と名前が衝突するため .m04-page で囲って上書きする */
/* モックのシェルは広い画面で上限を外して左寄せにする（_shell.js widenLayout）。同じ見え方にする */
.m04-page{width:100%}

/* ヘッダー帯 */
.m04-page .header-band{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;
  margin-bottom:10px;box-shadow:0 1px 3px rgba(0,0,0,.04);overflow:hidden}
.m04-page .header-top{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;
  border-bottom:2.5px solid var(--primary);background:var(--bg-cream)}
.m04-page .header-left{display:flex;align-items:center;gap:10px}
.m04-page .mfg-no{font-size:17px;font-weight:900;font-family:var(--mono);color:var(--primary);letter-spacing:.5px}
.m04-page .type-badge{font-size:12px;font-weight:600;background:#ece8e2;color:#7a5a3a;padding:2px 10px;
  border-radius:10px;border:.5px solid #d5cfc5}
.m04-page .header-title{font-size:14px;font-weight:900;letter-spacing:3px}
.m04-page .header-dates{display:flex;gap:14px;font-size:12px}
.m04-page .d-item{text-align:center}
.m04-page .d-label{font-size:12px;color:var(--text-lt);margin-bottom:1px}
.m04-page .d-val{font-weight:700;min-width:60px;display:inline-block;border-bottom:1px solid #ccc;padding-bottom:1px}
.m04-page .d-val.empty{color:var(--text-lt);border-bottom-style:dotted}
.m04-page .header-body{display:flex;align-items:stretch;padding:10px 16px}
.m04-page .hero-product{flex:0 0 auto;padding-right:16px;border-right:2.5px solid var(--primary);
  display:flex;flex-direction:column;justify-content:center}
.m04-page .hero-case-name{font-size:14px;font-weight:900;line-height:1.2}
.m04-page .hero-meta-line{font-size:12px;color:var(--text-md);margin-top:3px;display:flex;gap:3px;flex-wrap:wrap}
.m04-page .hero-meta-line .lbl{color:var(--text-lt)}
.m04-page .hero-meta-line .vl{font-weight:700}
.m04-page .hero-detail{flex:1;padding:0 16px;display:flex;flex-direction:column;justify-content:center;gap:3px}
.m04-page .hero-detail .line{display:flex;gap:4px;align-items:baseline;font-size:12px}
.m04-page .hero-detail .lbl{color:var(--text-lt);min-width:28px;flex-shrink:0}
.m04-page .hero-detail .vl{font-weight:700}
.m04-page .hero-detail .dl{color:var(--primary);font-weight:800}
.m04-page .hero-chips{display:flex;gap:4px;flex-wrap:wrap;margin-top:2px}
.m04-page .hero-chip{background:#f4f3f0;padding:1px 7px;border-radius:3px;font-size:12px;
  white-space:nowrap;color:var(--text-md)}
.m04-page .hero-chip.chip-sheet{background:rgba(239,159,39,.12);border:1px solid var(--highlight);
  color:#8B5E10;font-weight:700}
.m04-page .kpi-group{flex:0 0 auto;display:flex;gap:6px;margin-left:auto;align-items:stretch}
.m04-page .kpi{min-width:70px;text-align:center;padding:6px 10px;display:flex;flex-direction:column;
  justify-content:center;background:var(--bg-cream);border-radius:6px;border:1px solid var(--border)}
.m04-page .kpi.accent{background:rgba(184,80,66,.06);border:1.5px solid var(--primary)}
.m04-page .kpi .k-label{font-size:12px;color:var(--text-lt);margin-bottom:2px}
.m04-page .kpi.accent .k-label{color:#c07060}
.m04-page .kpi .k-val{font-size:17px;font-weight:900;line-height:1.1}
.m04-page .kpi.accent .k-val{color:var(--primary)}
.m04-page .kpi .k-unit{font-size:12px;color:var(--text-lt)}
.m04-page .kpi.accent .k-unit{color:#a06050}

/* 見本・流用チェック帯 */
/* ★ flex-wrap は常時。B-09 で「進捗確認」と「確認表を開く」を足した分、
   1440px でもモックより中身が広く、折り返さないと右へ +20px はみ出す（実測） */
.m04-page .check-band{background:var(--bg-card);border:1px solid var(--border);border-radius:6px;
  padding:8px 16px;margin-bottom:10px;display:flex;align-items:center;gap:16px;flex-wrap:wrap;box-shadow:0 1px 2px rgba(0,0,0,.03)}
.m04-page .progress-step .step-icon{font-size:12px}
.m04-page .cb-group{display:flex;align-items:center;gap:8px}
.m04-page .cb-group + .cb-group{padding-left:16px;border-left:1.5px solid var(--border)}
.m04-page .cb-label{font-size:12px;font-weight:800;color:#7a5a3a;letter-spacing:.5px;white-space:nowrap}
.m04-page .cb-items{display:flex;gap:8px;align-items:center}
.m04-page .cb-item{display:flex;align-items:center;gap:3px;font-size:12px}
.m04-page .cb-check{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;
  border-radius:3px;font-size:12px;font-weight:700;line-height:1;flex-shrink:0}
.m04-page .cb-check.yes{background:#27ae60;color:#fff}
.m04-page .cb-check.no{background:#eee;color:#bbb}
.m04-page .cb-name.dim{color:#bbb}
.m04-page .cb-note{font-size:12px;color:var(--text-lt)}
.m04-page .cb-summary{margin-left:auto;display:flex;align-items:center;gap:10px}
.m04-page .cb-progress{display:flex;flex-direction:column;gap:2px;min-width:96px}
.m04-page .cbp-top{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;color:var(--text-lt)}
.m04-page .cbp-top b{font-size:12px;color:var(--text-dk);font-weight:800}
.m04-page .cbp-bar{height:5px;border-radius:3px;background:#ece9e2;overflow:hidden}
.m04-page .cbp-fill{height:100%;background:var(--positive);border-radius:3px;transition:width .3s}
.m04-page .btn-checklist{display:inline-flex;align-items:center;gap:4px;padding:5px 12px;border-radius:5px;
  border:1px solid var(--primary-lt);background:rgba(184,80,66,.05);color:var(--primary);font-size:12px;
  font-weight:700;cursor:pointer;font-family:inherit;white-space:nowrap;min-height:0}
.m04-page .btn-checklist:hover{background:var(--primary);color:#fff;border-color:var(--primary)}
.m04-page .notice-bar{display:flex;align-items:center;gap:8px;margin-bottom:10px;padding:6px 14px;
  background:#fdf3e3;border:1px solid #f0d9ad;border-left:3px solid var(--highlight);border-radius:6px;
  font-size:12px;color:#8a5a17}
.m04-page .notice-bar .notice-lbl{font-weight:800;white-space:nowrap}
.m04-page .notice-bar .notice-text{color:var(--text-md);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* カードグリッド／パネル */
.m04-page .card-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.m04-page .card-grid .span-2{grid-column:span 2}
.m04-page .card-grid .span-3{grid-column:span 3}
/* 下段 3 カラム：焼成情報・金型／成形メモ／MEMO（幅比 1:1:2） */
.m04-page .card-grid .lower-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,2fr);gap:10px}
/* ★★ 格子の子は既定で min-width:auto＝中身の幅より縮まない。梱包の表（7 列・見出しは折り返さない）がいちばん広く、
   それに引っぱられて 1 列の格子が 788px になり、画面ごと横スクロールになっていた（9/18 の 768px・390px の掃引） */
.m04-page .card-grid > *,.m04-page .card-grid .lower-row > *{min-width:0}
.m04-page .panel{background:var(--bg-card);border:1px solid var(--border);border-radius:6px;padding:10px 14px;
  box-shadow:none;margin:0;position:relative;transition:box-shadow .2s,border-color .2s}
.m04-page .panel.clickable{cursor:pointer}
.m04-page .panel.clickable:hover{box-shadow:0 3px 10px rgba(0,0,0,.07);border-color:var(--primary-lt)}
.m04-page .panel-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;
  font-size:13px;font-weight:700;color:var(--primary-dk2)}
.m04-page .btn-edit{padding:2px 8px;border-radius:3px;font-size:12px;cursor:pointer;border:1px solid var(--border);
  background:transparent;color:var(--text-lt);font-family:inherit;min-height:0;transition:all .15s}
.m04-page .btn-edit:hover{background:var(--bg-cream);border-color:var(--primary-lt);color:var(--primary)}
.m04-page .p-table{width:100%;border-collapse:collapse;font-size:12px}
.m04-page .p-table th{font-size:12px;color:var(--text-lt);font-weight:600;padding:3px 6px;text-align:left;
  border-bottom:1px solid var(--border);background:var(--bg-cream)}
.m04-page .p-table th.c{text-align:center}
.m04-page .p-table td{padding:4px 6px;border-bottom:1px solid #F0EDE6;vertical-align:middle}
.m04-page .p-table .c{text-align:center}
.m04-page .p-table .b{font-weight:700}
.m04-page .p-table .big{font-size:14px;font-weight:900}
.m04-page .p-table .hl{background:#fffbf0}
.m04-page .p-table .empty-val{color:var(--text-lt);border-bottom:1px dotted #ccc;min-width:40px;
  display:inline-block;font-style:italic;font-size:12px}

/* 釉薬計算テーブル（帳票A4準拠の行積み） */
.m04-page .glaze-table{width:100%;border-collapse:collapse;font-size:12px}
.m04-page .glaze-table th,.m04-page .glaze-table td{border:.5px solid #d8d5ce;padding:2px 5px;vertical-align:middle}
.m04-page .glaze-table th{background:var(--bg-cream);color:var(--text-lt);font-size:12px;font-weight:600;
  text-align:center;white-space:nowrap}
.m04-page .glaze-table td{font-size:12px}
.m04-page .glaze-table .c{text-align:center}
.m04-page .glaze-table .b{font-weight:700}
.m04-page .glaze-table .ev{color:var(--text-lt);font-style:italic}
.m04-page .glaze-no-cell{background:rgba(184,80,66,.06);color:var(--primary);font-weight:900;font-size:12px;
  text-align:center;width:28px;border-left:2.5px solid var(--primary);white-space:nowrap}
.m04-page .glaze-no-cell .slot-label{display:block;font-size:12px;font-weight:700;letter-spacing:.3px}
.m04-page .glaze-no-cell.dim{color:var(--text-lt);border-left-color:var(--border);background:var(--bg-cream)}
.m04-page .glaze-dim td{opacity:.5}
.m04-page .glaze-dim .glaze-no-cell{opacity:1}
.m04-page .glaze-divider{width:2px;border:none;background:none;border-left:1.5px solid var(--primary);padding:0}
.m04-page .plan-hdr{background:#faf8f4 !important}
.m04-page .result-hdr{background:#f0f4f8 !important}
.m04-page .trad-lbl{color:#8B6B3A;font-weight:700;font-size:12px}
.m04-page .pc-lbl{color:var(--info);font-weight:700;font-size:12px}

/* 色タブ（N色MIX）＝1タブ＝1色＝1レコード */
.m04-page .color-tabs{display:flex;align-items:stretch;gap:0;margin-bottom:8px;
  border-bottom:2px solid var(--border);position:relative;flex-wrap:wrap}
.m04-page .color-tab{padding:5px 14px;font-size:12px;font-family:inherit;cursor:pointer;background:var(--bg-cream);
  border:1px solid var(--border);border-bottom:none;border-radius:4px 4px 0 0;color:var(--text-md);
  position:relative;margin-right:2px;white-space:nowrap;min-height:0}
.m04-page .color-tab:hover{background:var(--bg-card);color:var(--text-dk)}
.m04-page .color-tab.active{background:var(--bg-card);color:var(--primary-dk2);font-weight:700;
  margin-bottom:-2px;padding-bottom:7px;border-bottom:2px solid var(--bg-card);border-top:2px solid var(--primary)}
.m04-page .color-tab .ct-no{font-weight:400;color:var(--text-lt);margin-right:5px}
.m04-page .color-tab.active .ct-no{color:var(--primary)}
.m04-page .color-tab .ct-name{font-weight:600}
.m04-page .color-tab .ct-close{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;
  margin-left:8px;margin-right:-8px;font-size:12px;color:var(--text-lt);cursor:pointer;opacity:0;
  border-radius:50%;line-height:1;transition:opacity .15s,background .15s}
.m04-page .color-tab:hover .ct-close{opacity:1}
.m04-page .color-tab .ct-close:hover{color:var(--negative);background:rgba(0,0,0,.08)}
.m04-page .color-tab-add{padding:5px 10px;font-size:12px;cursor:pointer;color:var(--text-lt);background:transparent;
  border:1px dashed var(--border);border-bottom:none;border-radius:4px 4px 0 0;margin-right:2px;
  font-family:inherit;min-height:0;transition:all .15s}
.m04-page .color-tab-add:hover{color:var(--primary);border-color:var(--primary-lt);background:rgba(184,80,66,.04)}
.m04-page .color-tab .ct-input{border:none;border-bottom:1.5px solid var(--primary-lt);background:transparent;
  font-size:12px;font-family:inherit;font-weight:700;color:var(--primary-dk2);outline:none;width:140px;padding:0}
.m04-page .mix-meta{display:flex;align-items:center;gap:14px;font-size:12px;margin:0 0 6px;padding:4px 9px;
  background:#faf8f4;border-left:3px solid var(--primary-lt);border-radius:2px;flex-wrap:wrap}
.m04-page .mix-meta .mm-k{color:var(--text-lt)}
.m04-page .mix-meta .mm-v{font-weight:700}
.m04-page .mix-meta .mm-qty{color:var(--primary)}
.m04-page .mix-meta input{width:52px;text-align:right;font-size:12px;font-family:inherit;
  border:1px solid var(--border);border-radius:3px;padding:1px 3px}
.m04-page .mix-meta .mm-warn{color:var(--negative);font-weight:700}

/* 進捗ステータス */
.m04-page .progress-bar{display:flex;border-radius:4px;overflow:hidden;border:1px solid var(--border);height:28px}
.m04-page .progress-step{flex:1;display:flex;align-items:center;justify-content:center;font-size:12px;
  font-weight:600;gap:4px;border-right:1px solid var(--border)}
.m04-page .progress-step:last-child{border-right:none}
.m04-page .progress-step.done{background:rgba(99,153,34,.12);color:var(--positive)}
.m04-page .progress-step.active{background:rgba(239,159,39,.15);color:#BA7517}
.m04-page .progress-step.pending{background:var(--bg-cream);color:var(--text-lt)}
.m04-page .step-advance{padding:3px 10px;border-radius:4px;font-size:12px;font-weight:700;cursor:pointer;
  font-family:inherit;border:1px solid var(--primary-lt);background:#fff;color:var(--primary);min-height:0}
.m04-page .step-advance:hover{background:var(--primary);color:#fff}
.m04-page .step-advance:disabled{opacity:.45;cursor:not-allowed;background:#fff;color:var(--primary)}
.m04-page .chk-badge{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:10px;
  font-size:12px;font-weight:800;border:1px solid transparent}
.m04-page .chk-badge.full{background:rgba(99,153,34,.12);color:var(--positive);border-color:#b9d79a}
.m04-page .chk-badge.partial{background:#fdf3e3;color:#BA7517;border-color:#f0d9ad}
.m04-page .chk-badge.none{background:var(--bg-cream);color:var(--text-lt);border-color:var(--border)}

/* MEMO */
.m04-page .memo-area{border:1.5px dashed var(--border);border-radius:6px;padding:10px 14px;min-height:60px;
  background:var(--bg-card)}
.m04-page .memo-label{font-size:12px;font-weight:700;color:var(--text-lt);margin-bottom:4px}
.m04-page .memo-content{font-size:12px;color:var(--text-md);line-height:1.5;white-space:pre-wrap}
.m04-page .memo-placeholder{font-size:12px;color:#ccc;font-style:italic}

/* 説明は title 属性に置かず画面に出す（v1.3 §4 UIガイドライン） */
.m04-page .hint-note{font-size:12px;color:var(--text-lt);line-height:1.5}
.m04-page .hint-inline{font-size:12px;color:var(--text-lt)}
.m04-page .sheet-lbl{font-size:12px;color:var(--text-lt)}
.m04-page .sheet-in{width:56px;text-align:right;font-size:12px;font-family:inherit;
  border:1px solid var(--border);border-radius:3px;padding:1px 4px;background:#fff}
.m04-page .sheet-note{font-size:12px;color:var(--text-md);margin:0 0 6px;padding:3px 8px;
  background:var(--bg-cream);border-left:3px solid var(--primary-lt);border-radius:2px}
.m04-page .sheet-note b{color:var(--primary)}
.m04-page .nav-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.m04-page .nav-bar a{font-size:13px;font-weight:600;text-decoration:none;padding:6px 14px;border-radius:4px;
  border:1px solid var(--border);background:var(--bg-card);color:var(--text-dk)}
.m04-page .nav-bar a:hover{background:var(--border)}

/* #25/#26 閲覧レスポンシブ（ライト固定・レイアウト折返しのみ） */
@media (max-width:1100px){
  .m04-page .card-grid{grid-template-columns:1fr 1fr}
  /* ★★ 列を減らしたら「span 2／span 3」を全幅に直す。span 3 のままだと、2 列の格子に見えない 3 列目が足され、
     画面が 889px に固定されて横スクロールになる（9/18 の 768px・390px の掃引で実際に出た） */
  .m04-page .card-grid .span-2,.m04-page .card-grid .span-3{grid-column:1 / -1}
  .m04-page .card-grid .lower-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .m04-page .card-grid .lower-row > :last-child{grid-column:1 / -1}
  .m04-page .header-top,.m04-page .header-body,.m04-page .check-band{flex-wrap:wrap;gap:8px}
  .m04-page .glaze-table{min-width:720px}
  .m04-page .glaze-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
}
@media (max-width:768px){
  .m04-page .card-grid{grid-template-columns:1fr}
  .m04-page .card-grid .lower-row{grid-template-columns:minmax(0,1fr)}
  /* 梱包の表など横に長い表は、表の中だけ横に送る（画面は横スクロールさせない） */
  .m04-page .p-table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  /* 施釉設定の選択は、いちばん長い設定名の幅まで広がる（390px で 6px はみ出た）。画面の幅までに抑える（開けば全文が読める） */
  .m04-page .mix-meta select{max-width:calc(100vw - 96px)}
  .m04-page .header-top,.m04-page .header-body,.m04-page .hero-detail{flex-direction:column;align-items:flex-start}
}

/* ⚙原価設定 変更履歴（モック 40_r3_M04 の st-history-* に相当） */
.st-history-item{border:1px solid var(--border);border-radius:6px;padding:9px 12px;margin:0 0 8px;background:var(--bg-card)}
.st-history-head{display:flex;align-items:baseline;gap:10px;margin-bottom:4px}
.st-history-date{font-family:var(--mono);font-size:12px;font-weight:700;color:var(--text-md)}
.st-history-user{font-size:12px;color:var(--text-lt)}
.st-history-change{font-size:12px;margin:1px 0}
.st-change-label{display:inline-block;min-width:9em;color:var(--text-md)}
.st-change-old{font-family:var(--mono);color:var(--text-lt);text-decoration:line-through}
.st-change-arrow{color:var(--text-lt);margin:0 4px}
.st-change-new{font-family:var(--mono);font-weight:700;color:var(--primary)}
.st-history-comment{margin-top:4px;font-size:12px;color:var(--text-lt)}
/* 従来算出と PC算出が食い違っている補正値。そのまま発注すると事故になる */
.m04-page .glaze-table td.poly-warn{background:#fdf3e3;color:#8a5a17}
/* 未実装のタブ追加。押せない見た目にする（DIFF_MEMO §10 表示要素と入力導線の対応漏れ） */
.cat-tab-add[disabled]{opacity:.45;cursor:not-allowed;background:transparent}

/* 見本・流用チェック帯を操作できるようにする（ラジオ/チェックは見出しの丸印で表現） */
.m04-page .cb-pick{cursor:pointer;user-select:none;padding:2px 4px;border-radius:4px}
.m04-page .cb-pick:hover{background:var(--bg-cream)}
.m04-page .cb-pick input{position:absolute;opacity:0;width:0;height:0}
.m04-page .cb-pick:focus-within{outline:2px solid var(--primary-lt);outline-offset:1px}
.m04-page .cb-pick.is-on .cb-name{font-weight:700}
.m04-page .cb-child{margin-left:2px}
.m04-page .cb-child .cb-link{color:var(--text-lt);font-size:12px}
.m04-page .cb-child.is-on .cb-name{color:var(--positive)}
/* 二重計算の乖離フラグ（v1.1 §4：乖離20%超で「●」） */
.m04-page .poly-flag{margin-left:3px;color:var(--negative);font-size:11px;vertical-align:top}

/* ---- S-05L 原価計算一覧（モック 40_r3_C01_cost_list_v1 準拠） ---------------- */
.cost-list .grp-head{cursor:pointer;background:var(--bg-cream)}
.cost-list .grp-head:hover{background:#f3f1ea}
.cost-list .grp-head td{border-bottom:1px solid var(--border);padding:7px 10px}
.cost-list .grp-toggle{display:inline-block;width:14px;color:var(--text-lt);font-size:11px}
.cost-list .kind-badge{display:inline-block;font-size:12px;font-weight:700;padding:1px 8px;border-radius:10px;margin-right:6px}
.cost-list .kind-case{background:rgba(59,130,182,.10);color:var(--info);border:1px solid rgba(59,130,182,.22)}
.cost-list .kind-scratch{background:rgba(107,134,116,.12);color:var(--accent-dk);border:1px solid rgba(107,134,116,.24)}
.cost-list .g-name{font-weight:700;color:var(--text-dk)}
.cost-list .g-sub{font-size:12px;color:var(--text-lt);margin-left:8px}
.cost-list .grp-count{font-size:12px;color:var(--text-lt);margin-left:8px}
.cost-list .prod-row td{padding:5px 10px}
.cost-list .connector{color:var(--text-lt);text-align:center}
.cost-list .prod-code{font-family:var(--mono);font-weight:600}
/* ★ 行の中の行き先。行全体もクリックできるので、下線は出さず色だけ継ぐ */
.cost-list .prod-code a{color:inherit;text-decoration:none}
.cost-list .prod-code a:hover{text-decoration:underline}
.cost-list .emph{font-weight:700;color:var(--primary-dk2)}
.cost-list .pos{color:var(--positive);font-weight:700}

/* ---- S-05 原価計算（モック 40_r3_M04_cost_calc_v1_B 準拠・4カラム） ---------- */
.s05-page .sheet-tabs{display:flex;align-items:stretch;gap:0;margin:0 0 12px;border-bottom:2px solid var(--border);flex-wrap:wrap}
.s05-page .sheet-tab{padding:6px 16px;font-size:12px;background:var(--bg-cream);border:1px solid var(--border);
  border-bottom:none;border-radius:4px 4px 0 0;color:var(--text-md);margin-right:2px;text-decoration:none;white-space:nowrap}
.s05-page .sheet-tab:hover{background:var(--bg-card);color:var(--text-dk)}
.s05-page .sheet-tab.active{background:var(--bg-card);color:var(--primary-dk2);font-weight:700;
  margin-bottom:-2px;padding-bottom:8px;border-bottom:2px solid var(--bg-card);border-top:2px solid var(--primary)}
.s05-page .sheet-tab .tab-dot{color:var(--positive);font-size:11px;margin-right:4px}
.s05-page .sheet-tab-add{padding:6px 12px;font-size:12px;font-family:inherit;color:var(--text-lt);background:transparent;
  border:1px dashed var(--border);border-bottom:none;border-radius:4px 4px 0 0;min-height:0}
.s05-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;align-items:start}
.s05-col{display:flex;flex-direction:column;gap:10px;min-width:0}
/* ★★ グリッドの中身は縮まない（グリッド項目の min-width は既定 auto）。
   金額が1桁増えただけで表が列からはみ出し、**ページ全体に横スクロールが出る**。
   min-width:0 で縮めるようにし、それでも入らない表はパネルの中だけで横に流す。 */
.s05-page .panel{background:var(--bg-card);border:1px solid var(--border);border-radius:6px;padding:10px 14px;
  box-shadow:none;margin:0;position:relative;min-width:0;overflow-x:auto}
.s05-page .panel--pending{opacity:.62;border-style:dashed}
.s05-page .panel-h{display:flex;align-items:center;gap:6px;margin-bottom:8px;font-size:13px;font-weight:700;
  color:var(--primary-dk2)}
.s05-page .panel-h .spacer{flex:1}
.s05-page .btn-edit{padding:2px 8px;border-radius:3px;font-size:12px;border:1px solid var(--border);
  background:transparent;color:var(--text-lt);font-family:inherit;min-height:0;margin-left:auto}
.s05-page .btn-edit:hover:not(:disabled){background:var(--bg-cream);border-color:var(--primary-lt);color:var(--primary)}
.s05-page .btn-edit:disabled{opacity:.45;cursor:not-allowed}
.s05-page .kv{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;font-size:12px;margin:0}
.s05-page .kv dt{color:var(--text-lt);white-space:nowrap}
.s05-page .kv dd{margin:0;font-weight:600;font-variant-numeric:tabular-nums;text-align:right;min-width:0;
  overflow-wrap:anywhere}
.s05-page .kv dd.calc{color:var(--primary-dk2)}
.s05-page .kv dd.total{font-size:14px;font-weight:900;color:var(--primary)}
.s05-page .auto-tag{display:inline-block;font-size:12px;padding:0 5px;border-radius:3px;font-weight:600;
  background:rgba(99,153,34,.10);color:var(--positive);border:1px solid rgba(99,153,34,.20);margin-left:3px}
.s05-page .chip{font-size:12px;padding:1px 8px;border-radius:10px;background:var(--bg-cream);
  border:1px solid var(--border);color:var(--text-md);font-weight:400}
.s05-page .hint-note{font-size:12px;color:var(--text-lt);line-height:1.5;margin-top:8px;
  padding-top:7px;border-top:1px solid var(--hairline)}
@media (max-width:1400px){ .s05-grid{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:900px){ .s05-grid{grid-template-columns:1fr} }

/* S-05 釉薬費用の層カード */
.s05-page .glaze-layer{border-top:1px solid var(--hairline);padding:6px 0}
.s05-page .glaze-layer:first-of-type{border-top:none;padding-top:0}
.s05-page .gl-head{display:flex;align-items:baseline;gap:6px;font-size:12px}
.s05-page .gl-no{font-size:12px;color:var(--text-lt);font-weight:700}
.s05-page .gl-name{font-weight:700;color:var(--primary-dk2);flex:1;overflow-wrap:anywhere}
.s05-page .gl-cost{font-weight:700;font-variant-numeric:tabular-nums}
.s05-page .gl-body{display:flex;flex-wrap:wrap;gap:8px;font-size:12px;color:var(--text-md);margin-top:1px}
.s05-page .gl-calc{font-size:12px;color:var(--text-lt);margin-top:2px}
.s05-page .p-table{width:100%;border-collapse:collapse;font-size:12px}
.s05-page .p-table th{font-size:12px;color:var(--text-lt);font-weight:600;padding:3px 5px;text-align:left;
  border-bottom:1px solid var(--border);background:var(--bg-cream)}
.s05-page .p-table th.c{text-align:center}
.s05-page .p-table td{padding:3px 5px;border-bottom:1px solid #F0EDE6}
.s05-page .p-table .c{text-align:center}
.s05-page .p-table .b{font-weight:700}
.s05-page .p-table tr.sub td{border-top:1px solid var(--border);font-weight:700;background:var(--bg-cream)}

/* S-05 価格設定 */
.s05-page .price-step{border-top:1px solid var(--hairline);padding:7px 0}
.s05-page .price-step:first-of-type{border-top:none;padding-top:0}
.s05-page .ps-label{font-size:12px;font-weight:700;color:var(--text-lt);letter-spacing:.5px;margin-bottom:3px}
.s05-page .in-tag{display:inline-block;font-size:12px;padding:0 5px;border-radius:3px;font-weight:600;
  background:rgba(184,80,66,.08);color:var(--primary);border:1px solid rgba(184,80,66,.18);margin-left:3px}
.s05-page .mode-switch{display:flex;gap:0;margin-left:auto;margin-right:6px}
.s05-page .mode-switch a{font-size:12px;padding:2px 8px;border:1px solid var(--border);color:var(--text-lt);
  text-decoration:none;background:var(--bg-cream)}
.s05-page .mode-switch a:first-child{border-radius:4px 0 0 4px}
.s05-page .mode-switch a:last-child{border-radius:0 4px 4px 0;border-left:none}
.s05-page .mode-switch a.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.s05-page .cb-dot{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px;vertical-align:middle}
.s05-page .p-table tr.muted td{color:var(--text-lt)}

/* ---- M-01 試作一覧（タブレット・モック 20_sample_M01_sample_list_v1 準拠） ----
   ★ v1.3 §4：幅は .content.tablet（900px上限・左寄せ）／最小14px／title 属性は使わない */
.m01-page{--m01-blue:#3B82B6;--m01-blue-bg:rgba(59,130,182,.12);
  --m01-orange:#BA7517;--m01-orange-bg:rgba(239,159,39,.16);
  --m01-green:#639922;--m01-green-bg:rgba(99,153,34,.14);
  --m01-purple:#7B62A3;--m01-purple-bg:rgba(123,98,163,.14);
  --m01-red:#B23B3B;--m01-red-bg:rgba(178,59,59,.12)}
.m01-page .filter-bar{display:flex;align-items:center;gap:8px;margin:0 0 10px;flex-wrap:wrap}
.m01-page .filter-chip{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:6px;
  border:1px solid var(--border);background:var(--bg-card);color:var(--text-md);font-size:13px;
  text-decoration:none;white-space:nowrap}
.m01-page .filter-chip:hover{border-color:var(--primary-lt);color:var(--primary)}
.m01-page .filter-chip.active{background:var(--primary);color:#fff;border-color:var(--primary);font-weight:700}
.m01-page .chip-count{font-size:12px;padding:0 6px;border-radius:9px;background:rgba(0,0,0,.08)}
.m01-page .filter-chip.active .chip-count{background:rgba(255,255,255,.22)}
.m01-page .filter-spacer{flex:1}
.m01-page .search-box input{font-size:13px;padding:7px 12px;border:1px solid var(--border);border-radius:6px;
  min-width:min(320px,100%)}
.m01-page .summary-bar{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--text-md);
  padding:7px 12px;background:var(--bg-cream);border:1px solid var(--border);border-radius:6px;margin-bottom:8px}
.m01-page .summary-bar .total{font-weight:800;color:var(--text-dk)}
/* 段階の見出し（モックは点だけ。title が使えないので常時表示にする） */
.m01-page .timeline-legend{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12px;
  color:var(--text-lt);margin:0 0 10px;padding-left:2px}
.m01-page .timeline-legend .tl-label{font-weight:700}
.m01-page .card-client{color:var(--text-lt)}
.m01-page .timeline-legend .tl-arrow{opacity:.5}
/* 段階名そのもの。見出しの色をそのまま継ぐ（規則が無いと「消し忘れ」に見えるので明示する） */
.m01-page .timeline-legend .tl-step{color:inherit}
.m01-page .card-list{display:flex;flex-direction:column;gap:8px}
.m01-page .sample-card{display:flex;align-items:stretch;gap:12px;padding:12px 14px;background:var(--bg-card);
  border:1px solid var(--border);border-radius:8px;text-decoration:none;color:inherit;
  box-shadow:0 1px 2px rgba(0,0,0,.03)}
.m01-page .sample-card:hover{border-color:var(--primary-lt);box-shadow:0 3px 10px rgba(0,0,0,.07)}
.m01-page .card-status-area{flex:0 0 auto;display:flex;align-items:flex-start}
.m01-page .status-badge{display:inline-block;padding:6px 14px;border-radius:4px;font-size:12px;font-weight:700;
  white-space:nowrap}
.m01-page .status-hand{background:var(--m01-blue-bg);color:var(--m01-blue)}
.m01-page .status-start{background:var(--m01-orange-bg);color:var(--m01-orange)}
.m01-page .status-done{background:var(--m01-green-bg);color:var(--m01-green)}
.m01-page .status-submit{background:var(--m01-purple-bg);color:var(--m01-purple)}
.m01-page .status-return{background:var(--m01-red-bg);color:var(--m01-red)}
.m01-page .status-approve{background:rgba(240,192,64,.18);color:#8a6d15}
.m01-page .card-main{flex:1;min-width:6.5em}
.m01-page .card-project{font-size:14px;font-weight:700;line-height:1.3}
.m01-page .urgent-mark{display:inline-block;margin-left:6px;font-size:12px;font-weight:800;color:#fff;
  background:var(--m01-red);border-radius:3px;padding:1px 6px;vertical-align:middle}
.m01-page .card-meta{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--text-md);margin-top:2px}
.m01-page .card-id{font-family:var(--mono);font-weight:600}
.m01-page .card-specs{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px}
.m01-page .spec-chip{font-size:12px;padding:1px 8px;border-radius:3px;background:var(--bg-cream);
  border:1px solid var(--border);color:var(--text-md);white-space:nowrap}
.m01-page .card-note{font-size:12px;color:var(--text-md);margin-top:5px;line-height:1.5}
.m01-page .return-note{font-size:12px;color:var(--m01-red);background:var(--m01-red-bg);border-radius:4px;
  padding:3px 8px;margin-top:5px}
/* ★ 点の下に段階名を常時出す（K-08①・2026-09-01）。線は点の高さに合わせる */
.m01-page .mini-timeline{display:flex;align-items:flex-start;gap:0;margin-top:8px}
.m01-page .mt-step{display:flex;flex-direction:column;align-items:center;gap:3px;flex:none;width:34px}
.m01-page .mt-name{font-size:11px;color:var(--text-lt);white-space:nowrap;line-height:1}
.m01-page .mt-name.done{color:var(--m01-green)}
.m01-page .mt-name.active{color:var(--m01-orange);font-weight:700}
.m01-page .mt-name.return-name{color:var(--m01-red);font-weight:700}
.m01-page .mt-dot{width:9px;height:9px;border-radius:50%;background:#dcd9d2;flex:none}
.m01-page .mt-dot.done{background:var(--m01-green)}
.m01-page .mt-dot.active{background:var(--m01-orange);box-shadow:0 0 0 3px rgba(239,159,39,.22)}
.m01-page .mt-dot.return-dot{background:var(--m01-red)}
.m01-page .mt-bar{width:14px;height:2px;background:#e6e3dc;flex:none;margin-top:4px}
.m01-page .mt-bar.done{background:var(--m01-green)}
.m01-page .card-right{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:3px;
  white-space:nowrap}
/* ★ 点検 2026-10-01：width:1% が flex の基準幅になり、右の列が 1% 幅＋右寄せで中身が**左にはみ出して**備考の文字に重なっていた
     （1024px の試作一覧で実測 20×14px）。幅は中身どおり（flex:0 0 auto）にする */
.m01-page .card-deadline-label{font-size:12px;color:var(--text-lt)}
.m01-page .card-deadline{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}
.m01-page .card-deadline.is-urgent{color:var(--m01-red)}
.m01-page .card-action-badge{margin-top:4px;font-size:12px;font-weight:700;padding:2px 10px;border-radius:10px}
.m01-page .action-mfg{background:var(--m01-blue-bg);color:var(--m01-blue)}
.m01-page .action-sales{background:var(--m01-green-bg);color:var(--m01-green)}
.m01-page .action-client{background:var(--m01-purple-bg);color:var(--m01-purple)}
.m01-page .card-arrow{flex:0 0 auto;align-self:center;font-size:19px;color:var(--text-lt)}
/* #5 はみ出しはカード単位で横スクロール */
@media (max-width:700px){
  .m01-page .sample-card{overflow-x:auto}
}

/* ============================================================
   M-02 試作記録（タブレット・2ペイン）
   正：モック 20_sample_M02_sample_record_v1.html
   ★ 色はアプリの配色に寄せる（M-01・M-03/M-04 と同じ扱い／DIFF_MEMO #107）
   ★ title 属性は使わない（v1.3 §4 #6）ので、注記は常時表示の文字で出す
   ============================================================ */
.m02-page{--ok:#639922;--ng:#C0392B;--hold:#BA7517;--pending:#8A8F96;
  /* ★ アプリの配色に別名を張る。モックは独自の変数名なので、ここで1回だけ対応づける */
  --text:var(--text-dk);--text-muted:var(--text-lt);
  --border-strong:#B9B7AC;--bg-input:var(--bg-cream);--bg-hover:var(--bg-cream);
  font-size:13px;color:var(--text-dk);}
.m02-page [x-cloak]{display:none !important;}
/* ★ モック M-02 の「依頼書を完了にする」は緑（主ボタンの赤だと危険な操作に見える） */
.m02-page .btn-done{background:var(--positive);border-color:var(--positive);color:#fff}
.m02-page .btn-done:hover{background:#527f1c;border-color:#527f1c}
.m02-page .btn-done:disabled{background:#EDEBE3;border-color:var(--border);color:var(--text-lt)}
.m02-meta{margin:0 0 10px;font-size:12px;color:var(--text-muted);}
.m02-alert{margin:0 0 12px;padding:10px 12px;border-radius:8px;font-size:12px;
  background:rgba(192,57,43,.10);border:1px solid rgba(192,57,43,.35);color:#8E2B22;}

.m02-workspace{display:grid;grid-template-columns:300px 1fr;gap:14px;align-items:start;}

/* ---- 左ペイン ---- */
.m02-rail{display:flex;flex-direction:column;gap:12px;}
.m02-req{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:12px;}
.m02-req .req-head{display:flex;flex-direction:column;gap:8px;}
.m02-req .req-primary{display:flex;flex-direction:column;gap:6px;}
.m02-req .req-case{font-size:12px;color:var(--text-muted);margin-bottom:8px;}
.m02-req .req-id{font-family:var(--mono);font-weight:700;color:var(--text);}
.m02-req .req-row{display:flex;justify-content:space-between;gap:8px;padding:3px 0;font-size:12px;}
.m02-req .req-k{color:var(--text-muted);}
.m02-req .req-v.strong{font-weight:700;}
.m02-req .req-v.warn{color:#C0392B;}
.m02-req .req-remain{margin-left:6px;font-size:12px;color:var(--text-muted);}
.m02-req .req-remain.over{color:#C0392B;font-weight:700;}
.m02-req .req-toggle{margin-top:8px;width:100%;display:flex;justify-content:space-between;align-items:center;
  gap:6px;background:none;border:none;border-top:1px solid var(--border);padding:8px 0 0;
  font-size:12px;color:var(--text-muted);cursor:pointer;text-align:left;}
.m02-req .chev{transition:transform .15s;}
.m02-req.open .chev{transform:rotate(180deg);}
.m02-req .req-detail{display:none;padding-top:8px;}
.m02-req.open .req-detail{display:block;}
.m02-req .req-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;}
.m02-req .req-grid dt{font-size:12px;color:var(--text-muted);margin:0;}
.m02-req .req-grid dd{font-size:12px;margin:0;}
.m02-req .req-note{margin-top:10px;padding:8px;border-radius:6px;background:var(--bg-input);font-size:12px;}
.m02-req .note-label{font-size:12px;color:var(--text-muted);margin-bottom:3px;}

.m02-trials-head{display:flex;justify-content:space-between;font-size:12px;color:var(--text-muted);padding:0 2px;}
.m02-trial-list{display:flex;flex-direction:column;gap:8px;}
.trial-item{display:block;background:var(--bg-card);border:1px solid var(--border);
  border-left:3px solid var(--border-strong);border-radius:8px;padding:10px 12px;text-decoration:none;color:inherit;}
.trial-item:hover{background:var(--bg-hover);}
.trial-item.selected{border-color:var(--primary);background:rgba(91,141,190,.12);box-shadow:0 0 0 1px var(--primary) inset;}
.trial-item.r-ok{border-left-color:var(--ok);}
.trial-item.r-ng{border-left-color:var(--ng);}
.trial-item.r-hold{border-left-color:var(--hold);}
.ti-top{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.ti-type{font-size:12px;padding:1px 6px;border-radius:4px;background:var(--bg-input);color:var(--text-muted);}
.ti-label{font-size:12px;font-weight:700;}
.ti-hinban{font-size:12px;font-family:var(--mono);color:var(--text-muted);}
.ti-bottom{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;}
.ti-mini{display:flex;align-items:center;}
.ti-dot{width:8px;height:8px;border-radius:50%;background:var(--border-strong);}
.ti-dot.done{background:var(--ok);}
.ti-dot.cur{background:var(--hold);box-shadow:0 0 0 3px rgba(186,117,23,.18);}
.ti-bar{width:16px;height:2px;background:var(--border-strong);}
.ti-bar.done{background:var(--ok);}
.verdict{font-size:12px;font-weight:700;padding:1px 7px;border-radius:4px;}
.verdict.ok{background:rgba(99,153,34,.14);color:var(--ok);}
.verdict.ng{background:rgba(192,57,43,.12);color:var(--ng);}
.verdict.hold{background:rgba(186,117,23,.16);color:var(--hold);}
.verdict.pending{background:var(--bg-input);color:var(--pending);}
/* ★ 4 章 #10：完成して判定を待つ（焼成待ちとは別）／4 章 #16：取りやめ（判定とは別の状態）・2026-09-23 */
.verdict.judge-wait{background:rgba(239,159,39,.15);color:#7a5410;}
.verdict.discontinued{background:var(--ink-wash);color:var(--text-lt);text-decoration:line-through;}
.trial-empty{font-size:12px;color:var(--text-muted);padding:8px 2px;margin:0;}

.m02-add{display:flex;flex-direction:column;gap:6px;}
.m02-add form{display:flex;flex-direction:column;gap:6px;}
.m02-add-actions{display:flex;gap:6px;justify-content:flex-end;}
.m02-add select,.m02-add input{font-size:12px;padding:6px 8px;border:1px solid var(--border);border-radius:6px;background:var(--bg-input);}
.add-trial{font-size:12px;padding:8px;border:1px dashed var(--border-strong);border-radius:8px;
  background:none;color:var(--text-muted);cursor:pointer;}
.add-trial:hover{background:var(--bg-hover);color:var(--text);}

.rc-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:12px;}
.rc-title{font-size:12px;color:var(--text-muted);margin-bottom:8px;}
.rc-btn{width:100%;}
.rc-hint{margin-top:6px;font-size:12px;color:var(--text-muted);}
.rc-hint.ok{color:var(--ok);}

/* ---- 右ペイン ---- */
.m02-detail{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:16px;min-width:0;}
.empty-detail{display:flex;gap:14px;align-items:flex-start;font-size:13px;line-height:1.7;}
.ed-icon{font-size:28px;}
.detail-head{border-bottom:1px solid var(--border);padding-bottom:14px;}
.dh-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.dh-type{font-size:12px;padding:2px 8px;border-radius:4px;background:var(--bg-input);color:var(--text-muted);}
.dh-label{font-size:19px;font-weight:700;}
.dh-hinban{font-size:12px;font-family:var(--mono);}
.dh-hinban.muted{color:var(--text-muted);font-family:inherit;}
.dh-verdict-wrap{display:flex;align-items:center;gap:6px;margin-left:auto;}
.dh-verdict-label{font-size:12px;color:var(--text-muted);}
.dh-select{flex:0 0 auto;width:auto;min-width:8.5em;font-size:12px;padding:5px 8px;
  border:1px solid var(--border-strong);border-radius:6px;background:var(--bg-input);}
.dh-select:disabled{opacity:.55;cursor:not-allowed;}
.dh-select.sel-ok{border-color:var(--ok);color:var(--ok);font-weight:700;}
.dh-select.sel-ng{border-color:var(--ng);color:var(--ng);font-weight:700;}
.dh-select.sel-hold{border-color:var(--hold);color:var(--hold);font-weight:700;}
.dh-verdict-note{font-size:12px;color:var(--text-muted);}

.stepper{display:flex;align-items:center;margin-top:16px;}
.step{display:flex;flex-direction:column;align-items:center;gap:5px;}
.step-dot{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:700;background:var(--bg-input);border:2px solid var(--border-strong);color:var(--text-muted);}
.step.done .step-dot{background:var(--ok);border-color:var(--ok);color:#fff;}
.step.cur .step-dot{background:var(--hold);border-color:var(--hold);color:#fff;box-shadow:0 0 0 4px rgba(186,117,23,.18);}
.step-name{font-size:12px;color:var(--text-muted);white-space:nowrap;}
.step.done .step-name,.step.cur .step-name{color:var(--text);}
.step-line{flex:1;height:2px;background:var(--border-strong);margin:0 6px 18px;}
.step-line.done{background:var(--ok);}
.step-note{margin-top:10px;font-size:12px;color:var(--text-muted);}
.stop-note{color:var(--text-md);background:var(--ink-wash);padding:6px 10px;border-radius:6px}
.client-note{margin-top:10px;display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted);}
.client-note .cn-dot{width:8px;height:8px;border-radius:50%;background:var(--hold);}
.client-note.approved .cn-dot{background:var(--ok);}

.detail-body{padding-top:4px;}
.stage-guide{margin-top:14px;padding:12px;border-radius:8px;background:var(--bg-input);font-size:12px;line-height:1.7;}
.section{margin-top:16px;}
.section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;
  border-bottom:1px solid var(--border);padding-bottom:6px;margin-bottom:8px;}
.section-title{font-size:13px;font-weight:700;}
.btn-edit{font-size:12px;padding:3px 10px;border:1px solid var(--border-strong);border-radius:6px;
  background:var(--bg-input);cursor:pointer;}
.btn-edit:disabled{opacity:.5;cursor:not-allowed;}
.section.pending .section-title{color:var(--text-muted);}
.section-body{font-size:12px;}
.section-body.muted,.section-body .muted{color:var(--text-muted);}
.scroll-x{overflow-x:auto;}
.m02-page .tbl{width:100%;border-collapse:collapse;font-size:12px;}
.m02-page .tbl th{text-align:left;font-size:12px;color:var(--text-muted);font-weight:500;
  padding:4px 8px;border-bottom:1px solid var(--border);white-space:nowrap;}
.m02-page .tbl td{padding:5px 8px;border-bottom:1px solid var(--border);min-width:6.5em;}
.m02-page .tbl td.num{width:1%;white-space:nowrap;min-width:0;text-align:right;font-family:var(--mono);}
.m02-page .tbl td.strong{font-weight:700;font-family:var(--mono);}
.m02-page .tbl td.tight{min-width:4.5em;white-space:nowrap;}
.kv-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px 14px;margin-bottom:8px;}
.kv-grid dt{font-size:12px;color:var(--text-muted);margin:0;}
.kv-grid dd{font-size:12px;margin:0;}
.firing-result{padding:8px;border-radius:6px;background:var(--bg-input);}
.submit-line{margin-top:6px;font-size:12px;}
.pass-ok{color:var(--ok);font-weight:700;}
.pass-ng{color:var(--ng);font-weight:700;}
.pass-none{color:var(--text-muted);}
.series-chip{font-size:12px;padding:2px 8px;border-radius:4px;background:var(--bg-input);font-family:var(--mono);}
.series-chip.cur{background:rgba(91,141,190,.14);font-weight:700;}
.series-arrow{margin:0 6px;color:var(--text-muted);}

.detail-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  border-top:1px solid var(--border);margin-top:18px;padding-top:14px;}
.gate-hint{font-size:12px;color:var(--text-muted);}

/* ---- 編集スライドパネル（ヘッダ・フッタ固定＋本文スクロール／§4 #8・§6-8） ---- */
/* ★ スライドパネルは M-02／M-06／M-07 で共通。1画面に閉じ込めると他画面で崩れる
   （M-07 で実際に崩れた。ページ内に流し込まれてオーバーレイにならなかった） */
.edit-overlay{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:60;display:flex;justify-content:flex-end;}
.edit-panel{width:min(640px,94vw);height:100%;background:var(--bg-card);display:flex;flex-direction:column;}
.edit-panel form{display:flex;flex-direction:column;height:100%;min-height:0;}
.ep-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;
  border-bottom:1px solid var(--border);flex:0 0 auto;}
.ep-title{font-size:14px;font-weight:700;}
.ep-close{font-size:19px;line-height:1;background:none;border:none;cursor:pointer;color:var(--text-muted);}
.ep-body{flex:1 1 auto;overflow-y:auto;padding:16px;}
.ep-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;
  border-top:1px solid var(--border);flex:0 0 auto;}
.ep-hint{font-size:12px;color:var(--text-muted);margin-top:8px;}
.fld{display:block;margin-bottom:12px;}
.fld > span{display:block;font-size:12px;color:var(--text-muted);margin-bottom:3px;}
.fld input,.fld textarea{width:100%;font-size:13px;padding:7px 9px;border:1px solid var(--border-strong);
  border-radius:6px;background:var(--bg-input);}
.fld input.w-narrow{width:10em;}
.form-tbl input,.form-tbl select{width:100%;font-size:12px;padding:5px 6px;
  border:1px solid var(--border-strong);border-radius:5px;background:var(--bg-input);}
.form-tbl input.w-narrow{width:6em;}
.m02-page .form-tbl td{min-width:7em;}

@media (max-width:820px){
  .m02-workspace{grid-template-columns:1fr;}
  .m02-rail{position:static;}
  .kv-grid{grid-template-columns:1fr;}
}

/* ============================================================
   M-06 成形一覧・成形記録（タブレット）
   正：モック 50_nk_M06_forming_list_record_v1.html（中畑氏作成）
   ★ 当社修正3点（文字サイズ・ファイル名ASCII・title→常時表示）は維持
   ★ 色はアプリの配色に寄せる（M-01/M-02 と同じ扱い）
   ============================================================ */
.m06-page,.m06-record{--yet:#8A8F96;--wip:#BA7517;--done:#639922;
  --text:var(--text-dk);--text-muted:var(--text-lt);
  --border-strong:#B9B7AC;--bg-input:var(--bg-cream);--bg-hover:var(--bg-cream);
  font-size:13px;color:var(--text-dk);}
.m06-page [x-cloak],.m06-record [x-cloak]{display:none !important;}

.clay-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 10px;}
.clay-label{font-size:12px;color:var(--text-lt);}
.clay-chip{font-size:12px;padding:2px 10px;border-radius:12px;border:1px solid var(--border);
  background:var(--bg-card);color:var(--text-md);text-decoration:none;}
.clay-chip.active{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:700;}

/* ---- 一覧カード（M-01 と骨格を揃える） ---- */
.m06-cards{display:flex;flex-direction:column;gap:10px;margin-bottom:16px;}
.fcard{display:flex;align-items:flex-start;gap:12px;background:var(--bg-card);
  border:1px solid var(--border);border-radius:10px;padding:12px 14px;text-decoration:none;color:inherit;}
.fcard:hover{background:var(--bg-cream);}
.fcard-status{flex:0 0 auto;}
.status-badge{display:inline-block;font-size:12px;font-weight:700;padding:3px 9px;border-radius:5px;white-space:nowrap;}
.status-badge.st-yet{background:var(--ink-wash);color:#5F5E5A;}
.status-badge.st-wip{background:var(--amber-wash);color:#8A5610;}
.status-badge.st-done{background:rgba(99,153,34,.14);color:#4C7519;}
.fcard-main{flex:1 1 auto;min-width:0;}
.fcard-head{font-size:14px;font-weight:700;margin-bottom:3px;}
.fcard-meta{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--text-md);margin-bottom:6px;}
.fc-client{font-weight:700;color:var(--text-dk);}
.fc-codes{font-family:var(--mono);color:var(--text-lt);}
.fcard-specs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px;}
.spec-chip{font-size:12px;padding:2px 8px;border-radius:4px;background:var(--bg-cream);
  border:1px solid var(--border);color:var(--text-md);}
.spec-chip.clay{background:var(--sage-wash);}
.spec-chip.grp{background:var(--blue-wash);}
.spec-chip.off{background:var(--clay-wash);}
.fcard-prog{max-width:420px;}
.prog-track{height:6px;border-radius:3px;background:var(--ink-wash);overflow:hidden;}
.prog-fill{height:100%;}
.prog-fill.st-yet{background:var(--text-lt);}
.prog-fill.st-wip{background:#BA7517;}
.prog-fill.st-done{background:#639922;}
.prog-text{font-size:12px;color:var(--text-lt);margin-top:3px;}
.fcard-right{flex:0 0 auto;text-align:right;}
.fcard-right .rlabel{font-size:11px;color:var(--text-lt);}
.fcard-right .rval{font-size:12px;font-weight:700;font-family:var(--mono);}
.fcard-right .rval.none{color:var(--text-lt);font-family:inherit;}
.fcard-arrow{flex:0 0 auto;color:var(--text-lt);font-size:19px;align-self:center;}

/* ---- 成形記録 ---- */
.rec-sub{font-size:12px;color:var(--text-md);margin:0 0 10px;}
.grp-note{color:#2B6B96;}
.m06-alert{margin:0 0 12px;padding:10px 12px;border-radius:8px;font-size:12px;
  background:rgba(192,57,43,.10);border:1px solid rgba(192,57,43,.35);color:#8E2B22;}
.overview{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start;margin-bottom:18px;}
.ov-box{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:12px;min-width:0;}
.ov-h{display:flex;align-items:center;justify-content:space-between;gap:8px;
  font-size:12px;font-weight:700;margin-bottom:8px;}
.mini-add{font-size:12px;padding:3px 9px;border:1px solid var(--border-strong);border-radius:6px;
  background:var(--bg-cream);cursor:pointer;white-space:nowrap;}
.nc-line{display:flex;align-items:baseline;gap:6px;margin-bottom:2px;}
.nc-k{font-size:12px;color:var(--text-lt);width:1.6em;}
.nc-line b{font-size:22px;font-family:var(--mono);}
.nc-line small{font-size:12px;color:var(--text-lt);}
.nc-sub{font-size:12px;color:var(--text-md);margin-top:4px;}
.v-clay{color:#4C7519;}
.v-cond{color:#8A5610;}
.ov-upd{font-size:11px;color:var(--text-lt);margin-top:8px;}
.ov-empty{text-align:center;color:var(--text-lt);padding:26px 6px;font-size:12px;}
.itemtable,.prodtable,.histtable{width:100%;border-collapse:collapse;font-size:12px;}
.itemtable th,.prodtable th,.histtable th{text-align:left;font-size:12px;color:var(--text-lt);
  font-weight:500;padding:4px 8px;border-bottom:1px solid var(--border);white-space:nowrap;}
.itemtable td,.prodtable td,.histtable td{padding:5px 8px;border-bottom:1px solid var(--border);min-width:6.5em;}
.itemtable .im,.prodtable .pd,.histtable .pd{font-family:var(--mono);white-space:nowrap;width:1%;min-width:0;}
.itemtable .in,.prodtable .pq,.prodtable .png,.prodtable .pw,.histtable .num{
  width:1%;white-space:nowrap;min-width:0;text-align:right;font-family:var(--mono);}
.prodtable .pq small,.prodtable .png small,.prodtable .pw small{font-size:11px;color:var(--text-lt);font-family:var(--sans);}
.prodtable .psp{font-family:var(--mono);font-size:12px;white-space:nowrap;width:1%;min-width:0;}
.prodtable .psrc,.histtable .psrc{font-size:12px;color:var(--text-lt);white-space:nowrap;width:1%;min-width:0;}
/* ★ 定義書 10-14：成形記録の担当（切り替えが入っているときだけ出る） */
.prodtable .pstaff{font-size:13px;white-space:nowrap}
/* ★ 定義書 10-14：読取確認の「まとめて入れる準備（対象を特定しない）」 */
.addin.day-prep{margin:6px 0 14px}
.itemtable .iact{width:1%;min-width:0;}
.itemtable .iact button{font-size:12px;padding:2px 8px;border:1px solid var(--border-strong);
  border-radius:5px;background:var(--bg-cream);cursor:pointer;white-space:nowrap;}
.histtable tr.is-current{background:var(--bg-cream);}
.cur-tag{font-size:11px;margin-left:6px;padding:1px 5px;border-radius:3px;
  background:rgba(99,153,34,.14);color:#4C7519;font-family:var(--sans);}
.item-sum,.prod-sum{font-size:12px;color:var(--text-md);margin-top:8px;}
.act-note{font-size:12px;color:var(--text-md);margin-top:6px;padding:5px 8px;
  border-radius:5px;background:var(--bg-cream);}
.ref-note,.note-sm{font-size:12px;line-height:1.7;color:var(--text-md);margin-top:8px;}
.sec-h{display:flex;align-items:center;justify-content:space-between;gap:8px;
  font-size:13px;font-weight:700;border-bottom:1px solid var(--border);
  padding-bottom:6px;margin:18px 0 8px;}
.span-row{display:flex;align-items:center;gap:6px;margin-bottom:5px;}
.span-row input{width:9em;}

@media (max-width:820px){
  .overview{grid-template-columns:1fr;}
  .fcard{flex-wrap:wrap;}
}

/* ============================================================
   M-07 日報（タブレット・カレンダー起点）
   正：モック 50_nk_M07_daily_report_v1.html（中畑氏作成）
   ★ バー右側の「実働◯／準備◯」は常時表示（title 属性は使わない）
   ============================================================ */
.m07-page,.m07-day{--work:#4A90D9;--prep:#B8801E;--todo:#BA7517;--done:#639922;
  --text:var(--text-dk);--text-muted:var(--text-lt);
  --border-strong:#B9B7AC;--bg-input:var(--bg-cream);--bg-hover:var(--bg-cream);
  font-size:13px;color:var(--text-dk);}
.m07-page [x-cloak],.m07-day [x-cloak]{display:none !important;}
.m07-alert{margin:0 0 12px;padding:10px 12px;border-radius:8px;font-size:12px;
  background:rgba(192,57,43,.10);border:1px solid rgba(192,57,43,.35);color:#8E2B22;}
.share-note{font-size:12px;line-height:1.7;color:var(--text-md);margin:0 0 12px;
  padding:10px 12px;border-radius:8px;background:var(--bg-cream);}
.today-btn{display:inline-block;min-height:52px;line-height:32px;margin-bottom:14px;}

/* ---- カレンダー ---- */
.cal-bar{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.cal-title{font-size:14px;font-weight:700;margin:0 4px;}
.cal-legend{display:flex;gap:14px;font-size:12px;color:var(--text-lt);margin-bottom:8px;}
.cal-legend .dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px;}
.cal-legend .dot.todo{background:#BA7517;}
.cal-legend .dot.done{background:#639922;}
.cal-legend .dim{opacity:.7;}
.cal-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px;}
.cal-dow span{text-align:center;font-size:12px;color:var(--text-lt);}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:10px;}
.cal-pad{min-height:56px;}
.cal-day{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  min-height:56px;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);
  text-decoration:none;color:var(--text-lt);}
.cal-day:hover{background:var(--bg-cream);}
.cal-day .cd-n{font-size:13px;font-family:var(--mono);}
.cal-day .cd-dot{width:7px;height:7px;border-radius:50%;}
.cal-day.st-todo{color:var(--text-dk);border-color:#DCC49A;background:var(--amber-wash);}
.cal-day.st-todo .cd-dot{background:#BA7517;}
.cal-day.st-done{color:var(--text-dk);}
.cal-day.st-done .cd-dot{background:#639922;}
.cal-day.is-today{box-shadow:0 0 0 2px var(--primary) inset;}
.cal-sum{font-size:12px;color:var(--text-md);margin-bottom:14px;}

/* ---- その日の日報 ---- */
.subtop{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  padding:10px 12px;border-radius:8px;margin-bottom:14px;font-size:12px;}
.subtop.ok{background:var(--bg-cream);border:1px solid var(--border);}
.subtop.done{background:rgba(99,153,34,.10);border:1px solid rgba(99,153,34,.35);}
.subtop .msg{flex:1 1 240px;}
.day-total{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px;}
.dt-item{flex:1 1 140px;background:var(--bg-card);border:1px solid var(--border);
  border-radius:10px;padding:10px 12px;}
.dt-item .dt-k{display:block;font-size:12px;color:var(--text-lt);margin-bottom:2px;}
.dt-item b{font-size:19px;font-family:var(--mono);}
.dt-item.dt-sum{background:var(--bg-cream);}
.klegend{display:flex;gap:12px;font-size:12px;font-weight:400;color:var(--text-lt);}
.klegend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;}
.klegend .lg-w{background:#4A90D9;}
.klegend .lg-p{background:#B8801E;}
.kbars{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;}
.kbar{display:grid;grid-template-columns:5em 1fr auto auto;gap:10px;align-items:center;}
.kbar-n{font-size:12px;font-weight:700;}
.kbar-t{display:flex;height:14px;border-radius:3px;background:var(--ink-wash);overflow:hidden;}
.kbar-t i{display:block;height:100%;}
.kbar-t i.w{background:#4A90D9;}
.kbar-t i.p{background:#B8801E;}
.kbar-q{font-size:12px;color:var(--text-lt);font-family:var(--mono);white-space:nowrap;}
.kbar-v{text-align:right;white-space:nowrap;}
.kbar-v b{font-size:12px;font-family:var(--mono);}
.kbar-v small{display:block;font-size:11px;color:var(--text-lt);}
.kbadge{display:inline-block;font-size:11px;font-weight:700;color:#fff;
  padding:2px 8px;border-radius:4px;white-space:nowrap;}
.cat-tag{font-size:11px;padding:1px 5px;border-radius:3px;background:var(--sage-wash);
  color:#4C7519;margin-right:4px;}
.m07-day .dim{color:var(--text-lt);}
.day-actions{margin-top:14px;}
.add-work{width:100%;min-height:52px;}

/* ---- 追加パネル ---- */
.m07-day .field{margin-bottom:14px;}
.m07-day .field > label,.m07-day .flabel{display:block;font-size:12px;color:var(--text-md);
  font-weight:700;margin-bottom:5px;}
.m07-day .field select,.m07-day .field input[type=text],.m07-day .field input[type=number]{
  width:100%;font-size:13px;padding:7px 9px;border:1px solid var(--border-strong);
  border-radius:6px;background:var(--bg-input);}
.m07-day .field input.w-narrow{width:10em;}
.fhint{font-size:12px;color:var(--text-lt);margin-top:4px;line-height:1.6;}
.ktiles{display:flex;gap:6px;flex-wrap:wrap;}
.ktile{position:relative;}
.ktile input{position:absolute;opacity:0;pointer-events:none;}
.ktile span{display:inline-block;min-height:44px;line-height:30px;padding:6px 14px;
  border:1px solid var(--border-strong);border-radius:8px;background:var(--bg-input);
  font-size:12px;cursor:pointer;}
.ktile.on span{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:700;}
.cat-switch{display:inline-flex;border:1px solid var(--border-strong);border-radius:8px;overflow:hidden;}
.cat-btn{position:relative;}
.cat-btn input{position:absolute;opacity:0;pointer-events:none;}
.cat-btn span{display:inline-block;min-height:42px;line-height:28px;padding:6px 18px;
  background:var(--bg-input);font-size:12px;cursor:pointer;}
.cat-btn.on span{background:var(--primary);color:#fff;font-weight:700;}

/* ============================================================
   M-08 生産データ管理（PC・管理者／工場長向け）
   正：モック 50_nk_M08_prod_data_v1.html（中畑氏作成）
   ★ 直課と配賦は色を分け、画面上でも混ぜない
   ============================================================ */
.m08-page{--c-direct:#3B82B6;--c-alloc:#EF9F27;
  --text:var(--text-dk);--text-muted:var(--text-lt);
  --border-strong:#B9B7AC;--bg-input:var(--bg-cream);
  font-size:12px;color:var(--text-dk);}
.filter-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;
  padding:10px 14px;margin-bottom:14px;}
.filter-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.filter-label{font-size:12px;color:var(--text-lt);margin-right:4px;}
.m08-page .chip{font-size:12px;padding:3px 12px;border-radius:14px;border:1px solid var(--border);
  background:var(--bg-cream);color:var(--text-md);text-decoration:none;}
.m08-page .chip.active{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:700;}
.range-note{font-size:12px;color:var(--text-lt);margin-left:auto;}

.check-band{background:var(--amber-wash);border:1px solid #DCC49A;border-radius:10px;
  padding:12px 14px;margin-bottom:14px;}
.cb-title{font-size:13px;font-weight:700;margin-bottom:6px;}
.cb-sub{font-size:12px;font-weight:400;color:var(--text-md);margin-left:6px;}
.cb-row{display:flex;align-items:baseline;gap:8px;font-size:12px;margin-bottom:3px;}
.cb-k{color:var(--text-md);}
.cb-row b{color:#8A5610;font-size:14px;}
.cb-note{font-size:12px;line-height:1.7;color:var(--text-md);margin-top:8px;}

.kpis{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px;}
.kpi{flex:1 1 160px;background:var(--bg-card);border:1px solid var(--border);
  border-radius:10px;padding:10px 14px;}
.kpi-k{font-size:12px;color:var(--text-lt);}
.kpi-v{font-size:22px;font-weight:700;font-family:var(--mono);line-height:1.25;}
.kpi-v small{font-size:12px;font-weight:400;margin-left:2px;}
.kpi-v.v-direct{color:#2B6B96;}
.kpi-v.v-alloc{color:#8A5610;}
.kpi-s{font-size:11px;color:var(--text-lt);}

.m08-page .sec{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;
  padding:14px 16px;margin-bottom:18px;}
.m08-page .sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;
  flex-wrap:wrap;margin-bottom:10px;}
.m08-page .sec-title{font-size:13px;font-weight:700;}
.m08-page .sec-sub{font-size:12px;color:var(--text-md);}
.m08-page .legend{display:flex;gap:12px;font-size:12px;color:var(--text-lt);}
.m08-page .legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;}
.legend .lg-direct{background:#3B82B6;}
.legend .lg-alloc{background:#EF9F27;}
.ptable{width:100%;border-collapse:collapse;font-size:12px;}
.ptable th{text-align:left;font-size:12px;color:var(--text-lt);font-weight:500;
  padding:5px 8px;border-bottom:1px solid var(--border);white-space:nowrap;}
.ptable th.r{text-align:right;}
.ptable td{padding:6px 8px;border-bottom:1px solid var(--border);vertical-align:top;}
.ptable td.r{text-align:right;}
.ptable td.num{font-family:var(--mono);white-space:nowrap;width:1%;}
.ptable td.strong{font-weight:700;}
.ptable td.pl{min-width:8em;}
.ptable tfoot td{border-top:2px solid var(--border);border-bottom:none;font-weight:700;background:var(--bg-cream);}
.c-sub{display:block;font-size:11px;color:var(--text-lt);font-family:var(--sans);font-weight:400;}
.mixbar{display:flex;height:12px;min-width:120px;border-radius:3px;background:var(--ink-wash);overflow:hidden;}
.mixbar i{display:block;height:100%;}
.mixbar i.d{background:#3B82B6;}
.mixbar i.a{background:#EF9F27;}
.burn{font-weight:700;}
.burn.over{color:#B23B3B;}
.m08-page .verdict{display:inline-block;font-size:12px;font-weight:700;padding:2px 9px;border-radius:5px;white-space:nowrap;}
.verdict.v-over{background:rgba(178,59,59,.12);color:#8E2B22;}
.verdict.v-ok{background:rgba(99,153,34,.14);color:#4C7519;}
.verdict.v-pending{background:var(--amber-wash);color:#8A5610;}
.verdict.v-none{background:var(--ink-wash);color:var(--text-lt);}
.other-break{font-size:12px;color:var(--text-md);margin-top:8px;padding:6px 10px;
  border-radius:6px;background:var(--bg-cream);}
.unmatched-note{margin-top:10px;padding:10px 12px;border-radius:8px;font-size:12px;
  background:var(--blue-wash);border:1px solid #BCD2E4;}
.m08-page .note-sm{font-size:12px;line-height:1.8;color:var(--text-md);margin-top:10px;}
.m08-page .muted{color:var(--text-lt);}

/* ============================================================
   M-09 工数入力（タブレット・工場長）
   正：モック 50_nk_M09_labor_entry_v1.html（中畑氏作成）
   ★ 「うち案件なし◯人時（◯%）」は常時表示（title 属性は使わない）
   ============================================================ */
.m09-page{--warn:#BA7517;
  --text:var(--text-dk);--text-muted:var(--text-lt);
  --border-strong:#B9B7AC;--bg-input:var(--bg-cream);--bg-hover:var(--bg-cream);
  font-size:13px;color:var(--text-dk);}
.m09-page [x-cloak]{display:none !important;}
.m09-alert{margin:0 0 12px;padding:10px 12px;border-radius:8px;font-size:12px;
  background:rgba(192,57,43,.10);border:1px solid rgba(192,57,43,.35);color:#8E2B22;}
.daybar{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.daybar .day{font-size:14px;font-weight:700;margin:0 4px;}
.day-meta{font-size:12px;color:var(--text-md);margin-bottom:10px;}
.day-meta b{font-family:var(--mono);font-size:14px;color:var(--text-dk);}
.alloc{display:inline-block;margin-left:10px;padding:2px 10px;border-radius:12px;
  background:var(--bg-cream);border:1px solid var(--border);font-size:12px;}
.alloc.over{background:var(--amber-wash);border-color:#DCC49A;color:#8A5610;font-weight:700;}
.alloc-note{display:block;font-size:12px;color:var(--text-lt);margin-top:3px;}
.m09-page .tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px;}
.m09-page .tools .note{font-size:12px;color:var(--text-lt);}

.mtx{width:100%;border-collapse:separate;border-spacing:4px;}
.mtx th{font-size:12px;color:var(--text-lt);font-weight:500;padding:2px 4px;text-align:center;}
.mtx th small{display:block;font-size:11px;font-family:var(--mono);}
.mtx th.mtx-proc,.mtx td.mtx-proc{width:7em;text-align:left;font-size:12px;font-weight:700;white-space:nowrap;}
.pdot{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:6px;}
.mtx-cell{padding:0;}
.cell-btn{width:100%;min-height:64px;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:2px;border:1px dashed var(--border-strong);border-radius:8px;
  background:var(--bg-card);cursor:pointer;padding:6px 4px;}
.cell-btn:hover{background:var(--bg-cream);}
.mtx-cell.filled .cell-btn{border-style:solid;border-color:var(--primary);
  background:rgba(184,80,66,.06);}
.cell-n{font-size:19px;font-weight:700;font-family:var(--mono);}
.cell-n small{font-size:11px;font-weight:400;margin-left:1px;}
.cell-sub{font-size:11px;color:var(--text-md);font-family:var(--mono);
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cell-sub.task{font-family:var(--sans);}
.cell-empty{font-size:19px;color:var(--text-lt);}

.calbox{margin-top:18px;background:var(--bg-card);border:1px solid var(--border);
  border-radius:10px;padding:12px 14px;}
.cal-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.cal-title{font-size:12px;font-weight:700;}
.cal-label{font-size:12px;font-family:var(--mono);}
.cal-legend{display:flex;gap:12px;font-size:11px;color:var(--text-lt);margin-left:auto;}
.cal-legend .lg{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;
  border:1px solid var(--border);}
.cal-legend .lg.has{background:var(--primary);border-color:var(--primary);}
.cal-legend .lg.none{background:var(--bg-card);}
.cal-legend .lg.sun{background:var(--ink-wash);}
.m09-page .cal-note{font-size:11px;color:var(--text-lt);margin:6px 0 8px;}
.m09-page .cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;}
.m09-page .cal-pad{min-height:34px;}
.m09-page .cal-day{display:flex;align-items:center;justify-content:center;min-height:34px;
  border:1px solid var(--border);border-radius:6px;background:var(--bg-card);
  font-size:12px;font-family:var(--mono);color:var(--text-md);text-decoration:none;}
.m09-page .cal-day.has{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:700;}
.m09-page .cal-day.sun{background:var(--ink-wash);color:var(--text-lt);}
.m09-page .cal-day.cur{box-shadow:0 0 0 2px var(--text-dk) inset;}
.m09-page .foot-note{font-size:12px;line-height:1.9;color:var(--text-md);margin-top:14px;}

.numpad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-width:320px;}
.npad{position:relative;}
.npad input{position:absolute;opacity:0;pointer-events:none;}
.npad span{display:flex;align-items:center;justify-content:center;min-height:52px;
  border:1px solid var(--border-strong);border-radius:8px;background:var(--bg-input);
  font-size:17px;font-family:var(--mono);cursor:pointer;}
.npad.on span{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:700;}
.m09-page .field{margin-bottom:16px;}
.m09-page .field > label{display:block;font-size:12px;color:var(--text-md);font-weight:700;margin-bottom:6px;}
.m09-page .field select,.m09-page .field input[type=text]{width:100%;font-size:13px;padding:8px 10px;
  border:1px solid var(--border-strong);border-radius:6px;background:var(--bg-input);}
.m09-page .btn-sm{padding:2px 8px;font-size:12px;}

/* ============================================================
   M-10 ノート撮影（タブレット）
   ★ モックに実装が無いため当社設計
   ★ title 属性は使わず、注意書きは常時表示の文字で出す
   ============================================================ */
.m10-page{--text:var(--text-dk);--text-muted:var(--text-lt);
  --border-strong:#B9B7AC;--bg-input:var(--bg-cream);
  font-size:13px;color:var(--text-dk);}
.m10-page [x-cloak]{display:none !important;}
.m10-notice{padding:12px 14px;border-radius:8px;margin-bottom:14px;font-size:12px;line-height:1.8;
  background:var(--amber-wash);border:1px solid #DCC49A;}

.cam-box{position:relative;background:#2C2C2A;border-radius:12px;overflow:hidden;
  aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;}
.cam-view{width:100%;height:100%;object-fit:contain;background:#000;}
.cam-canvas{display:none;}
.cam-placeholder{text-align:center;color:#E8E6DF;padding:20px;}
.cam-ph-icon{font-size:38px;margin-bottom:8px;}
.cam-placeholder p{font-size:13px;margin:0 0 4px;}
.cam-ph-sub{font-size:12px;color:#B9B7AC;}

.cam-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:12px 0;}
.cam-shoot{min-height:56px;flex:1 1 200px;font-size:14px;}
.cam-file{position:relative;overflow:hidden;min-height:56px;line-height:36px;}
.cam-file input{position:absolute;inset:0;opacity:0;cursor:pointer;}
.cam-error{font-size:12px;color:#8E2B22;background:rgba(192,57,43,.08);
  border:1px solid rgba(192,57,43,.3);border-radius:6px;padding:8px 10px;line-height:1.7;}

.shots{margin-top:8px;}
.shot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin-bottom:12px;}
.shot{border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--bg-card);}
.shot img{width:100%;display:block;aspect-ratio:4/3;object-fit:cover;}
.shot-bar{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:5px 8px;font-size:12px;}
.shot-st{color:var(--text-md);}
.shot.st-sent .shot-st{color:#4C7519;font-weight:700;}
.shot.st-failed{border-color:rgba(192,57,43,.45);}
.shot.st-failed .shot-st{color:#8E2B22;font-weight:700;}
.shot-del{font-size:11px;border:none;background:none;color:var(--text-lt);cursor:pointer;}
.shot-reason{font-size:11px;line-height:1.6;color:#8E2B22;margin:0;padding:0 8px 8px;}
.shot-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:16px;}
.shot-note{font-size:12px;color:var(--text-md);line-height:1.7;flex:1 1 240px;}

.ocr-table{width:100%;border-collapse:collapse;font-size:12px;}
.ocr-table th{text-align:left;font-size:12px;color:var(--text-lt);font-weight:500;
  padding:5px 8px;border-bottom:1px solid var(--border);white-space:nowrap;}
.ocr-table td{padding:6px 8px;border-bottom:1px solid var(--border);vertical-align:top;}
.ocr-table .pd{font-family:var(--mono);white-space:nowrap;width:1%;}
.ocr-st{display:inline-block;font-size:12px;font-weight:700;padding:2px 9px;border-radius:5px;white-space:nowrap;}
.ocr-st.st-queued{background:var(--ink-wash);color:#5F5E5A;}
.ocr-st.st-reading{background:var(--blue-wash);color:#2B6B96;}
.ocr-st.st-done{background:rgba(99,153,34,.14);color:#4C7519;}
.ocr-st.st-failed{background:rgba(178,59,59,.12);color:#8E2B22;}
/* ★ 取込済み・一部取込済み（回答書 2026-10-03 3 章 1） */
.ocr-st.st-imported{background:var(--blue-wash);color:#2B6B96;margin-left:4px;}
.ocr-reason{display:block;font-size:12px;color:var(--text-md);margin-top:3px;line-height:1.6;}
.ocr-act{min-width:14em;}
.m10-page .dim{color:var(--text-lt);font-size:12px;}
.m10-page .foot-note{font-size:12px;line-height:1.9;color:var(--text-md);margin-top:16px;}
.m10-page .btn-sm{padding:2px 10px;font-size:12px;}

/* ============================================================
   M-11 読取確認（タブレット）
   正：モック 60_pg_A02_ocr_review_v1.html
   ★ 判定はサーバー済み。ここは見た目だけ
   ============================================================ */
.m11-page{--ok:#639922;--chk:#BA7517;--un:#8A8F96;
  --text:var(--text-dk);--text-muted:var(--text-lt);
  --border-strong:#B9B7AC;--bg-input:var(--bg-cream);
  font-size:13px;color:var(--text-dk);padding-bottom:80px;}
.m11-page [x-cloak]{display:none !important;}

.ltabs{display:flex;gap:6px;margin-bottom:12px;}
.ltab{font-size:12px;padding:8px 16px;border:1px solid var(--border);border-radius:8px 8px 0 0;
  background:var(--bg-cream);color:var(--text-md);cursor:pointer;border-bottom:none;}
.ltab.on{background:var(--bg-card);color:var(--text-dk);font-weight:700;
  box-shadow:0 -2px 0 var(--primary) inset;}
.ltab .n{display:inline-block;margin-left:6px;font-size:12px;font-family:var(--mono);
  background:var(--ink-wash);padding:0 6px;border-radius:8px;}

.note-strip{font-size:12px;line-height:1.8;padding:10px 12px;border-radius:8px;
  background:var(--blue-wash);border:1px solid #BCD2E4;margin-bottom:14px;}
.ocr-block{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;
  padding:14px 16px;margin-bottom:18px;}
.block-top{display:flex;justify-content:space-between;gap:12px;margin-bottom:10px;}
.m11-page .read-heads{min-width:0}
.read-lbl{font-size:12px;color:var(--text-lt);margin-bottom:4px;}
.m11-page .kv{display:flex;gap:8px;font-size:12px;padding:1px 0;}
.m11-page .kv .k{color:var(--text-lt);width:4.5em;}
.m11-page .kv .v{font-weight:700;}
.m11-page .kv .v.low{color:#8A5610;background:var(--amber-wash);padding:0 6px;border-radius:4px;}

.match{border-radius:8px;padding:10px 12px;margin-bottom:10px;}
.match.ok{background:rgba(99,153,34,.10);border:1px solid rgba(99,153,34,.35);}
.match.warn{background:var(--amber-wash);border:1px solid #DCC49A;}
.mhead{display:flex;align-items:center;gap:10px;margin-bottom:6px;flex-wrap:wrap;}
.mno{font-family:var(--mono);font-weight:700;}
.mcount{font-size:12px;color:var(--text-md);}
.m11-page .reason{font-size:12px;line-height:1.7;margin-bottom:8px;}
.m11-page .sel{width:100%;font-size:13px;padding:8px 10px;border:1px solid var(--border-strong);
  border-radius:6px;background:var(--bg-card);}
.m11-page .sel.slim{padding:5px 8px;font-size:12px;}
.sel-hint{font-size:12px;color:var(--text-md);margin-top:5px;line-height:1.6;}

.refbox{border:1px solid var(--border);border-radius:8px;padding:10px 12px;margin-bottom:10px;
  background:var(--bg-cream);}
.refbox.methodbox{background:rgba(99,153,34,.07);border-color:rgba(99,153,34,.3);}
.rlbl{font-size:12px;color:var(--text-md);margin-bottom:6px;line-height:1.6;}
.refgrid{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;font-family:var(--mono);}
.refgrid i{font-style:normal;font-size:11px;color:var(--text-lt);font-family:var(--sans);
  display:block;margin-bottom:1px;}
.mfields{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px;}
.mfld{display:flex;flex-direction:column;gap:3px;}
.mfld.grow{flex:1 1 240px;}
.mk{font-size:11px;color:var(--text-lt);}
.mhint,.dropped{font-size:11px;color:var(--text-md);margin-top:6px;line-height:1.7;}
.dropped code{font-family:var(--mono);background:var(--bg-card);padding:0 4px;border-radius:3px;}

.m11-page .sec-title{display:flex;justify-content:space-between;align-items:baseline;
  font-size:12px;font-weight:700;margin:16px 0 8px;padding-bottom:4px;border-bottom:1px solid var(--border);}
.m11-page .rows{display:flex;flex-direction:column;gap:10px;}
.rw{border:1px solid var(--border);border-radius:8px;padding:10px 12px;background:var(--bg-card);}
.rw.chk{border-color:#DCC49A;background:var(--amber-wash);}
.rw.settled,.rw.new{border-color:var(--border);background:var(--bg-card);}
.rw-top{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.rw-date{font-size:17px;font-weight:700;font-family:var(--mono);}
.rw-date small{display:block;font-size:11px;font-weight:400;color:var(--text-lt);font-family:var(--sans);}
.rw-qty{font-size:17px;font-weight:700;font-family:var(--mono);}
.rw-qty small{font-size:11px;font-weight:400;margin-left:1px;}
.m11-page .spans{display:flex;gap:6px;flex-wrap:wrap;}
.m11-page .span{font-size:12px;font-family:var(--mono);background:var(--ink-wash);
  padding:1px 7px;border-radius:4px;}
.m11-page .badge{margin-left:auto;font-size:12px;font-weight:700;padding:2px 9px;border-radius:5px;white-space:nowrap;}
.badge.b-new{background:var(--ink-wash);color:#5F5E5A;}
.badge.b-chk{background:rgba(186,117,23,.18);color:#8A5610;}
.badge.b-ok{background:rgba(99,153,34,.14);color:#4C7519;}
.badge.b-un{background:rgba(138,143,150,.18);color:#5F5E5A;}
.rw-memo{font-size:12px;color:var(--text-md);margin-top:6px;}

.m11-page .confirm{margin-top:10px;padding:10px 12px;border-radius:8px;background:var(--bg-card);
  border:1px solid #DCC49A;}
.confirm-done{margin-top:8px;font-size:12px;color:#4C7519;font-weight:700;}
.m11-page .msg{font-size:12px;line-height:1.8;margin-bottom:8px;}
.m11-page .msg code{font-family:var(--mono);background:var(--bg-cream);padding:0 5px;border-radius:3px;}
.dupgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px;}
.dupcol{border:1px solid var(--border);border-radius:6px;padding:8px 10px;background:var(--bg-cream);}
.dupcol.exist{background:var(--ink-wash);}
.duplbl{font-size:11px;color:var(--text-lt);margin-bottom:4px;}
.dupval{font-size:12px;font-family:var(--mono);}
.dupval.dim{color:var(--text-lt);font-family:var(--sans);font-size:12px;}
.m11-page .acts{display:flex;gap:8px;flex-wrap:wrap;}
.dup-btn{position:relative;}
.dup-btn input{position:absolute;opacity:0;pointer-events:none;}
.dup-btn span{display:inline-block;min-height:46px;line-height:30px;padding:8px 16px;
  border:1px solid var(--border-strong);border-radius:8px;background:var(--bg-cream);
  font-size:12px;cursor:pointer;}
.dup-btn.yes.on span{background:var(--ok);border-color:var(--ok);color:#fff;font-weight:700;}
.dup-btn.no.on span{background:var(--chk);border-color:var(--chk);color:#fff;font-weight:700;}
.dup-done{margin-top:8px;font-size:12px;line-height:1.7;color:#4C7519;}
/* 月の確定（§5-4 要確認の伝え方：44px 高・88px 幅・12px の間） */
.m11-page .month-confirm .acts{gap:12px;}
.m11-page .month-confirm .dup-btn span{min-height:44px;min-width:88px;text-align:center;}
.m11-page .msg .raw{display:block;color:var(--text-md);}
/* 原本の写真（成形ノート 2 章 4） */
.ocr-photo{margin:0 0 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);}
.ocr-photo summary{min-height:44px;display:flex;align-items:center;gap:6px;padding:0 12px;font-size:14px;font-weight:700;cursor:pointer;}
.ocr-photo img{display:block;max-width:100%;height:auto;margin:0 auto;border-top:1px solid var(--border);}
.ocr-photo-note{font-size:12px;color:var(--text-md);padding:6px 12px 10px;}
/* 候補（成形ノート 2 章 5） */
.cand-done{margin-top:8px;font-size:12px;}
.cand-done summary{cursor:pointer;color:var(--text-md);min-height:32px;}
.cand-list{display:flex;flex-direction:column;gap:4px;margin:8px 0 4px;}
.cand-h{font-size:12px;font-weight:700;color:var(--text-md);margin-top:8px;}
.cand{display:flex;align-items:center;gap:8px;min-height:44px;padding:4px 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-cream);font-size:13px;cursor:pointer;}
.cand small{color:var(--text-md);margin-left:6px;}
.cand.off{opacity:.55;cursor:not-allowed;}
.cand-done .cand{margin-top:4px;}
.dup-why,.why-inline{font-size:11px;line-height:1.7;color:var(--text-md);margin-top:8px;}
.dup-strip{font-size:12px;line-height:1.7;padding:10px 12px;border-radius:8px;
  background:var(--ink-wash);color:var(--text-md);}

.addin{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin-top:10px;}
.m11-page .fld{display:flex;flex-direction:column;gap:3px;}
.m11-page .fld label{font-size:11px;color:var(--text-lt);}
.m11-page .fld input{width:8em;font-size:13px;padding:6px 8px;border:1px solid var(--border-strong);
  border-radius:6px;background:var(--bg-input);}
.m11-page .why{flex:1 1 240px;font-size:11px;line-height:1.7;color:var(--text-md);}

.pool-heads{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--text-md);margin-top:6px;}
.pool-acts{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px;}
.pool-acts .sel{width:auto;min-width:16em;}

.rev-footer{position:sticky;bottom:0;display:flex;align-items:center;justify-content:space-between;
  gap:12px;flex-wrap:wrap;padding:12px 16px;margin-top:18px;
  background:var(--bg-card);border-top:1px solid var(--border);border-radius:10px 10px 0 0;
  box-shadow:0 -2px 12px rgba(44,44,42,.06);}
.rev-footer .st{font-size:12px;}
/* 読取確認：読み取った値を直す（回答書 2026-10-06 3 章）。タブレットで押しやすい高さ（44px） */
.rev-acts{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;}
.fix-head{margin:8px 0 10px;}
.fix-box{margin-top:10px;border:1px dashed var(--border-strong);border-radius:8px;background:var(--bg-card);}
.fix-box > summary{min-height:44px;display:flex;align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:700;cursor:pointer;}
.fix-tag{margin-left:6px;font-size:11px;font-weight:700;padding:1px 8px;border-radius:5px;background:var(--amber-wash);color:#8A5610;}
.fix-grid{display:flex;gap:12px;flex-wrap:wrap;padding:4px 12px 0;}
.fix-grid input,.fix-span input{min-height:40px;font-size:15px;padding:6px 8px;border:1px solid var(--border-strong);border-radius:6px;background:var(--bg-input);}
.fix-grid input[type=date]{width:11em;}
.fix-grid input[type=number]{width:9em;}
.fix-spans{padding:8px 12px 12px;display:flex;flex-direction:column;gap:6px;}
.fix-lbl{font-size:11px;color:var(--text-lt);}
.fix-lbl small{margin-left:8px;}
.fix-span{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.fix-span input[type=time]{width:7.5em;}
.fix-span-no{display:inline-block;width:1.6em;text-align:center;font-size:12px;color:var(--text-lt);}
.fix-read{display:block;font-size:11px;color:#8A5610;}
.fix-err{display:block;font-size:12px;color:var(--danger, #B42318);font-weight:700;}
.m11-page input.fix-num{width:8em;}
.m11-page .btn-sm{padding:4px 12px;font-size:12px;}

/* ============================================================
   A-14 権限設定
   正：モック 30_pg_auth_user_roles_v4.html #permissions
   ============================================================ */
.a14-page{font-size:12px;color:var(--text-dk);}
.a14-page .section-intro{font-size:12px;color:var(--text-md);margin:0 0 12px;}
.a14-alert{margin:0 0 12px;padding:10px 12px;border-radius:8px;font-size:12px;
  background:rgba(192,57,43,.10);border:1px solid rgba(192,57,43,.35);color:#8E2B22;}
.a14-note{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:8px;
  background:var(--amber-wash);border:1px solid #DCC49A;font-size:12px;line-height:1.8;margin-bottom:16px;}
.a14-note .ic{font-size:14px;}
.a14-page .panel-h{display:flex;align-items:center;justify-content:space-between;gap:10px;}

.matrix{width:100%;border-collapse:collapse;font-size:12px;}
.matrix th,.matrix td{border-bottom:1px solid var(--border);padding:7px 10px;text-align:center;}
.matrix thead th{font-size:12px;color:var(--text-lt);font-weight:500;white-space:nowrap;}
.matrix th.m-screen{text-align:left;min-width:14em;font-weight:700;}
.matrix th.m-screen small{display:block;font-size:11px;color:var(--text-lt);font-weight:400;font-family:var(--mono);}
.matrix th.m-screen .lock{display:inline-block;font-size:11px;font-weight:400;margin-top:2px;
  padding:1px 6px;border-radius:3px;background:var(--ink-wash);color:var(--text-md);}
.rbadge{display:inline-block;font-size:12px;font-weight:700;padding:2px 10px;border-radius:5px;white-space:nowrap;}
.rbadge.r-admin{background:var(--clay-wash);color:#8F3A2E;}
.rbadge.r-sales{background:var(--blue-wash);color:#2B6B96;}
.rbadge.r-accounting{background:var(--amber-wash);color:#8A5610;}
.rbadge.r-factory{background:var(--sage-wash);color:#4C7519;}

.toggle{display:inline-block;width:44px;height:24px;border-radius:12px;border:1px solid var(--border-strong,#B9B7AC);
  background:var(--ink-wash);position:relative;cursor:pointer;padding:0;vertical-align:middle;}
.toggle::after{content:'';position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;
  background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2);transition:left .12s;}
.toggle.on{background:var(--positive);border-color:var(--positive);}
.toggle.on::after{left:22px;}
.toggle.fixed{cursor:default;opacity:.55;}

/* ============================================================
   A-15 監査ログ（読み取り専用）
   ============================================================ */
.a15-page{font-size:12px;color:var(--text-dk);}
.a15-note{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:8px;
  background:var(--ink-wash);border:1px solid var(--border);font-size:12px;line-height:1.8;margin-bottom:14px;}
.a15-note .ic{font-size:14px;}
.a15-filter{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;
  background:var(--bg-card);border:1px solid var(--border);border-radius:10px;
  padding:12px 14px;margin-bottom:12px;}
.a15-filter .f{display:flex;flex-direction:column;gap:3px;}
.a15-filter .f.grow{flex:1 1 200px;}
.a15-filter .f > span{font-size:11px;color:var(--text-lt);}
.a15-filter input,.a15-filter select{font-size:12px;padding:6px 8px;border:1px solid var(--border);
  border-radius:6px;background:var(--bg-cream);}
.a15-filter .f.grow input{width:100%;}
.a15-filter .tilde{padding-bottom:8px;color:var(--text-lt);}
.a15-filter .f-actions{display:flex;gap:8px;}

.audit-table{width:100%;border-collapse:collapse;font-size:12px;}
.audit-table th{text-align:left;font-size:11px;color:var(--text-lt);font-weight:500;
  padding:5px 8px;border-bottom:1px solid var(--border);white-space:nowrap;}
.audit-table td{padding:7px 8px;border-bottom:1px solid var(--border);vertical-align:top;}
.audit-table .pd{font-family:var(--mono);white-space:nowrap;width:1%;}
.audit-table tr.is-failure{background:rgba(192,57,43,.05);}
.audit-table tr.is-failure .cat{background:rgba(178,59,59,.14);color:#8E2B22;}
.audit-table .dim{color:var(--text-lt);}
.audit-table .attempted{display:block;font-size:11px;color:var(--text-md);font-family:var(--mono);}
.audit-table .raw{display:block;font-size:11px;color:var(--text-lt);font-family:var(--mono);}
.audit-table .target{white-space:nowrap;}
.audit-table .target small{color:var(--text-lt);font-family:var(--mono);}
.audit-table .ip{font-family:var(--mono);font-size:11px;color:var(--text-lt);white-space:nowrap;}
.cat{display:inline-block;font-size:11px;font-weight:700;padding:1px 8px;border-radius:4px;white-space:nowrap;
  background:var(--ink-wash);color:var(--text-md);}
.cat.c-auth{background:var(--clay-wash);color:#8F3A2E;}
.cat.c-permission{background:var(--amber-wash);color:#8A5610;}
.cat.c-cost{background:var(--blue-wash);color:#2B6B96;}
.cat.c-manufacturing{background:var(--sage-wash);color:#4C7519;}
.diff{min-width:18em;}
.d-row{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap;font-size:12px;padding:1px 0;}
.d-k{color:var(--text-lt);font-family:var(--mono);font-size:11px;min-width:6em;}
.d-b{color:var(--text-md);text-decoration:line-through;}
.d-arrow{color:var(--text-lt);}
.d-a{font-weight:700;}
.a15-pager{margin-top:12px;}

/* ===== A-09 サヤマスタ（モック 40_r3_S07_mst_saya.html） ===== */
.flash--warn{border-color:#e0b4ae;background:rgba(184,80,66,.07);color:#8B3A2E}
.hidden-form{display:none}
.saya-page table.list th.sortable a{color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:2px}
.saya-page table.list th.sortable a:hover{color:var(--primary-dk2)}
.saya-page table.list th.sortable.active a{color:var(--primary-dk2)}
.saya-page .si{font-size:12px;color:var(--primary)}
.saya-page .w-id{width:52px}
.saya-page .w-dim{width:170px}
.saya-page .w-n{width:60px}
.saya-page .w-cap{width:110px}
.saya-page .w-memo{width:200px}
.saya-page .w-ops{width:130px}
.saya-page .saya-name{font-weight:700;color:var(--primary-dk2)}
.saya-page .dim{font-family:var(--mono);color:var(--text-md)}
.saya-page .capacity{font-family:var(--mono);font-weight:700;color:var(--blue)}
.saya-page .memo-cell{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:var(--text-md);font-size:12px}
.saya-page .memo-cell.empty{color:#c7c5bd}
.saya-page .ep-sub{font-size:12px;color:var(--text-lt);margin-top:2px}
.saya-page .grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.saya-page .grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.saya-page .calc-box{background:var(--bg-cream);border:1px solid var(--border);border-radius:8px;
  padding:11px 13px;margin:0 0 16px;font-size:13px;color:var(--text-md);
  display:flex;align-items:center;justify-content:space-between;gap:10px}
.saya-page .calc-box .cv{font-family:var(--mono);font-size:17px;font-weight:800;color:var(--blue)}
.saya-page .calc-box .cf{font-size:12px;color:var(--text-lt)}
/* 使用中の注意書き。★消せない理由と「計算は動かない」ことを同じ場所で言う */
.saya-page .use-note{background:rgba(239,159,39,.09);border:1px solid rgba(239,159,39,.4);
  border-left:4px solid var(--amber);border-radius:8px;padding:10px 13px;margin:0 0 16px;
  font-size:12px;line-height:1.6;color:#7a5410}
.saya-page .ep-foot .spacer{flex:1}

/* ===== カートンマスタ（B-16。作りは A-09 サヤマスタと同型） ===== */
/* ★ 断ってはいない注意書き（保存はできている）。断り＝flash--warn と色を分ける */
.flash--note{border-color:rgba(239,159,39,.5);background:rgba(239,159,39,.09);color:#7a5410}
.carton-page table.list th.sortable a{color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:2px}
.carton-page table.list th.sortable a:hover{color:var(--primary-dk2)}
.carton-page table.list th.sortable.active a{color:var(--primary-dk2)}
.carton-page .si{font-size:12px;color:var(--primary)}
.carton-page .w-sort{width:66px}
.carton-page .w-id{width:52px}
.carton-page .w-name{width:140px}
.carton-page .w-sym{width:110px}
/* 記号は無い箱もある（65件中42件）。無いことが分かるように薄く出す */
.carton-page .sym-cell{font-family:var(--mono);font-size:12px;color:var(--text-md)}
.carton-page .sym-cell.empty{color:#c7c5bd}
.carton-page .w-dim{width:150px}
.carton-page .w-n{width:64px}
.carton-page .w-memo{width:120px}
/* 使用商品は一番長い列。★狭いと「LUB全種 / ATL / …」が4行に折れる */
.carton-page .w-used{min-width:240px}
.carton-page .w-use{width:78px}
.carton-page .w-ops{width:230px}
.carton-page .sort-no{font-family:var(--mono);color:var(--text-lt);font-size:12px}
.carton-page .carton-name{font-weight:700;color:var(--primary-dk2)}
.carton-page tr.is-off .carton-name{color:var(--text-lt);font-weight:400}
.carton-page .off-badge{margin-left:6px;padding:1px 7px;border-radius:10px;background:var(--ink-wash);
  color:var(--text-lt);font-size:12px}
.carton-page .dim{font-family:var(--mono);color:var(--text-md)}
/* 使用商品は長い（「LUB全種 / ATL / HR / BRF …」）。★折り返して全部見せる */
.carton-page .used-cell{color:var(--text-md);font-size:12px;line-height:1.5;min-width:0}
.carton-page .used-cell.empty,.carton-page .memo-cell.empty{color:#c7c5bd}
.carton-page .memo-cell{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:var(--text-md);font-size:12px}
.carton-page .ep-sub{font-size:12px;color:var(--text-lt);margin-top:2px}
/* 長・巾・深・ツマ は横一列。★狭いときは2列に折る（4つ並べると入力欄が潰れる） */
.carton-page .grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
@media (max-width:900px){.carton-page .grid4{grid-template-columns:repeat(2,minmax(0,1fr))}}
.carton-page .use-note{background:rgba(239,159,39,.09);border:1px solid rgba(239,159,39,.4);
  border-left:4px solid var(--amber);border-radius:8px;padding:10px 13px;margin:0 0 16px;
  font-size:12px;line-height:1.6;color:#7a5410}
.carton-page .ep-foot .spacer{flex:1}

/* ===== A-07 施釉設定マスタ（モック 20_sample_mst_glaze_setting_v1.html） ===== */
.glaze-page .count-note{color:var(--text-lt);font-size:12px}
.glaze-page .w-ct{width:210px}
.glaze-page .w-gz{width:250px}
.glaze-page .w-ver{width:120px}
.glaze-page .w-deriv{width:170px}
.glaze-page tr.is-open{background:var(--clay-wash)}
.glaze-page .row-open{display:block;text-decoration:none;color:inherit}
.glaze-page .hin-main{font-weight:700;color:var(--primary-dk2);font-family:var(--mono)}
.glaze-page .state-badge{display:inline-block;margin-left:5px;padding:1px 7px;border-radius:10px;
  background:rgba(239,159,39,.15);color:#7a5410;font-size:12px;font-family:var(--sans)}
/* ★ 4 章 #15（2026-09-23・馬場判断）：4 状態すべてに語と色。試作中＝既存の色のまま（上の既定）。
     試作OK＝橙（塗り）・製造実績あり＝緑・不採用＝灰 */
.glaze-page .state-badge.is-trial{}
.glaze-page .state-badge.is-trial_ok{background:var(--warning);color:#fff}
.glaze-page .state-badge.is-in_production{background:rgba(99,153,34,.16);color:var(--positive)}
.glaze-page .state-badge.is-rejected{background:var(--ink-wash);color:var(--text-lt)}
.glaze-page .prodcell{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.glaze-page .pchip{padding:1px 7px;border:1px solid var(--border);border-radius:10px;
  font-size:12px;font-family:var(--mono);color:var(--text-md)}
.glaze-page .shared-badge{padding:1px 7px;border-radius:10px;background:rgba(59,130,182,.12);
  color:#1d4d6b;font-size:12px;font-weight:700}
.glaze-page .ct-name{font-weight:700}
.glaze-page .ct-tags{display:flex;gap:4px;margin-top:3px}
.attr-tag{padding:1px 7px;border-radius:10px;background:var(--bg-cream);border:1px solid var(--border);
  font-size:12px;color:var(--text-md)}
.glaze-page .rep-glaze{display:flex;flex-direction:column;gap:2px}
.glaze-page .rg{font-family:var(--mono);font-size:12px;color:var(--text-md)}
.glaze-page .rg.is-main{font-weight:700;color:var(--primary-dk2)}
.glaze-page .rg-role{margin-left:6px;font-family:var(--sans);font-size:12px;color:var(--text-lt)}
.glaze-page .ver-cell{display:flex;flex-direction:column;gap:2px}
.glaze-page .vbadge{font-family:var(--mono);font-weight:700;color:var(--blue)}
.glaze-page .upd-date{font-family:var(--mono);font-size:12px;color:var(--text-lt)}
.glaze-page .deriv{font-size:12px}
.glaze-page .deriv.parent{color:#1d4d6b}
.glaze-page .deriv.child{color:var(--text-md)}
.none-cell{color:var(--text-lt)}

/* 詳細パネル */
.glaze-panel{width:min(860px,96vw)}
.glaze-panel .ep-title .attr-tag{margin-left:6px;vertical-align:middle}
.glaze-panel .ep-sub{margin-top:4px;font-size:12px;color:var(--text-lt)}
.glaze-panel .phin{font-family:var(--mono);color:var(--text-md);margin-right:6px}
.glaze-panel .phin.none{color:var(--text-lt)}
.glaze-panel .ptitle-sep{margin:0 6px;color:var(--border)}
.glaze-panel .ptitle-origin{font-size:12px;color:var(--text-md)}
.glaze-panel .sec{margin:0 0 20px}
.glaze-panel .sec h3{font-size:12px;font-weight:700;color:var(--text-md);margin:0 0 8px;
  padding-bottom:5px;border-bottom:1px solid var(--hairline)}
.glaze-panel .sec h3 .cnt{margin-left:6px;font-weight:400;color:var(--text-lt);font-size:12px}
.glaze-panel table.recipe{width:100%;border-collapse:collapse}
.glaze-panel table.recipe th{font-size:12px;color:var(--text-lt);text-align:left;padding:6px 8px;
  background:var(--bg-cream);border-bottom:1px solid var(--border);white-space:nowrap}
.glaze-panel table.recipe td{font-size:12px;padding:8px;border-bottom:1px solid var(--hairline);
  font-family:var(--mono);white-space:nowrap}
.glaze-panel table.recipe tr.main-row{background:rgba(59,130,182,.06)}
.glaze-panel table.recipe td.slot{font-family:var(--sans);font-weight:700;color:var(--text-md)}
.glaze-panel table.recipe td.slot .role{display:block;font-weight:400;font-size:12px;color:var(--text-lt)}
.glaze-panel .glz{color:var(--primary-dk2);font-weight:700;text-decoration:none;border-bottom:1px dotted var(--primary-lt)}
.glaze-panel .glz.empty{color:var(--text-lt);font-weight:400;border:none}
.glaze-panel td.diff-changed{background:rgba(239,159,39,.16);font-weight:700}
.glaze-panel .main-note{margin-top:8px;font-size:12px;color:var(--text-md);line-height:1.6}
.glaze-panel .version-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.glaze-panel .version-bar .spacer{flex:1}
.glaze-panel .vb-label{font-size:12px;color:var(--text-lt)}
.glaze-panel .vchip{padding:3px 10px;border:1px solid var(--border);border-radius:14px;
  font-family:var(--mono);font-size:12px;color:var(--text-md);text-decoration:none}
.glaze-panel .vchip.is-on{background:var(--primary);border-color:var(--primary);color:#fff}
.glaze-panel .vchip small{margin-left:4px;font-family:var(--sans);font-size:11px}
.glaze-panel .adopt-row{display:flex;align-items:center;gap:10px;padding:7px 0;
  border-bottom:1px solid var(--hairline);font-size:12px;flex-wrap:wrap}
.glaze-panel .adopt-hin{font-family:var(--mono);font-weight:700;min-width:90px}
.glaze-panel .adopt-meta{font-size:12px;color:var(--text-lt);min-width:90px}
.glaze-panel .adopt-site{flex:1;min-width:120px;color:var(--text-md)}
.glaze-panel .adopt-ver{font-family:var(--mono);font-size:12px;color:var(--blue)}
.glaze-panel .ver-old{margin-left:5px;padding:1px 6px;border-radius:9px;font-family:var(--sans);
  font-size:11px;background:rgba(239,159,39,.16);color:#7a5410}
.glaze-panel .adopt-no{font-family:var(--mono);font-size:12px;color:var(--text-lt)}
.glaze-panel .share-note,.glaze-panel .mfg-note,.glaze-panel .hint{margin-top:9px;font-size:12px;
  color:var(--text-md);line-height:1.6}
.glaze-panel .note-warn{background:rgba(239,159,39,.09);border:1px solid rgba(239,159,39,.4);
  border-left:4px solid var(--amber);border-radius:8px;padding:10px 13px;font-size:12px;
  line-height:1.6;color:#7a5410}
.glaze-panel .note-warn .muted{color:var(--text-lt)}
.glaze-panel .deriv-line{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap}
.glaze-panel .deriv-line .lab{font-size:12px;color:var(--text-lt);min-width:52px}
.glaze-panel .gz-chip{padding:3px 10px;border:1px solid var(--border);border-radius:14px;
  background:var(--bg-cream);font-size:12px;text-decoration:none;color:var(--text-dk)}
.glaze-panel .rev-head{font-size:12px;color:var(--text-md);margin-bottom:6px;
  display:flex;align-items:center;gap:8px}
.glaze-panel .rev-row{display:flex;align-items:center;gap:10px;padding:5px 0;
  border-bottom:1px solid var(--hairline);font-size:12px}
.glaze-panel .rev-slot{font-family:var(--mono);font-size:12px;color:var(--text-lt)}
.edit-overlay__back{position:absolute;inset:0;display:block}
/* ★ 回答書 2026-10-14 2 章 3：パネルに重なり順が無く、外を押して閉じる層（__back）が上に来て版のボタンが押せなかった */
.edit-overlay > .edit-panel{position:relative;z-index:1}

/* ===== A-06 案件種別マスタ（モック 40_r3_S04_mst_case_type.html） ===== */
.ct-page .w-move{width:110px}
.ct-page .w-id{width:56px}
.ct-page .w-memo{width:220px}
.ct-page .w-use{width:80px}
.ct-page .w-upd{width:120px}
.ct-page .w-ops{width:230px}
.ct-page .move{display:flex;align-items:center;gap:3px}
.ct-page .move form{display:inline}
.ct-page .sort-no{min-width:22px;font-family:var(--mono);color:var(--text-lt);font-size:12px}
.ct-page .movebtn{width:24px;height:24px;padding:0;border:1px solid var(--border);border-radius:5px;
  background:#fff;color:var(--text-md);font-size:12px;line-height:1;cursor:pointer}
.ct-page .movebtn:hover:not(:disabled){background:var(--bg-cream);color:var(--primary-dk2)}
.ct-page .movebtn:disabled{opacity:.3;cursor:not-allowed}
.ct-page .type-name{font-weight:700;color:var(--primary-dk2)}
.ct-page .off-badge{margin-left:6px;padding:1px 7px;border-radius:10px;background:var(--ink-wash);
  color:var(--text-lt);font-size:12px}
.ct-page tr.is-off .type-name{color:var(--text-lt);font-weight:400}
.ct-page .date-cell{font-family:var(--mono);font-size:12px;color:var(--text-lt);white-space:nowrap}
.ct-page .memo-cell{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:var(--text-md);font-size:12px}
.ct-page .memo-cell.empty{color:#c7c5bd}
.ct-page .use-note{background:rgba(239,159,39,.09);border:1px solid rgba(239,159,39,.4);
  border-left:4px solid var(--amber);border-radius:8px;padding:10px 13px;margin:0 0 16px;
  font-size:12px;line-height:1.6;color:#7a5410}
.ct-page .ep-foot .spacer{flex:1}

/* ===== A-10 金型マスタ（モック 40_r3_S08_mst_mold.html） ===== */
.mold-page .seg{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 12px}
.mold-page .seg-btn{padding:6px 14px;border:1px solid var(--border);border-radius:16px;background:#fff;
  font-size:12px;color:var(--text-md);text-decoration:none}
.mold-page .seg-btn:hover{background:var(--bg-cream)}
.mold-page .seg-btn.on{background:var(--primary);border-color:var(--primary);color:#fff}
.mold-page .seg-n{margin-left:6px;font-family:var(--mono);font-size:12px;opacity:.8}
.mold-page .photo-toggle{padding:6px 12px;border:1px solid var(--border);border-radius:8px;background:#fff;
  font-size:12px;color:var(--text-md);text-decoration:none;white-space:nowrap}
.mold-page .photo-toggle.on{border-color:var(--primary);color:var(--primary-dk2);background:var(--clay-wash)}
.mold-page .count-note{color:var(--text-lt);font-size:12px}
.mold-page .w-id{width:52px}
.mold-page .w-cat{width:96px}
.mold-page .w-size{width:86px}
.mold-page .w-th{width:74px}
.mold-page .w-surface{width:140px}
.mold-page .w-back{width:60px}
.mold-page .w-form{width:74px}
.mold-page .w-ext{width:150px}
.mold-page .w-photo{width:64px}
.mold-page .w-ops{width:150px}
.mold-page .cat-tag{padding:1px 8px;border-radius:10px;background:var(--bg-cream);
  border:1px solid var(--border);font-size:12px;color:var(--text-md);white-space:nowrap}
.mold-page .photo-cell{text-align:center}
.mold-page .thumb{padding:0;border:1px solid var(--border);border-radius:6px;background:none;
  cursor:pointer;line-height:0;overflow:hidden}
.mold-page .thumb img{width:44px;height:34px;object-fit:cover;display:block}
.mold-page .thumb:hover{border-color:var(--primary)}
.mold-page .memo-cell{color:var(--text-md);font-size:12px}
.mold-page .memo-cell.empty{color:#c7c5bd}
.mold-page .photo-full{margin:0 0 16px;border:1px solid var(--border);border-radius:8px;overflow:hidden}
.mold-page .photo-full img{width:100%;display:block}
.mold-page .grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.mold-page .use-note{background:rgba(239,159,39,.09);border:1px solid rgba(239,159,39,.4);
  border-left:4px solid var(--amber);border-radius:8px;padding:10px 13px;margin:0 0 16px;
  font-size:12px;line-height:1.6;color:#7a5410}
.mold-page .sec{margin:0 0 18px}
.mold-page .sec h3{font-size:12px;font-weight:700;color:var(--text-md);margin:0 0 8px;
  padding-bottom:5px;border-bottom:1px solid var(--hairline)}
.mold-page .gallery{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.mold-page .gallery img{width:100%;border:1px solid var(--border);border-radius:8px;display:block}
.mold-page .ep-foot .spacer{flex:1}

/* ===== A-04 月次レポート（モック 30_pg_M06_monthly_report_v1.html） ===== */
.mr-page .mr-head{display:flex;align-items:center;gap:10px;margin:0 0 12px;flex-wrap:wrap}
.mr-page .mr-head .spacer{flex:1}
.mr-page .month-pick{display:flex;align-items:center;gap:8px}
.mr-page .month-pick label{font-size:12px;color:var(--text-lt)}
.mr-page .month-pick input{padding:7px 10px;border:1px solid var(--border);border-radius:8px;
  font-family:inherit;font-size:12px;background:var(--bg-card)}
.mr-page .kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:0 0 16px}
.mr-page .kpi{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:14px 16px}
.mr-page .kpi .k{font-size:12px;color:var(--text-lt)}
.mr-page .kpi .v{font-size:22px;font-weight:800;color:var(--primary-dk2);margin:4px 0 2px;font-family:var(--mono)}
.mr-page .kpi .v .u{font-size:12px;font-weight:400;margin-left:2px;font-family:var(--sans)}
.mr-page .kpi .d{font-size:12px}
.mr-page .kpi .d.muted{color:var(--text-lt)}
.mr-page .kpi .d.up{color:#3f6b16}
.mr-page .kpi .d.down{color:var(--primary)}
.mr-page .mr-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0 0 16px}
.mr-page .card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;
  overflow:hidden;margin:0 0 16px}
.mr-page .mr-grid .card{margin:0}
.mr-page .card-h{display:flex;align-items:baseline;gap:8px;padding:11px 16px;
  border-bottom:1px solid var(--border);background:var(--bg-cream);flex-wrap:wrap}
.mr-page .card-h h2{font-size:13px;font-weight:700;margin:0}
.mr-page .card-sub{font-size:12px;color:var(--text-lt)}
.mr-page .card-b{padding:14px 16px}
.mr-page .card-b.p0{padding:0}
.mr-page .mono{font-family:var(--mono)}
.mr-page tr.is-current{background:var(--clay-wash);font-weight:700}
.mr-page tr.sum{background:var(--bg-cream);font-weight:700}
.mr-page .pill{padding:1px 9px;border-radius:10px;font-size:12px}
.mr-page .pill.ok{background:rgba(99,153,34,.15);color:#3f6b16}
.mr-page .pill.wn{background:rgba(239,159,39,.18);color:#7a5410}
.mr-page .pill.ng{background:rgba(184,80,66,.14);color:#8B3A2E}
.mr-page .pill.none{background:var(--ink-wash);color:var(--text-lt)}
/* 評価できなかったものは 0円で混ぜず、理由つきで別に出す */
.mr-page .skip-note{margin-top:12px;background:rgba(239,159,39,.09);
  border:1px solid rgba(239,159,39,.4);border-left:4px solid var(--amber);
  border-radius:8px;padding:10px 13px;font-size:12px;line-height:1.7;color:#7a5410}
.mr-page .skip-note ul{margin:6px 0 0 18px}
.mr-page .not-yet{margin:10px 0 10px 18px;font-size:12px;line-height:1.8;color:var(--text-md)}
/* ★ 月次のサマリーは 5 枚（4 章 #11 で「不良率（結果）」を足した）。広い画面は 5 列で 1 段、狭い画面は今までの折り返し（馬場判断 2026-09-23） */
@media (min-width:1200px){
  .mr-page .kpi-row--5{grid-template-columns:repeat(5,1fr)}
}
@media (max-width:900px){
  .mr-page .kpi-row{grid-template-columns:1fr 1fr}
  .mr-page .mr-grid{grid-template-columns:1fr}
}

/* ===== A-17 Excel取込（管理者専用） ===== */
.import-page .card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;
  overflow:hidden;margin:0 0 16px}
.import-page .card-h{display:flex;align-items:baseline;gap:8px;padding:11px 16px;
  border-bottom:1px solid var(--border);background:var(--bg-cream);flex-wrap:wrap}
.import-page .card-h h2{font-size:13px;font-weight:700;margin:0}
.import-page .card-sub{font-size:12px;color:var(--text-lt)}
.import-page .card-b{padding:14px 16px}
.import-page .card-b.p0{padding:0}
.import-page .up-form{display:grid;grid-template-columns:200px 1fr 260px;gap:12px;align-items:end}
.import-page .up-actions{grid-column:1/-1}
.import-page .field .opt{font-weight:400;color:var(--text-lt);font-size:12px;margin-left:4px}
.import-page .verdict-row{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin:0 0 14px}
.import-page .v-box{border:1px solid var(--border);border-radius:8px;padding:10px 12px;background:#fff}
.import-page .v-box .v-k{font-size:12px;color:var(--text-lt)}
.import-page .v-box .v-n{font-family:var(--mono);font-size:19px;font-weight:800;color:var(--text-dk)}
.import-page .v-box.is-create .v-n{color:#3f6b16}
.import-page .v-box.is-update .v-n{color:#1d4d6b}
.import-page .v-box.is-error{border-color:#e0b4ae;background:rgba(184,80,66,.06)}
.import-page .v-box.is-error .v-n{color:var(--primary-dk2)}
.import-page .note-warn{background:rgba(239,159,39,.09);border:1px solid rgba(239,159,39,.4);
  border-left:4px solid var(--amber);border-radius:8px;padding:10px 13px;margin:0 0 10px;
  font-size:12px;line-height:1.7;color:#7a5410}
.import-page .sub-h{font-size:12px;font-weight:700;margin:14px 0 4px;color:var(--text-md)}
.import-page .w-row{width:70px}
.import-page .commit-bar{display:flex;align-items:center;gap:14px;margin-top:14px;padding-top:14px;
  border-top:1px solid var(--hairline);flex-wrap:wrap}
.import-page .commit-note{flex:1;min-width:280px;font-size:12px;line-height:1.7;color:var(--text-md)}
.import-page .mono{font-family:var(--mono)}
.import-page .when{font-size:12px;color:var(--text-lt);white-space:nowrap}
.import-page .file{display:block;font-size:12px;color:var(--text-lt);font-family:var(--mono)}
.import-page .mode{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;white-space:nowrap}
.import-page .mode.is-dry{background:var(--ink-wash);color:var(--text-md)}
.import-page .mode.is-commit{background:rgba(99,153,34,.15);color:#3f6b16}
.import-page tr.is-undone{opacity:.55}
.import-page .state-undone{font-size:12px;color:var(--text-lt)}
.import-page .state-failed{font-size:12px;color:var(--primary-dk2)}
.import-page .risk-list{margin:0 0 0 18px;font-size:12px;line-height:1.9;color:var(--text-md)}
.import-page .w-id{width:46px}
.import-page .w-when{width:96px}
.import-page .w-mode{width:86px}
.import-page .w-who{width:110px}
.import-page .w-state{width:84px}
@media (max-width:900px){
  .import-page .up-form{grid-template-columns:1fr}
  .import-page .verdict-row{grid-template-columns:1fr 1fr}
}

/* A-17 取消を止めたときの説明（実行前に理由を出す） */
.import-page .note-block{background:rgba(184,80,66,.06);border:1px solid #e0b4ae;
  border-left:4px solid var(--primary-dk2);border-radius:8px;padding:12px 14px;margin-top:14px;
  font-size:12px;line-height:1.8;color:var(--text-md)}
.import-page .blocker-list{margin:8px 0 6px 18px;font-size:12px;line-height:1.8}
.import-page .blocker-list li+li{margin-top:6px}

/* ===== A-16 監視ダッシュボード（管理者専用・読み取りのみ） ===== */
.mon-page .card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;
  overflow:hidden;margin:0 0 16px}
.mon-page .card-h{display:flex;align-items:center;gap:10px;padding:11px 16px;
  border-bottom:1px solid var(--border);background:var(--bg-cream);flex-wrap:wrap}
.mon-page .card-h h2{font-size:13px;font-weight:700;margin:0}
.mon-page .card-sub{font-size:12px;color:var(--text-lt)}
.mon-page .card-b{padding:14px 16px}
.mon-page .card-b.p0{padding:0}
.mon-page .lv{font-size:12px;font-weight:700;padding:1px 10px;border-radius:11px;white-space:nowrap}
.mon-page .lv.is-ok{background:rgba(99,153,34,.15);color:#3f6b16}
.mon-page .lv.is-warn{background:rgba(239,159,39,.18);color:#7a5410}
.mon-page .lv.is-danger{background:rgba(184,80,66,.15);color:var(--primary-dk2)}
.mon-page .aim-note.is-warn{border-left-color:var(--amber)}
.mon-page .aim-note.is-danger{border-left-color:var(--primary-dk2)}
.mon-page .kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:0 0 12px}
.mon-page .kbox{border:1px solid var(--border);border-radius:8px;padding:10px 12px;background:#fff}
.mon-page .k-k{font-size:12px;color:var(--text-lt)}
.mon-page .k-n{font-family:var(--mono);font-size:19px;font-weight:800;color:var(--text-dk);line-height:1.3}
.mon-page .k-n.sm{font-size:12px;font-weight:700;word-break:break-all}
.mon-page .k-n.is-bad{color:var(--primary-dk2)}
.mon-page .k-n.is-ok{color:#3f6b16}
.mon-page .k-u{font-size:12px;font-weight:600;color:var(--text-lt);margin-left:2px}
.mon-page .note{font-size:12px;line-height:1.8;color:var(--text-md);background:var(--ink-wash);
  border-radius:8px;padding:9px 13px;margin:0 0 8px}
.mon-page .note.is-warn{background:rgba(239,159,39,.09);border:1px solid rgba(239,159,39,.4);
  border-left:4px solid var(--amber);color:#7a5410}
.mon-page .sub-h{font-size:12px;font-weight:700;margin:14px 0 4px;color:var(--text-md)}
.mon-page .mono{font-family:var(--mono)}
.mon-page .when{white-space:nowrap;font-size:12px;color:var(--text-lt)}
.mon-page .rule{font-size:12px;color:var(--text-lt)}
.mon-page .num.is-bad{color:var(--primary-dk2);font-weight:700}
.mon-page tr.is-flagged{background:rgba(239,159,39,.06)}
.mon-page .w-job{width:150px}
.mon-page .w-cnt{width:70px}
.mon-page .w-size{width:88px}
.mon-page .w-when{width:96px}
.mon-page .w-id{width:46px}
.mon-page .w-st{width:118px}
.mon-page .nw{white-space:nowrap}
.mon-page .w-rule{width:210px}
.mon-page .w-link{width:92px}
.mon-page .w-cant{width:190px}
@media (max-width:900px){
  .mon-page .kpi-row{grid-template-columns:1fr 1fr}
}

/* ===== 計上・売上（独立画面） ===== */
.acc-page .card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;
  overflow:hidden;margin:0 0 16px}
.acc-page .card-h{display:flex;align-items:baseline;gap:8px;padding:11px 16px;
  border-bottom:1px solid var(--border);background:var(--bg-cream);flex-wrap:wrap}
.acc-page .card-h h2{font-size:13px;font-weight:700;margin:0}
.acc-page .card-sub{font-size:12px;color:var(--text-lt)}
.acc-page .card-b{padding:14px 16px}
.acc-page .card-b.p0{padding:0}
.acc-page .month-bar{display:flex;align-items:center;gap:10px;margin:0 0 12px}
.acc-page .month-now{font-size:14px;font-weight:700;color:var(--text-dk);font-variant-numeric:tabular-nums}
.acc-page .rule-list{margin:6px 0 0 18px;font-size:12px;line-height:1.9;color:var(--text-md)}
.acc-page .rule-list li+li{margin-top:4px}
.acc-page .sub{display:block;font-size:12px;color:var(--text-lt)}
.acc-page .mono{font-family:var(--mono)}
.acc-page .nw{white-space:nowrap}
.acc-page .when{white-space:nowrap;font-size:12px}
.acc-page .row-form{display:flex;align-items:center;gap:6px;margin:0 0 4px}
.acc-page .row-form:last-child{margin-bottom:0}
.acc-page .row-form .btn{white-space:nowrap}
.acc-page .row-form input[type=date]{padding:4px 6px;font-size:12px;border:1px solid var(--border);
  border-radius:5px;background:#fff;font-family:var(--mono)}
.acc-page .w-no{width:118px;white-space:nowrap}
.acc-page .w-qty{width:92px}
.acc-page .w-amt{width:104px}
.acc-page .w-when{width:104px}
.acc-page .w-act{width:236px}
.acc-page .w-act2{width:250px}
@media (max-width:900px){
  .acc-page .row-form{flex-wrap:wrap}
}

/* B-10 次工程へ（M-04 製造実行カード） */
.advance-box{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.advance-box .inline-form{display:inline-flex;margin:0}

/* B-08 段取りの埋まり具合（M-04 製造実行カード） */
.setup-box{margin-top:10px;padding:9px 11px;border:1px solid var(--border);border-radius:8px;background:var(--bg-cream)}
.setup-h{font-size:12px;font-weight:700;color:var(--text-md);margin-bottom:4px}
.setup-h .setup-ok{margin-left:6px;font-size:12px;font-weight:700;color:#3f6b16}
.setup-list{list-style:none;margin:0;padding:0;font-size:12px;line-height:1.7}
.setup-list li{color:var(--text-lt)}
.setup-list li.is-done{color:var(--text-md)}
.setup-mark{display:inline-block;width:16px;color:var(--text-lt);font-weight:700}
.setup-list li.is-done .setup-mark{color:#3f6b16}
.setup-hint{color:var(--text-lt);font-size:12px;margin-left:4px}
.setup-miss{color:var(--primary-dk2);font-size:12px;margin-left:4px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}

/* B-05 見積（案件詳細） */
.q-state{font-size:12px;font-weight:700;padding:1px 8px;border-radius:10px;white-space:nowrap}
.q-state.is-draft{background:var(--ink-wash);color:var(--text-md)}
.q-state.is-costed{background:rgba(59,130,182,.14);color:#1d4d6b}
.q-state.is-revised{background:rgba(239,159,39,.18);color:#7a5410}
.q-state.is-confirmed{background:rgba(99,153,34,.18);color:#3f6b16}
.q-state.is-lost{background:rgba(0,0,0,.06);color:var(--text-lt)}
.q-actions{white-space:nowrap}
.q-actions .inline-form{display:inline-flex;margin:0 2px 0 0}

/* B-06 一式グループ */
.lump-list{margin:0 0 8px}
.lump-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:7px 10px;margin:0 0 5px;
  border:1px solid var(--border);border-left:3px solid var(--amber);border-radius:7px;background:var(--bg-cream)}
.lump-tag{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;font-weight:700;
  background:rgba(239,159,39,.18);color:#7a5410;white-space:nowrap}
.lump-count{font-size:12px;color:var(--text-lt)}
.lump-amount{font-family:var(--mono);font-size:13px;color:var(--text-dk)}
.lump-in{font-size:12px;color:var(--text-lt);font-weight:600}
.lump-edit{display:flex;gap:6px;width:100%;margin-top:6px}
.lump-edit input[type=text]{flex:1;min-width:120px}
.lump-edit input[type=number]{width:140px;font-family:var(--mono)}
.lump-row .inline-form{display:inline-flex;margin:0}
.lump-pick{border:1px solid var(--border);border-radius:7px;max-height:220px;overflow-y:auto;background:#fff}
.lump-pick__row{display:flex;align-items:center;gap:8px;padding:7px 10px;border-bottom:1px solid var(--hairline);cursor:pointer}
.lump-pick__row:last-child{border-bottom:none}
.lump-pick__name{flex:1;font-size:12px}
.lump-pick__amount{font-family:var(--mono);font-size:12px;color:var(--text-lt)}

/* B-04 M-03 列の並べ替え（A-09 と同じ見た目） */
table.list-table th.sortable a{color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:2px}
table.list-table th.sortable a:hover{color:var(--primary-dk2)}
table.list-table th.sortable.active a{color:var(--primary-dk2)}
table.list-table th.sortable .si{font-size:11px}

/* B-09 R-05 進捗確認表 */
.cb-progress{font-size:12px;color:var(--text-md);margin:0 8px;white-space:nowrap}
.cb-progress.is-full{color:#3f6b16;font-weight:700}
.cl-modal{max-width:1000px;width:96vw}
.cl-count{font-size:12px;color:var(--text-lt);margin-left:8px}
.cl-body{max-height:70vh;overflow-y:auto}
.cl-phase{margin:0 0 14px}
.cl-phase-h{display:flex;align-items:baseline;gap:8px;padding:6px 8px;background:var(--bg-cream);
  border-radius:6px;font-size:12px;margin-bottom:4px}
.cl-step{font-size:12px;color:var(--text-lt)}
.cl-phase-count{font-size:12px;color:var(--text-lt);font-family:var(--mono)}
.cl-phase-count.is-full{color:#3f6b16;font-weight:700}
.cl-row{display:flex;align-items:center;gap:7px;padding:5px 8px;border-bottom:1px solid var(--hairline);
  flex-wrap:wrap;margin:0}
.cl-row:last-child{border-bottom:none}
.cl-row.is-done{background:rgba(99,153,34,.06)}
.cl-row.is-na{opacity:.55}
.cl-no{width:26px;font-family:var(--mono);font-size:12px;color:var(--text-lt);text-align:right}
.cl-name{flex:1;min-width:180px;font-size:12px}
.cl-opt{display:block;font-size:12px;color:var(--text-lt)}
.cl-sel{display:inline-block;margin-left:6px;font-size:12px;padding:0 7px;border-radius:9px;
  background:var(--ink-wash);color:var(--text-md)}
.cl-state{width:96px;font-size:12px;padding:3px 5px}
.cl-who{width:120px;font-size:12px;padding:3px 6px}
.cl-when{width:132px;font-size:12px;padding:3px 6px;font-family:var(--mono)}
.cl-note{flex:1;min-width:200px;font-size:12px;padding:3px 6px}
@media (max-width:900px){
  .cl-name{min-width:100%}
}

/* B-09 注意事項バナー（確認表の記入があるときだけ） */
.notice-bar{background:rgba(239,159,39,.1);border:1px solid rgba(239,159,39,.45);
  border-left:4px solid var(--amber);border-radius:8px;padding:8px 12px;margin:0 0 10px}
.notice-row{display:flex;gap:8px;align-items:baseline;font-size:12px;line-height:1.7;color:#7a5410}
.notice-row+.notice-row{margin-top:4px}
.notice-tag{font-weight:700;white-space:nowrap}

/* B-11 製造方法マスタ（⚙原価設定） */
.pm-off{opacity:.55}
.pm-tag{margin-left:5px;font-size:11px;padding:0 6px;border-radius:9px;background:var(--ink-wash);color:var(--text-lt)}
.pm-add-fields{display:inline-flex;align-items:center;gap:5px;margin-left:6px}
.pm-add-fields input[type=text]{width:150px;font-size:12px;padding:3px 6px}
.pm-add-fields input[type=number]{width:76px;font-size:12px;padding:3px 6px;font-family:var(--mono)}

/* 2FA リカバリコードの表示 */
.recovery-list{list-style:none;margin:8px 0;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:4px 12px}
.recovery-list li{font-size:12px;letter-spacing:.5px;padding:3px 8px;background:#fff;border:1px solid var(--border);border-radius:5px}
.recovery-actions{display:flex;gap:8px;align-items:center;margin-top:6px}
.recovery-actions .inline-form{display:inline-flex;margin:0}
/* A-13 の2段階認証セル。状態の下に「解除する」を置く（T-05） */
.tfa-col{white-space:nowrap}
.tfa-col form{margin:5px 0 0}
@media print{ .recovery-list{grid-template-columns:repeat(2,1fr)} }

/* ★★ リカバリコードの「印刷する」で刷るもの。
   この画面をログイン側のレイアウトに移した結果、**左の濃いブランド帯が
   そのまま紙に出る**ようになった（画面いっぱいの黒い面が1ページ目を占める）。
   紙に要るのは控えだけなので、帯・操作ボタン・ログアウトは刷らない。 */
@media print{
  /* ★ 素の `html,body{height:100%}` が紙では「1ページぶんの高さ」になり、
     本文と足して**空白の2枚目**が出る（実測）。紙では高さを内容に任せる。 */
  html,body{height:auto;min-height:0;background:#fff}
  .login{display:block;min-height:0}
  .login__brandpane{display:none}
  .login__formpane{display:block;padding:0;background:#fff}
  .login-card,.login-card--wide{max-width:none}
  /* ★ 紙に要らないもの（操作ボタン・ログアウト・進むボタン） */
  .recovery-actions,.tfa-logout,.tfa-done-lead,.tfa-done-btn{display:none}
}
@media (max-width:600px){ .recovery-list{grid-template-columns:1fr} }

/* ============================================================
   差し替えモック M-04 / M-05（丸仙 2026-09-01）で増えた部品
   ============================================================ */

/* 商品情報の寸法3辺。★ラベルと欄を横に並べる（縦に積むとモーダルが伸びて保存ボタンが隠れる） */
.dim-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.dim-row input{width:78px}
.dim-lbl{font-size:12px;color:var(--text-md);white-space:nowrap}

/* 成形メモのクロスチェック判定ピル。★色だけに頼らず記号（✓ / ⚠）も出す */
.chk-pill{display:inline-flex;align-items:center;gap:5px;padding:2px 11px;border-radius:12px;font-size:12px;font-weight:700}
.chk-pill.ok{background:#e6f2e3;color:#3f7a34;border:1px solid #bfdcb8}
.chk-pill.ng{background:#fbe9e5;color:#b3402f;border:1px solid #efc3ba}
.chk-pill.na{background:#f0efeb;color:var(--text-lt);border:1px solid #e0ddd6;font-weight:400}
.chk-pill.sm{padding:1px 8px;font-size:11px;gap:3px}

/* 切り巾の辺のしるし。どちらの辺を切るかは製品ごとに違う */
.cut-chip{display:inline-block;background:#f7efdc;color:#8a6d1a;border:1px solid #e3d4ae;border-radius:8px;
  font-size:11px;font-weight:700;padding:0 5px;margin-left:3px;vertical-align:1px;white-space:nowrap}
/* ★ 見出しが「総送車時／間」のように途中で折れると読めない。狭い列でも折らない */
.m04-page .p-table th{white-space:nowrap}

/* カートンラベル（箱に貼られる紙の再現）。★白地・黒枠は「印字イメージ」であることを示す */
.pk-label-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
  min-height:90px;margin-top:8px}
.pk-label-cap{font-size:12px;color:var(--text-lt)}
.pk-label{display:inline-block;background:#fff;border:2px solid #444;padding:2px}
.pk-label table{border-collapse:collapse}
.pk-label th,.pk-label td{border:1px solid #444;font-size:12px;padding:3px 10px;background:#fff}
.pk-label th{font-weight:600;text-align:left;width:52px;color:#222}
.pk-label td{min-width:130px;font-weight:700;color:#111}
.pk-label-wrap{display:inline-block}
.pk-lbl-lot{display:block;text-align:right;font-size:11px;font-weight:600;color:#444;margin-top:2px}

/* 枚/シートはカード上では表示専用（編集はモーダル）。入力欄に見えないようにする */
.sheet-view{min-width:40px;text-align:right;font-weight:700;font-size:12px;color:var(--text-md);padding:2px 4px}

/* 原価計算一覧：案件から起こす／試算を取り込む の選択リスト（K-03・2026-09-01） */
.pick-list{max-height:52vh;overflow-y:auto;border:1px solid var(--border);border-radius:6px}
.pick-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;align-items:center;
  padding:8px 10px;border-bottom:1px solid var(--border)}
.pick-row:last-child{border-bottom:none}
.pick-row:hover{background:var(--clay-wash)}
.pick-main{grid-column:1;font-size:12px}
.pick-main .muted{margin-left:6px}
.pick-sub{grid-column:1;grid-row:2;font-size:12px}
.pick-row .btn{grid-column:2;grid-row:1 / span 2}

/* ★ 桁の疑い（M-11）。止めないので、要確認の赤ではなく注意の琥珀にする */
.digit-warn{background:rgba(239,159,39,.10);border:1px solid rgba(239,159,39,.45);
  border-left:4px solid var(--amber);border-radius:8px;padding:8px 11px;margin:8px 0 0;
  font-size:12px;line-height:1.6;color:#7a5410}
.digit-warn small{display:block;margin-top:2px;color:var(--text-md);font-size:12px}


/* ===== A-08 釉薬計算マスタ（モック 40_r3_S06b） ===== */
.gc-page .gc-card{padding:14px 16px;margin-top:0}
.gc-page .gc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.gc-page .gc-head h2{font-size:13px;color:var(--primary-dk2);margin:0}
.gc-page .gc-head .hint{font-size:12px;color:var(--text-lt)}
.gc-page table.gc-table th.num,.gc-page table.gc-table td.num{text-align:right}
.gc-page table.gc-table td.c{text-align:center;white-space:nowrap}
.gc-page table.gc-table td.lbl{font-weight:600;white-space:nowrap}
.gc-page table.gc-table tr.is-off td{color:var(--text-lt)}
.gc-page input.num{width:96px;text-align:right;font-variant-numeric:tabular-nums}
.gc-page input.name{width:100%;max-width:220px}
.gc-page input.cond{width:100%;max-width:360px}
.gc-page .cond-auto{display:inline-block;max-width:360px;font-size:13px;line-height:1.5;color:var(--text-md)}
.gc-page input[readonly]{background:var(--bg-cream);color:var(--text-md)}
.gc-page .unit{font-size:12px;color:var(--text-lt);margin-left:4px}
.gc-page .auto{color:#3B82B6;font-variant-numeric:tabular-nums;font-weight:700}
.gc-page .gc-note{font-size:12px;color:var(--text-lt);background:var(--bg-cream);border-radius:5px;padding:6px 10px;margin-top:8px;line-height:1.7}
.gc-page .gc-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:10px}
.gc-page .gc-reason{flex:1;max-width:420px}
.gc-page .gc-toggle{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;cursor:pointer}
.gc-page .add-row{display:inline-flex;align-items:center;gap:4px;margin-top:8px;padding:5px 12px;border:1px dashed var(--border);border-radius:5px;background:transparent;color:var(--text-lt);font-size:12px;font-family:inherit;cursor:pointer}
.gc-page .add-row:hover{border-color:var(--primary-lt);color:var(--primary)}
.gc-page .rowbtn{border:none;background:transparent;color:var(--text-lt);cursor:pointer;font-size:14px;padding:2px 6px;border-radius:4px;line-height:1}
.gc-page .rowbtn.del:hover{color:var(--primary);background:rgba(184,80,66,0.07)}
.gc-page .movebtn{border:1px solid var(--border);background:var(--bg-card);border-radius:3px;font-size:11px;padding:0 4px;cursor:pointer;line-height:1.4}
.gc-page .movebtn:disabled{opacity:.35;cursor:default}
.gc-page .hidden-form{display:none}
.gc-page .tab-content{padding:0}


/* ===== B4 案件の取り消し ===== */
.cancel-banner{display:flex;align-items:center;gap:12px;background:#FDECEA;border:1px solid #E5A294;border-radius:8px;padding:10px 14px;margin-bottom:12px;color:var(--text-dk)}
.cancel-banner strong{color:var(--primary-dk2)}
.cancel-banner form{margin-left:auto}
.status-flow.is-cancelled .status-step{opacity:.45}
.status-flow .status-step.cancelled{opacity:1;background:var(--primary);color:#fff;border-color:var(--primary)}
.status-badge.st-cancelled,.filter-chip.fc-st-cancelled:not(.off){background:var(--primary);color:#fff;border-color:var(--primary)}
.btn.btn-cancel{background:var(--primary);border-color:var(--primary);color:#fff}
.btn.btn-cancel.btn--ghost{background:var(--bg-card);color:var(--primary)}
/* 共通の確認・入力モーダル（回答書 5 章 #10）。見た目は .scrim のまま——
   ★ 目印だけ足す。1 つの画面に 中止・取り消しなど別のモーダルも .scrim で出るので、
     「共通のほう」を名指しできるようにする（E2E もこれで引く・2026-09-23） */
/* ★ 点検 2026-10-01：確認窓は**スライドインパネル（z-index 101）より前**に出す。390px ではパネルが画面いっぱいになり、
     受注登録の「商品マスタに登録しますか」がパネルの下に隠れて押せず、保存が止まっていた（1440px ではパネルの左に見えていた） */
.ask-scrim{z-index:210}
/* 4 章 #8：案件に直接ぶら下げた原価計算の一覧（見積カードの中） */
.project-cost-list{margin:0 0 8px;display:flex;flex-direction:column;gap:6px}
.project-cost-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:6px 10px;border:1px dashed var(--border);border-radius:6px}
.cancel-modal{max-width:560px}
.cancel-modal .field{display:block;margin:10px 0}
.cancel-modal .field span{display:block;font-size:12px;color:var(--text-md);margin-bottom:4px}
.cancel-modal .field input{width:100%}
.cancel-modal .modal-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
.cancel-modal .modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.cancel-modal .modal-head h3{margin:0;font-size:14px;color:var(--primary-dk2)}

/* ===== B4 案件の中止（取り消しとは別：記録に残る状態） ===== */
.abort-banner{display:flex;align-items:center;gap:12px;background:#FFF4E0;border:1px solid #EF9F27;border-radius:8px;padding:10px 14px;margin-bottom:12px;color:var(--text-dk)}
/* 4 章 #7：失注の帯（中止と同じ形・色は灰で区別する・2026-09-23） */
.lost-banner{background:var(--ink-wash);border-color:var(--border)}
.abort-banner strong{color:#9A5B00}
.abort-banner form{margin-left:auto}
.status-flow .status-step.aborted{color:#BA7517;background:rgba(239,159,39,.14);border:1px dashed #BA7517;font-weight:700}
.status-badge.st-aborted{background:#EF9F27;color:#fff}
.filter-chip.fc-st-aborted:not(.off){background:#EF9F27;color:#fff;border-color:#EF9F27}
.btn.btn-abort{background:#EF9F27;border-color:#EF9F27;color:#fff}
.btn.btn-abort.btn--ghost{background:var(--bg-card);color:#9A5B00}

.advance-box .abort-note{background:#FFF4E0;border:1px solid #EF9F27;border-radius:6px;padding:8px 12px;color:#9A5B00;font-size:12px}

/* 【1】釉薬計算のオプション補正（行ごとに人が選ぶ・既定オフ。丸仙 2026-09-07） */
.gl-optform{display:flex;flex-wrap:wrap;gap:2px 6px;align-items:center;margin-top:4px;font-weight:400;font-size:10px;text-align:left}
.gl-opt{display:inline-flex;align-items:center;gap:2px;white-space:nowrap;cursor:pointer}
.gl-opt input{margin:0;width:12px;height:12px}
.gl-optbtn{font-size:10px;padding:1px 6px;margin-left:auto}
.gl-opts{padding:2px 0 8px;font-size:11px}
.gl-opts .gl-opt{margin-right:8px}
.gl-opt-tag{font-size:11px;color:var(--primary);border:1px solid var(--hairline);border-radius:3px;padding:0 4px}
.gl-opt-row td{border-top:none}
.gl-auto{font-size:10px;color:#4C7519;border:1px solid rgba(99,153,34,.4);border-radius:3px;padding:0 3px;margin-left:2px;white-space:normal}
.gc-auto{font-size:12px}
.gc-auto-row{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:4px}
.gc-auto-row input.num{width:80px}
.gl-auto.off{color:var(--chk,#B5651D);border-color:currentColor}

/* #14 中止の案件の注意／#20 在庫出荷タグ／#19 見積と明細の単価差 */
.frozen-note{margin:6px 0 10px}
.retired-notice{margin:6px 0 10px}
/* #25 結果欄（手入力）の行 */
.result-row{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.result-row .btn-edit{flex:0 0 auto;margin-top:6px}
/* #7 釉薬の残数（入れるのはここ2か所だけ） */
.poly-cell{padding:2px}
.poly-form{display:flex;flex-direction:column;align-items:center;gap:2px}
.poly-in{width:64px;text-align:center;padding:2px 4px;font-size:12px}
.poly-btn{padding:1px 6px;font-size:11px}
/* #1 品番から入れた知らせ */
.code-filled{color:var(--info)}
/* #6 工程を進めるときの実績日 */
.work-date-form{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.work-date{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--text-lt)}
.work-date input{padding:2px 6px;font-size:12px}
/* #6 実績日に入れられない日付を入れたとき */
.work-date-error{flex-basis:100%;margin:0 0 4px}
/* #6 案件詳細の日付列 */
.date-col{white-space:nowrap;font-size:11px;line-height:1.5}
.date-col .d-line{display:block}
.date-col .muted{opacity:.5}
.th-sub{font-weight:400;font-size:11px;opacity:.7}
.stock-tag{background:rgba(58,110,165,.12);color:#3a6ea5;border-color:rgba(58,110,165,.3);margin-left:4px}
.sample-actions{white-space:nowrap}
.sample-actions .inline-form{display:inline-block;margin-right:4px}
.quote-gap{margin:0 0 8px}
.check-inline{cursor:pointer}
.unshipped-card{border-color:rgba(184,120,20,.35)}
.unshipped-card .card-h{background:rgba(184,120,20,.06)}

/* =======================================================================
   密度とボタン ― 丸仙 UI是正 2026-09-10（C1／C3）
   定義書 §2-5（9/8 改訂：当社モックの実測値）と §6-1／§6-11 の値をここに集約する。
   ★★ 2026-08-03 の「画面表示は 14px 未満を使用しない・本文基準 16px」は**撤回**。
      現場は一覧を上から下へ目で追って探すので、1件1行で俯瞰できることが操作性そのもの、
      という丸仙の判断（9/10 C1）。タブレットで押しやすさは**文字を大きくするのではなく
      タップ領域 44px 以上**で確保する（M2・下の .touch）。
   ★ ここは app.css の末尾に置く。上の各画面の指定と同じ詳細度なら**後に書いたこちらが勝つ**。
   ======================================================================= */

/* 本文 12〜13px・行間 1.5 */
body{font-size:13px;line-height:1.5}
small,.small{font-size:11px;line-height:1.4}

/* 見出し h1 18〜20px／h2 14px／h3 12〜13px */
.topbar h1{font-size:19px;line-height:1.4}
.topbar .sub{font-size:12px}
.section-intro h2{font-size:14px}
.section-intro p{font-size:12px}
.panel__head h3{font-size:13px}

/* 一覧の表 12px・セル余白 10px×12px・見出しの余白 9px×12px */
.tbl,table.list{font-size:12px}
.tbl th,table.list th{font-size:12px;padding:9px 12px}
.tbl td,table.list td{font-size:12px;padding:10px 12px}

/* 製造管理表・原価計算書の表 11px（見出し 9px）・セル余白 4px×6px */
/* ★ 原価計算書のラッパは .s05-page（.s07-page／.cost-sheet は存在しない・2026-09-23 に直した） */
.m04-page table,.s05-page table{font-size:11px}
.m04-page table th,.s05-page table th{font-size:9px;padding:4px 6px}
.m04-page table td,.s05-page table td{font-size:11px;padding:4px 6px}

/* ボタン 11〜12px・余白 6〜7px×16px（高さ 約30px）。§6-1 の4クラスに寄せる（C3） */
.btn{min-height:30px;padding:6px 16px;font-size:12px;border-radius:6px}
.btn--sm,.btn-sm{min-height:26px;padding:4px 12px;font-size:11px}
.btn--warning,.btn-warning{background:var(--warning);border-color:var(--warning);color:#fff}
.btn--warning:hover,.btn-warning:hover{background:#D98A17;border-color:#D98A17;color:#fff}
/* ★ 画面ごとに増えた別名を4クラスへ寄せる（見た目の通り数を減らす・C3） */
.btn-edit,.m04-page .btn-edit,.s05-page .btn-edit{font-size:11px;padding:4px 12px;min-height:26px;border-radius:6px;
  border:1px solid var(--border);background:#fff;color:var(--text-dk)}
.btn-add-row{font-size:11px;padding:4px 12px;border-radius:6px}
.m04-page .btn-checklist{font-size:11px;padding:4px 12px;border-radius:6px}

/* 入力欄・選択欄 12px（本文より小さくしない）・余白 5px×10px */
input,select,textarea{font-size:12px}
.field input,.field select,.field textarea,
input[type=text],input[type=number],input[type=date],input[type=search],input[type=password],select,textarea{
  padding:5px 10px;font-size:12px}

/* ★ M2 タップ領域 44px 以上。**文字は大きくせず領域だけ広げる**（製造系の画面で使う） */
.touch{position:relative}
.touch::after{content:"";position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);
  height:44px;min-width:44px;pointer-events:none}

/* -----------------------------------------------------------------------
   サイドバーの2つの姿（丸仙 UI是正 M1 の見直し・2026-09-15）

   ★★ **常設**（流れの中・本文を押し出す）と **ドロワー**（本文の上に出す）の2つしかない。
     どちらになるかは**画面の幅**で決まる。姿ごとの決まりは次のとおり。

     ┌ 常設（製造系 1200px 以上／営業系 821px 以上）
     │   ・`position:sticky` のまま流れの中に居る＝本文を押し出す（重ならない）
     │   ・☰ で畳める。畳んだら `display:none`＝幅も返す（半端に残さない）
     │   ・畳んだ／開いた選択は覚える（sessionStorage・app.js の navShell）
     └ ドロワー（製造系 1199px 以下／営業系 820px 以下）
         ・`position:fixed` で本文の上に出す＝**必ず背景を暗くする**（.nav-backdrop）
         ・背景を押す／Esc で閉じる。次の画面へは持ち越さない（開いたまま着かない）

   🔴 **ドロワーで背景を暗くしないと、本文が読めないまま重なる**（2026-09-14 に日報で発覚。
     1024px の6画面すべてで 230px ぶん重なり、24〜88個の文字が覆われていた）。
     掃引の「☰ を押した状態」の検査（sweep-1440.spec.js）がこの決まりを見張っている。

   ★ しきい値 1200px の根拠（実測・2026-09-15）：サイドバーを流れの中に置いたまま幅を狭めると、
     **製造管理表（M-04）の本文は 862px を切ると横スクロールが出る**（1100px→0px／1080px→12px／
     1024px→68px）。サイドバー 230px を足すと**画面幅 1092px が下限**。
     1200px はその下限に余裕を持たせた値で、タブレット横（1024px）と
     ノートPC（1280px 以上）の間に落ちる。

   ★ タップ領域 44px（M2）は定義書 §2-4・§5-3（1024px 基準）のまま。
   ----------------------------------------------------------------------- */
/* ★ 5 章 #6：32px だったのを 44px に（文字の大きさは変えない・2026-09-23） */
.nav-toggle{display:none;align-items:center;justify-content:center;width:44px;height:44px;flex:none;
  border:1px solid var(--border);border-radius:6px;background:var(--bg-card);color:var(--text-dk);
  font-size:15px;line-height:1;cursor:pointer}
.nav-toggle:hover{background:var(--bg-cream)}
/* ★ ☰ は製造系では常に出す（常設でも畳めるようにするため）。営業系は狭い画面だけ */
.shell--mfg .nav-toggle{display:inline-flex}
@media (max-width:820px){ .nav-toggle{display:inline-flex} }

/* 背景（ドロワーのときだけ出す。既定は消えている＝常設では絶対に出ない） */
.nav-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.42);z-index:39;
  -webkit-tap-highlight-color:transparent}

/* ── 常設：☰ で畳んだら幅ごと返す（半端に残さない＝重なりようがない） ── */
@media (min-width:1200px){ .shell--mfg.nav-collapsed .sidenav{display:none} }
@media (min-width:821px){ .shell:not(.shell--mfg).nav-collapsed .sidenav{display:none} }

/* ── ドロワー：製造系は 1199px 以下 ── */
@media (max-width:1199px){
  .shell--mfg .sidenav{position:fixed;left:0;top:0;transform:translateX(-100%);transition:transform .16s}
  .shell--mfg.nav-open .sidenav{transform:none}
  .shell--mfg.nav-open .nav-backdrop{display:block}
}

/* ★★ 5 章 #7（2026-09-23・馬場判断）：ボタンの高さを §6-11 の実寸の 3 段にそろえる。
     §6-11「フォーム要素のサイズ」＝ button（primary）36px・button（small）28px。
     M 系（製造系）は §2-4／§5 のタップ領域 44px を優先（§6-11 の 2026-09-08 追記）＝下の .shell--mfg。
     ★ 変えるのは**高さだけ**。文字の大きさは §2-5（9/10 C1 で密度を戻した判断）のまま。
     以前は 25〜64px の 9 種類に散っていた（画面ごとの別名の上書きが残っていたため）。 */
.btn{min-height:36px}
.btn--sm,.btn-sm,.btn-edit,.m04-page .btn-edit,.s05-page .btn-edit,.rowbtn,.btn-add-row,.m04-page .btn-checklist{min-height:28px}

/* ★ M2 押す要素は 44px 以上。**文字は大きくしない**（§2-5 のまま） */
.shell--mfg .btn,.shell--mfg .btn--sm,.shell--mfg .btn-sm,
.shell--mfg .btn-edit,.shell--mfg .btn-add-row,.shell--mfg .btn-checklist,
.shell--mfg button[type=submit],.shell--mfg .rowbtn,
/* ★ 5 章 #6（2026-09-23）：この 2 つが一括指定から漏れていた（次工程へ 25px・未起票 20px） */
.shell--mfg .step-advance,.shell--mfg .pending-toggle{min-height:44px;padding-top:0;padding-bottom:0}
.shell--mfg input,.shell--mfg select,.shell--mfg textarea{min-height:44px}
.shell--mfg textarea{min-height:66px}

/* 未起票ブロックは既定で畳む（M4）。起票ボタンは通常サイズ＝行の高さを決めない */
.pending-toggle{border:none;background:none;font:inherit;color:inherit;cursor:pointer;padding:0;
  display:inline-flex;align-items:center;gap:6px}
.pending-toggle:hover{text-decoration:underline}
.shell--mfg .pending-list .btn,.shell--mfg .pending-list .btn--sm{min-height:26px;padding:4px 12px;font-size:11px}

/* =======================================================================
   営業系の是正 ― 丸仙 UI是正 2026-09-10（S1〜S10）
   ======================================================================= */

/* S1 カード内の表が切れないように、はみ出しは表ごと横スクロール（金額の誤読を防ぐ） */
.s05-page .card,.mr-page .card{overflow:hidden}
/* ★ ここも同じ取り違え（.s07-page/.cost-sheet はこの画面に無い）。.s05-page に直した（2026-09-23） */
.s05-page .card table{min-width:max-content}
.s05-page .card-b,.s05-page .panel__body{overflow-x:auto}

/* S2 ボールの所在＝製造は緑・営業は青・得意先は紫（定義書 §6-5） */
.m01-page .action-mfg{background:rgba(99,153,34,.14);color:var(--positive)}
.m01-page .action-sales{background:rgba(59,130,182,.12);color:var(--info)}
/* S5 得意先バッジの文字は定義値 */
.m01-page{--m01-purple:#6B4C82}

/* S3 バッジが日付に重ならない（バッジ同士の余白 4px 以上） */
.m01-page .card-right{gap:4px}
.m01-page .card-action-badge{margin-top:4px}
.m01-page .card-meta,.m01-page .card-spec{display:flex;flex-wrap:wrap;gap:4px;align-items:center}

/* S4 ステッパーの状態色：done＝緑／active＝橙／pending＝グレー（§6-9） */
.m01-page .mt-dot{background:#dcd9d2}
.m01-page .mt-dot.done{background:var(--positive)}
.m01-page .mt-dot.active{background:var(--warning);box-shadow:0 0 0 3px rgba(239,159,39,.22)}
.m01-page .mt-name.active{color:#BA7517;font-weight:700}
.m01-page .mt-bar.done{background:var(--positive)}

/* S6 詳細画面の「編集」は黄ボタン（§5-1／§6-1）。参照中バッジは Blade 側 */
.btn-edit.btn--warning,.s05-page .btn-edit.btn--warning,.m04-page .btn-edit.btn--warning{
  background:var(--warning);border-color:var(--warning);color:#fff}
.ref-badge{display:inline-block;font-size:11px;font-weight:700;padding:2px 10px;border-radius:20px;
  background:var(--ink-wash);color:var(--text-md)}

/* S8 KPI の数値は通常＝本文色、警告のときだけ赤（01 ダッシュボードと同じ作り） */
.mr-page .kpi .v{color:var(--text-dk)}
.mr-page .kpi.kpi-alert .v{color:var(--negative)}

/* S9 ステータスバッジはピル型（角丸20px）、種別バッジは角丸3px で形を分ける（§6-5） */
.status-badge{border-radius:20px;padding:2px 10px}
.m01-page .status-badge{border-radius:20px}
.kind-badge,.cost-list .kind-badge,.badge-accum{border-radius:3px}

/* S10 原価計算書のシートのタブバーは画面下部（§6-6）
   ★★ **当たっていなかった**（2026-09-23）。この画面のラッパは `.s05-page` で、
      `.s07-page` も `.cost-sheet` も `.cost-sheet-wrap` も存在しない。指定が 1 つも効かず
      既定（上・下線あり）のまま出ていた。order を効かせる親（flex）もここで作る。 */
.s05-page{display:flex;flex-direction:column}
.s05-page .sheet-tabs{order:99;margin:16px 0 0;border-bottom:none;border-top:2px solid var(--border)}

/* ★ 5 章 #9：案件詳細の受注表で形状・色合を 1 文字ずつ縦に割らない。
   器（.table-frame）は横スクロールできるので、列を潰さず横に送る（2026-09-23） */
.spec-cell{white-space:nowrap}

/* M3 表の行見出しを1文字ずつ縦に折り返させない（1024px で「予」「定」と割れていた） */
.m04-page .p-table .rowhead{white-space:nowrap;font-size:11px;color:var(--text-lt);width:1%}
.m04-page .p-table .rowhead-sub{display:block;font-size:9px;opacity:.8;white-space:nowrap}
/* 製造管理表は 1024px に収める（3枚のカードを横一列・釉薬計算の表は右端まで） */
@media (max-width:1100px){
  .m04-page .p-table th,.m04-page .p-table td{padding:4px 5px}
  /* ★ 5 章 #8：1024px は「768 以下の横送り」にも救われない帯で、成形メモの表がカードから
     41px はみ出していた。カードの外へ出さず、表の中だけ横に送る（2026-09-23） */
  .m04-page .p-table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
}

/* 製造一覧（M-03）。1件1行で俯瞰できることが操作性そのもの（丸仙 UI是正 M3・M4） */
.m03-page table.list th{white-space:nowrap}
.m03-page table.list td{padding:8px 12px}
/* ★ 案件No・得意先は折り返さない（1024px で3行・4行に割れていた） */
.m03-page table.list td.mfgno,.m03-page table.list td.cust{white-space:nowrap}
.m03-page .case-card{margin-bottom:12px}

/* アイコン（Lucide・インライン SVG・C4）。文字色に追随し、行の中で字と同じ高さに揃える */
.ic{display:inline-block;vertical-align:-.16em;flex:none}
.nav-item .ico .ic{vertical-align:-.2em}

/* 画面の説明は1行＋「?」に畳む（C2） */
.help{margin:0 0 12px;font-size:12px;color:var(--text-md);line-height:1.5}
.help-sum{margin-right:6px}
/* ★ 5 章 #6：見た目は 18px のまま、**当たり判定だけ 44px** に広げる（2026-09-23） */
.help-btn{width:18px;height:18px;border-radius:50%;border:1px solid var(--border);background:var(--bg-card);
  color:var(--text-md);font-size:11px;line-height:1;cursor:pointer;font-family:inherit;vertical-align:1px;
  position:relative}
.help-btn::after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:44px;height:44px}
.help-btn:hover{background:var(--bg-cream);color:var(--text-dk)}
.help-body{margin:8px 0 0;padding:10px 12px;background:var(--bg-cream);border:1px solid var(--border);
  border-radius:6px}
.help-body ul{margin:0;padding-left:1.2em}
.help-body li{margin:0 0 4px}

/* ===== 案件一覧の進捗の点（回答書 2026-09-22 5 章 #11・手本 20_sample_S01_case_list_v2 の B13）=====
   済み（通った・緑）／現在（橙のリング）／通らない段階（中抜き＋グレーの点線）／未（薄い塗り）／中止（橙の点線） */
.case-steps{display:flex;align-items:center;margin-top:5px}
.case-steps .cs-dot{width:7px;height:7px;border-radius:50%;background:#E0DED5;flex-shrink:0;box-sizing:border-box}
.case-steps .cs-dot.done{background:var(--positive)}
.case-steps .cs-dot.current{background:#fff;border:2px solid var(--warning);width:9px;height:9px}
.case-steps .cs-dot.skipped{background:transparent;border:1px dashed #BDBBB2}
.case-steps .cs-dot.aborted{background:#fff;border:2px dashed #BA7517;width:11px;height:11px}
.case-steps .cs-dot.lost{background:#fff;border:2px dashed #A9A79E;width:11px;height:11px}
.case-steps .cs-bar{width:7px;height:2px;background:#E0DED5;flex-shrink:0}
.case-steps .cs-bar.done{background:var(--positive)}
.case-steps .cs-bar.skipped{background:transparent;border-top:2px dotted #D9D7CE}
.status-badge.st-aborted-tag{background:rgba(239,159,39,.14);color:#BA7517;border:1px dashed #BA7517;margin-left:4px}

/* 保留（丸仙 回答書 2026-09-30 試作案件の整理 要件 2）：止まっているが失注ではない＝青みの点線 */
.status-badge.st-on_hold{background:rgba(74,111,165,.14);color:#4A6FA5;border:1px dashed #4A6FA5}
.filter-chip.fc-st-on_hold:not(.off){background:#4A6FA5;color:#fff;border-color:#4A6FA5}
.status-flow .status-step.hold{color:#4A6FA5;background:rgba(74,111,165,.12);border:1px dashed #4A6FA5;font-weight:700}
.case-steps .cs-dot.hold{background:#fff;border:2px dashed #4A6FA5;width:11px;height:11px}
.hold-banner{background:rgba(74,111,165,.08);border-color:#4A6FA5}
.sample-approved{background:rgba(99,153,34,.25);color:var(--positive)}
/* ★ 受注明細の原価の結び先を変える・外す（回答書 2026-10-03 4 章 1） */
.cost-link-ctl{position:relative}
.cost-link-ctl>summary{list-style:none;cursor:pointer}
.cost-link-ctl>summary::-webkit-details-marker{display:none}
.cost-link-pop{position:absolute;right:0;z-index:30;min-width:280px;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 14px rgba(0,0,0,.12);padding:10px;display:flex;flex-direction:column;gap:8px;text-align:left}
.cost-link-pop form{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.cost-link-pop select{max-width:100%}
/* ★ 決定単価の警告を確認済みにする（回答書 2026-10-03 4 章 2） */
.price-gap-ack{font-size:11px}
.price-gap-ack-form{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:4px}

/* ===== 試作の写真（2026-10-16 の回・R-03）・一覧の小さい写真 ===== */
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin-bottom:12px}
.photo-tile{margin:0;border:1px solid var(--border);border-radius:8px;padding:6px;background:var(--bg-card);display:flex;flex-direction:column;gap:4px}
.photo-open{border:0;padding:0;background:none;cursor:zoom-in}
.photo-open img{display:block;width:100%;height:96px;object-fit:cover;border-radius:6px}
.photo-stage{font-size:13px;font-weight:600}
.photo-stage small{margin-left:6px;color:var(--text-md);font-weight:400}
.photo-del{opacity:1;font-size:13px}
.photo-add{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.photo-pick{position:relative;cursor:pointer}
.field-inline{display:inline-flex;align-items:center;gap:6px}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.photo-big figure{margin:0;background:var(--bg-card);padding:12px;border-radius:10px;max-width:96vw;max-height:94vh;display:flex;flex-direction:column;gap:8px;align-items:center}
.photo-big img{max-width:92vw;max-height:80vh;object-fit:contain}
.photo-thumbs{display:inline-flex;gap:4px;vertical-align:middle}
.photo-thumbs img{width:36px;height:36px;object-fit:cover;border-radius:4px;border:1px solid var(--border)}

/* ===== ダッシュボード：月ごとの不良率のグラフ（R-12・2026-10-16 の回） ===== */
.defect-chart{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;margin:12px 0 4px}
.defect-chart-head{font-weight:600;display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;margin-bottom:6px}
.defect-svg{width:100%;height:auto;max-height:220px}
.defect-svg .bar-ok{fill:var(--accent)}
.defect-svg .bar-alert{fill:var(--primary)}
.defect-svg .bar-val{font-size:11px;fill:var(--text-dk)}
.defect-svg .bar-none{font-size:12px;fill:var(--text-lt)}
.defect-svg .bar-lbl{font-size:12px;fill:var(--text-md)}

/* ===== 原価計算書のタブ：×・ダブルクリック・ドラッグ（定義書 10-7・2026-10-16 の回） ===== */
.s05-page .sheet-tab-wrap{display:inline-flex;align-items:center;gap:2px;cursor:grab}
.s05-page .sheet-tab-wrap:active{cursor:grabbing}
.s05-page .sheet-tab-x{border:0;background:transparent;color:var(--text-lt);font-size:15px;line-height:1;padding:2px 6px;border-radius:4px;cursor:pointer}
.s05-page .sheet-tab-x:hover{background:var(--clay-wash);color:var(--danger)}
.s05-page .sheet-tabs-saved{margin-left:8px}

/* ===== 撮影・成形記録・作り方の削除（定義書 10-13・2026-10-16 の回） ===== */
.rec-del{color:var(--danger)}
.reimport-ask{margin:10px 0 14px;padding:12px 14px;border:1px solid var(--warning);background:var(--amber-wash);border-radius:var(--radius);display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}
.reimport-ask .msg small{display:block;color:var(--text-md);margin-top:4px}
.reimport-ask .acts{display:flex;gap:8px}
.cap-del{display:inline-flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:4px}

/* ===== 使い方（画面の中のマニュアル・R-05a・2026-10-16 の回） ===== */
.manual-btn{display:inline-flex;align-items:center;padding:5px 10px;border:1px solid var(--border);border-radius:999px;font-size:13px;color:var(--text-md);background:var(--bg-card);text-decoration:none;margin-left:8px;white-space:nowrap}
.manual-btn:hover{border-color:var(--primary);color:var(--primary)}
.manual-page{max-width:860px}
.manual-search{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.manual-search input{flex:1;min-width:220px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;font-size:15px}
.manual-h{font-size:16px;margin:18px 0 8px}
.manual-toc{list-style:none;padding:0;margin:0;display:grid;gap:6px}
.manual-toc li{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-card)}
.manual-hit{display:flex;flex-direction:column;gap:3px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);margin-bottom:6px;color:inherit;text-decoration:none}
.manual-snippet{font-size:13px;color:var(--text-md)}
.manual-body{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 18px;line-height:1.8}
.manual-summary{font-weight:600}

/* ===== 記録の中の言葉の検索（R-08・2026-10-23 の回） ===== */
.search-help{display:block;margin-top:4px;line-height:1.5}
.search-hits{margin:6px 0 4px;padding:6px 8px;border-left:3px solid var(--accent);background:var(--bg-card);font-size:13px;line-height:1.6}
.search-hit b{font-weight:600}
.search-hits mark{background:#fff2a8;color:inherit;padding:0 1px;border-radius:2px}

/* ===== 原料マスタの残り（R-02・2026-10-23 の回） ===== */
.row-off td{color:var(--text-lt)}
.off-tag{display:inline-block;font-size:11px;padding:0 6px;border-radius:999px;border:1px solid var(--border);color:var(--text-md);margin-left:4px}
.use-tag{display:inline-flex;align-items:center;font-size:12px;padding:2px 8px;border-radius:999px;background:var(--bg-subtle,#f3f2ef);color:var(--text-md);white-space:nowrap}
.soil-link{display:inline-block;margin:6px 0 2px}

/* ★ 文字で絞れるプルダウン（回答書 2026-10-14 2 章 6） */
.fsel{display:flex;flex-direction:column;gap:4px}
.fsel .fsel-q{font-size:15px;padding:6px 10px;border:1px solid var(--border);border-radius:6px}
.fsel select{width:100%}
.glaze-list .hin-name, table.list .hin-name{display:block;font-size:13px;color:var(--text-md);margin-top:2px}
/* ★ 回答書 2026-10-15 2 章 3：採用商品（③）に結ばれていない、製造管理表で使っただけの品番（薄く・別の行） */
.glaze-page .mfg-used{display:block;font-size:12px;color:var(--text-lt);margin-top:2px}

/* ★ 取り込んだ原価計算書の案内（回答書 2026-10-14 3 章 3） */
.imported-note{margin:0 0 12px;padding:10px 14px;border:1px solid var(--border);border-left:4px solid var(--amber,#c98a1a);border-radius:6px;background:var(--bg-card);font-size:14px;line-height:1.6}

/* ★ 回答書 2026-10-17 3 章 2：起票時の施釉設定の警告（確かめるまで残す） */
.glaze-warn{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:4px 0 8px;padding:8px 10px;border:1px solid rgba(217,119,6,.35);background:rgba(217,119,6,.08);border-radius:6px;font-size:13px}
.status-badge.st-warn{background:rgba(217,119,6,.15);color:#9a5a05}

/* ★ 回答書 2026-10-17 5 章 1：受注残のカードに累計を小さく添える */
.kpi-small{margin-top:2px;font-size:11px;color:var(--muted,#6b7280);line-height:1.4}
/* ★ 回答書 2026-10-17 2 章 1：成形一覧の「対象を特定しない準備」の表 */
.prep-list td,.prep-list th{white-space:nowrap}
.prep-list input[type=number]{width:6em}
/* ★ 回答書 2026-10-17 5 章 3 ①：管理表の釉薬の枠を直す（切り替えが入っているときだけ） */
.frame-edit{margin:8px 0 12px;border:1px solid var(--border,#e5e7eb);border-radius:6px;padding:6px 10px}
.frame-edit>summary{cursor:pointer;font-weight:700;font-size:13px}
.frame-edit-table td{white-space:nowrap}
/* ★ 回答書 2026-10-20：版履歴の出所（管理表 No／取込）・一覧のバリエーション・空いている枠の行 */
.vchip .vsrc{display:block;font-size:10px;font-weight:400;opacity:.75;margin-top:1px}
.attr-tag.attr-var{opacity:.8}
.frame-edit-table tr.frame-empty td{background:rgba(0,0,0,.02)}
