/* =============================================================
   css/cabaret.css — キャバクラ管理 ホール・会計の見た目（元の index.html の <style> の中身そのまま）
   /common/smartco-ui.css の後に読み込む。色は --cb-* 変数だけ（:root＝明／[data-theme="dark"]＝暗）。
   ============================================================= */
/* ===== この画面の色（粋 2026-09-28 のトークンそのまま。差し替える時はここだけ直す） ===== */
:root{  /* 明（昼・集計） */
  --cb-page:#f4f6f8; --cb-card:#ffffff; --cb-card-line:#d1d5db; --cb-line-soft:#e5e7eb;
  --cb-seat-line:#7c8596; --cb-seat-empty:#fbfcfd;
  --cb-text:#111827; --cb-text-sec:#4b5563; --cb-text-dim:#646b78; --cb-text-head:#1f2937; --cb-fs-nav:16px; /* 左メニュー：見出しは text-sec より一段濃く・項目の文字は16px（水谷さん「もっとはっきり」） */
  --cb-accent:#5b4dc4; --cb-accent-soft:#efedfb; --cb-accent-text:#ffffff;
  --cb-open:#4b5563; --cb-open-soft:#f3f4f6;
  --cb-pending:#5b4dc4; --cb-pending-soft:#efedfb;
  --cb-warn:#b45309; --cb-over:#a63a30;
  --cb-band-open:#0e7490;    --cb-band-open-text:#ffffff; /* 2026-09-30 水谷さん「通常の残り時間が分かりにくい→水色か青を入れよう」白文字 5.36:1 */
  --cb-band-soon:#b45309;    --cb-band-soon-text:#ffffff;
  --cb-band-over:#a63a30;    --cb-band-over-text:#ffffff;
  --cb-band-pending:#5b4dc4; --cb-band-pending-text:#ffffff;
  --cb-danger:#a63a30; --cb-danger-soft:#faf1ef; --cb-danger-text:#ffffff;
  --cb-muted-row:#f3f4f6; --cb-overlay:rgba(17,24,39,.45); --cb-chip:#f3f4f6;
  --cb-header-bg:#1e2740; --cb-header-text:#ffffff; --cb-header-line:rgba(255,255,255,.28);
  --cb-money:#111827;
  --cb-zone:#ffffff; --cb-zone-line:#c9d2de;   /* 島の囲い（粋 仕上げ②） */
  --cb-zone-radius:14px; --cb-live:#1e7e5f; --cb-dot-radius:50%;
}
[data-theme="dark"]{  /* 暗（営業中） */
  --cb-page:#0c1322; --cb-card:#151f33; --cb-card-line:#2b3a55; --cb-line-soft:#202c42;
  --cb-seat-line:#6a7a98; --cb-seat-empty:#111a2c;
  --cb-text:#e9eef6; --cb-text-sec:#b9c3d4; --cb-text-dim:#939fb4; --cb-text-head:#d9e0ec;
  --cb-accent:#b3a6f5; --cb-accent-soft:#262348; --cb-accent-text:#16112e;
  --cb-open:#b9c3d4; --cb-open-soft:#202c42;
  --cb-pending:#b3a6f5; --cb-pending-soft:#262348;
  --cb-warn:#f5bd66; --cb-over:#e5685d;
  --cb-band-open:#4fc3f7;    --cb-band-open-text:#06202e; /* 同上・暗。水谷さん「もう少し明るい水色で目立つ方が」→ 明るい水色＋濃い文字 8.36:1 */
  --cb-band-soon:#f5bd66;    --cb-band-soon-text:#1f1204;
  --cb-band-over:#e5685d;    --cb-band-over-text:#240a07;
  --cb-band-pending:#b3a6f5; --cb-band-pending-text:#16112e;
  --cb-danger:#e5685d; --cb-danger-soft:#3a1f22; --cb-danger-text:#240a07;
  --cb-muted-row:#121a2b; --cb-overlay:rgba(4,8,16,.72); --cb-chip:#1d2940;
  --cb-header-bg:#080d18; --cb-header-text:#e9eef6; --cb-header-line:#2b3a55;
  --cb-money:#e9eef6;
  --cb-zone:#1c2848; --cb-zone-line:#31415f;
  --cb-live:#34d399;
}

html,body{overflow-x:hidden}
/* ★読み込み直後の1クリックが効かない件（2026-09-28）: 共通のログイン確認は、確認が済むまで画面全体に「透明な覆い」（agOverlay）を置く。
   盤面は先に描かれて見えているのに、押すとこの透明な覆いに当たってクリックが消えていた。
   確認中で見えていない間だけ素通しにする。覆いが見える時（.ag-show＝スピナー／ログイン画面）は今までどおり塞ぐ。 */
#agOverlay:not(.ag-show){pointer-events:none}
body{background:var(--cb-page);color:var(--cb-text)}
.header{height:auto;min-height:54px;flex-wrap:wrap;padding:8px 20px;row-gap:6px;background:var(--cb-header-bg);border-bottom:1px solid var(--cb-header-line)}
.header .logo-area,.header .logo-area h1,.header .logo-area .ic{color:var(--cb-header-text)}
.header .btn-logout{color:var(--cb-header-text);border-color:var(--cb-header-line);min-height:32px}
.header .sub{font-size:var(--fs-sm);color:var(--cb-header-text);font-weight:600;font-variant-numeric:tabular-nums}
.header .hd-when{display:inline-flex;align-items:baseline;gap:10px;color:var(--cb-header-text);font-variant-numeric:tabular-nums}
.header .hd-biz{font-size:var(--fs-xs);font-weight:600}
.header .hd-clock{font-size:var(--fs-2xl);font-weight:800;line-height:1}
.theme-btn{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:6px 11px;border:1px solid var(--cb-header-line);
  border-radius:var(--rb);color:var(--cb-header-text);font-size:var(--fs-xs);font-weight:700}
.wrap{width:100%;max-width:1920px;margin:0 auto;padding:10px 16px 46px;min-width:0} /* 下の46px＝余白16＋最終更新の帯30 */

/* ===== 共通部品の色も --cb-* から取る ===== */
.btn-primary{background:var(--cb-accent);border-color:var(--cb-accent);color:var(--cb-accent-text)}
.btn-primary:hover{background:var(--cb-accent);border-color:var(--cb-accent)}
.btn-secondary,.btn-icon{background:var(--cb-card);color:var(--cb-text);border-color:var(--cb-card-line)}
.btn-secondary:hover,.btn-icon:hover{background:var(--cb-accent-soft);color:var(--cb-text);border-color:var(--cb-accent)}
.btn-ghost-danger{background:var(--cb-danger-soft);color:var(--cb-danger);border-color:var(--cb-danger)}
.btn-danger{background:var(--cb-danger);border-color:var(--cb-danger);color:var(--cb-danger-text)}
.btn{min-height:32px}
.modal-foot .btn,.editbar .btn{min-height:40px}   /* 主な操作は40px・その他32px（粋 3往復目・マウス前提） */
.chip{background:var(--cb-chip);color:var(--cb-text-sec);border-color:var(--cb-line-soft)}
.st-off{background:var(--cb-chip);color:var(--cb-text-sec)}
.kpi .kl,.kv .k{color:var(--cb-text-sec)} .kpi .ku,.kv .v .u{color:var(--cb-text-dim)}
.kv,.kv .kvrow{border-color:var(--cb-line-soft)}
.tabbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;border-bottom:1px solid var(--cb-card-line);margin-bottom:10px;min-height:44px}
.tabbar[hidden]{display:none}
/* ===== 左の縦メニュー（Ocean Chat と同じ形）。幅200px・折りたたむと56px（アイコンだけ）。色は粋のトークンだけ ===== */
.main-row{display:flex;align-items:stretch;min-height:calc(100vh - var(--hdr-h, 54px))}
.main-row > .wrap{flex:1 1 auto;min-width:0}
.sidenav{flex:0 0 200px;width:200px;display:flex;flex-direction:column;gap:4px;padding:10px 8px 40px;background:var(--cb-card);border-right:1px solid var(--cb-card-line)}
.sidenav .sn-top{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:2px 4px 8px 10px}
.sidenav .sn-title{font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-head)}
.sidenav .sn-fold{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--rb);color:var(--cb-text-sec)}
.sidenav .sn-fold:hover{background:var(--cb-chip);color:var(--cb-text)}
.sidenav .sn-item{display:flex;align-items:center;gap:10px;width:100%;min-height:40px;padding:8px 10px;border-radius:var(--rb);
  font-size:var(--cb-fs-nav);font-weight:800;color:var(--cb-text);text-align:left;white-space:nowrap;overflow:hidden}
.sidenav .sn-item:hover{background:var(--cb-chip);color:var(--cb-text)}
.sidenav .sn-item.active{background:var(--cb-accent-soft);color:var(--cb-accent)}
.sidenav .sn-item .ic{width:20px;height:20px;flex:0 0 20px;color:inherit}
.sidenav .sn-user .ic{width:18px;height:18px;flex:0 0 18px}
.sidenav .sn-group{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}
.sidenav .sn-h{font-size:var(--fs-xs);font-weight:700;color:var(--cb-text-head);padding:4px 10px 2px}
.sidenav .sn-items{display:flex;flex-direction:column;gap:2px}
.header .hd-theme{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--cb-header-line);border-radius:var(--rb);color:var(--cb-header-text)}
.header .hd-theme .ic{width:18px;height:18px}
.header-right{align-items:center}
.side .store{font-size:var(--fs-lg);font-weight:800;color:var(--cb-text)}
/* ===== 設定 ===== */
.cfg-bar{position:sticky;top:0;z-index:5;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 12px;margin-bottom:12px;
  background:var(--cb-card);border:1px solid var(--cb-card-line);border-radius:var(--rl)}
.cfg-bar .cb-t{font-weight:700;color:var(--cb-text-sec)}
.cfg-bar .cb-t.dirty{color:var(--cb-warn)}
.cfg-bar .cb-r{margin-left:auto;display:flex;gap:8px}
.cfg-layout{display:grid;grid-template-columns:180px minmax(0,1fr);gap:16px;align-items:start}
.cfg-toc{position:sticky;top:70px;display:flex;flex-direction:column;gap:2px;padding:8px;border:1px solid var(--cb-card-line);border-radius:var(--rl);background:var(--cb-card)}
.cfg-toc a{display:block;padding:6px 10px;border-radius:var(--rb);color:var(--cb-text-sec);font-weight:700;font-size:var(--fs-sm);text-decoration:none}
.cfg-toc a:hover{background:var(--cb-chip);color:var(--cb-text)}
.cfg-sec{padding:14px 16px;margin-bottom:14px;border:1px solid var(--cb-card-line);border-radius:var(--rl);background:var(--cb-card);scroll-margin-top:70px}
.cfg-sec h2{font-size:var(--fs-xl);font-weight:800;margin-bottom:10px}
.cfg-sec h3{font-size:var(--fs-md);font-weight:800;color:var(--cb-text-sec);margin:14px 0 6px}
.cfg-sec .note{margin:6px 0 10px}
.cfg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px 16px}
.cfg-f{display:flex;flex-direction:column;gap:4px}
.cfg-f > span{font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-sec)}
.cfg input[type=text],.cfg input[type=number],.cfg input[type=time]{min-height:34px;padding:5px 8px;border:1.5px solid var(--cb-card-line);border-radius:var(--r);
  background:var(--cb-page);color:var(--cb-text);font-size:var(--fs-md);width:100%}
