
  /* ---------- ダッシュボード ---------- */
  .dh{position:relative;overflow:hidden;border-radius:18px;margin-bottom:20px;color:#F2F0EA;
    background:linear-gradient(140deg,var(--shell2),var(--shell));
    border:1px solid rgba(198,161,91,.3);box-shadow:0 30px 70px -45px rgba(0,0,0,.9);}
  .dh-bg{position:absolute;inset:0;pointer-events:none;overflow:hidden;}
  .dh-aur{position:absolute;inset:-40% -10% auto -10%;height:240px;
    background:radial-gradient(220px 140px at 16% 50%,rgba(198,161,91,.5),transparent 70%),
      radial-gradient(240px 150px at 84% 20%,rgba(111,214,255,.3),transparent 70%),
      radial-gradient(220px 140px at 55% 90%,rgba(164,114,255,.22),transparent 70%);
    filter:blur(26px);animation:dhDrift 7s ease-in-out infinite alternate;}
  @keyframes dhDrift{to{transform:translate(28px,16px) scale(1.12);}}
  .dh-scan{position:absolute;left:0;right:0;height:120px;top:-120px;
    background:linear-gradient(180deg,transparent,rgba(198,161,91,.2),transparent);
    animation:dhScan 5.5s linear infinite;}
  @keyframes dhScan{to{top:120%;}}
  .dh-dots{position:absolute;inset:0;}
  .dh-dots i{position:absolute;width:3px;height:3px;border-radius:50%;background:#E4C97E;
    box-shadow:0 0 8px #C6A15B;opacity:.6;animation:dhRise linear infinite;}
  @keyframes dhRise{0%{transform:translateY(0);opacity:0;}20%{opacity:.75;}100%{transform:translateY(-120px);opacity:0;}}
  .dh-in{position:relative;display:flex;align-items:flex-end;justify-content:space-between;gap:20px;
    flex-wrap:wrap;padding:24px 26px;}
  .dh-en{font-family:var(--font-en);font-size:10.5px;letter-spacing:.32em;color:#E4C97E;margin-bottom:4px;}
  .dh-date{font-size:14px;color:rgba(242,240,234,.7);}
  .dh-date b{font-size:22px;font-weight:900;color:#F2F0EA;margin-left:6px;letter-spacing:.02em;}
  .dh-who{font-size:12.5px;color:rgba(242,240,234,.55);margin-top:2px;}
  .dh-r{text-align:right;min-width:0;}
  .dh-lb{font-family:var(--font-en);font-size:9.5px;letter-spacing:.2em;color:#E4C97E;}
  .dh-v{font-size:17px;line-height:1.1;margin-top:2px;}
  .dh-v b{font-family:var(--font-en);font-size:40px;font-weight:700;letter-spacing:.01em;
    background:linear-gradient(120deg,#F3E2A8,#E4C97E 40%,#C6A15B 70%,#F3E2A8);
    background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;
    animation:dhShine 5s linear infinite;}
  @keyframes dhShine{to{background-position:200% center;}}
  .dh-v small{font-size:19px;color:rgba(242,240,234,.55);font-weight:700;}
  .dh-sub{font-size:12px;color:rgba(242,240,234,.6);margin-top:2px;}
  .dh-sub .up{color:#8BE3B4;} .dh-sub .dn{color:#FF9F96;}
  .dh-sub b{color:#F2F0EA;font-weight:700;}

  .dh-kpi{margin-bottom:26px;}
  .stat.kpi{cursor:pointer;}
  .stat .chv{color:var(--line2);}
  .kpi-s{font-size:11.5px;color:var(--faint);margin-top:4px;min-height:17px;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

  .dh-card{padding:6px 18px;}
  .dh-row{display:flex;align-items:center;gap:10px;padding:11px 0;border-top:1px solid var(--line);font-size:13.5px;}
  .dh-row:first-child{border-top:none;}
  .dh-row .dot{width:8px;height:8px;border-radius:2px;flex:none;background:var(--gold);box-shadow:0 0 10px var(--glow);}
  .dh-row.ev .dot{background:#A472FF;box-shadow:0 0 10px rgba(164,114,255,.8);}
  .dh-row b{font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .dh-row span{font-size:12px;color:var(--muted);}
  .dh-row em{margin-left:auto;font-style:normal;font-family:var(--font-en);font-weight:700;font-size:14px;color:var(--gold);}

  .dh-todo{display:flex;flex-direction:column;gap:10px;}
  .dh-t{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:13px 16px;border-radius:14px;
    background:var(--card-glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
    border:1px solid var(--line);transition:transform .18s,border-color .18s,box-shadow .18s;}
  .dh-t:hover{transform:translateY(-2px);border-color:var(--gold-line);box-shadow:0 18px 36px -24px var(--glow);}
  .dh-t .ic{width:32px;height:32px;border-radius:10px;flex:none;display:flex;align-items:center;justify-content:center;
    color:var(--gold);border:1px solid var(--line);
    background:linear-gradient(135deg,rgba(228,201,126,.2),rgba(198,161,91,.05));}
  .dh-t .dh-tx{min-width:0;flex:1;display:flex;flex-direction:column;text-align:left;}
  .dh-t .dh-tx b{font-size:13.5px;font-weight:700;}
  .dh-t .dh-tx small{font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .dh-t .n{font-family:var(--font-en);font-size:17px;font-weight:700;color:var(--gold);flex:none;}
  .dh-t>svg{color:var(--line2);flex:none;}
  .dh-ok{display:flex;align-items:center;gap:10px;padding:16px;border-radius:14px;font-size:13px;
    color:var(--muted);border:1px dashed var(--line2);}
  .dh-ok svg{color:#8BE3B4;}

  /* ---------- 請求書（画面） ---------- */
  .iv-tabs button{padding:7px 0;}
  .sbj{color:var(--faint);font-weight:400;font-size:12px;}
  .ivform{padding:22px;margin-top:20px;}
  .ivgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px 16px;}
  .ivgrid .wide{grid-column:1 / -1;}
  .ivtbl{border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-top:10px;}
  .ivrow{display:grid;grid-template-columns:96px 1.3fr 104px 104px 88px 60px 64px 92px 108px;
    gap:7px;align-items:center;padding:6px 10px;border-top:1px solid var(--surface2);}
  .ivtbl.exp .ivrow{grid-template-columns:130px 1fr 110px 108px;}
  .ivrow .rm-c{display:flex;align-items:center;justify-content:flex-end;gap:1px;}
  .ivrow .rm-c .act{padding:4px;}
  .ivrow .rm-c .act[disabled]{opacity:.28;cursor:default;}
  .ivrow.hd small{font-size:9px;color:var(--faint);}
  .ivrow:first-child{border-top:none;}
  .ivrow.hd{background:var(--surface);font-size:11px;color:var(--faint);font-weight:600;padding:8px 10px;}
  .ivrow.empty-r{padding:12px;}
  .ivrow .cell{width:100%;border:1px solid var(--line);border-radius:6px;padding:6px 8px;font-size:13px;outline:none;background:var(--card);color:var(--ink);}
  .ivrow .cell:focus{border-color:var(--teal-b);}
  .ivrow .r{text-align:right;} .ivrow .amt{font-size:13px;font-weight:600;}
  .ivsum{margin:18px 0 0 auto;width:300px;font-size:13px;}
  .ivsum>div{display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-top:1px solid var(--surface2);}
  .ivsum>div:first-child{border-top:none;}
  .ivsum .tt{border-top:2px solid var(--line2);font-size:16px;padding-top:10px;}
  .ivsum .tt b{font-size:20px;}
  .tx{width:46px;border:1px solid var(--line);border-radius:4px;padding:2px 4px;text-align:right;font-size:12px;}
  .paper{display:none;}

  .links{display:flex;gap:12px;flex-wrap:wrap;}
  .lk{display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);
    border-radius:10px;padding:12px 14px;font-size:13px;font-weight:500;color:var(--ink);
    transition:border-color .15s;}
  .lk:hover{border-color:var(--line2);}
  .lk span{flex:1;text-align:left;}
  .lk svg:last-child{color:var(--line2);}
  /* ---------- シフト ---------- */
  .brush{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:12px;}
  .brush .bl{font-size:11px;color:var(--muted);font-weight:600;margin-right:2px;}
  .bt{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:6px 13px;
    font-size:12.5px;font-weight:500;transition:all .12s;}
  .bt:hover{border-color:var(--line2);}
  .shwrap{overflow:auto;border:1px solid var(--line);border-radius:12px;background:var(--card);
    max-height:calc(100vh - 300px);min-height:320px;}
  .shtbl{border-collapse:collapse;width:100%;}
  .shtbl th,.shtbl td{border-right:1px solid var(--surface2);border-bottom:1px solid var(--surface2);padding:0;}
  .shtbl thead th{background:var(--surface);font-size:11.5px;color:var(--muted);font-weight:600;
    padding:7px 0;text-align:center;min-width:54px;position:sticky;top:0;z-index:3;
    box-shadow:0 1px 0 var(--line);}
  .shtbl thead th small{display:block;font-size:9.5px;color:var(--faint);font-weight:400;margin-top:1px;}
  .shtbl thead th.sat{background:var(--sat);} .shtbl thead th.sun{background:var(--sun);}
  .shtbl th.nm{position:sticky;left:0;z-index:2;background:var(--surface);min-width:130px;text-align:left;
    padding:8px 12px;font-size:13.5px;color:var(--ink);font-weight:600;border-right:1px solid var(--line);
    box-shadow:1px 0 0 var(--line);}
  .shtbl thead th.nm{z-index:4;}
  .shtbl tr.ft th.nm{z-index:2;}
  .shtbl tbody th.nm{background:var(--card);}
  .shtbl .tt{min-width:48px;text-align:center;font-size:13px;font-weight:600;background:var(--surface);}
  .shtbl tr.ft th,.shtbl tr.ft td{background:var(--surface);font-size:12.5px;text-align:center;padding:7px 0;color:var(--muted);}
  .sc{width:100%;height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:2px;font-size:12px;line-height:1.15;background:none;padding:0 2px;}
  .sc:hover{background:var(--surface2);}
  .sc.set{font-weight:600;}
  .sc.set em{font-style:normal;font-weight:600;font-size:12px;}
  .sc.set small{font-size:10px;}
  .sc.set:hover{filter:brightness(.95);}
  .sc.off{background:var(--off);color:var(--faint);font-weight:600;font-size:13px;}

  .sh-tabs{display:flex;gap:4px;padding:3px;background:var(--surface2);border-radius:8px;font-size:13px;}
  .sh-tabs button{padding:5px 14px;border-radius:6px;font-weight:500;color:var(--faint);}
  .sh-tabs button.on{background:var(--card);color:var(--ink);box-shadow:0 1px 2px rgba(27,42,65,.08);}
  .so-row, .wl-grid .row.so-row{display:grid;grid-template-columns:64px minmax(0,1fr) 72px 72px 72px 92px;align-items:center;gap:8px;
    padding:8px 12px;cursor:pointer;}
  .so-row.hd{font-size:11px;color:var(--faint);font-weight:600;background:var(--surface);cursor:default;}
  .so-row .c-r{text-align:right;}
  .wl-grid .row.so-row:hover{background:var(--surface2);}
  .att-sel{width:100%;border:1px solid var(--line);border-radius:6px;padding:4px 6px;font-size:12px;background:var(--card);}
  .att-late{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:4px;font-size:10px;font-weight:700;
    background:#FDF1E7;color:#A56A25;font-style:normal;}
  .so-row .c-att{min-width:0;}
  .rk{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;
    border-radius:4px;font-size:9.5px;font-weight:700;color:#fff;margin-right:5px;flex-shrink:0;}
  .rk-S{background:#be3b2c;} .rk-A{background:#c8892c;}
  .rk-B{background:#2f7e7e;} .rk-C{background:var(--faint);}
  .wide-m{max-width:640px;}
  .pick{max-height:220px;}
  .pk{display:grid;grid-template-columns:16px 1fr 106px;gap:8px;align-items:center;
    padding:5px 7px;border-radius:6px;}
  .pk.pk4{grid-template-columns:16px 1fr 106px 86px;}
  .pk .wp{border:1px solid var(--line);border-radius:6px;padding:4px 7px;font-size:12px;text-align:right;background:var(--card);}
  .pk .wp:disabled{background:var(--surface2);}
  .pk:hover{background:var(--surface);}
  .pk.on{background:var(--surface2);}
  .pn{display:flex;align-items:center;font-size:13px;overflow:hidden;}
  .pn small{color:var(--faint);font-size:11px;margin-left:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .rl{border:1px solid var(--line);border-radius:5px;padding:3px 5px;font-size:11.5px;background:var(--card);}
  .rl:disabled{background:var(--surface2);color:var(--faint);}
  .nm-l em{display:inline-flex;align-items:center;}

  /* イベントカレンダー */
  .cal{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--card);}
  .cal-h{display:grid;grid-template-columns:repeat(7,1fr);background:var(--surface);border-bottom:1px solid var(--line);}
  .cal-h div{padding:7px 0;text-align:center;font-size:11px;font-weight:600;color:var(--muted);}
  .cal-h .sat{color:#3d6bb3;} .cal-h .sun{color:var(--shu);}
  .cal-b{display:grid;grid-template-columns:repeat(7,1fr);}
  .cd{min-height:104px;border-right:1px solid var(--surface2);border-bottom:1px solid var(--surface2);padding:5px;
    display:flex;flex-direction:column;gap:3px;}
  .cd:nth-child(7n){border-right:none;}
  .cd.sat{background:var(--sat);} .cd.sun{background:var(--sun);}
  .cd.empty-d{background:var(--surface);}
  .cd-h{display:flex;align-items:center;justify-content:space-between;}
  .cd-h span{font-size:12px;font-weight:600;color:var(--ink);}
  .cd-a{width:18px;height:18px;border-radius:5px;color:var(--faint);display:flex;
    align-items:center;justify-content:center;opacity:0;transition:opacity .12s;}
  .cd:hover .cd-a{opacity:1;}
  .cd-a:hover{background:var(--surface2);color:var(--teal);}
  .ev-chip{width:100%;text-align:left;border-radius:6px;padding:4px 6px;display:flex;
    flex-direction:column;gap:1px;border-left:3px solid;transition:filter .12s;}
  .ev-chip:hover{filter:brightness(.96);}
  .ev-chip.ok{background:#eaf3f1;border-color:#2f7e7e;}
  .ev-chip.ng{background:rgba(178,58,46,.12);border-color:#be3b2c;}
  .ev-chip em{font-style:normal;font-size:11px;font-weight:600;color:var(--ink);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .ev-chip small{font-size:10px;color:var(--muted);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .ev-chip.ng small{color:#be3b2c;font-weight:600;}
  /* 取引先名は取引先の色。割当メンバーは常にグレーで（不足時の赤に引っ張られないように） */
  .ev-chip .ec-cl{font-weight:700;}
  .ev-chip.ng .ec-cl{font-weight:700;}
  .ev-chip .ec-p{display:flex;align-items:center;gap:3px;color:var(--muted) !important;font-weight:400 !important;}
  .ev-chip .ec-p.no{color:var(--faint) !important;}
  .ev-chip .ec-p svg{flex-shrink:0;}

  /* スマホのカレンダー：日付ごとの縦リスト */
  .agd{display:flex;flex-direction:column;gap:10px;}
  .agd-d{border:1px solid var(--line);border-radius:10px;background:var(--card);overflow:hidden;}
  .agd-h{display:flex;align-items:center;gap:6px;padding:7px 10px;background:var(--surface);
    border-bottom:1px solid var(--line);}
  .agd-h b{font-size:14px;font-weight:700;color:var(--ink);}
  .agd-h span{font-size:11px;color:var(--muted);}
  .agd-h small{font-size:11px;color:var(--faint);}
  .agd-h.sat b{color:#3d6bb3;} .agd-h.sun b{color:var(--shu);}
  .agd-add{margin-left:auto;display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:600;
    color:var(--teal);border:1px solid var(--line2);border-radius:6px;padding:3px 8px;}
  .agd-d .ev-chip{border-radius:0;border-left-width:4px;padding:8px 10px;gap:3px;}
  .agd-d .ev-chip+.ev-chip{border-top:1px solid var(--line);}
  .agd-d .ev-chip em{font-size:13px;white-space:normal;}
  .agd-d .ev-chip small{font-size:11px;}

  .bt{display:inline-flex;align-items:center;gap:6px;}
  .bt i{width:9px;height:9px;border-radius:2px;flex-shrink:0;}
  .bt.on i{background:#fff !important;}
  .dot{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:7px;flex-shrink:0;}
  .so-row .c-t{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  /* イベント受注 */
  .ev-row{display:grid;grid-template-columns:78px 1.4fr 1fr 100px 74px 74px 1.4fr 58px;
    gap:9px;align-items:center;font-size:13px;}
  .ev-row.hd{font-size:11px;color:var(--faint);font-weight:600;background:var(--surface);}
  .ev-row .c{text-align:center;}
  .ev-row small{color:var(--faint);font-size:11px;margin-left:2px;}
  .ev-row .pl-b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .ev-row .dim2{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .fill{display:inline-block;font-size:12.5px;font-weight:700;padding:3px 9px;border-radius:999px;}
  .fill.ok{background:#e6f2ef;color:#2f7e7e;}
  .fill.ng{background:rgba(178,58,46,.12);color:#be3b2c;}
  .nm-l{display:flex;flex-wrap:wrap;gap:4px;}
  .nm-l em{font-style:normal;font-size:11.5px;background:var(--surface2);padding:2px 7px;border-radius:4px;color:#3c4a5e;}
  /* 取引先ごとの見出し行 */
  .ev-ghd{display:flex;align-items:center;gap:8px;background:var(--surface);padding:8px 16px !important;cursor:default;}
  .ev-ghd:hover{background:var(--surface);}
  .ev-ghd i{width:9px;height:9px;border-radius:2px;flex-shrink:0;}
  .ev-ghd b{font-size:12.5px;font-weight:700;color:var(--ink);}
  .ev-ghd span{font-size:11px;color:var(--muted);}
  .ev-ghd .ng-t{color:var(--shu);font-weight:700;}
  .ev-cl-c{display:flex;align-items:center;gap:6px;}
  .ev-cl-c i{width:8px;height:8px;border-radius:2px;flex-shrink:0;}
  .stats.st3{grid-template-columns:repeat(3,1fr);}
  .pick{display:block;border:1px solid var(--line);
    border-radius:8px;padding:8px;max-height:220px;overflow-y:auto;}
  .pk input[type=checkbox]{width:15px;height:15px;accent-color:var(--teal-b);cursor:pointer;margin:0;}
  .pk{cursor:pointer;color:var(--ink);font-weight:400;margin:0;}

  /* ---------- 売上管理 ---------- */
  .tgt{padding:16px 18px;margin-bottom:22px;}
  .tgt-h{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px;}
  .tgt-h span{font-size:12px;color:var(--muted);font-weight:600;}
  .tgt-h b{font-size:20px;color:var(--ink);}
  .tgt-bar{height:9px;background:var(--surface2);border-radius:999px;overflow:hidden;}
  .tgt-bar i{display:block;height:100%;background:linear-gradient(90deg,#2f7e7e,#be3b2c);border-radius:999px;}
  .tgt-f{display:flex;justify-content:space-between;margin-top:7px;font-size:11px;color:var(--faint);}
  .chart{display:flex;align-items:flex-end;gap:6px;height:150px;}
  .cbar{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;height:100%;}
  .cb{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center;gap:2px;}
  .cb i{width:44%;border-radius:2px 2px 0 0;min-height:1px;}
  .cb i.s{background:var(--shu);} .cb i.c{background:var(--line2);}
  .cm{font-size:10px;color:var(--faint);}
  .lgd{display:flex;gap:16px;justify-content:center;margin-top:12px;font-size:11px;color:var(--muted);}
  .lgd span{display:flex;align-items:center;gap:5px;}
  .lgd i{width:9px;height:9px;border-radius:2px;}
  .sl-row{display:grid;gap:8px;font-size:13px;}
  .sl-row.hd{font-size:11px;color:var(--faint);font-weight:600;background:var(--surface);}
  .sl-row .r{text-align:right;}
  .sl-row.dim{color:var(--line2);}
  .sl-row.tt{background:var(--surface);font-weight:700;border-top:2px solid var(--line2);}
  .cb i.x{background:#e0b070;}
  .cb i{width:30%;}
  .segr{display:grid;grid-template-columns:112px 1fr 108px 44px;gap:12px;align-items:center;padding:6px 0;}
  .segr .sn{font-size:13px;font-weight:600;display:flex;align-items:center;gap:7px;}
  .segr .sn i{width:9px;height:9px;border-radius:2px;flex-shrink:0;}
  .segr .sb{height:8px;background:var(--surface2);border-radius:999px;overflow:hidden;}
  .segr .sb i{display:block;height:100%;border-radius:999px;}
  .segr b{text-align:right;font-size:13px;}
  .segr .sp{text-align:right;font-size:11px;color:var(--faint);}
  .sl-row{grid-template-columns:64px 1fr 1fr 1fr 1fr 62px;}
  .st-row{display:grid;grid-template-columns:1.2fr 1.5fr 1fr 1fr 1fr 1fr;gap:10px;align-items:center;font-size:13px;}
  .st-row.hd{font-size:11px;color:var(--faint);font-weight:600;background:var(--surface);}
  .st-row.tt{background:var(--surface);font-weight:700;border-top:2px solid var(--line2);}
  .st-row .r{text-align:right;}
  .pgw{display:flex;align-items:center;gap:9px;}
  .pgb{flex:1;height:8px;background:var(--surface2);border-radius:999px;overflow:hidden;}
  .pgb i{display:block;height:100%;border-radius:999px;}
  .pgt{font-size:12px;width:38px;text-align:right;}
  .ex-row{display:grid;grid-template-columns:96px 104px 1fr 96px 72px 104px 62px;gap:9px;align-items:center;font-size:13px;}
  .ex-row.hd{font-size:11px;color:var(--faint);font-weight:600;background:var(--surface);}
  .ex-row .r{text-align:right;}
  .ex-row .dim2{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

  .sl-r2{display:flex;align-items:center;gap:10px;}
  .two{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:24px;}

  .chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;
    color:var(--faint);background:var(--surface2);border-radius:999px;padding:6px 12px;white-space:nowrap;
    align-self:center;}
  .chip.w{background:#fdf1e7;color:#a56a25;}
  .chip.s{background:var(--surface2);color:var(--muted);}
  .chip.o{background:#e6f2ef;color:#2f7e7e;}
  .chip.e{background:rgba(178,58,46,.12);color:var(--shu);}
  .ro-tag{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--faint);
    background:var(--surface2);padding:6px 10px;border-radius:6px;flex-shrink:0;}
  .who small b{color:#fff;font-weight:600;}
  .me{font-size:10px;color:var(--faint);background:var(--surface2);padding:1px 5px;border-radius:4px;margin-left:6px;}
  .role-sel{width:96px;flex-shrink:0;border:1px solid var(--line);border-radius:6px;padding:5px 6px;font-size:13px;background:var(--card);}
  /* ---------- 稼働明細表 ---------- */
  .wl-bar{display:flex;gap:12px;align-items:flex-end;margin:20px 0 16px;flex-wrap:wrap;}
  .wl-bar .fld{width:auto;}
  .wl-acts{display:flex;gap:8px;margin-left:auto;}
  .wl-bar .prt{display:flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--card);}
  .tip{font-size:12px;color:var(--muted);margin:0;}
  .stat .ic{margin-bottom:0;}

  .wl-grid .row{display:grid;grid-template-columns:64px 34px 1.4fr 104px 104px 74px;
    align-items:center;gap:8px;padding:6px 12px;}
  .wl-grid .row.hd{font-size:11px;color:var(--faint);font-weight:600;background:var(--surface);padding:8px 12px;}
  .wl-grid .row.hd:hover{background:var(--surface);}
  .wl-grid .row.sat{background:var(--sat);} .wl-grid .row.sun{background:var(--sun);}
  .wl-grid .row.isoff{background:var(--off);color:var(--faint);}
  .wl-grid .c-d small{color:var(--faint);margin-left:2px;font-size:11px;}
  .wl-grid .c-o{text-align:center;}
  .wl-grid .ck{width:16px;height:16px;accent-color:var(--teal-b);cursor:pointer;}
  .wl-grid .cell{width:100%;border:1px solid var(--line);border-radius:6px;padding:5px 8px;
    font-size:13px;background:var(--card);outline:none;}
  .wl-grid .cell:focus{border-color:var(--teal-b);}
  .wl-grid .cell:disabled{background:var(--surface2);color:var(--faint);}
  .wl-grid .c-r{font-size:13px;text-align:right;}
  .wl-grid .off-t{font-style:normal;font-size:12px;}
  .wl-grid .pr{display:none;}
  .wl-grid .ov{color:var(--shu);font-size:10px;margin-left:2px;}
  .print-head{display:none;}


  /* 受領請求書・単価管理 */
  .lnk-s{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;color:var(--gold);padding:2px 4px;border-radius:4px;}
  .lnk-s:hover{background:var(--gold-soft);}
  .up-row{display:grid;grid-template-columns:1.4fr 110px 110px 90px 70px;gap:10px;align-items:center;padding:10px 14px;font-size:13px;}
  .up-row2{display:grid;grid-template-columns:130px 1.4fr 100px 100px 84px 70px;gap:10px;align-items:center;padding:10px 14px;font-size:13px;}
  .up-row3{display:grid;grid-template-columns:minmax(0,116px) minmax(0,136px) minmax(0,1.2fr) 94px 94px 78px 64px;
    gap:10px;align-items:center;padding:10px 14px;font-size:13px;}
  .up-row.hd,.up-row2.hd,.up-row3.hd{font-size:11px;color:var(--faint);font-weight:600;background:var(--surface);}
  .up-row .r,.up-row2 .r,.up-row3 .r{text-align:right;}
  .up-row3 .dim3{color:var(--faint);font-size:12px;}
  .mb-cl{display:none;}   /* 取引先はPCでは独立列、スマホでは明細行の横に出す */
  .trv{display:inline-block;padding:2px 8px;border-radius:5px;font-size:11px;font-weight:600;}
  .trv.in{background:#E6F2EF;color:#2F7E7E;}
  .trv.ex{background:#FDF1E7;color:#A56A25;}

  /* タスク管理 */
  .tk-row{gap:10px;}
  .tk-lv{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:4px;font-size:10px;font-weight:700;vertical-align:1px;}
  .tk-due{margin-left:8px;font-size:11.5px;color:var(--muted);}
  .tk-due.od{color:var(--shu);font-weight:700;}
  .tk-due.od svg{vertical-align:-2px;}
  .tk-pg{display:flex;align-items:center;gap:8px;flex-shrink:0;}
  .tk-pg .pgb{width:90px;}

  /* 年月ピッカー（年・月の2ドロップダウン。iOSでもタップ選択できる） */
  .mp{display:flex;gap:8px;}
  .mp select{flex:1;min-width:0;}

  .wt-t{font-weight:700;color:var(--gold);}
  /* ---------- シフトの請求先 ---------- */
  .brush .bc{width:auto;min-width:160px;padding:5px 9px;font-size:12.5px;}
  .bc-t{display:inline-block;margin-left:7px;padding:1px 6px;border-radius:4px;font-size:10.5px;font-weight:600;
    background:var(--gold-soft);color:var(--gold);white-space:nowrap;}
  .bc-t.none{background:var(--surface2);color:var(--faint);font-weight:500;}

  /* ---------- 稼働から請求書を自動作成（プレビュー） ---------- */
  .ai-c{border:1px solid var(--line);border-radius:10px;margin-bottom:10px;overflow:hidden;background:var(--card);}
  .ai-c.skip{opacity:.75;}
  .ai-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 12px;background:var(--surface);border-bottom:1px solid var(--line);}
  .ai-h b{font-size:13px;color:var(--ink);}
  .ai-h span{font-size:11.5px;color:var(--muted);}
  .ai-note{margin:0;padding:6px 12px;font-size:11.5px;color:var(--muted);background:var(--surface);border-bottom:1px solid var(--line);}
  .ai-note.ng{color:var(--shu);}
  .ai-l{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) 84px 70px 96px;gap:8px;align-items:center;
    padding:6px 12px;border-top:1px solid var(--surface2);font-size:12.5px;}
  .ai-l:first-of-type{border-top:none;}
  .ai-l.ng{background:var(--sun);}
  .ai-l .r{text-align:right;}
  .ai-l span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .ai-w{display:inline-block;margin-left:6px;padding:0 5px;border-radius:3px;font-size:10px;font-weight:700;
    background:rgba(178,58,46,.12);color:var(--shu);}
  .ai-ng{color:var(--shu);}
  .ai-blank{font-style:normal;color:var(--faint);}
  .ai-src{display:block;margin-top:2px;font-size:11px;color:var(--muted);white-space:normal;line-height:1.5;}
  .ai-l.as-l>span:first-child,.ai-c .ai-l>span:first-child{white-space:normal;}
  .ai-l.as-l{grid-template-columns:minmax(0,1.8fr) 120px 110px 110px;}

  /* ---------- 変更履歴・監査ログ ---------- */
  .aud-l{display:flex;flex-direction:column;}
  .aud{display:flex;gap:10px;padding:10px 0;border-top:1px solid var(--line);}
  .aud:first-child{border-top:none;padding-top:2px;}
  .aud-i{width:24px;height:24px;border-radius:7px;flex-shrink:0;display:flex;align-items:center;
    justify-content:center;color:#fff;background:var(--faint);}
  .aud-i.a-new{background:#0FA588;} .aud-i.a-dup{background:#7A5EA8;}
  .aud-i.a-chg{background:#B08D3E;} .aud-i.a-del{background:#B23A2E;}
  .aud-b{min-width:0;flex:1;}
  .aud-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px;}
  .aud-h b{font-weight:700;color:var(--ink);}
  .aud-no{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;color:var(--muted);
    background:var(--surface2);border-radius:5px;padding:1px 7px;}
  .aud-w{font-size:11.5px;color:var(--muted);}
  .aud-t{font-size:11.5px;color:var(--faint);margin-left:auto;white-space:nowrap;}
  .aud-c{margin-top:5px;display:flex;flex-direction:column;gap:3px;}
  .aud-c>div{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12px;}
  .aud-c .l{font-size:11px;font-weight:600;color:var(--muted);min-width:66px;}
  .aud-c em{font-style:normal;color:var(--muted);text-decoration:line-through;}
  .aud-c b{font-weight:700;color:var(--ink);}
  .aud-c svg{color:var(--faint);flex-shrink:0;}

  /* ---------- ダークモード時の微調整（明色前提の部分だけ上書き） ---------- */
  :root[data-theme="dark"] .att-late{background:rgba(231,200,119,.16);color:#F3E2AE;}
  :root[data-theme="dark"] .ev-chip.ok{background:rgba(47,214,181,.13);border-color:#2FD6B5;}
  :root[data-theme="dark"] .ev-chip.ng{background:rgba(255,107,94,.14);border-color:var(--shu);}
  :root[data-theme="dark"] .ev-chip em{color:var(--ink);}
  /* 割当メンバーのチップ・充足バッジは明色前提だったのでダークでは読めなくなる */
  :root[data-theme="dark"] .nm-l em{background:var(--surface2);color:var(--ink);}
  :root[data-theme="dark"] .fill.ok{background:rgba(47,214,181,.16);color:#5FE7D0;}
  :root[data-theme="dark"] .fill.ng{background:rgba(255,107,94,.18);color:var(--shu);}
  :root[data-theme="dark"] .cal-h .sat{color:#7FB2FF;}
  :root[data-theme="dark"] .chip.w{background:rgba(231,200,119,.16);color:#F3E2AE;}
  :root[data-theme="dark"] .chip.s{background:var(--surface2);color:var(--muted);}
  :root[data-theme="dark"] .chip.o{background:rgba(56,225,255,.16);color:var(--cyan);}
  :root[data-theme="dark"] .chip.e{background:rgba(255,107,94,.16);color:var(--shu);}
  :root[data-theme="dark"] .sh-tabs button.on{box-shadow:0 0 0 1px var(--line2);}
  :root[data-theme="dark"] .trv.in{background:rgba(56,225,255,.14);color:var(--cyan);}
  :root[data-theme="dark"] .trv.ex{background:rgba(231,200,119,.14);color:#F3E2AE;}
  :root[data-theme="dark"] .gbtn{background:#F5F7FB;color:#10203A;}
  /* タスクの緊急度・重要度バッジ（テーマ追従） */
  .tk-lv.lv-hi{background:rgba(178,58,46,.14);color:#B23A2E;}
  .tk-lv.lv-mid{background:rgba(165,106,37,.14);color:#A56A25;}
  .tk-lv.lv-lo{background:rgba(47,126,126,.14);color:#2F7E7E;}
  :root[data-theme="dark"] .tk-lv.lv-hi{background:rgba(255,107,94,.18);color:#FF9F96;}
  :root[data-theme="dark"] .tk-lv.lv-mid{background:rgba(231,200,119,.18);color:#F3E2AE;}
  :root[data-theme="dark"] .tk-lv.lv-lo{background:rgba(56,225,255,.16);color:#8FE9FF;}
  /* ダークではシフトの店舗色を少し明るくして読みやすく */
  :root[data-theme="dark"] .sc.set{filter:brightness(1.55);}
  :root[data-theme="dark"] .so-row .dot{filter:brightness(1.5);}

  /* スマホのヒーローはPCでは非表示 */
  /* 請求書一覧：月見出しと作成者 */
  .iv-mhd{background:var(--surface);padding:7px 16px !important;cursor:default;}
  .iv-mhd b{font-size:11.5px;font-weight:700;letter-spacing:.1em;color:var(--gold);}
  .iv-mhd:hover{background:var(--surface);}
  .iv-by{display:inline-flex;align-items:center;gap:3px;font-size:11px;color:var(--muted);
    background:var(--surface2);border-radius:5px;padding:1px 7px;white-space:nowrap;}
  /* .s は1行省略のため、スマホでは作成者を独立した行に出す（PCは .s の中にインライン表示） */
  .iv-byl{display:none;}
  /* 請求書のステータス（テーマ追従。tk-lv と同じ寸法に合わせてある） */
  .iv-st{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:4px;
    font-size:10px;font-weight:700;vertical-align:1px;white-space:nowrap;}
  .iv-st.st-draft {background:var(--surface2);color:var(--muted);}
  .iv-st.st-issued{background:rgba(165,106,37,.14);color:#A56A25;}
  .iv-st.st-sent  {background:rgba(22,35,59,.10);color:#16233B;}
  .iv-st.st-paid  {background:rgba(47,126,126,.14);color:#2F7E7E;}
  .iv-st.st-void  {background:rgba(178,58,46,.12);color:#B23A2E;}
  :root[data-theme="dark"] .iv-st.st-issued{background:rgba(231,200,119,.18);color:#F3E2AE;}
  :root[data-theme="dark"] .iv-st.st-sent  {background:rgba(56,225,255,.14);color:#8FE9FF;}
  :root[data-theme="dark"] .iv-st.st-paid  {background:rgba(31,209,176,.18);color:#5FE7D0;}
  :root[data-theme="dark"] .iv-st.st-void  {background:rgba(255,107,94,.18);color:#FF9F96;}

  /* ---------- 全員へのGoogleチャット通知 ---------- */
  .dh-cast{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:-4px 0 14px;}
  .dh-cast .tip{margin-left:4px;}
  .ev-short{display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px;margin-top:12px;}
  .ev-short .tip{margin:0;}
  .nt-b{padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;}
  .nt-b>*{flex:none;}
  .nt-b>label{font-size:12px;font-weight:600;color:var(--muted);margin-top:4px;}
  .nt-b textarea{resize:vertical;min-height:56px;font-family:inherit;line-height:1.6;}
  .nt-ev{display:flex;flex-direction:column;gap:6px;max-height:220px;overflow-y:auto;}
  .nt-ck{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:10px;cursor:pointer;
    border:1px solid var(--line);background:var(--surface2);font-size:13.5px;}
  .nt-ck:has(input:checked){border-color:var(--gold-line);background:var(--gold-soft);}
  .nt-ck input{accent-color:var(--gold);width:16px;height:16px;flex:none;}
  .nt-ck .mono{color:var(--gold);font-weight:700;min-width:62px;}
  .nt-ck b{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .nt-pv-h{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-top:10px;
    font-size:12px;font-weight:600;color:var(--muted);}
  .nt-pv-h .tip{font-weight:400;font-size:11px;}
  .nt-pv{padding:14px 16px;border-radius:12px;font-size:13.5px;line-height:1.75;min-height:64px;
    border:1px solid var(--gold-line);background:var(--surface2);white-space:normal;overflow-wrap:anywhere;}
  .nt-pv b{color:var(--ink);}

  /* ---------- 売上予測（管理者のみ） ---------- */
  .fc{--fc-c:var(--gold);position:relative;overflow:hidden;border-radius:16px;margin-bottom:18px;
    padding:16px 18px 14px;border:1px solid var(--line);background:var(--card-glass);
    backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
    box-shadow:0 20px 44px -34px rgba(0,0,0,.9);transition:border-color .3s,box-shadow .3s;}
  .fc::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;
    background:linear-gradient(90deg,transparent,var(--fc-c),transparent);opacity:.9;}
  .fc-aur{position:absolute;inset:-60% -20% auto -20%;height:220px;pointer-events:none;
    background:radial-gradient(240px 130px at 22% 50%,color-mix(in srgb,var(--fc-c) 36%,transparent),transparent 70%),
      radial-gradient(240px 140px at 80% 30%,rgba(111,214,255,.16),transparent 70%);
    filter:blur(28px);animation:fcDrift 8s ease-in-out infinite alternate;}
  @keyframes fcDrift{to{transform:translate(26px,14px) scale(1.14);}}
  .fc-hd{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;}
  .fc-lb{display:flex;align-items:baseline;gap:9px;font-family:var(--font-en);font-size:10.5px;
    letter-spacing:.3em;color:var(--fc-c);}
  .fc-lb small{font-size:11.5px;letter-spacing:0;color:var(--faint);}

  /* ランクのバッジ。登場は判子、ランクが変わると回転 */
  .fc-rk{display:flex;align-items:center;gap:7px;padding:4px 11px;border-radius:999px;
    border:1px solid color-mix(in srgb,var(--fc-c) 55%,transparent);
    background:color-mix(in srgb,var(--fc-c) 12%,transparent);transition:border-color .4s,background .4s;}
  .fc-rk b{font-family:var(--font-en);font-size:17px;font-weight:700;line-height:1;color:var(--fc-c);
    text-shadow:0 0 12px color-mix(in srgb,var(--fc-c) 75%,transparent);}
  .fc-rk small{font-family:var(--font-en);font-size:9.5px;letter-spacing:.2em;color:var(--muted);}
  .fc-rk.stamp{animation:fcStamp .65s cubic-bezier(.2,1.5,.4,1) .15s both;}
  .fc-rk.flip{animation:fcFlip .9s cubic-bezier(.3,1.3,.4,1);}
  @keyframes fcStamp{0%{transform:scale(2.4) rotate(-12deg);opacity:0;}100%{transform:none;opacity:1;}}
  @keyframes fcFlip{0%{transform:perspective(300px) rotateY(0);}
    50%{transform:perspective(300px) rotateY(200deg) scale(1.35);}100%{transform:perspective(300px) rotateY(360deg);}}

  /* 金額：スロットのリール */
  .fc-v{position:relative;display:block;margin-top:6px;padding:0;border:0;background:none;cursor:pointer;
    overflow:hidden;font-family:var(--font-en);font-size:44px;font-weight:700;line-height:1;
    font-variant-numeric:tabular-nums;color:var(--fc-c);text-align:left;-webkit-tap-highlight-color:transparent;}
  .fc-num{--rh:1.08em;display:inline-flex;align-items:flex-start;height:var(--rh);}
  .fc-num .fc-rc{display:inline-block;height:var(--rh);line-height:var(--rh);
    background:linear-gradient(180deg,#FFF6D8 8%,var(--fc-c) 62%,#9C7C3F);
    -webkit-background-clip:text;background-clip:text;color:transparent;}
  .fc-num .fc-rc.y{font-size:.78em;line-height:calc(var(--rh) / .78);margin-right:2px;}
  .fc-num .fc-rl{position:relative;display:inline-block;height:var(--rh);overflow:hidden;
    -webkit-mask-image:linear-gradient(transparent,#000 9%,#000 91%,transparent);
            mask-image:linear-gradient(transparent,#000 9%,#000 91%,transparent);
    transition:filter .5s;}
  .fc-num .fc-rs{display:block;will-change:transform;}
  .fc-num .fc-rs span{display:block;height:var(--rh);line-height:var(--rh);text-align:center;
    background:linear-gradient(180deg,#FFF6D8 8%,var(--fc-c) 62%,#9C7C3F);
    -webkit-background-clip:text;background-clip:text;color:transparent;}
  .fc-num .fc-rl.hit{filter:brightness(1.7) drop-shadow(0 0 10px var(--fc-c));transition:filter 0s;}
  .fc-num .fc-rl.nw{animation:fcIn .45s ease-out;}
  @keyframes fcIn{from{opacity:0;transform:translateY(-.3em);}to{opacity:1;transform:none;}}
  /* 止まったあとに光が横切る */
  .fc-shine{position:absolute;top:0;bottom:0;left:-40%;width:35%;pointer-events:none;opacity:0;
    background:linear-gradient(100deg,transparent,rgba(255,250,230,.55),transparent);transform:skewX(-18deg);}
  .fc-v.shine .fc-shine{animation:fcSweep .85s ease-out;}
  @keyframes fcSweep{0%{left:-40%;opacity:1;}100%{left:110%;opacity:0;}}
  .fc-v:active .fc-num{transform:scale(.97);}

  /* ゲージ：0〜過去最高の物差しと、ランクの目盛り */
  .fc-g{position:relative;margin-top:12px;padding-top:18px;}
  .fc-bar{position:relative;height:8px;border-radius:999px;background:var(--surface2);border:1px solid var(--line);}
  .fc-fill{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:999px;
    background:linear-gradient(90deg,color-mix(in srgb,var(--fc-c) 35%,transparent),var(--fc-c));
    box-shadow:0 0 14px color-mix(in srgb,var(--fc-c) 70%,transparent);}
  .fc-tip{position:absolute;right:-5px;top:50%;width:10px;height:10px;margin-top:-5px;border-radius:50%;
    background:#FFF8E1;box-shadow:0 0 8px 2px var(--fc-c),0 0 22px 6px color-mix(in srgb,var(--fc-c) 55%,transparent);}
  .fc.over .fc-fill{background:linear-gradient(90deg,var(--fc-c),#F3E2A8,var(--fc-c));}
  .fc-tk{position:absolute;left:0;right:0;top:0;height:34px;pointer-events:none;}
  .fc-tick{position:absolute;top:0;display:flex;flex-direction:column;align-items:center;transform:translateX(-50%);}
  .fc-tick em{font-style:normal;font-family:var(--font-en);font-size:11px;font-weight:700;line-height:14px;
    color:var(--faint);transition:color .3s,text-shadow .3s;}
  .fc-tick::after{content:"";width:2px;height:14px;margin-top:3px;border-radius:1px;background:var(--line2);
    transition:background .3s,box-shadow .3s;}
  .fc-tick.s em{font-size:12.5px;}
  .fc-tick.on em{color:var(--fc-c);text-shadow:0 0 10px color-mix(in srgb,var(--fc-c) 85%,transparent);}
  .fc-tick.on::after{background:var(--fc-c);box-shadow:0 0 8px var(--fc-c);}
  .fc-tick.pass em{animation:fcTick .55s cubic-bezier(.2,1.6,.4,1);}
  @keyframes fcTick{0%{transform:scale(1);}40%{transform:scale(1.9);}100%{transform:scale(1);}}

  /* 2行で固定。文字数が変わっても高さが動かないようにする（入力中に表が揺れないため） */
  .fc-ft{margin-top:10px;font-size:12px;color:var(--muted);}
  .fc-l{display:flex;gap:4px 18px;min-height:18px;line-height:18px;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .fc-l>span{flex:none;overflow:hidden;text-overflow:ellipsis;}
  .fc-l:last-child{min-height:17px;line-height:17px;}
  .fc-ft b{color:var(--ink);font-weight:700;font-variant-numeric:tabular-nums;}
  .fc-ft span span{margin-left:4px;color:var(--faint);}
  .fc-ft .fc-w{color:var(--shu);}
  .fc-ft .fc-hi{color:var(--fc-c);text-shadow:0 0 12px color-mix(in srgb,var(--fc-c) 70%,transparent);}

  /* 増えた分が飛ぶ */
  .fc-pop{position:absolute;left:0;right:0;top:52px;height:0;z-index:3;pointer-events:none;}
  .fc-p{position:absolute;top:0;right:10%;font-family:var(--font-en);font-size:20px;font-weight:700;
    color:var(--fc-c);text-shadow:0 0 14px color-mix(in srgb,var(--fc-c) 80%,transparent);
    white-space:nowrap;animation:fcFly 1.6s cubic-bezier(.2,.9,.3,1) forwards;}
  .fc-p.big{font-size:26px;}
  .fc-p.dn{color:#FF9F96;text-shadow:0 0 14px rgba(255,120,110,.7);}
  .fc-p em{margin-left:6px;font-style:normal;font-size:11px;letter-spacing:.14em;color:var(--ink);
    background:color-mix(in srgb,var(--fc-c) 26%,transparent);border-radius:999px;padding:2px 8px;}
  @keyframes fcFly{0%{transform:translateY(14px) scale(.6);opacity:0;}
    18%{transform:translateY(-4px) scale(1.18);opacity:1;}
    32%{transform:translateY(-8px) scale(1);}
    100%{transform:translateY(-58px) scale(1);opacity:0;}}

  /* 金の粒（過去最高の更新・ランクアップ） */
  .fc-fx{position:absolute;left:24%;top:62px;width:0;height:0;z-index:3;pointer-events:none;}
  .fc-fx i{position:absolute;left:0;top:0;width:6px;height:6px;border-radius:50%;opacity:0;
    background:#F3E2A8;box-shadow:0 0 8px #E4C97E;animation:fcBurst 1.3s cubic-bezier(.15,.8,.3,1) forwards;}
  .fc-fx i.c{background:#BFEFFF;box-shadow:0 0 8px #6FD6FF;}
  @keyframes fcBurst{0%{transform:translate(0,0) scale(1.3);opacity:1;}
    70%{opacity:1;}100%{transform:translate(var(--dx),calc(var(--dy) + 46px)) scale(.3);opacity:0;}}

  /* RANK UP / NEW RECORD */
  .fc-up{position:absolute;inset:0;display:none;align-items:center;justify-content:center;z-index:4;
    font-family:var(--font-en);font-size:32px;font-weight:700;letter-spacing:.24em;color:var(--fc-c);
    text-shadow:0 0 22px color-mix(in srgb,var(--fc-c) 90%,transparent);pointer-events:none;
    background:radial-gradient(closest-side,color-mix(in srgb,var(--card) 70%,transparent),transparent);}
  .fc.up{border-color:var(--fc-c);box-shadow:0 0 0 1px var(--fc-c),0 24px 60px -30px var(--fc-c);
    animation:fcShake .5s ease-out;}
  .fc.up .fc-up{display:flex;animation:fcUp 1.8s ease-out forwards;}
  @keyframes fcUp{0%{transform:scale(.5);opacity:0;letter-spacing:.6em;}20%{transform:scale(1.08);opacity:1;letter-spacing:.24em;}
    70%{transform:scale(1);opacity:1;}100%{transform:scale(1.04);opacity:0;}}
  @keyframes fcShake{0%,100%{transform:translateX(0);}25%{transform:translateX(-4px);}75%{transform:translateX(4px);}}

  @media (prefers-reduced-motion:reduce){
    .fc-aur,.fc-rk,.fc-num .fc-rl,.fc-shine,.fc-p,.fc-up,.fc-tick em,.fc{animation:none !important;}
    .fc-fill,.fc-num .fc-rs{transition:none !important;}
  }

  /* ---- 経費の領収書・税理士への提出（taxpack.js） ---- */
  .tp-ck{display:flex;align-items:center;gap:9px;margin:8px 0 2px;font-size:14px;cursor:pointer;color:var(--ink);}
  .tp-ck input{width:18px;height:18px;accent-color:var(--gold-line);}
  .rc-box{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px;border:1px dashed var(--line2);border-radius:12px;}
  .rc-box img{width:72px;height:72px;object-fit:cover;border-radius:8px;border:1px solid var(--line);}
  .rc-box .rc-pdf{width:72px;height:72px;display:grid;place-items:center;border-radius:8px;border:1px solid var(--line);font-size:12px;color:var(--muted);}
  .rc-box .rc-btns{display:flex;gap:8px;flex-wrap:wrap;}
  .rc-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;}
  .rc-mark{display:inline-flex;vertical-align:-3px;margin-right:4px;color:var(--gold-line);}
  .ex-calc{font-size:12px;color:var(--muted);margin-top:4px;}

  /* 週次共有・募集文の窓 */
  .sh-tx{font-family:ui-monospace,"Noto Sans JP",monospace;font-size:12.5px;line-height:1.75;
    white-space:pre;overflow-x:auto;min-height:260px;}
  .nt-b .fld[type="date"],.nt-b .fld[type="number"]{width:auto;}
  .rg-g{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;}
  .rg-g>div{display:flex;flex-direction:column;}
  .rg-row{display:flex;align-items:center;gap:6px;margin-bottom:6px;}
  .rg-row .tip{flex:none;}
  .rg-row .rg-sn{flex:1;min-width:0;}
  @media screen and (max-width:767px){ .rg-g{grid-template-columns:1fr;} }
  /* 二重計上の警告（請求書の自動作成） */
  .ai-c.ai-dup{border-color:var(--shu);box-shadow:0 0 0 1px color-mix(in srgb,var(--shu) 35%,transparent);}
  .ai-c.ai-dup .ai-h{background:color-mix(in srgb,var(--shu) 12%,transparent);}
  .ai-c.ai-dup .ai-h .ai-ng{display:inline-flex;align-items:center;gap:5px;}

  /* ---------- 割り当てバー（シフト入力） ----------
     店舗が増えても1〜2行に収める。よく使う店舗が先頭。いま選んでいるものを大きく出す */
  .brush.b2{flex-direction:column;align-items:stretch;flex-wrap:nowrap;gap:8px;padding:10px 12px;
    border:1px solid var(--line);border-radius:14px;background:var(--card-glass);
    backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);}
  .b2-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
  .b2-cur{display:inline-flex;align-items:center;gap:7px;padding:4px 12px;border-radius:999px;
    font-size:13px;font-weight:700;color:#fff;background:var(--bc);box-shadow:0 0 14px -4px var(--bc);}
  .b2-cur i{width:8px;height:8px;border-radius:2px;background:#fff;}
  .b2-cur.none{background:none;color:var(--faint);font-weight:500;border:1px dashed var(--line2);box-shadow:none;}
  .b2-sp{flex:1;}
  .b2-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center;}
  .b2 .bt{padding:4px 11px;font-size:12px;}
  .b2-sep{width:1px;height:18px;background:var(--line2);margin:0 2px;flex:none;}

  /* ---------- イベント受注一覧 ---------- */
  .ev-tools{display:flex;gap:8px;flex-wrap:wrap;margin:-4px 0 12px;}
  .ev-tg{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;cursor:pointer;
    border:1px solid var(--line2);background:var(--card);color:var(--muted);font-size:12.5px;font-weight:600;}
  .ev-tg b{font-family:var(--font-en);font-size:13px;color:var(--shu);}
  .ev-tg.on{border-color:var(--shu);color:var(--ink);background:color-mix(in srgb,var(--shu) 14%,transparent);}
  .ev-ghd{width:100%;border:0;text-align:left;font:inherit;cursor:pointer !important;color:inherit;}
  .ev-ghd:hover{background:var(--surface2) !important;}
  .ev-ghd .ok-t{color:var(--muted);}
  .ev-chev{margin-left:auto;font-style:normal;color:var(--faint);display:flex;}
  @media screen{
    .ev-row.ev-ng{box-shadow:inset 3px 0 0 var(--shu);}
    .ev-row.ev-ok{box-shadow:inset 3px 0 0 rgba(63,191,160,.6);}
    .ev-d.sat small{color:#6FB4FF;} .ev-d.sun small{color:var(--shu);}
  }
  @media print{ .ev-chev,.ev-ghd .ok-t{display:none !important;} }

  /* ---------- イベントから入ったシフト（schema28） ---------- */
  .sc.evc{background:rgba(180,140,255,.16) !important;border:1.5px solid #B48CFF !important;color:#D9C6FF !important;
    cursor:pointer;position:relative;}
  .sc.evc em{color:#E6DAFF;}
  .sc.evc small{color:rgba(217,198,255,.75) !important;}
  .evt{display:inline-block;font-family:var(--font-en);font-size:8.5px;letter-spacing:.14em;font-weight:700;line-height:1.5;
    color:#160b2e;background:#B48CFF;border-radius:3px;padding:0 4px;margin:0 auto 1px;font-style:normal;}
  .so-row .evt{margin:0 6px 0 0;vertical-align:1px;}
  :root:not([data-theme="dark"]) .sc.evc{background:rgba(130,90,220,.12) !important;color:#5b3fb3 !important;border-color:#8a63e0 !important;}
  :root:not([data-theme="dark"]) .sc.evc em{color:#4a2fa0;}
  :root:not([data-theme="dark"]) .sc.evc small{color:#6d55b8 !important;}
  .pk-day{color:var(--gold) !important;font-weight:600;}
  .note-ok{display:flex;align-items:flex-start;gap:8px;margin-top:16px;padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.7;
    border:1px solid rgba(180,140,255,.5);background:rgba(180,140,255,.10);color:var(--ink);}
  .note-ok svg{color:#B48CFF;flex:none;margin-top:3px;}
  @media print{ .sc.evc{background:#efe9ff !important;color:#3b2a7a !important;border-color:#8a63e0 !important;} .evt{background:#8a63e0;color:#fff;} }
  .wl-ev{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:#D9C6FF;}
  .wl-ev .evt{margin:0;}
  :root:not([data-theme="dark"]) .wl-ev{color:#5b3fb3;}
  @media print{ .wl-ev{color:#000 !important;} }

  /* 請求書の自動作成：作るものを選ぶ */
  .ai-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:-2px 0 10px;}
  .ai-sel{font-size:12.5px;font-weight:700;color:var(--gold);font-variant-numeric:tabular-nums;}
  .ai-all{padding:4px 11px;border-radius:999px;cursor:pointer;font-size:12px;font-weight:600;
    border:1px solid var(--line2);background:var(--card);color:var(--muted);}
  .ai-all:hover{border-color:var(--gold-line);color:var(--ink);}
  .ai-h.ai-hd{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
  .ai-h.ai-hd b{margin-right:auto;}
  label.ai-pick{display:flex;align-items:center;gap:10px;cursor:pointer;}
  label.ai-pick:hover{background:var(--surface2);}
  .ai-ck{width:17px;height:17px;flex:none;accent-color:var(--gold);cursor:pointer;}
  .ai-l.ai-pick>span:first-child{display:flex;align-items:center;gap:10px;}
  .ai-l.ai-pick:has(.ai-ck:not(:checked)){opacity:.45;}
  .ai-c:has(.ai-h .ai-ck:not(:checked)){opacity:.45;}

  /* ---------- 請求書の明細：1行＝1枚・2段（2026-10-28 社長承認） ----------
     上段＝品目と「単価×数量＝金額」、下段＝期間と稼働者。枠は金で、どこが1行かを分かりやすく */
  .ivlist{display:flex;flex-direction:column;gap:10px;margin-top:10px;}
  .ivl{position:relative;display:grid;gap:8px 14px;padding:12px 14px 12px 12px;border-radius:14px;
    border:1px solid rgba(198,161,91,.6);background:var(--card);
    box-shadow:0 10px 24px -20px rgba(0,0,0,.8);transition:border-color .2s,box-shadow .2s;
    grid-template-columns:30px minmax(0,1fr) auto auto;
    grid-template-areas:"no name calc op" "no meta meta meta";}
  .ivl:hover,.ivl:focus-within,.ivl.menu-on{border-color:var(--gold);
    box-shadow:0 0 0 1px rgba(228,201,126,.25),0 0 20px -8px rgba(228,201,126,.6);}
  .ivl.menu-on{z-index:8;}
  .ivno{grid-area:no;width:26px;height:26px;border-radius:8px;display:grid;place-items:center;align-self:start;margin-top:19px;
    font-family:var(--font-en);font-weight:700;font-size:13px;color:var(--gold);background:var(--gold-soft);border:1px solid var(--gold-line);}
  .ivl-name{grid-area:name;min-width:0;}
  .ivl-calc{grid-area:calc;display:flex;align-items:flex-end;gap:6px;}
  .ivl-op{grid-area:op;align-self:start;margin-top:17px;}
  .ivl-meta{grid-area:meta;display:grid;grid-template-columns:minmax(150px,240px) minmax(0,1fr);gap:8px 14px;min-width:0;}
  .ivlab{display:block;font-size:10.5px;font-weight:700;letter-spacing:.06em;color:var(--faint);margin:0 0 4px 2px;}
  .ivl .cell{width:100%;border:1px solid rgba(198,161,91,.42);border-radius:8px;padding:7px 10px;font-size:13.5px;
    background:var(--surface);color:var(--ink);outline:none;font-family:inherit;}
  .ivl .cell:hover{border-color:var(--gold-line);}
  .ivl .cell:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(228,201,126,.16);}
  .ivl textarea.ivta{display:block;resize:none;overflow:hidden;line-height:1.5;min-height:36px;}
  .ivl textarea.ivta.big{font-size:15px;font-weight:700;}
  .ivl .w-p{width:92px;} .ivl .w-q{width:58px;} .ivl .w-u{width:50px;text-align:center;} .ivl .w-a{width:140px;}
  .ivl .mono.cell{font-family:var(--font-en);font-size:15px;font-weight:600;}
  .ivx{color:var(--faint);font-family:var(--font-en);font-size:15px;padding-bottom:8px;}
  .ivamt{font-size:20px;font-weight:700;min-width:112px;text-align:right;padding-bottom:5px;color:var(--ink);font-variant-numeric:tabular-nums;}

  /* 操作ボタン：枠つきで目立たせ、メニューはボタンのすぐ下に開く */
  .ivop{position:relative;}
  .ivop-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border-radius:9px;cursor:pointer;white-space:nowrap;
    font-size:12px;font-weight:700;color:var(--ink);background:var(--surface2);border:1px solid var(--gold-line);}
  .ivop-btn:hover,.ivop.open .ivop-btn{border-color:var(--gold);color:var(--gold);}
  .ivop-menu{position:absolute;right:0;top:calc(100% + 7px);z-index:10;display:none;min-width:196px;padding:6px;
    border:1px solid var(--gold);border-radius:12px;background:var(--card);box-shadow:0 22px 44px -18px rgba(0,0,0,.9);}
  .ivop-menu::before{content:"";position:absolute;top:-6px;right:18px;width:10px;height:10px;background:var(--card);
    border-left:1px solid var(--gold);border-top:1px solid var(--gold);transform:rotate(45deg);}
  .ivop.open .ivop-menu{display:block;}
  .ivop-menu button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:0;color:var(--ink);
    font-size:13px;padding:9px 10px;border-radius:8px;cursor:pointer;}
  .ivop-menu button svg{color:var(--gold);flex:none;}
  .ivop-menu button:hover{background:var(--surface2);}
  .ivop-menu button.del{color:var(--shu);} .ivop-menu button.del svg{color:var(--shu);}
  .ivop-menu button:disabled{opacity:.3;cursor:default;}
  .ivop-menu hr{border:0;border-top:1px solid var(--line);margin:4px 2px;}

  /* 売上の担当：決まっていない行だけ出す */
  .ivstf{grid-column:1/-1;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 10px;border-radius:10px;
    border:1px dashed rgba(255,196,107,.6);background:rgba(255,196,107,.07);}
  .ivstf b{display:flex;align-items:center;gap:6px;font-size:12.5px;color:#FFC46B;}
  .ivstf .cell{width:auto;min-width:170px;}
  .ivstf small{font-size:11.5px;color:var(--faint);}
  .ivstf.set{border-style:solid;border-color:var(--line);background:transparent;} .ivstf.set b{color:var(--muted);}
  :root:not([data-theme="dark"]) .ivstf b{color:#a96a00;}

  .ivadd{margin-top:10px;}
  .ivempty{margin:6px 2px;}

  /* 合計：画面の下に貼り付けて、直したらすぐ合計が見えるように */
  .ivsum.ivtot{position:sticky;bottom:0;z-index:5;width:auto;margin:18px 0 0;display:flex;flex-wrap:wrap;align-items:center;
    justify-content:flex-end;gap:6px 22px;padding:12px 16px;border:1px solid var(--gold-line);border-radius:14px;
    background:color-mix(in srgb,var(--card) 95%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);}
  .ivsum.ivtot>div{border:0 !important;padding:0 !important;gap:8px;}
  .ivsum.ivtot .tt{font-size:15px;} .ivsum.ivtot .tt b{font-size:21px;color:var(--gold);}
  .ivtot-n{margin-right:auto;display:flex;align-items:center;gap:12px;font-size:12.5px;color:var(--faint);}
  .ivtot-w{display:inline-flex;align-items:center;gap:5px;color:#FFC46B;font-weight:700;}
  :root:not([data-theme="dark"]) .ivtot-w{color:#a96a00;}
  .ivsum.ivtot .tx{width:46px;display:inline-block;text-align:right;padding:3px 6px;border-radius:6px;font-family:var(--font-en);
    border:1px solid rgba(198,161,91,.45);background:var(--surface);color:var(--ink);}

  /* ---------- 請求書・見積書の一覧：1件＝1枚、金の枠（2026-10-28） ---------- */
  .list.ivcards{background:none;border:0;border-radius:0;overflow:visible;display:flex;flex-direction:column;gap:10px;}
  .ivc{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:14px;
    border:1px solid rgba(198,161,91,.6);background:var(--card);box-shadow:0 10px 24px -20px rgba(0,0,0,.8);
    transition:border-color .2s,box-shadow .2s,transform .2s;}
  .ivc.click{cursor:pointer;}
  .ivc.click:hover{border-color:var(--gold);transform:translateY(-1px);
    box-shadow:0 0 0 1px rgba(228,201,126,.25),0 0 22px -8px rgba(228,201,126,.6);}
  .ivc-ic{width:38px;height:38px;border-radius:11px;flex:none;display:grid;place-items:center;
    color:var(--gold);background:var(--gold-soft);border:1px solid var(--gold-line);}
  .ivc.q .ivc-ic{color:#C9B3F5;background:rgba(160,120,230,.14);border-color:rgba(160,120,230,.55);}
  .ivc-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;}
  .ivc-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
  .ivc-to{font-size:15px;font-weight:700;color:var(--ink);}
  .ivc-to small{font-size:12px;font-weight:500;color:var(--muted);margin-left:2px;}
  .ivc-kind{font-size:11px;font-weight:700;padding:1px 8px;border-radius:999px;color:var(--gold);border:1px solid var(--gold-line);}
  .ivc.q .ivc-kind{color:#C9B3F5;border-color:rgba(160,120,230,.6);}
  .ivc .iv-st{margin-left:0;}
  .ivc-sbj{font-size:13px;color:var(--ink);opacity:.9;}
  .ivc-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;font-size:12px;color:var(--faint);}
  .ivc-meta .mono{color:var(--muted);}
  .ivc-side{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex:none;}
  .ivc-amt{font-size:21px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:5px;}
  .ivc-amt small{font-size:10.5px;font-weight:500;color:var(--faint);white-space:nowrap;}
  .ivc-acts{display:flex;gap:6px;}
  .ivc-b{display:inline-flex;align-items:center;gap:5px;padding:6px 10px;border-radius:9px;cursor:pointer;white-space:nowrap;
    font-size:12px;font-weight:700;color:var(--ink);background:var(--surface2);border:1px solid var(--gold-line);}
  .ivc-b svg{color:var(--gold);}
  .ivc-b:hover{border-color:var(--gold);color:var(--gold);}
  .ivc-b.del{border-color:rgba(255,107,94,.5);} .ivc-b.del svg{color:var(--shu);}
  .ivc-b.del:hover{border-color:var(--shu);color:var(--shu);}
  .ivc-mhd{display:flex;align-items:center;gap:12px;margin:10px 2px 0;}
  .ivc-mhd:first-child{margin-top:0;}
  .ivc-mhd b{font-size:12.5px;font-weight:700;letter-spacing:.12em;color:var(--gold);white-space:nowrap;}
  .ivc-mhd span{flex:1;height:1px;background:var(--gold-line);opacity:.6;}

  /* スタッフマスタ：退職者（schema31） */
  .m-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:20px 0 12px;}
  .m-bar .search{margin:0;flex:1 1 220px;}
  .m-tgl{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border-radius:9px;cursor:pointer;white-space:nowrap;
    font:inherit;font-size:13px;font-weight:600;color:var(--ink);background:transparent;border:1px solid rgba(198,161,91,.6);}
  .m-tgl small{color:var(--faint);font-size:12px;}
  .m-tgl:hover{border-color:var(--gold);}
  .m-tgl.on{border-color:var(--gold);color:var(--gold);}
  .m-sw{position:relative;width:28px;height:16px;border-radius:9px;background:var(--surface2);flex:none;transition:background .15s;}
  .m-sw::after{content:"";position:absolute;left:2px;top:2px;width:12px;height:12px;border-radius:50%;background:var(--faint);transition:transform .15s,background .15s;}
  .m-tgl.on .m-sw{background:rgba(198,161,91,.35);}
  .m-tgl.on .m-sw::after{transform:translateX(12px);background:var(--gold);}
  .st-ret{display:inline-block;margin-left:8px;padding:1px 7px;border-radius:6px;font-size:11px;font-weight:600;
    color:var(--faint);border:1px solid var(--faint);vertical-align:1px;}
  .row.retired .av{opacity:.45;} .row.retired .main{opacity:.72;}
  .row.retired .n{white-space:normal;overflow:visible;}
  /* 設定（指紋・顔認証） */
  .pk-btn{margin-top:10px;background:transparent !important;color:var(--gold) !important;border:1px solid var(--gold-line);}
  .pk-box{margin-top:16px;padding:18px;border:1px solid rgba(198,161,91,.55);border-radius:12px;}
  .pk-box h2{display:flex;align-items:center;gap:8px;margin:0 0 8px;font-size:15px;}
  .pk-box .m{margin:0 0 12px;font-size:13px;opacity:.8;}
  .pk-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 0;border-top:1px solid rgba(198,161,91,.25);}
  .pk-row:first-child{border-top:none;padding-top:0;}
  .pk-main{flex:1 1 240px;min-width:0;}
  .pk-name{width:100%;box-sizing:border-box;padding:8px 12px;font-size:16px;background:var(--card);color:var(--ink);border:1px solid var(--line2);border-radius:8px;}
  .pk-main small{display:block;margin-top:4px;opacity:.7;}
  .pk-acts{display:flex;flex-wrap:wrap;gap:8px;}
  .pk-ok{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid #3F9E78;border-radius:8px;font-size:13px;}
