/* ALGOS 共通スタイル — 会員側(ダーク・ゴールド=ランディングのトーン) / 管理者側(ライト) */
:root {
  --ink:#14100c; --ink-2:#1d1710; --cream:#f5efe6; --cream-dim:#b8ae9e;
  --gold:#c2a35c; --gold-dim:#8a7440; --danger:#c0392b; --ok:#2e7d32;
  /* W8: 新規コードはこの変数だけを使う。白背景テーマでも罫が消えないようにするため。
     rgba(255,255,255,…) を直に書くと hub テーマ(白地)で白い線になり消える。
     ・--rule   ふつうの罫（枠・区切り）
     ・--rule-2 入力欄やチップの、少し強い枠
     ・--tint   ホバーや帯の下地
     ・--danger-ink 危険・欠品の文字色（暗い地では淡赤・明るい地では濃赤）
     ・--ok-ink     承認・完了の文字色（同上・緑）
     ・--info-ink   注意書き・付帯情報の文字色（同上・青） */
  --rule:rgba(255,255,255,.08);
  --rule-2:rgba(255,255,255,.14);
  --tint:rgba(255,255,255,.05);
  --danger-ink:#e8b4ad;
  --ok-ink:#9ccc9c;
  --info-ink:#9ecfe8;
}
* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:"Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif; line-height:1.7; }

/* ── 会員側 ── */
body.theme-member { background:var(--ink); color:var(--cream); min-height:100vh; }
.m-header { display:flex; align-items:center; justify-content:space-between;
  padding:1rem 1.5rem; border-bottom:1px solid var(--rule); }
.m-header .brand { font-family:Georgia,serif; font-size:1.5rem; color:var(--gold); letter-spacing:.08em; text-decoration:none; }
.m-header nav a, .m-header nav button { color:var(--cream-dim); font-size:.8rem; margin-left:1.2rem; text-decoration:none;
  background:none; border:none; cursor:pointer; font-family:inherit; }
.m-header nav a:hover { color:var(--cream); }
.m-wrap { max-width:46rem; margin:0 auto; padding:2.5rem 1.25rem 4rem; }
.m-wrap.wide { max-width:60rem; }
/* W7: 絞り込みサイドバーを置いても商品グリッドが4列を保てる幅（60rem のままだと3列に減る） */
.m-wrap.wide-x { max-width:78rem; }
h1.m-title { font-size:1.3rem; font-weight:600; margin-bottom:1.6rem; color:var(--cream); }
h2.m-sec { font-size:.95rem; color:var(--gold); border-bottom:1px solid rgba(194,163,92,.35);
  padding-bottom:.4rem; margin:2.2rem 0 1.2rem; }
.field { margin-bottom:1.15rem; }
.field label { display:block; font-size:.8rem; color:var(--cream-dim); margin-bottom:.35rem; }
.field .req { color:var(--gold); font-size:.7rem; margin-left:.4rem; }
.field input[type=text], .field input[type=email], .field input[type=password], .field input[type=number],
.field input[type=url], .field input[type=file], .field select, .field textarea {
  width:100%; padding:.65rem .8rem; background:var(--ink-2); color:var(--cream);
  border:1px solid var(--rule-2); border-radius:.5rem; font-size:.9rem; font-family:inherit; }