.cfg input[type=number]{text-align:right;font-variant-numeric:tabular-nums}
.cfg .unit{display:flex;align-items:center;gap:6px}
.cfg .unit input{max-width:120px}
.cfg table{width:100%;border-collapse:collapse}
.cfg th,.cfg td{padding:5px 6px;vertical-align:middle}
.cfg td input[type=text]{min-width:140px}
.cfg td input[type=number]{min-width:90px;max-width:120px}
.cfg .seg .btn{min-width:0}
.cfg td .seg{flex-wrap:nowrap;white-space:nowrap} /* 表の中のボタンは1行のまま（狭い時は表の枠の中で横に動かす） */
.cfg .tbl-wrap{overflow-x:auto}
.cfg .tbl-wrap table{min-width:980px}
.cfg .danger-zone{border-color:var(--cb-danger)}
.cfg .row-off td{color:var(--cb-text-sec)}
@media (max-width:900px){ .cfg-layout{grid-template-columns:1fr} .cfg-toc{position:static;flex-direction:row;flex-wrap:wrap} }
.sidenav .sn-bottom{margin-top:auto;display:flex;flex-direction:column;gap:4px;padding-top:8px;border-top:1px solid var(--cb-line-soft)}
.sidenav .sn-user{display:flex;align-items:center;gap:10px;min-height:40px;padding:8px 10px;font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-sec);white-space:nowrap;overflow:hidden}
.sidenav .sn-user .nl{overflow:hidden;text-overflow:ellipsis}
html.nav-collapsed .sidenav{flex-basis:56px;width:56px;padding-left:6px;padding-right:6px}
html.nav-collapsed .sidenav .nl{display:none}
html.nav-collapsed .sidenav .sn-top{justify-content:center;padding:2px 0 8px}
html.nav-collapsed .sidenav .sn-item,html.nav-collapsed .sidenav .sn-user{justify-content:center;padding:8px 0}
@media (max-width:767px){
  .sidenav{flex-basis:56px;width:56px;padding-left:6px;padding-right:6px}
  .sidenav .nl{display:none}
  .sidenav .sn-top{justify-content:center;padding:2px 0 8px}
  .sidenav .sn-item,.sidenav .sn-user{justify-content:center;padding:8px 0}
  .sidenav .sn-fold{display:none}
}
.tabbar .tabs{border-bottom:none;margin-bottom:0}
#tabs-r{margin-left:auto;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:4px 0}
.tabs button{color:var(--cb-text-sec);min-height:40px} .tabs button:hover{color:var(--cb-text)}
.tabs button.active{color:var(--cb-accent);border-bottom-color:var(--cb-accent)}
.empty-state{background:var(--cb-page);border-color:var(--cb-card-line);color:var(--cb-text-sec)}
.empty-state .es{color:var(--cb-text-dim)}
.note{color:var(--cb-text)}
.note.warn{border-left-color:var(--cb-warn)} .note.warn .nh{color:var(--cb-warn)}
.modal{background:var(--cb-card);border-color:var(--cb-card-line);color:var(--cb-text)}
.modal-head,.modal-foot{background:var(--cb-page);border-color:var(--cb-card-line)}
th{background:var(--cb-page);color:var(--cb-text);border-color:var(--cb-card-line)}
td{background:var(--cb-card);border-color:var(--cb-line-soft)}
tr:hover td{background:var(--cb-card)}

/* ヘッダー下の集計（既存 .kpi を小さく並べる） */
/* 集計：中身の幅に合わせて並べ、余った幅を分け合う（等幅の格子だと長いラベルだけ2行に折れていた） */
.sumbar{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:10px}
.sumbar .kpi{flex:1 1 auto;display:flex;flex-wrap:nowrap;align-items:baseline;justify-content:space-between;gap:0 8px;padding:9px 12px;white-space:nowrap;background:var(--cb-card);border-color:var(--cb-card-line)}
.sumbar .kpi .kn{font-size:var(--fs-2xl);line-height:1.1;color:var(--cb-money)}
.sumbar .kpi{min-height:48px;align-items:center}
/* ⑤ 数字は --fs-2xl。ただし 1600px 未満では7項目が1行に入らない（1440で必要1494px＞使える1393px）ので1段下げて1行を守る（高さ48pxは同じ） */
@media (max-width:1599px){ .sumbar{gap:8px} .sumbar .kpi{padding:9px 10px} .sumbar .kpi .kn{font-size:var(--fs-xl)} } /* 左メニューの分も含めて1440で1行に収める */

/* ===== 床のツールバー ===== */
.editbar{display:flex;flex-wrap:nowrap;align-items:center;gap:12px;margin-bottom:8px;padding:3px 3px 3px 14px;min-height:48px;border-radius:var(--rl);
  background:var(--cb-band-soon);color:var(--cb-band-soon-text);font-weight:700}
.editbar .eb-t{min-width:0;display:flex;align-items:center;gap:10px;white-space:nowrap}
.editbar .eb-t b{font-size:var(--fs-md);font-weight:800}
.editbar .eb-d{font-size:var(--fs-sm);overflow:hidden;text-overflow:ellipsis}
.editbar .eb-r{margin-left:auto;display:flex;flex-wrap:nowrap;gap:6px}
.editbar .eb-r .btn{gap:4px;white-space:nowrap}
#tabs-r .ft-used{font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-sec)}
.lg{display:inline-flex;align-items:center;height:22px;padding:0 7px;border-radius:var(--rb);font-size:var(--fs-xs);font-weight:800;
  background:var(--cb-band-open);color:var(--cb-band-open-text)}
.lg.empty{background:transparent;border:1.5px dashed var(--cb-card-line);color:var(--cb-text-sec)}
.lg.soon{background:var(--cb-band-soon);color:var(--cb-band-soon-text)}
.lg.over{background:var(--cb-band-over);color:var(--cb-band-over-text)}
.lg.pending{background:var(--cb-band-pending);color:var(--cb-band-pending-text)}
.seg-view{display:none}

/* ===== 床（transform:scale は使わない。座標と箱だけに縮尺 s。文字は縮めない） ===== */
.floor-frame{position:relative;overflow:auto;border:1px solid var(--cb-card-line);border-radius:var(--rl);background:var(--cb-page);flex:1 1 auto;min-width:0;
  display:flex;justify-content:safe center;align-items:flex-start} /* ① 床を中央に */
/* 床＋右の縦パネル */
.floor-wrap{display:flex;gap:12px;align-items:stretch}
.side{flex:0 0 272px;width:272px;align-self:flex-start;display:flex;flex-direction:column;gap:12px;padding:12px;border:1px solid var(--cb-card-line);border-radius:var(--rl);background:var(--cb-card)}
.side .all{font-size:var(--fs-md);font-weight:700;color:var(--cb-text-sec)}
.side .all b{font-size:var(--fs-2xl);font-weight:800;color:var(--cb-text);margin-right:2px}
.side .cnt{display:flex;flex-direction:column;border-top:1px solid var(--cb-line-soft)}
.side .cnt .r{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--cb-line-soft);font-size:var(--fs-md);font-weight:700}
.side .cnt .r .n{margin-left:auto;font-size:var(--fs-lg);font-weight:800;font-variant-numeric:tabular-nums}
.side .sw{flex:0 0 18px;width:18px;height:18px;border-radius:var(--rb)}
.sw.s-empty{background:var(--cb-seat-empty);border:1.5px solid var(--cb-seat-line)}
.sw.s-open{background:var(--cb-band-open);border:1.5px solid var(--cb-seat-line)}
.sw.s-soon{background:var(--cb-band-soon)} .sw.s-over{background:var(--cb-band-over)} .sw.s-pending{background:var(--cb-band-pending)}
.side .memo{flex:0 0 auto;display:flex;flex-direction:column;gap:6px}
.side .memo label{font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-sec)}
.side .memo textarea{height:88px;min-height:88px;max-height:120px;width:100%;resize:vertical;padding:8px;border:1.5px solid var(--cb-card-line);border-radius:var(--r);
  background:var(--cb-page);color:var(--cb-text);font-size:var(--fs-sm);line-height:1.5}
@media (max-width:1199px){ .floor-wrap{flex-direction:column} .side{flex:0 0 auto;width:auto} }
/* フロアの区切り（島を囲む、うっすらした面）。名前は今は出さない・装飾の絵は入れない */
.zone{position:absolute;z-index:0;pointer-events:none;background:var(--cb-zone);border-radius:var(--cb-zone-radius)}
.zone.zb{background:var(--cb-zone-line)} /* 線の層（1.5px 大きく敷く）→ 上に面の層を重ねて外周だけ線が見える */
/* 一番下の細い帯（最終更新） */
.statusbar{position:fixed;left:0;right:0;bottom:0;z-index:700;height:30px;display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:0 16px;
  background:var(--cb-header-bg);border-top:1px solid var(--cb-header-line);color:var(--cb-header-text);font-size:var(--fs-sm);font-variant-numeric:tabular-nums}
.statusbar .sb-l{margin-right:auto;font-weight:600}
.statusbar .sb-live{display:inline-flex;align-items:center;gap:6px}
.statusbar .dot{display:inline-block;width:8px;height:8px;border-radius:var(--cb-dot-radius);background:var(--cb-live)}
/* 集計のアイコン */
.sumbar .kpi .kl{display:inline-flex;align-items:center;gap:6px}
.sumbar .kpi .kl .ic{width:18px;height:18px;color:var(--cb-text-sec)}
/* 集計7つを1行に収める段階（ui.js の fitSummary が折り返しを見て付ける） */
.sumbar.fit1 .kpi .kl .ic{display:none}
.sumbar.fit1{gap:6px}
.sumbar.fit1 .kpi{padding:9px 9px}
.sumbar.fit2 .kpi .kn{font-size:var(--fs-lg)}
/* 件数つきの状態チップ */
.lg.is-zero{background:var(--cb-chip);color:var(--cb-text-sec)} /* ⑨ 件数0は色を落とす */
/* 2026-09-30 水谷さん「件数の四角が崩れている」→ 件数の四角を札の内側に収める（右の余白を札と揃え、高さ・幅を固定して中央寄せ） */
/*   1回目（内側の四角を札に収める）でも右端に札の色が細く残って崩れて見えた → 内側の四角をやめ、件数は札の中の太字の数字にする */
.lg:has(.lc){padding:0 9px;height:24px}
.lg .lc{display:inline;margin-left:8px;padding:0;background:none;color:inherit;font-weight:800;font-size:var(--fs-sm);font-variant-numeric:tabular-nums}
.floor-frame.is-editing{border:2px dashed var(--cb-warn)}
.floor-canvas{position:relative;flex:0 0 auto}
.seat{position:absolute;z-index:2;display:flex;flex-direction:column;justify-content:space-between;padding:0;overflow:hidden;text-align:left;
  background:var(--cb-card);border:1.5px solid var(--cb-seat-line);border-radius:var(--rb);color:var(--cb-text)}
.seat{cursor:pointer}
.seat:hover,.seat.is-hover{border-color:var(--cb-accent)}
.seat .s-top{display:flex;align-items:center;gap:3px;padding:3px 3px 0;min-width:0;line-height:1.2}
/* 番号は左上の小さな四角、キャスト名が主役（14px/800・s≥1.2 は field で 15px/800）＋薄い札で一目で名前と分かる */
.seat .sn{flex:0 0 auto;min-width:20px;padding:0 3px;text-align:center;border:1px solid var(--cb-card-line);border-radius:var(--rb);
  font-size:var(--fs-xs);font-weight:800;line-height:18px;font-variant-numeric:tabular-nums;color:var(--cb-text-sec)}
.seat .sc{min-width:0;padding:0 4px;border-radius:var(--rb);background:var(--cb-chip);color:var(--cb-text);
  font-size:var(--fs-sm);font-weight:800;line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.seat .sc:empty{display:none}
/* キャストが誰も付いていない使用中の席は「FREE」（名前の札と同じ位置・大きさ・濃さ。2026-09-30 水谷さん「他の人の名前と同じぐらいはっきり」→ --cb-text-sec から --cb-text へ） */
.seat .sc.sc-free{color:var(--cb-text);background:var(--cb-chip)}
.seat .s-band{flex:0 0 20px;height:20px;display:flex;align-items:center;justify-content:space-between;gap:4px;padding:0 4px;
  font-size:var(--fs-xs);font-weight:800;line-height:20px;white-space:nowrap;font-variant-numeric:tabular-nums;
  background:var(--cb-band-open);color:var(--cb-band-open-text)}
.seat.is-soon .s-band{background:var(--cb-band-soon);color:var(--cb-band-soon-text)}
.seat.is-soon{border:1.5px solid var(--cb-band-soon)}
.seat.is-over{border:1.5px solid var(--cb-band-over)}
.seat .s-empty{display:block;text-align:center;padding:0 6px 4px;font-size:var(--fs-xs);font-weight:600;color:var(--cb-text-sec);line-height:1.2}
.seat.is-over .s-band{background:var(--cb-band-over);color:var(--cb-band-over-text)}
.seat.is-pending .s-band{background:var(--cb-band-pending);color:var(--cb-band-pending-text)}
/* 2026-09-28 水谷さん「お席の線が薄い。分かりにくい」→ 空席も実線＋うっすら地（点線だと暗い画面で席の輪郭が消える） */
.seat.is-empty{background:var(--cb-seat-empty);border:1.5px solid var(--cb-seat-line)}
.seat.is-empty .sn{color:var(--cb-text-sec)}
.seat.is-active{outline:2px solid var(--cb-accent);outline-offset:2px}
.seat.is-edit{cursor:move;touch-action:none;
  background-image:linear-gradient(var(--cb-text-sec),var(--cb-text-sec)),linear-gradient(var(--cb-text-sec),var(--cb-text-sec)),linear-gradient(var(--cb-text-sec),var(--cb-text-sec)),linear-gradient(var(--cb-text-sec),var(--cb-text-sec)),
    linear-gradient(var(--cb-text-sec),var(--cb-text-sec)),linear-gradient(var(--cb-text-sec),var(--cb-text-sec)),linear-gradient(var(--cb-text-sec),var(--cb-text-sec)),linear-gradient(var(--cb-text-sec),var(--cb-text-sec));
  background-size:8px 2px,2px 8px,8px 2px,2px 8px,8px 2px,2px 8px,8px 2px,2px 8px;
  background-position:top left,top left,top right,top right,bottom left,bottom left,bottom right,bottom right;background-repeat:no-repeat} /* 四隅の印 */
.seat.is-picked{outline:3px solid var(--cb-accent);outline-offset:1px;z-index:4}
.seat.is-dragging{cursor:move;z-index:5}
.seat.is-bad{outline:3px solid var(--cb-over)}
/* 枠＝使用中の会計を全部囲む（1席も2席以上も同じ作り・2026-09-30 水谷さん）。席の【上】に重ねる板の、外側の辺だけに 2px の線（hall.js）。
   色＝グループのいちばん急ぐ状態。板は席の矩形（＋同じグループの席へのすき間）から出ない＝隣の席・空席には線がかからない */
.gframe{--gf:var(--cb-band-open);--gfw:2px}
.gframe.g-soon{--gf:var(--cb-band-soon)}
.gframe.g-over{--gf:var(--cb-band-over)}
.gframe.g-pending{--gf:var(--cb-band-pending)}
.gframe .gf-o{position:absolute;z-index:5;pointer-events:none;box-sizing:border-box;border-width:var(--gfw);border-color:var(--gf)}
/* 席に乗った時・詳細を開いている間は、同じ状態色のまま線を3px に */
.gframe.is-hover,.gframe.is-active{--gfw:3px}
.seat.in-grp{z-index:4}
/* 枠に入っている席は、席ごとの色枠・藤色の枠を付けない（二重線にしない。色は枠が担う） */
.seat.in-grp.is-soon,.seat.in-grp.is-over,.seat.in-grp:hover,.seat.in-grp.is-hover{border-color:var(--cb-seat-line)}
/* 会計の金額は床に出さない。席に乗った時だけ画面右下の固定パネルに出す */
.gpanel{position:fixed;right:300px;bottom:46px;z-index:850;pointer-events:none;padding:8px 14px;border-radius:var(--rl);
  background:var(--cb-card);border:2px solid var(--cb-accent);color:var(--cb-text);font-weight:700;white-space:nowrap}
.gpanel[hidden]{display:none}
.gpanel .money{font-size:var(--fs-lg);font-weight:800;color:var(--cb-money)}

/* 会計ごとのカード（スマホで先に出す一覧） */
.gcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.gcard{display:block;width:100%;text-align:left;background:var(--cb-card);border:1px solid var(--cb-card-line);border-radius:var(--rl);padding:10px 12px;color:var(--cb-text)}
.gcard .gh{display:flex;justify-content:space-between;gap:8px;font-weight:800;margin-bottom:6px}
.gcard .gh .money{color:var(--cb-money)}
.gcard .gr{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:4px 0;border-top:1px solid var(--cb-line-soft);font-size:var(--fs-sm)}
.gcard .gr .lg{flex:0 0 auto}

/* ===== 開くものは全部「画面の真ん中」のモーダル（右から出す横パネルはやめた・Ocean Chat と同じ考え方）
   幅は内容に合わせて最大720px（注文だけ960px）、高さは画面の85%まで・中だけスクロール。Esc・×・背景クリックで閉じる ===== */
.drawer-ov{display:none;position:fixed;inset:0;background:var(--cb-overlay);z-index:900;align-items:center;justify-content:center;padding:12px}
.drawer-ov.show{display:flex}
.drawer{position:relative;width:720px;max-width:96vw;max-height:85vh;background:var(--cb-card);color:var(--cb-text);
  border:1px solid var(--cb-card-line);border-radius:var(--rl);display:flex;flex-direction:column;overflow:hidden}
.dr-head{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--cb-card-line);background:var(--cb-page)}
.dr-head h2{font-size:var(--fs-xl);font-weight:800}
/* 席の詳細：最初の版の見た目（ラベル左・値右の行・細い区切り線）。操作が主役なので見出しのすぐ下にボタン */
.dr-head .dh-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.dr-head .dh-t .dh-l{display:flex;align-items:center;gap:10px}
.dr-head .slipno{font-size:var(--fs-sm);color:var(--cb-text-sec);font-weight:600}
.dr-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:14px;padding:14px 16px;overflow:hidden}
.dr-body > *{flex:0 0 auto}
.acts-main{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.acts-sub{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.dr-foot{display:flex;justify-content:flex-end;padding-top:4px} /* 取消は小さく右下に（会計と隣り合わせない） */
.acts-main .btn{min-height:56px;height:56px;font-size:var(--fs-lg);font-weight:800}
.acts-sub .btn{min-height:40px;height:40px;font-size:var(--fs-md)}
.acts-wrap{display:flex;flex-direction:column;gap:8px}
.kv.compact .kvrow{padding:5px 0;align-items:baseline}
.kv.compact .k{flex:0 0 96px}
.dr-lines{flex:0 1 auto !important;min-height:48px;overflow-y:auto}
.dr-empty{padding:6px 0;color:var(--cb-text-sec);font-size:var(--fs-sm);border-top:1px solid var(--cb-line-soft);border-bottom:1px solid var(--cb-line-soft)}
.dr-total{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:8px 0 0;border-top:2px solid var(--cb-card-line);font-variant-numeric:tabular-nums}
.dr-total .t-l{font-size:var(--fs-sm);color:var(--cb-text-sec);font-weight:700}
.dr-total .t-l b{color:var(--cb-text)}
.dr-total .t-r{margin-left:auto;font-size:var(--fs-md);font-weight:700;color:var(--cb-text-sec)}
.dr-total .t-r b{font-size:var(--fs-xl);font-weight:800;color:var(--cb-money);margin-left:8px}

.dr-sec{margin-bottom:16px}
.dr-sec h3{font-size:var(--fs-md);font-weight:700;color:var(--cb-text-sec);margin-bottom:6px}
.acts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.acts .btn{min-height:40px;font-size:var(--fs-md)}
.lines{border-top:1px solid var(--cb-line-soft)}
.line{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--cb-line-soft)}
.line .lk{flex:0 0 auto}
.line .ln{flex:1;min-width:0}
.line .ln .lc{display:block;font-size:var(--fs-sm);color:var(--cb-text-sec)}
.line .la{font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}
.tap32{width:32px;height:32px;flex:0 0 32px}
.st-open{background:var(--cb-band-open);color:var(--cb-band-open-text)}
.st-pending{background:var(--cb-band-pending);color:var(--cb-band-pending-text)}
.st-soon{background:var(--cb-band-soon);color:var(--cb-band-soon-text)}
.st-over{background:var(--cb-band-over);color:var(--cb-band-over-text)}
.st-cancel{background:var(--cb-muted-row);color:var(--cb-text-sec);border:1px solid var(--cb-card-line)}
.st-paid{background:var(--cb-accent-soft);color:var(--cb-accent)}

/* ===== 選ぶ部品（ボタンで選ぶ。ドロップダウンは使わない） ===== */
.pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}
.pick .btn{min-height:40px;flex-direction:column;gap:0;text-align:center;line-height:1.35;font-size:var(--fs-md)}
.pick .btn .pp{font-size:var(--fs-sm);font-weight:600}
.pick.cols4{grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}
.pick.nums{grid-template-columns:repeat(auto-fill,minmax(64px,1fr))}
.seg{display:flex;flex-wrap:wrap;gap:6px}
.seg .btn{min-height:32px;min-width:64px}
.stepper{display:inline-flex;align-items:center;gap:8px}
.stepper .val{min-width:48px;text-align:center;font-size:var(--fs-xl);font-weight:800;font-variant-numeric:tabular-nums}
.fld{margin-bottom:14px}
.fld > label{display:block;font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-sec);margin-bottom:6px}
.fld input[type=time],.fld input[type=number],.fld textarea{
  border:1.5px solid var(--cb-card-line);border-radius:var(--r);padding:9px 10px;font-size:var(--fs-md);
  background:var(--cb-card);color:var(--cb-text);min-height:36px}
.fld textarea{width:100%;min-height:80px;resize:vertical}
.fld input[type=number]{width:160px;text-align:right}
.err-msg{color:var(--cb-danger);font-size:var(--fs-sm);font-weight:700;margin-top:6px}