.field input:focus, .field select:focus, .field textarea:focus { outline:1px solid var(--gold); }
.hint { font-size:.72rem; color:var(--cream-dim); margin-top:.3rem; }
.row2 { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
@media (max-width:560px){ .row2 { grid-template-columns:1fr; } }
.btn { display:inline-block; padding:.8rem 2.2rem; border-radius:999px; border:none; cursor:pointer;
  font-size:.9rem; font-weight:700; font-family:inherit; text-decoration:none; }
.btn-gold { background:var(--gold); color:var(--ink); }
.btn-gold:hover { filter:brightness(1.08); }
.btn-ghost { background:none; border:1px solid var(--rule-2); color:var(--cream); }
.errors { background:rgba(192,57,43,.12); border:1px solid rgba(192,57,43,.5); border-radius:.5rem;
  padding: .8rem 1rem; margin-bottom:1.4rem; font-size:.8rem; color:var(--danger-ink); }
.status-badge { display:inline-block; padding:.25rem .9rem; border-radius:999px; font-size:.78rem; font-weight:700; }
.st-pending { background:rgba(194,163,92,.15); color:var(--gold); border:1px solid var(--gold-dim); }
.st-active { background:rgba(46,125,50,.18); color:var(--ok-ink); border:1px solid #2e7d32; }
.st-rejected { background:rgba(192,57,43,.15); color:var(--danger-ink); border:1px solid var(--danger); }
/* W9: 商品の「種類・生産国」バッジ — 一覧カードと商品詳細で同じ見た目にするため共通に置く。
   🔴 ランディングは app.css を読まないため、同じ部品を landing.blade.php が Tailwind で持っている。
      寸法（文字 .68rem / 旗 1.15×.86rem）を変えるときは landing.blade.php も必ず合わせること。
   .p-tag は Product::TYPE_BADGES の地色をインラインで受け取る（白文字とのコントラストは 4.5:1 以上）。 */
.p-tag, .p-flag { font-size:.68rem; line-height:1.35rem; padding:0 .45rem; border-radius:.25rem; white-space:nowrap; }
.p-tag { display:inline-block; font-weight:700; color:#fff; letter-spacing:.01em; }
.p-flag { display:inline-flex; align-items:center; gap:.3rem; color:var(--cream-dim);
  border:1px solid var(--rule); background:transparent; }
/* 寸法を先に決めておかないと、Iconify が旗を描いた瞬間にカードの高さが動く。
   縁取りは日の丸のように地が白い旗が白背景に溶けるのを防ぐため。 */
.p-flag iconify-icon { flex:none; width:1.15rem; height:.86rem; box-shadow:0 0 0 1px rgba(0,0,0,.14); }

.kv { width:100%; border-collapse:collapse; font-size:.85rem; }
.kv th { text-align:left; color:var(--cream-dim); font-weight:500; padding:.5rem .8rem .5rem 0; width:11rem; vertical-align:top; }
.kv td { padding:.5rem 0; color:var(--cream); }
.kv tr { border-bottom:1px solid var(--rule); }

/* ── 会員側 共通ヘッダー v2 (ランディングのトーンで統一 — ロゴ・検索・カテゴリバー) ── */
.m-header2 { border-bottom:1px solid var(--rule); background:#14100c; }
.m-h-top { display:flex; align-items:center; gap:1.2rem; max-width:72rem; margin:0 auto; padding:.9rem 1.25rem; }
.m-h-top .brand { font-family:Georgia,serif; font-size:1.5rem; color:var(--gold); letter-spacing:.08em; text-decoration:none; white-space:nowrap; }
.m-h-top .brand small { font-size:.65rem; color:var(--cream-dim); letter-spacing:.35em; margin-left:.3rem; }
.m-h-search { flex:1; display:flex; max-width:30rem; }
.m-h-search input { flex:1; padding:.55rem .9rem; background:var(--ink-2); color:var(--cream);
  border:1px solid var(--rule-2); border-right:none; border-radius:999px 0 0 999px; font-size:.82rem; font-family:inherit; }
.m-h-search input:focus { outline:none; border-color:rgba(194,163,92,.6); }
.m-h-search button { padding:.55rem 1.2rem; background:var(--gold); color:var(--ink); border:none;
  border-radius:0 999px 999px 0; font-size:.78rem; font-weight:700; cursor:pointer; font-family:inherit; }
.m-h-nav { margin-left:auto; display:flex; align-items:center; gap:1.1rem; white-space:nowrap; }
.m-h-nav a, .m-h-nav button { color:var(--cream-dim); font-size:.8rem; text-decoration:none;
  background:none; border:none; cursor:pointer; font-family:inherit; }
.m-h-nav a:hover, .m-h-nav button:hover { color:var(--cream); }
.m-h-nav a.cta { border:1px solid rgba(194,163,92,.5); color:var(--gold); border-radius:999px; padding:.4rem 1rem; }
.m-h-cats { display:flex; gap:1.4rem; overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; max-width:72rem; margin:0 auto;
  padding:0 1.25rem; border-top:1px solid var(--rule); }
.m-h-cats::-webkit-scrollbar { display:none; }
.m-h-cats a { color:var(--cream); font-size:.8rem; text-decoration:none; padding:.7rem 0; white-space:nowrap;
  border-bottom:2px solid transparent; }
.m-h-cats a:hover { color:var(--gold); }
.m-h-cats a.active { color:var(--gold); border-bottom-color:var(--gold); font-weight:700; }
.m-h-subcats { display:flex; gap:1rem; overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; max-width:72rem; margin:0 auto;
  padding:.5rem 1.25rem .6rem; background:var(--tint); }
.m-h-subcats a { color:var(--cream-dim); font-size:.75rem; text-decoration:none; white-space:nowrap;
  padding:.2rem .8rem; border:1px solid var(--rule-2); border-radius:999px; }
.m-h-subcats a:hover { color:var(--cream); border-color:rgba(194,163,92,.5); }
.m-h-subcats a.active { color:var(--ink); background:var(--gold); border-color:var(--gold); font-weight:700; }
@media (max-width:720px) {
  .m-h-top { flex-wrap:wrap; gap:.7rem; }
  .m-h-search { order:3; max-width:none; width:100%; }
}

/* ── 管理者側（サイドバー・シェル / デザインシステム v2） ── */
body.theme-admin {
  --a-navy:#14181F; --a-navy-2:#1C232F; --a-navy-3:#2A3441; --a-navy-ink:#E9EDF3; --a-navy-ink2:#93A0B1;
  --a-paper:#F5F3EF; --a-surface:#ffffff; --a-surface2:#FBFAF8;
  --a-ink:#1F1B16; --a-ink2:#5E564D; --a-ink3:#938B80;
  --a-line:#E7E1D8; --a-line2:#F0EBE3;
  --a-wine:#7A2E33; --a-wine2:#8E3A40; --a-wine-soft:#F3E4E2; --a-gold:#C2A35C;
  --a-good:#2F7D5B; --a-good-bg:#E4F1EA; --a-warn:#B7791F; --a-warn-bg:#F7ECD6;
  --a-crit:#B4362F; --a-crit-bg:#F7E1DE; --a-info:#2E5E8A; --a-info-bg:#E4EDF5;
  --a-mono:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  --a-mincho:"Hiragino Mincho ProN","Yu Mincho",YuMincho,serif;
  background:var(--a-paper); color:var(--a-ink);
}
/* スクロールバー — 地色（--a-paper）との差が小さいと «バーがどこにあるか分からない»。
   ストア側の正本は partials/store-head（あちらは暗い地色）。ここは明るい地色ぶんの対。
   🔴 この指定は会員コンソールと管理コンソールの両方に効く（どちらも theme-admin）。 */
body.theme-admin { color-scheme: light; scrollbar-width: auto; scrollbar-color:#B9B1A5 #EFEAE4; }
body.theme-admin ::-webkit-scrollbar { width:12px; height:12px; }
body.theme-admin ::-webkit-scrollbar-track { background:#EFEAE4; }
body.theme-admin ::-webkit-scrollbar-thumb { background:#B9B1A5; border-radius:9px; border:2px solid #EFEAE4; }
body.theme-admin ::-webkit-scrollbar-thumb:hover { background:#8E8577; }
.a-shell { display:grid; grid-template-columns:238px 1fr; min-height:100vh; }
/* サイドバー */
.a-side { background:var(--a-navy); color:var(--a-navy-ink); position:sticky; top:0; height:100vh; display:flex; flex-direction:column; z-index:40; }
.a-brand { display:flex; align-items:center; gap:.65rem; padding:1.15rem 1.15rem 1rem; text-decoration:none; border-bottom:1px solid var(--a-navy-3); }
.a-mark { width:34px; height:34px; border-radius:9px; background:linear-gradient(150deg,var(--a-wine),#54201f); display:grid; place-items:center; color:#fff; font-family:var(--a-mincho); font-weight:700; font-size:1.15rem; box-shadow:inset 0 0 0 1px rgba(194,163,92,.5); }
.a-bt { color:#fff; font-family:var(--a-mincho); font-weight:700; font-size:1.05rem; letter-spacing:.03em; line-height:1.1; display:flex; flex-direction:column; }
.a-bt small { color:var(--a-navy-ink2); font-size:.6rem; letter-spacing:.2em; font-family:inherit; font-weight:400; margin-top:2px; }
.a-nav { flex:1; overflow-y:auto; padding:.7rem .6rem; }
.a-grp { font-size:.62rem; letter-spacing:.16em; color:var(--a-navy-ink2); font-weight:700; padding:.9rem .6rem .4rem; }
.a-nav a { display:flex; align-items:center; gap:.65rem; color:var(--a-navy-ink); text-decoration:none; padding:.55rem .65rem; border-radius:8px; font-size:.83rem; margin-bottom:1px; transition:background .15s,color .15s; }
.a-nav a svg { width:17px; height:17px; flex:none; opacity:.8; }
.a-nav a .a-badge { margin-left:auto; font-family:var(--a-mono); font-size:.65rem; background:var(--a-crit); color:#fff; padding:0 .4rem; border-radius:20px; }
.a-nav a:hover { background:var(--a-navy-2); color:#fff; }
.a-nav a.on { background:linear-gradient(90deg,var(--a-wine),transparent 94%); color:#fff; box-shadow:inset 3px 0 0 var(--a-gold); }
.a-nav a.on svg { opacity:1; }
.a-who { display:flex; align-items:center; gap:.6rem; padding:.8rem 1rem; border-top:1px solid var(--a-navy-3); font-size:.75rem; }
.a-av { width:30px; height:30px; border-radius:8px; background:var(--a-navy-3); display:grid; place-items:center; color:var(--a-gold); font-weight:700; flex:none; }
.a-nm { color:#fff; line-height:1.25; }
.a-rl { color:var(--a-navy-ink2); font-size:.65rem; }
.a-out { margin-left:auto; background:none; border:0; color:var(--a-navy-ink2); cursor:pointer; padding:.3rem; border-radius:6px; display:grid; place-items:center; }
.a-out svg { width:17px; height:17px; }
.a-out:hover { color:#fff; background:var(--a-navy-2); }
/* メイン・トップバー */
.a-main { min-width:0; display:flex; flex-direction:column; }
.a-top { position:sticky; top:0; z-index:20; background:rgba(245,243,239,.86); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); border-bottom:1px solid var(--a-line); padding:.7rem 1.9rem; display:flex; align-items:center; gap:1rem; min-height:56px; }
.a-crumb { font-size:.72rem; letter-spacing:.03em; color:var(--a-ink3); }
.a-top-r { margin-left:auto; display:flex; align-items:center; gap:.6rem; }
.a-tenant { display:flex; align-items:center; gap:.45rem; background:var(--a-surface); border:1px solid var(--a-line); padding:.3rem .7rem; border-radius:20px; font-size:.74rem; box-shadow:0 1px 2px rgba(31,27,22,.04); }
.a-tenant i { width:7px; height:7px; border-radius:50%; background:var(--a-good); }
.a-menu { display:none; }
.a-wrap { padding:1.7rem 1.9rem 4rem; max-width:75rem; width:100%; margin:0; }
/* 列の多い一覧だけ全幅にする（@section('wrapClass','is-full')）。既定の 75rem は変えない。 */
.a-wrap.is-full { max-width:none; }
/* 一覧で «折り返させない» 列。数値と状態は 1 文字ずつ縦に割れると読めない。 */
table.list td.nw, table.list th.nw { white-space:nowrap; }
/* 行内の小さなボタン。
   🔴 名前を .a-mini にしてはいけない — 下の «.theme-admin .a-mini»（セレクト用）と
      詳細度が同じで、あちらが後ろにあるので必ず負ける（実測: padding が .3rem .5rem に
      なり、地色もセレクトのものになっていた）。別名にする。 */
.a-btn.a-btn-xs { padding:.36rem .72rem; font-size:.74rem; border-radius:7px; min-height:2rem; }

/* ══ 商品一覧のグリッド ══
   🔴 table-layout:auto では «データ 1 件» が列幅を決めてしまう。62 文字の商品コードが
      1 件あるだけで、その列が 464px で固定され、どこでも改行できる日本語の列
      （商品名・蔵元・産地）が 1〜2 文字幅まで潰れた（本番データで実測）。
      fixed + colgroup にして «画面が» 列幅を決める。長い値は端で省略する。 */
/* 🔴 見出しの貼り付き（position:sticky）は入れていない。横スクロールの器を作ると
      overflow-y も auto になり、その器が scrollport になる。Chrome で 6 通り試して
      «貼り付いた» のは «器をスクロールさせない» 場合だけで、それは貼り付きではない（実測）。
      横に溢れる表と貼り付く見出しは両立しないので、崩れない方を採った。 */
.grid-products { overflow-x:auto; }
.grid-products table.list { table-layout:fixed; min-width:66rem; }
.grid-products table.list th, .grid-products table.list td { overflow:hidden; }
.grid-products .g-name { font-weight:600; line-height:1.4; }
.grid-products .g-code { display:block; margin-top:.15rem; font-size:.68rem; color:var(--a-ink3);
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace; white-space:nowrap;
  overflow:hidden; text-overflow:ellipsis; }
/* 長い名前 1 件が行の高さを支配しないよう 2 行で止める（続きは title で読める） */
.grid-products .g-clamp { display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.grid-products .g-ops { display:flex; gap:.5rem; align-items:center; justify-content:flex-end; }
/* 一括操作の帯。選択が 0 件のときは出さない（hidden 属性）。
   🔴 display を書いた時点で、ブラウザ既定の [hidden]{display:none} を上書きしてしまう。
      «0 件を選択中» の帯が出っぱなしになるので、hidden の側を明示して打ち消す。 */
.bulk-bar[hidden] { display:none; }
.bulk-bar { display:flex; align-items:center; gap:1rem; flex-wrap:wrap; margin-bottom:.9rem;
  padding:.6rem .9rem; border:1px solid var(--a-line); border-radius:9px; background:var(--a-surface2); }
.bulk-bar .bulk-count { font-size:.82rem; color:var(--a-ink2); }
.bulk-bar .bulk-count b { font-size:1rem; color:var(--a-ink); }
.bulk-bar .g-ops { margin-left:auto; }
/* 行の選択欄。押しやすさのため見た目より広い当たりにする。 */
table.list td .bulk-pick, table.list th #bulkAll { width:1.05rem; height:1.05rem; cursor:pointer; accent-color:var(--a-wine); }
.a-wrap h1 { font-size:1.3rem; font-family:var(--a-mincho); font-weight:700; letter-spacing:.01em; margin-bottom:1.3rem; color:var(--a-ink); }
.a-wrap h1 small { font-family:"Hiragino Kaku Gothic ProN",sans-serif; font-weight:400; }
/* フラッシュ */
.flash { background:var(--a-good-bg); border:1px solid rgba(47,125,91,.35); color:var(--a-good); border-radius:9px; padding:.7rem 1rem; margin-bottom:1.2rem; font-size:.85rem; }
/* KPI カード */
.cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(12.5rem,1fr)); gap:.9rem; margin-bottom:1.6rem; }
.card { background:var(--a-surface); border:1px solid var(--a-line); border-radius:11px; padding:1.05rem 1.2rem; box-shadow:0 1px 2px rgba(31,27,22,.04); }
.cards .card { position:relative; overflow:hidden; transition:box-shadow .15s,transform .15s; }
.cards .card::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--a-gold); }
.cards .card.k-crit::before { background:var(--a-crit); }
.cards .card.k-warn::before { background:var(--a-warn); }
.cards .card.k-good::before { background:var(--a-good); }
.cards .card:hover { box-shadow:0 6px 20px -10px rgba(31,27,22,.22); transform:translateY(-1px); }
.card .num { font-family:var(--a-mono); font-variant-numeric:tabular-nums; font-size:1.9rem; font-weight:600; color:var(--a-ink); line-height:1.05; letter-spacing:-.01em; }
.card .lbl { font-size:.74rem; color:var(--a-ink2); margin-top:.35rem; }
/* テーブル */
table.list { width:100%; border-collapse:collapse; background:var(--a-surface); border:1px solid var(--a-line); border-radius:11px; overflow:hidden; font-size:.85rem; box-shadow:0 1px 2px rgba(31,27,22,.04); }
table.list th { background:var(--a-surface2); text-align:left; padding:.6rem .9rem; font-size:.66rem; letter-spacing:.05em; color:var(--a-ink3); font-weight:700; border-bottom:1px solid var(--a-line); }
table.list td { padding:.7rem .9rem; border-top:1px solid var(--a-line2); }
table.list tr:hover td { background:var(--a-surface2); }
table.list a { color:var(--a-wine); text-decoration:none; font-weight:600; }
table.list a:hover { text-decoration:underline; }
/* ボタン */
.a-btn { display:inline-flex; align-items:center; gap:.4rem; padding:.5rem 1.1rem; border-radius:8px; border:1px solid transparent; cursor:pointer; font-size:.8rem; font-weight:700; font-family:inherit; text-decoration:none; transition:.15s; line-height:1.45; }
.a-approve { background:var(--a-good); color:#fff; }
.a-approve:hover { filter:brightness(1.06); }
.a-reject { background:var(--a-crit); color:#fff; }
.a-reject:hover { filter:brightness(1.06); }
.a-plain { background:var(--a-surface); color:var(--a-ink); border-color:var(--a-line); box-shadow:0 1px 2px rgba(31,27,22,.03); }
.a-plain:hover { border-color:var(--a-ink3); }
.a-primary { background:var(--a-wine); color:#fff; }
.a-primary:hover { background:var(--a-wine2); }
/* ステータスピル（管理側・ライト。会員側の .st-* を上書き） */
body.theme-admin .status-badge { display:inline-block; padding:.18rem .6rem; border-radius:20px; font-size:.7rem; font-weight:700; border:0; }
body.theme-admin .st-active { background:var(--a-good-bg); color:var(--a-good); }
body.theme-admin .st-pending { background:var(--a-warn-bg); color:var(--a-warn); }
body.theme-admin .st-rejected { background:var(--a-crit-bg); color:var(--a-crit); }
body.theme-admin .st-suspended, body.theme-admin .st-withdrawn { background:var(--a-line2); color:var(--a-ink2); }
/* 受注ステータス（入金待ち→出荷済み） */
body.theme-admin .st-pending_payment { background:var(--a-warn-bg); color:var(--a-warn); }
body.theme-admin .st-paid, body.theme-admin .st-preparing { background:var(--a-info-bg); color:var(--a-info); }
body.theme-admin .st-shipped { background:var(--a-good-bg); color:var(--a-good); }
body.theme-admin .st-cancelled { background:var(--a-line2); color:var(--a-ink2); }
/* フォーム */
.a-field label { display:block; font-size:.75rem; color:var(--a-ink2); margin-bottom:.3rem; }
.a-field input, .a-field textarea, .a-field select { width:100%; padding:.55rem .75rem; border:1px solid var(--a-line); border-radius:8px; font-size:.88rem; font-family:inherit; background:var(--a-surface2); color:var(--a-ink); }
.a-field input:focus, .a-field textarea:focus, .a-field select:focus { outline:2px solid var(--a-wine); outline-offset:1px; border-color:var(--a-wine); }
/* 素の管理フォームコントロール（.a-field 外）にも一貫したフォーカス */
body.theme-admin select:focus, body.theme-admin textarea:focus, body.theme-admin input:focus { outline:2px solid var(--a-wine); outline-offset:1px; }
/* 会員側（ダーク）の .errors がライトの管理画面に混入した場合の上書き（コントラスト確保） */
body.theme-admin .errors { background:var(--a-crit-bg); border:1px solid rgba(180,54,47,.35); color:var(--a-crit); border-radius:9px; padding:.7rem 1rem; margin-bottom:1.2rem; font-size:.85rem; }
.kv-light { width:100%; border-collapse:collapse; font-size:.85rem; background:var(--a-surface); border:1px solid var(--a-line); border-radius:11px; overflow:hidden; }
.kv-light th { text-align:left; color:var(--a-ink3); font-weight:600; padding:.6rem .9rem; width:12rem; border-top:1px solid var(--a-line2); vertical-align:top; }
.kv-light td { padding:.6rem .9rem; border-top:1px solid var(--a-line2); }
.pager { margin-top:1.2rem; font-size:.85rem; display:flex; gap:.8rem; align-items:center; }
.pager a { color:var(--a-wine); text-decoration:none; }
/* 印刷・ピッキング票が使う旧ヘッダーは保持 */
.a-header { display:flex; align-items:center; justify-content:space-between; background:#1d1710; color:#f5efe6; padding:.8rem 1.5rem; }
.a-header .brand { color:var(--a-gold); font-family:Georgia,serif; font-size:1.15rem; letter-spacing:.08em; text-decoration:none; }
.a-header .brand small { color:#b8ae9e; font-family:inherit; font-size:.7rem; margin-left:.6rem; }
/* レスポンシブ（サイドバー→ドロワー） */
.a-scrim { display:none; }
@media (max-width:860px) {
  .a-shell { grid-template-columns:1fr; }
  .a-side { position:fixed; left:0; top:0; width:238px; transform:translateX(-100%); transition:transform .22s; box-shadow:0 10px 40px rgba(0,0,0,.3); }
  .a-side.open { transform:none; }
  .a-menu { display:grid; place-items:center; width:34px; height:34px; border:1px solid var(--a-line); border-radius:8px; background:var(--a-surface); color:var(--a-ink2); cursor:pointer; }
  .a-menu svg { width:18px; height:18px; }
  .a-scrim.open { display:block; position:fixed; inset:0; background:rgba(0,0,0,.4); z-index:35; }
  .a-wrap { padding:1.3rem 1.1rem 3rem; }
  .a-top { padding:.7rem 1.1rem; }
}

/* ── THE HUB テーマ (ライト・レッド) — 会員側の変数を上書き ── */
body.theme-hub {
  --ink:#ffffff; --ink-2:#f4f4f5; --cream:#0d0d0d;
  /* #71717a はカード地(#f4f4f5)の上で 4.40 と AA に 0.1 届かない。
     控えめさは保ったまま少し濃くする(カード地 5.42 / 白地 5.95)。
     この色は蔵元・産地・注記など 90 か所以上で共通に使う。 */
  --cream-dim:#63636b;
  --gold:#e0342b; --gold-dim:#ff8a80; --rule:#e4e4e7;
  --rule-2:#d4d4d8; --tint:rgba(17,17,17,.04);
  /* 淡い赤(#e8b4ad)は白地でコントラスト 1.65 で読めない(「在庫切れ」569商品)。濃赤に寄せる(5.95) */
  --danger-ink:#b3261e;
  /* 淡緑(#9ccc9c)は白地の淡緑面で 1.43 で読めない。濃緑に寄せる(6.19) */
  --ok-ink:#1b5e20;
  /* 淡青(#9ecfe8)はカード地で 1.52。濃青に寄せる(6.36) */
  --info-ink:#175e8a;
  background:#ffffff; color:#0d0d0d;
}
body.theme-member.theme-hub .m-header2 { background:#fff; }
body.theme-hub .errors { background:rgba(224,52,43,.06); border-color:rgba(224,52,43,.4); color:#b3261e; }
body.theme-hub .status-badge.st-pending { background:rgba(224,52,43,.08); color:var(--danger-ink); border-color:#ff8a80; }
body.theme-hub .btn-ghost { color:#0d0d0d; }

/* RBAC: 代理表示バナー（システム管理者） */
.theme-admin .a-imp{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  background:var(--a-crit,#b4362f);color:#fff;padding:.5rem 1.4rem;font-size:.78rem;font-weight:600;letter-spacing:.02em}
.theme-admin .a-imp form{margin:0}
.theme-admin .a-imp button{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.5);color:#fff;
  border-radius:.4rem;padding:.2rem .8rem;font-size:.72rem;cursor:pointer}
.theme-admin .a-imp button:hover{background:rgba(255,255,255,.28)}

/* コンパクトなインラインセレクト（一覧内のランチャ等） */
.theme-admin .a-mini { padding:.3rem .5rem; border:1px solid var(--a-line); border-radius:8px; font-size:.74rem; font-family:inherit; background:var(--a-surface2); color:var(--a-ink); }
.theme-admin .a-mini:focus { outline:2px solid var(--a-wine); outline-offset:1px; border-color:var(--a-wine); }

/* ══════════════════════════════════════════════════════════════════════
   取引書類（注文履歴・ご注文内容・ご請求内容）— 承認済みの体裁
   帳票としてそのまま渡せる «書類» の体裁に揃える。表組みではなく組版で読ませる。

   数字は Georgia の «オールドスタイル数字»（3・7・9 が下へ、6・8 が上へ伸びる）を使う。
   ウェブフォントを足さずに、見本と同じ数字の表情が出る唯一の手段。
   日本語の見出しは明朝。ラベルは字間を広げた小さなゴシック。
   ══════════════════════════════════════════════════════════════════════ */
body.theme-admin {
  --doc-serif: Georgia, "Times New Roman", "Hiragino Mincho ProN", "Yu Mincho", serif;
}
.doc { max-width:46rem; margin:0 auto; }
.doc-num { font-family:var(--doc-serif); letter-spacing:.01em; }

/* ── 見出し ── */
.doc-head { text-align:center; padding:.6rem 0 2.6rem; display:flex; flex-direction:column; gap:.85rem; }
.doc-eyebrow { font-size:.66rem; letter-spacing:.34em; color:var(--a-wine); margin:0; text-transform:uppercase; }
.doc-title { font-family:var(--doc-serif); font-size:clamp(2.1rem,5.4vw,2.9rem); font-weight:700;
  color:var(--a-wine); margin:0; line-height:1.15; letter-spacing:.01em; text-wrap:balance; }
.doc-sub { font-size:.74rem; letter-spacing:.28em; color:var(--a-ink2); margin:0; }

/* ── 宛名 / 発行元 ── */
.doc-parties { display:flex; gap:1.5rem; flex-wrap:wrap; justify-content:space-between;
  align-items:flex-end; padding-bottom:1rem; border-bottom:1px solid var(--a-line); }
.doc-to { font-size:1.05rem; font-weight:700; margin:0; letter-spacing:.02em; }
.doc-to small { display:block; font-size:.72rem; font-weight:400; color:var(--a-ink3); margin-top:.3rem; letter-spacing:.06em; }
.doc-from { font-size:.72rem; line-height:1.9; color:var(--a-ink2); text-align:right; margin:0; }

/* ── No. / 発行日 ── */
.doc-meta { display:flex; flex-wrap:wrap; gap:.5rem 1.2rem; justify-content:space-between;
  padding:.85rem 0; border-bottom:1px solid var(--a-line); font-size:.74rem; color:var(--a-ink2); }
.doc-meta b { font-weight:400; color:var(--a-ink3); margin-right:.4rem; }

/* ── 明細 ── */
.doc-lines { display:flex; flex-direction:column; }
.doc-line { display:flex; gap:1.35rem; padding:1.9rem 0; border-bottom:1px solid var(--a-line); }
.doc-line:last-child { border-bottom:0; }
.doc-body { flex:1; min-width:0; display:flex; flex-direction:column; gap:.55rem; }
.doc-maker { font-size:.7rem; letter-spacing:.06em; color:var(--a-ink3); margin:0; line-height:1.7; }
.doc-name { font-family:var(--doc-serif); font-size:1.28rem; font-weight:700; margin:0; line-height:1.3;
  letter-spacing:.005em; word-break:break-word; }
.doc-name span { font-size:.8em; font-weight:400; margin-left:.3em; }
.doc-name-ja { font-size:.8rem; color:var(--a-ink2); margin:0; }
.doc-spec { font-size:.76rem; color:var(--a-ink2); margin:0; display:flex; flex-wrap:wrap; gap:.25rem 1.1rem; }
.doc-spec b { color:var(--a-ink); font-weight:700; }
.doc-desc { font-size:.79rem; line-height:1.95; color:var(--a-ink2); margin:.1rem 0 0; }
.doc-prices { border-top:1px dashed var(--a-line); margin-top:.55rem; padding-top:.75rem;
  display:flex; flex-direction:column; gap:.4rem; }
.doc-pr { display:grid; grid-template-columns:auto 1fr auto 1fr; align-items:baseline; gap:.3rem .5rem; font-size:.78rem; }
.doc-pr dt { color:var(--a-ink2); white-space:nowrap; margin:0; }
.doc-pr dd { margin:0; text-align:right; font-family:var(--doc-serif); font-size:.94rem; }
.doc-pr.is-strong dt { color:var(--a-ink); font-weight:700; }
.doc-pr.is-strong dd { font-weight:700; }
.doc-note-line { font-size:.72rem; color:var(--a-ink3); margin:0; }

/* ── 合計 ── */
.doc-totals { margin-top:1.9rem; border:1px solid var(--a-line); border-radius:3px;
  background:var(--a-surface); padding:1.4rem 1.6rem; }
.doc-tr { display:flex; align-items:baseline; justify-content:space-between; gap:1rem; padding:.34rem 0; font-size:.82rem; }
.doc-tr dt { color:var(--a-ink2); margin:0; }
.doc-tr dd { margin:0; font-family:var(--doc-serif); font-size:.95rem; white-space:nowrap; }
.doc-tr.is-cut dt, .doc-tr.is-cut dd { color:var(--a-wine); }
.doc-tr.is-earn dt, .doc-tr.is-earn dd { color:var(--a-good); }
.doc-grand { display:flex; align-items:baseline; justify-content:space-between; gap:1rem;
  margin-top:.7rem; padding-top:1rem; border-top:1px solid var(--a-ink); }
.doc-grand dt { font-family:var(--a-mincho); font-size:1.05rem; font-weight:700; margin:0; letter-spacing:.03em; }
.doc-grand dd { margin:0; font-family:var(--doc-serif); font-size:1.5rem; font-weight:700; white-space:nowrap; }

/* ── 脚注 ── */
.doc-foot { margin-top:1.9rem; padding-top:1.4rem; border-top:1px solid var(--a-line);
  text-align:center; font-size:.72rem; line-height:2; color:var(--a-ink2); }

/* ── 帳簿（一覧）──
   🔴 書類の段幅（46rem）のままだと 6 列が入らず、「1 品目」「INV-202606-000001」
      「一部お支払い」が語の途中で改行される（2026-09-06 本番実測）。
      一覧は段を広げ、セルは既定で折り返さない。折り返してよいのは注記だけ。 */
.doc.is-wide { max-width:64rem; }
.doc-scroll { overflow-x:auto; }
.doc-ledger { width:100%; border-collapse:collapse; font-size:.82rem; }
.doc-ledger th { text-align:left; font-size:.64rem; letter-spacing:.16em; color:var(--a-ink3);
  font-weight:700; padding:.55rem .8rem; border-bottom:1px solid var(--a-ink); white-space:nowrap; }
.doc-ledger td { padding:.9rem .8rem; border-bottom:1px solid var(--a-line); vertical-align:top;
  white-space:nowrap; }
.doc-ledger td .wrap { white-space:normal; }
.doc-ledger tbody tr:hover td { background:var(--a-surface2); }
.doc-ledger .r { text-align:right; }
.doc-ledger .doc-num { font-size:.94rem; }
.doc-ledger a { color:var(--a-wine); text-decoration:none; }
.doc-ledger a:hover { text-decoration:underline; }
/* 状態ピル・操作ボタンも語の途中で切らない */
body.theme-admin .doc-ledger .status-badge { white-space:nowrap; }
.doc-ledger .a-btn { white-space:nowrap; }

@media (max-width:640px) {
  .doc-line { gap:.9rem; }
  .doc-parties, .doc-from { text-align:left; }
  .doc-from { text-align:left; }
  .doc-pr { grid-template-columns:auto 1fr; }
  .doc-ledger th, .doc-ledger td { padding:.6rem .45rem; }
}

/* ── 印刷（そのまま取引書類として渡せるように）── */
@media print {
  .a-side, .a-top, .doc-hide-print { display:none !important; }
  .a-shell { display:block; }
  .a-wrap { padding:0; max-width:none; }
  body.theme-admin { background:#fff; }
  .doc { max-width:none; }
  .doc-line { break-inside:avoid; }
  .doc-totals { break-inside:avoid; }
}