/* ===== モーダル ===== */
.modal{display:flex;flex-direction:column;max-height:85vh;overflow:hidden}
.modal-body{flex:1 1 auto;min-height:0;overflow-y:auto}
.modal.wide{width:960px;max-width:96vw}
.modal-body:empty{display:none}
.modal.mid{width:720px;max-width:96vw}
.modal-overlay{z-index:1000;background:var(--cb-overlay);padding:12px}
.ci-seats{font-size:var(--fs-lg);font-weight:800}
.ppl{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ppl .btn{min-width:56px;min-height:48px;font-size:var(--fs-lg);font-weight:800}
.ppl input[type=number]{width:96px}
/* ミニマップ＝床の配置をそのまま縮小（座標と箱だけ縮める。文字は13px以上・押す面24px以上） */
.mini-frame{overflow:auto;border:1px solid var(--cb-card-line);border-radius:var(--rl);background:var(--cb-page);padding:6px}
.mini{position:relative}
.mseat{position:absolute;display:flex;align-items:center;justify-content:center;padding:0;border-radius:var(--rb);
  font-size:var(--fs-xs);font-weight:800;font-variant-numeric:tabular-nums;line-height:1}
button.mseat{background:var(--cb-seat-empty);border:1.5px solid var(--cb-seat-line);color:var(--cb-text-sec);cursor:pointer}
button.mseat:hover{border:2px solid var(--cb-accent);color:var(--cb-text)}
button.mseat.on{background:var(--cb-accent);border:2px solid var(--cb-accent);color:var(--cb-accent-text)}
.mseat.used{cursor:not-allowed;border:1px solid var(--cb-card-line);color:var(--cb-text-sec);
  background:repeating-linear-gradient(45deg,var(--cb-card-line) 0 3px,var(--cb-muted-row) 3px 7px)}
.mini-legend{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;margin-top:6px;font-size:var(--fs-sm);color:var(--cb-text-sec)}
.mini-legend .sw{display:inline-block;width:22px;height:14px;border-radius:var(--rb);vertical-align:-2px;margin-right:4px}
.mini-legend .sw.on{background:var(--cb-accent)}
.mini-legend .sw.free{background:var(--cb-seat-empty);border:1.5px solid var(--cb-seat-line)}
.mini-legend .sw.used{background:repeating-linear-gradient(45deg,var(--cb-card-line) 0 3px,var(--cb-muted-row) 3px 7px);border:1px solid var(--cb-card-line)}
.ci-note{color:var(--cb-warn);font-size:var(--fs-sm);font-weight:700}
.modal-foot{flex-wrap:wrap}
.menu-grid{max-height:44vh;overflow-y:auto;padding-right:4px}
/* 注文モーダルは大きさ固定（幅960px・高さ＝画面の85%）。タブを変えてもカートが増えても外枠は動かない
   上＝タブ（固定）／中＝商品の格子（残りの高さ・中だけスクロール）／下＝入れる注文（高さ150px・中だけスクロール）／最下段＝ボタン */
.modal.order-fixed{height:85vh}
.modal.order-fixed .modal-body{display:flex;flex-direction:column;overflow:hidden}
.modal.order-fixed #og{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
.modal.order-fixed #og .tabs{flex:0 0 auto}
.modal.order-fixed .menu-grid{flex:1 1 auto;min-height:0;max-height:none;align-content:start;grid-auto-rows:76px;scrollbar-gutter:stable} /* スクロールバーの有無で商品ボタンの幅を変えない */
.modal.order-fixed .menu-grid .btn{height:76px;min-height:76px;justify-content:center;overflow:hidden}
.modal.order-fixed .menu-grid .btn .nm{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.25;max-width:100%}
.modal.order-fixed .oc-h{flex:0 0 auto;margin:12px 0 4px;font-size:var(--fs-md);font-weight:700}
.modal.order-fixed #oc{flex:0 0 150px;height:150px;overflow-y:auto;margin-top:0;padding-right:10px;scrollbar-gutter:stable}
.modal.order-fixed #oc .empty-state{padding:14px 12px}
.cart{margin-top:12px;border-top:1px solid var(--cb-line-soft)}
.cart .line input[type=number]{width:110px;border:1.5px solid var(--cb-card-line);border-radius:var(--r);padding:6px 8px;min-height:32px;text-align:right;background:var(--cb-card);color:var(--cb-text)}

/* ===== 表 ===== */
.tbl-wrap{border:1px solid var(--cb-card-line);border-radius:var(--rl);background:var(--cb-card)}
.tbl-wrap table{min-width:1180px}
.tbl-wrap td{white-space:nowrap;vertical-align:middle}
/* 会計：伝票1枚＝1行の表。ポップアップを横に広げて全列を1画面に収める（横スクロール無し・2026-09-30 水谷さん） */
.modal.co-wide{width:min(1100px,calc(100vw - 32px));max-width:none}
.co-tbl{overflow-x:visible;margin-bottom:14px;padding-right:0}
.co-tbl table{min-width:0;width:100%}
.co-tbl th,.co-tbl td{padding:7px 8px;white-space:nowrap;font-variant-numeric:tabular-nums}
.co-tbl td.co-cast{white-space:normal;overflow-wrap:anywhere;min-width:96px}
.co-tbl td.co-no .co-lead{margin-left:6px;padding:2px 7px}
.co-list{display:none}
/* 表が入りきらない狭い画面だけ、伝票ごとのかたまりを縦に並べる */
@media (max-width:1199px){
  .co-tbl{display:none}
  .co-list{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}
  .co-blk{border:1px solid var(--cb-card-line);border-radius:var(--rl);background:var(--cb-card);overflow:hidden}
  .co-blk.is-head{border-left:var(--rule) solid var(--cb-accent)}
  .co-h{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;padding:8px 12px;background:var(--cb-page);border-bottom:1px solid var(--cb-card-line);font-size:var(--fs-md);font-weight:700;color:var(--cb-text)}
  .co-hi{display:inline-flex;align-items:center;gap:6px;min-width:0;overflow-wrap:anywhere}
  .co-hk{font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-sec)}
  .co-h b{font-weight:800;font-variant-numeric:tabular-nums}
  .co-cast{font-weight:800}
  .co-r{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:5px 12px;border-bottom:1px solid var(--cb-line-soft);font-size:var(--fs-md)}
  .co-r:last-child{border-bottom:0}
  .co-k{color:var(--cb-text-sec);font-weight:600}
  .co-v{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--cb-text)}
  .co-r.co-sum .co-k,.co-r.co-sum .co-v{color:var(--cb-text);font-weight:800}
  .co-total{border-color:var(--cb-accent)}
  .co-total .co-h,.co-total .co-r{background:var(--cb-accent-soft)}
}
td.amount,th.amount{text-align:right}
tr.row-cancel td{background:var(--cb-muted-row);color:var(--cb-text-dim)}
tr.row-cancel td.amount{text-decoration:line-through}
tr.row-total td{font-weight:800;background:var(--cb-accent-soft)}
tr.row-head td:first-child{border-left:var(--rule) solid var(--cb-accent)}
.why{display:block;font-size:var(--fs-sm);color:var(--cb-text-sec);text-decoration:none;margin-top:2px;white-space:normal;min-width:180px}
.list-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px}
.list-head h2{font-size:var(--fs-xl);font-weight:800}
/* 伝票一覧：見出しの操作（前日｜今日｜翌日・一覧｜カレンダーの切替）と1行の要約 */
.day-nav .btn,.lv-switch .btn{gap:4px}
.day-nav .btn:disabled,.day-nav .btn:disabled:hover{opacity:1;color:var(--cb-text-dim);background:var(--cb-chip);border-color:var(--cb-line-soft);cursor:default}
.lv-switch{margin-left:auto}
.list-sum{margin:-2px 0 10px;font-size:var(--fs-sm);color:var(--cb-text-sec);font-variant-numeric:tabular-nums}
/* カレンダー表示：◀ 年月 ▶ と画面いっぱいの月カレンダー（日〜土） */
.mnav{display:inline-flex;align-items:center;gap:8px}
.mnav h2{min-width:8.5em;text-align:center}
.mnav-b{width:36px;height:36px}
.mnav-b:disabled,.mnav-b:disabled:hover{opacity:1;color:var(--cb-text-dim);background:var(--cb-chip);border-color:var(--cb-line-soft);cursor:default}
.mcal-wrap{overflow-x:auto}
.mcal{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));gap:6px;min-width:870px}
.mc-w{font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-sec);text-align:center;padding:4px 0}
.mc-blank{min-height:104px}
.mc-d{display:flex;flex-direction:column;align-items:stretch;gap:4px;min-height:104px;padding:8px 10px;border:1px solid var(--cb-card-line);border-radius:var(--rl);background:var(--cb-card);color:var(--cb-text);font:inherit;text-align:left;cursor:pointer;font-variant-numeric:tabular-nums}
.mc-d:hover{border-color:var(--cb-accent);background:var(--cb-accent-soft)}
.mc-n{display:flex;align-items:center;justify-content:space-between;font-size:var(--fs-lg);font-weight:800}
.mc-today{font-size:var(--fs-xs);font-weight:700;color:var(--cb-accent-text);background:var(--cb-accent);border-radius:var(--rb);padding:1px 6px}
.mc-a{margin-top:auto;font-size:var(--fs-lg);font-weight:800;color:var(--cb-money);text-align:right}
.mc-g{font-size:var(--fs-sm);color:var(--cb-text-sec);text-align:right}
.mc-d.is-today{border:2px solid var(--cb-accent);padding:7px 9px}
.mc-d.is-off{background:var(--cb-muted-row);border-color:var(--cb-line-soft)}
.mc-d.is-off .mc-n{color:var(--cb-text-dim)}
.mc-d.is-future,.mc-d.is-future:hover{background:var(--cb-page);border-color:var(--cb-line-soft);border-style:dashed;cursor:default}
.mc-d.is-future .mc-n{color:var(--cb-text-dim);font-weight:700}
/* 日付の操作：左＝月のかたまり（色を変える）・右＝日のかたまり。間は14px */
.date-nav{display:inline-flex;align-items:center;gap:14px;flex-wrap:wrap}
.dn-month{display:inline-flex;align-items:center}
.dn-month .btn{gap:4px;background:var(--cb-accent-soft);color:var(--cb-accent);border-color:var(--cb-accent)}
.dn-month .btn:hover{background:var(--cb-accent);color:var(--cb-accent-text);border-color:var(--cb-accent)}
.dn-month .btn[aria-expanded="true"]{background:var(--cb-accent);color:var(--cb-accent-text)}
.dn-month .btn:disabled,.dn-month .btn:disabled:hover{opacity:1;color:var(--cb-text-dim);background:var(--cb-chip);border-color:var(--cb-line-soft);cursor:default}
.dn-ym{font-weight:800;font-variant-numeric:tabular-nums}
/* 見出しの日付（押すと年月を選ぶ小さな欄）・年月の欄 */
.h-date{font:inherit;font-weight:800;color:var(--cb-text);background:none;border:0;border-bottom:2px dashed var(--cb-line-soft);padding:0 2px;cursor:pointer}
.h-date:hover,.h-date[aria-expanded="true"]{border-bottom-color:var(--cb-accent);color:var(--cb-accent)}
.ym-anchor{position:relative;display:inline-block}
.ym-pop{position:absolute;top:calc(100% + 8px);left:0;z-index:40;width:max-content;padding:10px;border:1px solid var(--cb-card-line);border-radius:var(--rl);background:var(--cb-card);font-size:var(--fs-sm);font-weight:700}
.ym-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.ym-h b{font-size:var(--fs-md)}
.ym-h .btn-icon:disabled,.ym-h .btn-icon:disabled:hover{opacity:1;color:var(--cb-text-dim);background:var(--cb-chip);border-color:var(--cb-line-soft);cursor:default}
.ym-grid{display:grid;grid-template-columns:repeat(4,64px);gap:6px}
.ym-m{height:36px;border:1px solid var(--cb-card-line);border-radius:var(--rb);background:var(--cb-card);color:var(--cb-text);font:inherit;font-weight:700;cursor:pointer}
.ym-m:hover{border-color:var(--cb-accent);background:var(--cb-accent-soft)}
.ym-m.is-sel{background:var(--cb-accent);border-color:var(--cb-accent);color:var(--cb-accent-text)}
.ym-m:disabled,.ym-m:disabled:hover{background:var(--cb-chip);border-color:var(--cb-line-soft);color:var(--cb-text-dim);cursor:default}
/* キャスト出勤：カード・カレンダーの名前・キャスト別の月の集計 */
.ccard.is-off{background:var(--cb-muted-row)}
.ccard .cs-sales b{color:var(--cb-money);font-weight:800}
.mc-d .mc-names{text-align:left;white-space:normal;line-height:1.35}
.cm-h{margin:18px 0 8px;font-size:var(--fs-lg);font-weight:800}
.cm-tbl table,.cd-tbl{min-width:640px}
.pay-tbl table{min-width:980px}
.pay-tbl td .st{margin-right:4px}
/* 日のポップアップ（カレンダーのマスを押した時）：見出しで日送り・その日の集計カード・会計ごとの一覧（行で内訳を開閉） */
.day-modal .modal-head{gap:10px}
.dm-nav{display:inline-flex;align-items:center;gap:10px}
.dm-nav h3{min-width:6.5em;text-align:center}
.dm-nav .btn{gap:4px}
.dm-nav .btn:disabled,.dm-nav .btn:disabled:hover{opacity:1;color:var(--cb-text-dim);background:var(--cb-chip);border-color:var(--cb-line-soft);cursor:default}
.dm-hr{display:inline-flex;align-items:center;gap:8px;margin-left:auto}
.dm-hr .btn{gap:4px}
.dm-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-bottom:14px}
.dm-kpi{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border:1px solid var(--cb-card-line);border-radius:var(--rl);background:var(--cb-page);min-width:0}
.dk-l{font-size:var(--fs-xs);font-weight:700;color:var(--cb-text-sec)}
.dk-v{font-size:var(--fs-lg);font-weight:800;color:var(--cb-money);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.dk-u{font-size:var(--fs-xs);font-weight:700;color:var(--cb-text-sec);margin-left:2px}
.dm-list{border:1px solid var(--cb-card-line);border-radius:var(--rl);overflow:hidden}
.dm-hd,.dm-row{display:grid;grid-template-columns:28px 56px 84px 190px minmax(0,1fr) 110px 140px;align-items:center;gap:8px;padding:8px 12px}
.dm-hd{background:var(--cb-page);font-size:var(--fs-xs);font-weight:700;color:var(--cb-text-sec);border-bottom:1px solid var(--cb-card-line)}
.dm-hd .amount,.dm-a{text-align:right}
.dm-g+.dm-g{border-top:1px solid var(--cb-line-soft)}
.dm-row{width:100%;background:var(--cb-card);color:var(--cb-text);border:0;font:inherit;font-size:var(--fs-sm);text-align:left;cursor:pointer;font-variant-numeric:tabular-nums}
.dm-row:hover{background:var(--cb-accent-soft)}
.dm-row .ic{width:16px;height:16px}
.dm-g.is-open .dm-chev .ic{transform:rotate(180deg)}
.dm-l{font-weight:800}
.dm-c,.dm-s{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dm-a{font-weight:800;color:var(--cb-money)}
.dm-g.is-cancel .dm-a{text-decoration:line-through;color:var(--cb-text-dim)}
.dm-detail{padding:4px 12px 12px 48px;background:var(--cb-page);overflow-x:auto}
.dm-detail table{width:100%;font-size:var(--fs-sm)}
.dm-detail th,.dm-detail td{padding:4px 6px;white-space:nowrap;border-bottom:1px solid var(--cb-line-soft)}

/* ===== キャスト出勤 ===== */
.casts{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.ccard{background:var(--cb-card);border:1px solid var(--cb-card-line);border-radius:var(--rl);padding:12px}
.ccard .cn{font-size:var(--fs-lg);font-weight:800;display:flex;justify-content:space-between;align-items:center;gap:6px}
.ccard .cs{font-size:var(--fs-sm);color:var(--cb-text-sec);margin:6px 0 10px}
.ccard .btn{width:100%}

.totals{border-top:1px solid var(--cb-line-soft);margin-top:6px}
.totals .kvrow{display:flex;justify-content:space-between;padding:5px 0;border-bottom:1px solid var(--cb-line-soft);font-variant-numeric:tabular-nums}
.totals .kvrow .k{color:var(--cb-text-sec);font-size:var(--fs-sm);font-weight:600}
.totals .grand{font-size:var(--fs-xl);font-weight:800;color:var(--cb-money)}

@media (max-width:767px){
  .dr-body{overflow-y:auto}
  .wrap{padding:10px 10px 16px}
  .acts{grid-template-columns:repeat(2,1fr)}
  .header{padding:8px 12px}
  .seg-view{display:flex}
  .lv-switch{margin-left:0}
  .editbar{flex-wrap:wrap}
  .editbar .eb-r{flex-wrap:wrap}
  .dm-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dm-list{overflow-x:auto}
  .dm-hd,.dm-row{min-width:720px}
  .day-modal .modal-head{flex-wrap:wrap}
}

/* 2026-09-30 水谷さん「一覧とカレンダーを切り替えると左右がブレる」→ スクロールバーの幅を常に確保（一覧に合わせる） */
html{scrollbar-gutter:stable;overflow-y:scroll}

/* ===== ポイント集計（js/points.js）：キャスト別の表（ポイント順・合計1行）と、行を押した時のポップアップ ===== */
.list-head.pt-month .day-nav{display:none} /* 月計は月のかたまりだけ（日のかたまりは当日だけ） */
.pt-tbl table{min-width:880px}
.pt-tbl th,.pt-tbl td{font-variant-numeric:tabular-nums}
.pt-row{cursor:pointer}
.pt-row:hover td,.pt-row:focus-visible td{background:var(--cb-accent-soft)}
.pt-row:focus-visible{outline:2px solid var(--cb-accent);outline-offset:-2px}
.pt-row .pt-name{font-weight:800}
.pt-tbl td.pt-pt{color:var(--cb-money)}
.pt-tbl td.pt-pt b{font-weight:800}
.pt-dtbl table{min-width:0;width:100%}
.pt-dtbl th,.pt-dtbl td{padding:7px 8px}
.pt-sub td{background:var(--cb-page);font-weight:700}
.modal.pt-modal{width:min(1100px,calc(100vw - 32px));max-width:none}
.pt-modal .dm-kpis{margin-bottom:12px}
/* 狭い画面（スマホ幅）：表を行ごとのかたまりにして縦に並べる（横スクロールさせない） */
@media (max-width:767px){
  .pt-tbl{border:0;background:none}
  .pt-tbl table,.pt-dtbl table{min-width:0;width:100%}
  .pt-tbl thead{display:none}
  .pt-tbl tbody,.pt-tbl tr,.pt-tbl td{display:block}
  .pt-tbl tr{margin-bottom:8px;border:1px solid var(--cb-card-line);border-radius:var(--rl);overflow:hidden}
  .pt-tbl td{display:flex;justify-content:space-between;gap:12px;padding:5px 12px;border:0;border-bottom:1px solid var(--cb-line-soft);text-align:right;white-space:normal}
  .pt-tbl td:last-child{border-bottom:0}
  .pt-tbl td[data-label]::before{content:attr(data-label);color:var(--cb-text-sec);font-weight:600;text-align:left}
  .pt-tbl td.pt-tl{font-weight:800;text-align:left}
}

/* ===== 給与明細（js/casts.js）：給与の表の行を押すと開くポップアップ・控除を入力のモーダル ===== */
.pay-tbl tr.ps-row{cursor:pointer}
.pay-tbl tr.ps-row:hover td,.pay-tbl tr.ps-row:focus-visible td{background:var(--cb-accent-soft)}
.pay-tbl tr.ps-row:focus-visible{outline:2px solid var(--cb-accent);outline-offset:-2px}
.pay-tbl td.ps-name{font-weight:800}
.modal.ps-modal{width:min(1100px,calc(100vw - 32px));max-width:none}
.ps-tbls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
.ps-h{margin:0 0 6px;font-size:var(--fs-md);font-weight:800;color:var(--cb-text)}
.ps-tbl table{min-width:0;width:100%}
.ps-tbl th,.ps-tbl td{padding:7px 10px;font-variant-numeric:tabular-nums}
.ps-tbl td{white-space:normal}
.ps-tbl td.amount{white-space:nowrap;width:9.5em}
.ps-tbl .ps-k{font-weight:700;margin-right:10px}
.ps-tbl .ps-d{font-size:var(--fs-sm);color:var(--cb-text-sec);white-space:nowrap}
.ps-net{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:14px 0 16px;padding:10px 14px;
  border:2px solid var(--cb-accent);border-radius:var(--rl);background:var(--cb-accent-soft);font-variant-numeric:tabular-nums}
.ps-net-l{font-size:var(--fs-lg);font-weight:800;color:var(--cb-text)}
.ps-net-v{font-size:var(--fs-2xl);font-weight:800;color:var(--cb-money);white-space:nowrap}
.ps-ref{grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:0}
.ps-ref .dk-v .st{font-size:var(--fs-xs);vertical-align:2px}
/* 控除を入力 */
.ps-form .ps-h{margin:16px 0 8px}
.ps-form .ps-h:first-child{margin-top:0}
.ps-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px 14px}
.ps-f{display:flex;flex-direction:column;gap:4px;min-width:0}
.ps-fl{font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-sec)}
.ps-in{display:flex;align-items:center;gap:6px;min-width:0}
.ps-in input{width:100%;min-width:0;min-height:36px;padding:6px 8px;border:1.5px solid var(--cb-card-line);border-radius:var(--r);
  background:var(--cb-card);color:var(--cb-text);font-size:var(--fs-md);text-align:right;font-variant-numeric:tabular-nums}
.ps-in input:focus{outline:2px solid var(--cb-accent);outline-offset:0;border-color:var(--cb-accent)}
.ps-u{flex:0 0 auto;font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-sec)}
.ps-abs{display:grid;grid-template-columns:auto repeat(3,minmax(0,150px));justify-content:start;gap:8px 14px;align-items:center}
.ps-ah{font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-sec)}
.ps-al{font-size:var(--fs-sm);font-weight:700;color:var(--cb-text)}
.ps-lates{display:flex;flex-wrap:wrap;gap:8px 14px}
.ps-lates:not(:empty){margin-bottom:8px}
.ps-late{display:inline-flex;align-items:center;gap:6px}
.ps-late .ps-in input{width:96px}
.ps-add{gap:4px}
.ps-live{grid-template-columns:repeat(3,minmax(0,1fr));margin:18px 0 0}
@media (max-width:900px){ .ps-tbls{grid-template-columns:1fr} .ps-ref{grid-template-columns:repeat(3,minmax(0,1fr))} }
@media (max-width:767px){
  .ps-ref{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ps-live{grid-template-columns:1fr}
  .ps-tbl .ps-d{display:block;white-space:normal}
  .ps-net-v{font-size:var(--fs-xl)}
}

/* ===== レジ締め（js/close.js）：当日＝差引現金が主役＋8つの数字・カードの内訳・直した記録／月＝営業日の表と月合計 ===== */
.list-head.cl-month .day-nav{display:none} /* 月は月のかたまりだけ */
.cl-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:12px}
.cl-chips{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px}
.cl-bar > .btn{margin-left:auto;gap:6px;min-height:40px}
.cl-bar > .cl-go{min-width:160px;font-size:var(--fs-md);font-weight:800}
.cl-hero{display:flex;flex-wrap:wrap;align-items:stretch;gap:12px 24px;margin-bottom:12px;padding:14px 18px;
  border:2px solid var(--cb-card-line);border-radius:var(--rl);background:var(--cb-card)}
.cl-hero.is-closed{border-color:var(--cb-accent);background:var(--cb-accent-soft)}
.cl-net{flex:1 1 280px;display:flex;align-items:baseline;justify-content:space-between;gap:16px;min-width:0;font-variant-numeric:tabular-nums}
.cl-net-l{font-size:var(--fs-xl);font-weight:800;color:var(--cb-text)}
.cl-net-v{font-size:var(--fs-kpi);font-weight:800;color:var(--cb-money);white-space:nowrap;line-height:1.1}
.cl-net-v .dk-u{font-size:var(--fs-md)}
.cl-who{display:flex;gap:10px 24px;align-items:center;padding-left:24px;border-left:1px solid var(--cb-card-line)}
.cl-wi{display:flex;flex-direction:column;gap:2px;font-variant-numeric:tabular-nums}
.cl-wi b{font-size:var(--fs-lg);font-weight:800;color:var(--cb-text);white-space:nowrap}
.cl-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:14px}
.cl-kpi{padding:10px 12px;background:var(--cb-card)}
.cl-kpi .dk-l{font-size:var(--fs-sm)}
.cl-kpi .dk-v{font-size:var(--fs-xl)}
.cl-kpi.cl-sales{border-color:var(--cb-accent)}
.cl-brs{display:flex;flex-direction:column;gap:2px;margin-top:4px;padding-top:6px;border-top:1px solid var(--cb-line-soft)}
.cl-br{display:flex;justify-content:space-between;gap:8px;font-size:var(--fs-sm);font-weight:600;color:var(--cb-text-sec);font-variant-numeric:tabular-nums;white-space:nowrap}
.cl-bn{font-weight:800;color:var(--cb-text)}
.cl-tbl th,.cl-tbl td{font-variant-numeric:tabular-nums}
.cl-mtbl table{min-width:0;width:100%}
.cl-mtbl th{white-space:normal}
.cl-mtbl th,.cl-mtbl td{padding-left:8px;padding-right:8px}
.cl-row{cursor:pointer}
.cl-row:hover td,.cl-row:focus-visible td{background:var(--cb-accent-soft)}
.cl-row:focus-visible{outline:2px solid var(--cb-accent);outline-offset:-2px}
.cl-row .cl-date{font-weight:800}
.cl-tbl td.cl-netc{color:var(--cb-money)}
.cl-tbl td.cl-netc b{font-weight:800}
.cl-tbl td .st{margin-left:4px}
.cl-etbl table{min-width:0;width:100%}
.cl-etbl td.cl-diffs{white-space:normal}
.cl-diff{display:inline-block;margin-right:14px}
.modal.cl-modal .ps-h{margin:16px 0 8px}
.modal.cl-modal .ps-h:first-child{margin-top:0}
.cl-live{grid-template-columns:repeat(3,minmax(0,1fr));margin:18px 0 0}
.cl-live .cl-live-net{border:2px solid var(--cb-accent);background:var(--cb-accent-soft)}
@media (max-width:1199px){ .cl-kpis{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:767px){
  .cl-bar > .btn{margin-left:0;width:100%}
  .cl-who{padding-left:0;border-left:0;border-top:1px solid var(--cb-card-line);padding-top:10px;width:100%}
  .cl-net-v{font-size:var(--fs-2xl)}
  .cl-live{grid-template-columns:1fr}
}
/* 表が1画面に入らない幅（1100px 未満）：行ごとのかたまりにして縦に並べる（横スクロールさせない） */
@media (max-width:1099px){
  .cl-tbl{border:0;background:none}
  .cl-tbl table,.cl-mtbl table{min-width:0;width:100%}
  .cl-tbl thead{display:none}
  .cl-tbl tbody,.cl-tbl tr,.cl-tbl td{display:block}
  .cl-tbl tr{margin-bottom:8px;border:1px solid var(--cb-card-line);border-radius:var(--rl);overflow:hidden}
  .cl-tbl td{display:flex;justify-content:space-between;gap:12px;padding:5px 12px;border:0;border-bottom:1px solid var(--cb-line-soft);text-align:right;white-space:normal}
  .cl-tbl td:last-child{border-bottom:0}
  .cl-tbl td[data-label]::before{content:attr(data-label);color:var(--cb-text-sec);font-weight:600;text-align:left;flex:0 0 auto}
  .cl-tbl td.cl-tl{font-weight:800;text-align:left}
  .cl-etbl td.cl-diffs{flex-wrap:wrap}
}

/* ===== 営業分析（js/analysis.js）：月の進み具合・日々の売上のグラフ（SVG）・営業日ごとの表と月合計・目標を入力のモーダル ===== */
.list-head.an-head .day-nav{display:none} /* 月のかたまりだけ */
.an-head .an-tbtn{margin-left:auto;gap:6px;min-height:40px;font-weight:800}
.an-hero{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:12px}
.an-hero.is-solo{grid-template-columns:minmax(0,360px)}
.an-k{display:flex;flex-direction:column;gap:4px;min-width:0;padding:12px 16px;border:1px solid var(--cb-card-line);border-radius:var(--rl);background:var(--cb-card);font-variant-numeric:tabular-nums}
.an-k.is-main{border:2px solid var(--cb-accent);background:var(--cb-accent-soft);padding:11px 15px}
.an-kl{font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-sec)}
.an-kv{font-size:var(--fs-kpi);font-weight:800;line-height:1.15;color:var(--cb-money);text-align:right;white-space:nowrap}
.an-kv .dk-u{font-size:var(--fs-md)}
.an-meter{grid-column:1/-1;height:12px;border-radius:var(--rb);background:var(--cb-line-soft);overflow:hidden}
.an-meter span{display:block;height:100%;background:var(--cb-accent)}
.an-chart-box{margin-bottom:12px;padding:10px 12px 6px;border:1px solid var(--cb-card-line);border-radius:var(--rl);background:var(--cb-card)}
.an-legend{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center;margin-bottom:4px;font-size:var(--fs-sm);font-weight:700;color:var(--cb-text)}
.an-lg{display:inline-flex;align-items:center;gap:6px}
.an-lg svg{height:12px;width:auto}
#an-chart{width:100%;min-width:0}
.an-svg{display:block}
.an-bar{fill:var(--cb-accent)}
.an-tline{fill:none;stroke:var(--cb-text);stroke-width:2.5;stroke-dasharray:6 4}
.an-grid{stroke:var(--cb-line-soft);stroke-width:1}
.an-axis{stroke:var(--cb-card-line);stroke-width:1}
.an-ax{fill:var(--cb-text-sec);font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}
.an-tbl th,.an-tbl td{font-variant-numeric:tabular-nums}
.an-tbl table{min-width:0;width:100%}
.an-tbl th{white-space:normal}
.an-tbl th,.an-tbl td{padding-left:8px;padding-right:8px}
.an-row{cursor:pointer}
.an-row:hover td,.an-row:focus-visible td{background:var(--cb-accent-soft)}
.an-row:focus-visible{outline:2px solid var(--cb-accent);outline-offset:-2px}
.an-row .an-date{font-weight:800}
.an-tbl td.an-sales{color:var(--cb-money)}
.an-row.is-future{cursor:default}
.an-row.is-future td,.an-row.is-future:hover td{background:var(--cb-page)}
.modal.an-modal .ps-h{margin:16px 0 8px}
.an-mf{max-width:300px}
.an-mf .ps-in input{font-size:var(--fs-lg);font-weight:800}
.an-days{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px 14px}
.an-live{grid-template-columns:repeat(3,minmax(0,1fr));margin:18px 0 0}
@media (max-width:1199px){ .an-hero{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:767px){
  .an-head .an-tbtn{margin-left:0;width:100%}
  .an-hero,.an-hero.is-solo{grid-template-columns:1fr}
  .an-kv{font-size:var(--fs-2xl)}
  .an-live{grid-template-columns:1fr}
}
/* 表が1画面に入らない幅（1100px 未満）：行ごとのかたまりにして縦に並べる（横スクロールさせない） */
@media (max-width:1099px){
  .an-tbl{border:0;background:none}
  .an-tbl thead{display:none}
  .an-tbl tbody,.an-tbl tr,.an-tbl td{display:block}
  .an-tbl tr{margin-bottom:8px;border:1px solid var(--cb-card-line);border-radius:var(--rl);overflow:hidden}
  .an-tbl td{display:flex;justify-content:space-between;gap:12px;padding:5px 12px;border:0;border-bottom:1px solid var(--cb-line-soft);text-align:right;white-space:normal}
  .an-tbl td:last-child{border-bottom:0}
  .an-tbl td[data-label]::before{content:attr(data-label);color:var(--cb-text-sec);font-weight:600;text-align:left;flex:0 0 auto}
  .an-tbl td.an-tl{font-weight:800;text-align:left}
  .an-tbl td.an-fut{display:none}
}

/* ===== 出退勤（js/clock.js）：当日＝キャストごとのカード（大きい出勤・退勤）／過去の日＝表・直した記録／時刻を直す・予定を入れるのモーダル ===== */
.ck-head .ck-hbtn{margin-left:auto;gap:6px;min-height:40px;font-weight:800}
.ck-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}
.ck-card{display:flex;flex-direction:column;gap:8px;min-width:0;padding:12px;border:1px solid var(--cb-card-line);border-radius:var(--rl);background:var(--cb-card);color:var(--cb-text)}
.ck-card.is-on{border:2px solid var(--cb-band-open);padding:11px}
.ck-card.is-abs{background:var(--cb-muted-row)}
.ck-cn{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}
.ck-name{font-size:var(--fs-lg);font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ck-dl{display:flex;flex-direction:column;gap:2px;margin:0;font-variant-numeric:tabular-nums}
.ck-dr{display:flex;align-items:baseline;gap:10px;font-size:var(--fs-sm)}
.ck-dr dt{flex:0 0 2.6em;color:var(--cb-text-sec);font-weight:700}
.ck-dr dd{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;color:var(--cb-text)}
.ck-dr dd b{font-size:var(--fs-md);font-weight:800}
.ck-le{display:inline-block;font-size:var(--fs-sm);font-weight:800;color:var(--cb-warn)}
.ck-h{margin-left:8px;font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-sec)}
.ck-acts{display:flex;gap:8px;margin-top:auto}
.ck-acts .btn{min-height:48px;gap:6px;font-weight:800}
.ck-go{flex:1 1 auto;font-size:var(--fs-lg)}
.ck-fix{flex:0 0 auto}
.ck-fix.is-solo{flex:1 1 auto}
.ck-st-abs{background:var(--cb-danger-soft);color:var(--cb-danger);border:1px solid var(--cb-danger)}
.ck-tbl th,.ck-tbl td{font-variant-numeric:tabular-nums}
.ck-tbl table{min-width:0;width:100%}
.ck-tbl th,.ck-tbl td{padding-left:10px;padding-right:10px}
.ck-row{cursor:pointer}
.ck-row:hover td,.ck-row:focus-visible td{background:var(--cb-accent-soft)}
.ck-row:focus-visible{outline:2px solid var(--cb-accent);outline-offset:-2px}
.ck-row .ck-tn{font-weight:800}
.ck-tbl td.ck-lec b{font-weight:800;color:var(--cb-warn)}
.ck-tbl td.ck-lec .ck-le{margin-left:8px;font-weight:700;color:var(--cb-text-sec)}
.ck-modal .ps-h,.ck-pmodal .ps-h{margin:16px 0 8px}
.ck-form > .ps-h:first-child,.ck-form > div:first-child > .ps-h:first-child{margin-top:0}
.ck-form input[type=time]{min-height:40px;text-align:left}
[data-theme="dark"] .ck-form input[type=time]{color-scheme:dark}
.ck-tgrid{grid-template-columns:repeat(4,minmax(0,1fr))}
.ck-live{grid-template-columns:repeat(4,minmax(0,1fr));margin:18px 0 0}
.ck-live:empty{display:none}
.ck-prow{display:grid;grid-template-columns:minmax(6em,1fr) 150px 150px;align-items:center;gap:8px 12px;padding:4px 0}
.ck-pall{grid-template-columns:150px 150px auto;justify-content:start}
.ck-pall .btn{min-height:40px;gap:6px}
.ck-phead{font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-sec);border-bottom:1px solid var(--cb-line-soft)}
.ck-plist .ck-prow + .ck-prow{border-top:1px solid var(--cb-line-soft)}
.ck-pn{font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:767px){
  .ck-head .ck-hbtn{margin-left:0;width:100%}
  .ck-cards{grid-template-columns:1fr}
  .ck-tgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ck-live{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ck-prow{grid-template-columns:minmax(0,1fr) 112px 112px;gap:6px 8px}
  .ck-pall{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ck-pall .btn{grid-column:1/-1}
}
/* 表が1画面に入らない幅（1100px 未満）：行ごとのかたまりにして縦に並べる（横スクロールさせない） */
@media (max-width:1099px){
  .ck-tbl{border:0;background:none}
  .ck-tbl thead{display:none}
  .ck-tbl tbody,.ck-tbl tr,.ck-tbl td{display:block}
  .ck-tbl tr{margin-bottom:8px;border:1px solid var(--cb-card-line);border-radius:var(--rl);overflow:hidden}
  .ck-tbl td{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:4px 12px;padding:5px 12px;border:0;border-bottom:1px solid var(--cb-line-soft);text-align:right;white-space:normal}
  .ck-tbl td:last-child{border-bottom:0}
  .ck-tbl td[data-label]::before{content:attr(data-label);color:var(--cb-text-sec);font-weight:600;text-align:left;flex:0 0 auto;margin-right:auto}
  .ck-tbl td.ck-tl{font-weight:800;text-align:left}
  .ck-tbl td.ck-tnil{display:none}
}

/* ===== メニュー（js/menu.js）：タブ 飲食・ボトル／セット料金／延長／指名料・区分ごとの表・検索・直すのモーダル・直した記録 ===== */
.mn-head .mn-who{margin-left:auto;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.mn-wl{font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-sec)}
.mn-tabs{margin-bottom:12px;flex-wrap:wrap}
.mn-tabs button{font-weight:800}
.mn-n{display:inline-block;margin-left:6px;font-size:var(--fs-sm);font-weight:700;font-variant-numeric:tabular-nums}
.mn-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:10px}
.mn-cats .btn{min-width:0;gap:0}
.mn-cats .btn .mn-n{margin-left:6px}
.mn-q{display:inline-flex;align-items:center;gap:6px;min-width:0;flex:0 1 300px;padding:0 4px 0 10px;min-height:40px;
  border:1.5px solid var(--cb-card-line);border-radius:var(--r);background:var(--cb-card);color:var(--cb-text-sec)}
.mn-q:focus-within{border-color:var(--cb-accent);outline:2px solid var(--cb-accent);outline-offset:0}
.mn-q .ic{width:18px;height:18px;flex:0 0 18px}
.mn-q input{flex:1 1 auto;min-width:0;min-height:36px;border:0;outline:0;background:transparent;color:var(--cb-text);font-size:var(--fs-md)}
.mn-q input::-webkit-search-cancel-button{display:none}
.mn-bar .mn-add{margin-left:auto;gap:6px;min-height:40px;font-weight:800}
.mn-tbl th,.mn-tbl td{font-variant-numeric:tabular-nums;padding:6px 10px}
.mn-tbl table{min-width:0;width:100%}
.mn-stbl{max-width:760px}
.mn-tbl td.mn-name{font-weight:800;white-space:normal}
.mn-tbl td.mn-price{font-weight:700;color:var(--cb-money)}
.mn-tbl td.mn-pos,.mn-tbl td.mn-id{color:var(--cb-text-sec);width:5em}
.mn-tbl td.mn-opc{width:1%}
.mn-ops{display:inline-flex;align-items:center;gap:6px}
.mn-ops .mn-fix{gap:4px;min-height:32px}
.mn-ops .btn-icon[disabled]{background:var(--cb-page);color:var(--cb-text-sec);border-color:var(--cb-line-soft);cursor:default}
.mn-grp td{background:var(--cb-page);font-size:var(--fs-md);font-weight:800;color:var(--cb-text-head)}
.mn-gn{margin-left:10px;font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-sec)}
.mn-row.is-off td{background:var(--cb-muted-row)}
.mn-row.is-off td.mn-name,.mn-row.is-off td.mn-price{color:var(--cb-text-sec)}
.mn-row.is-off .st-off{border:1px solid var(--cb-card-line)}
.mn-cat{display:inline-flex;align-items:center;min-height:24px;padding:0 9px;border-radius:var(--rb);background:var(--cb-chip);color:var(--cb-text);
  font-size:var(--fs-sm);font-weight:700;border:1px solid var(--cb-line-soft)}
.mn-cat.is-bottle{background:var(--cb-accent-soft);color:var(--cb-accent);border-color:var(--cb-accent)}
.mn-etbl .mn-ename{font-weight:800}
.mn-eid{margin-left:8px;font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-sec);font-variant-numeric:tabular-nums}
.modal.mn-modal .ps-h{margin:16px 0 8px}
.mn-fgrid{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr)}
.mn-form .mn-tf .ps-in input{text-align:left}
@media (max-width:767px){
  .mn-head .mn-who{margin-left:0;width:100%}
  .mn-q{flex:1 1 100%}
  .mn-bar .mn-add{margin-left:0;width:100%}
  .mn-fgrid{grid-template-columns:1fr}
}
/* 表が1画面に入らない幅（1100px 未満）：行ごとのかたまりにして縦に並べる（横スクロールさせない） */
@media (max-width:1099px){
  .mn-tbl{border:0;background:none}
  .mn-stbl{max-width:none}
  .mn-tbl thead{display:none}
  .mn-tbl tbody,.mn-tbl tr,.mn-tbl td{display:block}
  .mn-tbl tr{margin-bottom:8px;border:1px solid var(--cb-card-line);border-radius:var(--rl);overflow:hidden}
  .mn-tbl td{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:4px 12px;padding:5px 12px;border:0;border-bottom:1px solid var(--cb-line-soft);text-align:right;white-space:normal}
  .mn-tbl td:last-child{border-bottom:0}
  .mn-tbl td[data-label]::before{content:attr(data-label);color:var(--cb-text-sec);font-weight:600;text-align:left;flex:0 0 auto;margin-right:auto}
  .mn-tbl td.mn-pos,.mn-tbl td.mn-id,.mn-tbl td.mn-opc{width:auto}
  .mn-tbl tr.mn-grp{border:0;margin:14px 0 6px}
  .mn-tbl tr.mn-grp td{background:none;padding:0;justify-content:flex-start;font-size:var(--fs-lg)}
  .mn-tbl tr.mn-grp td::before{content:none}
}

/* ===== 変更の記録（js/audit.js）：その月の取消・変更の記録を1つの表に・上に取消と変更の数・行を押すと中央のポップアップ ===== */
.list-head.au-head .day-nav{display:none} /* 月のかたまりだけ */
.au-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:12px;max-width:960px}
.au-cards .dm-kpi{flex-direction:row;align-items:baseline;justify-content:space-between;gap:12px;padding:10px 14px;background:var(--cb-card)}
.au-cards .dk-l{font-size:var(--fs-sm)}
.au-cards .dk-v{font-size:var(--fs-xl)}
.au-cards .dm-kpi.au-cx{border-color:var(--cb-danger)}
.au-cards .au-cx .dk-l{color:var(--cb-danger)}
.au-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:10px}
.au-kinds .btn{min-width:0;gap:0}
.au-n{display:inline-block;margin-left:6px;font-size:var(--fs-sm);font-weight:700;font-variant-numeric:tabular-nums}
.au-kinds .btn:disabled,.au-kinds .btn:disabled:hover{opacity:1;background:var(--cb-chip);color:var(--cb-text-sec);border-color:var(--cb-line-soft);cursor:default} /* 0件は色を落とす（薄くしない） */
.au-q{display:inline-flex;align-items:center;gap:6px;min-width:0;flex:0 1 300px;margin-left:auto;padding:0 4px 0 10px;min-height:40px;
  border:1.5px solid var(--cb-card-line);border-radius:var(--r);background:var(--cb-card);color:var(--cb-text-sec)}
.au-q:focus-within{border-color:var(--cb-accent);outline:2px solid var(--cb-accent);outline-offset:0}
.au-q .ic{width:18px;height:18px;flex:0 0 18px}
.au-q input{flex:1 1 auto;min-width:0;min-height:36px;border:0;outline:0;background:transparent;color:var(--cb-text);font-size:var(--fs-md)}
.au-q input::-webkit-search-cancel-button{display:none}
.au-tbl table{min-width:0;width:100%}
.au-tbl th,.au-tbl td{padding:7px 10px;font-variant-numeric:tabular-nums;vertical-align:top}
.au-tbl td{white-space:normal}
.au-tbl td.au-at,.au-tbl td.au-kc,.au-tbl td.au-who{white-space:nowrap;width:1%}
.au-row{cursor:pointer}
.au-row:hover td,.au-row:focus-visible td{background:var(--cb-accent-soft)}
.au-row:focus-visible{outline:2px solid var(--cb-accent);outline-offset:-2px}
.au-row.is-cur td{background:var(--cb-accent-soft)}
.au-row.is-cur td:first-child{box-shadow:inset var(--rule) 0 0 var(--cb-accent)}
.au-k{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border-radius:var(--rb);font-size:var(--fs-sm);font-weight:800;white-space:nowrap;
  background:var(--cb-chip);color:var(--cb-text);border:1px solid var(--cb-line-soft)}
.au-k.k-cancel{background:var(--cb-danger-soft);color:var(--cb-danger);border-color:var(--cb-danger)}
.au-k.k-slip{background:var(--cb-accent-soft);color:var(--cb-accent);border-color:var(--cb-accent)}
.au-tm{display:block;font-weight:800}
.au-ts{display:block;font-size:var(--fs-sm);font-weight:600;color:var(--cb-text-sec)}
.au-df{display:block;line-height:1.5}
.au-dk{margin-right:8px;font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-sec)}
.au-df b{font-weight:800}
.au-tbl td.au-rs{min-width:12em}
/* 詳しく（中央のポップアップ） */
.modal.au-modal{width:min(1100px,calc(100vw - 32px));max-width:none}
.au-modal .ps-h{margin:16px 0 8px}
.au-meta{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:12px}
.au-meta .au-mi{background:var(--cb-card)}
.au-mv{font-size:var(--fs-md);font-weight:800;color:var(--cb-text);overflow-wrap:anywhere}
.au-mv .st,.au-mv .au-k{align-self:flex-start}
.au-amts{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px;margin-bottom:4px}
.au-amt{display:flex;flex-direction:column;gap:2px;padding:6px 8px;border:1px solid var(--cb-card-line);border-radius:var(--rl);background:var(--cb-page);min-width:0}
.au-amt .dk-v{font-size:var(--fs-md)}
.au-amt.is-sum{border:2px solid var(--cb-accent);background:var(--cb-accent-soft);padding:5px 7px}
.au-amt.is-sum .dk-v{font-size:var(--fs-lg)}
.au-dtbl{max-width:760px}
.au-dtbl td.au-dk2{font-weight:700;color:var(--cb-text-sec);white-space:nowrap;width:1%}
.au-ltbl td.au-ln{font-weight:800}
@media (max-width:1199px){ .au-amts{grid-template-columns:repeat(4,minmax(0,1fr))} }
@media (max-width:767px){
  .au-cards{gap:6px}
  .au-cards .dm-kpi{flex-direction:column;gap:2px;padding:8px 8px}
  .au-cards .dk-v{font-size:var(--fs-lg);white-space:normal}
  .au-q{flex:1 1 100%;margin-left:0}
  .au-meta{grid-template-columns:repeat(2,minmax(0,1fr))}
  .au-amts{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* 表が1画面に入らない幅（1100px 未満）：行ごとのかたまりにして縦に並べる（横スクロールさせない） */
@media (max-width:1099px){
  .au-tbl{border:0;background:none}
  .au-tbl thead{display:none}
  .au-tbl tbody,.au-tbl tr,.au-tbl td{display:block}
  .au-tbl tr{margin-bottom:8px;border:1px solid var(--cb-card-line);border-radius:var(--rl);overflow:hidden}
  .au-tbl td{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:4px 12px;padding:5px 12px;border:0;border-bottom:1px solid var(--cb-line-soft);text-align:right;white-space:normal}
  .au-tbl td:last-child{border-bottom:0}
  .au-tbl td[data-label]::before{content:attr(data-label);color:var(--cb-text-sec);font-weight:600;text-align:left;flex:0 0 auto;margin-right:auto}
  .au-tbl td.au-at,.au-tbl td.au-kc,.au-tbl td.au-who,.au-dtbl td.au-dk2{width:auto}
  .au-tbl td.au-tg,.au-tbl td.au-dfc{flex-direction:column;align-items:flex-end}
  .au-tbl td.au-tg::before,.au-tbl td.au-dfc::before{margin-right:0;align-self:flex-start}
  .au-tbl td.au-rs{min-width:0}
  .au-row.is-cur td:first-child{box-shadow:none}
  .au-row.is-cur{border:2px solid var(--cb-accent)}
}

/* 入店内容の変更（js/hall.js modalEntry）・配置の保存の確認（2026-10-22） */
.en-pv{display:flex;flex-direction:column;border:1px solid var(--cb-card-line);border-radius:var(--rl);background:var(--cb-page);padding:6px 12px;margin-bottom:6px}
.en-r{display:flex;justify-content:space-between;align-items:baseline;gap:4px 12px;flex-wrap:wrap;padding:5px 0;font-size:var(--fs-md);border-bottom:1px solid var(--cb-line-soft)}
.en-r:last-child{border-bottom:0}
.en-k{font-weight:700;color:var(--cb-text-sec)}
.en-v{font-variant-numeric:tabular-nums;color:var(--cb-text);text-align:right}
.en-v b{font-weight:800;color:var(--cb-money)}
.en-ar{margin:0 8px;color:var(--cb-text-sec);font-weight:700}
.modal-foot .en-cx{margin-right:auto}
@media (max-width:767px){ .modal-foot .en-cx{margin-right:0} }

/* ===== ログイン画面・スタッフ（名簿）・役割で隠すもの（2026-10-22 作業員C・js/auth.js / js/members.js / js/share.js） ===== */
/* ログイン画面：開いて最初に画面全体を覆う（後ろの画面は見せない・押させない）。中央のカード1枚 */
.au-ov{position:fixed;inset:0;z-index:1500;display:flex;align-items:center;justify-content:center;padding:24px 16px;background:var(--cb-page);overflow-y:auto}
.au-ov[hidden]{display:none}
html.au-open,html.au-open body{overflow:hidden}
.au-card{width:400px;max-width:100%;margin:auto;background:var(--cb-card);border:1px solid var(--cb-card-line);border-radius:var(--rl);padding:28px 28px 24px;color:var(--cb-text)}
.au-brand{display:flex;align-items:center;gap:10px;margin-bottom:22px}
.au-brand .ic{width:24px;height:24px;flex:0 0 24px;color:var(--cb-accent)}
.au-brand h1{font-size:var(--fs-xl);font-weight:800;color:var(--cb-text);line-height:1.3}
.au-body{display:flex;flex-direction:column;gap:12px}
.au-h{font-size:var(--fs-lg);font-weight:800;color:var(--cb-text);line-height:1.4}
.au-msg{font-size:var(--fs-md);font-weight:700;color:var(--cb-text-sec)}
.au-mail{font-size:var(--fs-md);font-weight:700;color:var(--cb-text);word-break:break-all}
.au-fld{display:flex;flex-direction:column;gap:6px}
.au-fld label{font-size:var(--fs-sm);font-weight:700;color:var(--cb-text-sec)}
.au-fld input,.mb-in{width:100%;min-height:44px;padding:8px 12px;border:1.5px solid var(--cb-card-line);border-radius:var(--r);background:var(--cb-page);color:var(--cb-text);font-size:var(--fs-md)}
.au-fld input:focus,.mb-in:focus{outline:none;border-color:var(--cb-accent);box-shadow:0 0 0 3px var(--cb-accent-soft)}
.au-btn{width:100%;min-height:44px;justify-content:center;font-size:var(--fs-md);font-weight:700}
.au-sep{display:flex;align-items:center;gap:10px;color:var(--cb-text-sec);font-size:var(--fs-sm);font-weight:700}
.au-sep::before,.au-sep::after{content:"";flex:1;height:1px;background:var(--cb-card-line)}
.au-sep:empty::after{display:none}
.au-links{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.au-link{min-height:32px;padding:4px 2px;font-size:var(--fs-sm);font-weight:700;color:var(--cb-accent);text-decoration:underline;text-underline-offset:3px}
.au-link:hover{color:var(--cb-text)}
.au-v-verify .au-links,.au-v-start .au-links,.au-v-wait .au-links,.au-v-error .au-links{justify-content:flex-end}
.au-err{color:var(--cb-danger);font-size:var(--fs-sm);font-weight:700}
.au-err[hidden]{display:none}
@media (max-width:480px){ .au-card{padding:22px 18px 20px} }

/* 左下：ログイン中の人（表示名＋役割）・ログアウト／ログイン画面へ */
.sidenav .sn-role{margin-left:6px;font-size:var(--fs-xs);font-weight:700;color:var(--cb-text-sec)}
html.nav-collapsed .sidenav .sn-role{display:none}
.sidenav .sn-out{font-size:var(--fs-sm)}
.statusbar .sb-l.sb-warn{color:var(--cb-warn)}

/* スタッフ（名簿） */
.mb-head h2{margin-right:auto}
.mb-tbl table{min-width:0;width:100%}
.mb-tbl td{white-space:normal}
.mb-tbl .mb-name b{font-weight:800}
.mb-tbl .mb-you{margin-left:8px}
.mb-tbl .mb-mail{word-break:break-all}
.mb-tbl .mb-when{font-variant-numeric:tabular-nums;white-space:nowrap}
.mb-tbl .mb-ops{white-space:nowrap;text-align:right}
.mb-tbl .mb-ops .btn + .btn{margin-left:6px}
.mb-role{background:var(--cb-chip);color:var(--cb-text)}
.mb-role.mb-r-owner{background:var(--cb-accent-soft);color:var(--cb-accent)}
.mb-tbl tr.mb-me td{background:var(--cb-muted-row)}
.modal.mb-modal{width:520px;max-width:96vw}
.mb-url{display:flex;gap:8px}
.mb-url .mb-in{flex:1 1 auto;min-width:0}
.mb-done .kv{margin-bottom:14px}
@media (max-width:767px){
  .mb-tbl{border:0;background:none}
  .mb-tbl thead{display:none}
  .mb-tbl table,.mb-tbl tbody,.mb-tbl tr,.mb-tbl td{display:block;width:100%}
  .mb-tbl tr{border:1px solid var(--cb-card-line);border-radius:var(--rl);background:var(--cb-card);padding:10px 12px;margin-bottom:10px}
  .mb-tbl td{border:0;padding:3px 0}
  .mb-tbl .mb-ops{text-align:left;padding-top:8px}
  .mb-tbl tr.mb-me td{background:none}
  .mb-url{flex-wrap:wrap}
}

/* 役割で隠すもの（画面に出さない。読めないのは Firestore のルールで守る） */
.seg.op-auto,html.mode-share #mn-who{pointer-events:none}   /* 操作した人＝ログイン中の人（選び直させない） */
html.role-staff [data-cact="view-pay"],                        /* キャスト出勤の「給与」 */
html.role-staff [data-act="edit-start"],                       /* 席の配置の編集（店の配置はオーナー・店長） */
html.role-staff #ck-live{display:none}                         /* 出退勤の直しの控除の金額 */
html.role-staff [data-anact="target"],                         /* 営業目標を入れる（店の目標はオーナー・店長） */
html.mode-share #cfg-demo,                                     /* 共有中は「デモデータを初期化」を出さない */
html.mode-share .modal.ps-modal [data-mact="print"]{display:none} /* 給与明細の印刷（payslip.html）はまだ端末の見本のデータを読むため、共有中は出さない */
