:root{
    /* 운영허브와 동일한 흑백 미니멀 테마 */
    --paper:#FFFFFF;
    --paper-2:#F5F5F4;
    --card:#FFFFFF;
    --ink:#0A0A0A;
    --ink-2:#5F5F5F;
    --mute:#6E6E6E;
    --line:#E7E7E7;
    --line-2:#E8E8E8;
    --grid:#BDBDBD;        /* 재고 표 칸 구분선 — --line 보다 진하게(사장님 2026-09-22 가독성) */
    --head:#3A3A3A;        /* 표 머리글 띠 — 순검정보다 한 톤 위 */
    --jade:#0A0A0A;        /* 강조색 = 잉크블랙 (운영허브 active 채움) */
    --jade-2:#5F5F5F;      /* 2차 강조 = 중간 회색 */
    --jade-soft:#F5F5F4;
    --jade-softer:#FAFAFA;
    --pat:#B00020;         /* 경고 / 음수 (운영허브 --warn) */
    --pat-soft:#FBEAEC;
    --gold:#9B9B9B;        /* 3차 톤 = 연회색 */
    --gold-soft:#F0F0F0;
    /* 의미색 — 장식이 아니라 신호로만. 흰 배경에서 읽히도록 진한 톤 + 연한 배경 쌍 */
    --ok:#0E8F80;          /* 완료·양호 */
    --ok-soft:#E7F6F4;
    --warn:#A96500;        /* 확인 필요 */
    --warn-soft:#FDF2E0;
    --bad:#B00020;         /* 문제·마이너스 (= --pat) */
    --bad-soft:#FBEAEC;
    /* 잉크 바탕(검은 버튼·고른 탭) 위에 얹는 글자색. 어두울 때는 뒤집힌다 —
       #fff 로 굳혀두면 어두운 화면에서 흰 버튼에 흰 글씨가 된다. */
    --on-ink:#FFFFFF;
    --toss:#3182F6;   /* 토스 파랑 — 시간대 매출 '오늘' 라인·툴팁 점 */
    --s1:#2a78d6; --s2:#eb6834; --s3:#1baf7a; --s4:#eda100;   /* 매장 색(홈 비중 막대·점, 시안) — BRANCHES 순서 */
    /* 살짝 비치는 바탕(위쪽 머리띠·직원코드 화면). 반투명이라 --paper 로는 못 쓴다.
       흰색으로 굳혀두면 어두운 화면에서 흰 띠가 되고 그 위 글씨가 사라진다. */
    --paper-veil:rgba(255,255,255,.92);
    --paper-veil-2:rgba(255,255,255,.97);
    /* 밝기 단추 색 — 자동은 조용히, 어둡게는 밤빛, 밝게는 햇빛 */
    --ic-auto:#6E6E6E; --ic-dark:#4B5BD0; --ic-light:#A16400;
    --shadow:none;         /* 운영허브 카드는 그림자 없는 플랫 */
    --radius:14px;
  }

  /* ===== 어두운 화면 =====
     마감은 밤에 한다. 흰 화면은 어두운 데서 눈이 부시다.

     여기 스물몇 개만 바꾼다 — 나머지 규칙은 전부 이 이름들을 쓰므로 건드릴 게 없다.
     순검정(#000) 대신 #0F0F0F 를 쓴다. 완전한 검정 위의 흰 글씨는 번져 보이고,
     유기EL 화면에서는 스크롤할 때 검정이 끊겨 보인다.

     세 갈래로 적는다. 폰 설정이 '어둡게'면 첫째가 잡고, 화면에서 손으로 고르면
     둘째·셋째가 그것을 이긴다 — 사장님이 고른 쪽이 늘 이겨야 한다. */
  @media (prefers-color-scheme:dark){
    :root:not([data-theme="light"]){
    --paper:#0F0F0F; --paper-2:#191919; --card:#151515;
    --ink:#F2F2F2; --ink-2:#B4B4B4; --mute:#8C8C8C;
    --line:#2C2C2C; --line-2:#262626; --head:#2E2E2E; --grid:#4A4A4A;
    --jade:#F2F2F2; --jade-2:#B4B4B4; --jade-soft:#1E1E1E; --jade-softer:#1A1A1A;
    --pat:#FF7086; --pat-soft:#3A1219;
    --gold:#7C7C7C; --gold-soft:#242424;
    --ok:#3ED6C0; --ok-soft:#0E2A27;
    --warn:#E9A63F; --warn-soft:#2E2210;
    --bad:#FF7086; --bad-soft:#3A1219;
    --on-ink:#0F0F0F;
    --toss:#4C90F7;   /* 토스 파랑(어두운 화면용, 살짝 밝게) */
    --s1:#4C90F7; --s2:#F2845A; --s3:#3ECF98; --s4:#F5B83D;   /* 매장 색(어두운 화면용, 살짝 밝게) */
    --paper-veil:rgba(15,15,15,.92); --paper-veil-2:rgba(15,15,15,.97);
    --ic-auto:#8C8C8C; --ic-dark:#9AA6FF; --ic-light:#F0B24A;
    }
  }
  :root[data-theme="dark"]{
    --paper:#0F0F0F; --paper-2:#191919; --card:#151515;
    --ink:#F2F2F2; --ink-2:#B4B4B4; --mute:#8C8C8C;
    --line:#2C2C2C; --line-2:#262626; --head:#2E2E2E; --grid:#4A4A4A;
    --jade:#F2F2F2; --jade-2:#B4B4B4; --jade-soft:#1E1E1E; --jade-softer:#1A1A1A;
    --pat:#FF7086; --pat-soft:#3A1219;
    --gold:#7C7C7C; --gold-soft:#242424;
    --ok:#3ED6C0; --ok-soft:#0E2A27;
    --warn:#E9A63F; --warn-soft:#2E2210;
    --bad:#FF7086; --bad-soft:#3A1219;
    --on-ink:#0F0F0F;
    --toss:#4C90F7;   /* 토스 파랑(어두운 화면용, 살짝 밝게) */
    --s1:#4C90F7; --s2:#F2845A; --s3:#3ECF98; --s4:#F5B83D;   /* 매장 색(어두운 화면용, 살짝 밝게) */
    --paper-veil:rgba(15,15,15,.92); --paper-veil-2:rgba(15,15,15,.97);
    --ic-auto:#8C8C8C; --ic-dark:#9AA6FF; --ic-light:#F0B24A;
  }

  /* 마감 사진은 어떤 설정이든 흰 바탕으로 찍는다.
     남겨두고 인쇄도 하는 기록이라 검은 바탕이면 못 쓴다.
     위 두 갈래보다 뒤에, 같은 무게로 와야 이긴다. */
  :root.capturing{
    --paper:#FFFFFF; --paper-2:#F5F5F4; --card:#FFFFFF;
    --ink:#0A0A0A; --ink-2:#5F5F5F; --mute:#6E6E6E;
    --line:#E7E7E7; --line-2:#E8E8E8; --head:#3A3A3A; --grid:#BDBDBD;
    --jade:#0A0A0A; --jade-2:#5F5F5F; --jade-soft:#F5F5F4; --jade-softer:#FAFAFA;
    --pat:#B00020; --pat-soft:#FBEAEC;
    --gold:#9B9B9B; --gold-soft:#F0F0F0;
    --ok:#0E8F80; --ok-soft:#E7F6F4;
    --warn:#A96500; --warn-soft:#FDF2E0;
    --bad:#B00020; --bad-soft:#FBEAEC;
    --on-ink:#FFFFFF;
    --toss:#3182F6;   /* 토스 파랑 — 시간대 매출 '오늘' 라인·툴팁 점 */
    --paper-veil:rgba(255,255,255,.92); --paper-veil-2:rgba(255,255,255,.97);
    --ic-auto:#6E6E6E; --ic-dark:#4B5BD0; --ic-light:#A16400;
  }

  *{box-sizing:border-box}
  html{-webkit-text-size-adjust:100%}
  /* 아이폰에서 화면이 갑자기 확대돼 안 돌아오던 것(사장님 2026-09-22) — 숫자판을 빠르게 두 번 누르면 '두 번 눌러 확대'로
     먹혔다. manipulation 은 두 번 눌러 확대만 끄고 스크롤·손가락 두 개 확대는 그대로 둔다.
     입력칸을 누를 때 글자가 16px 보다 작아 확대되던 것은 viewport 의 maximum-scale=1 로 막는다. */
  html,body{touch-action:manipulation}
  body{
    margin:0;background:var(--paper);color:var(--ink);
    font-family:"Pretendard",system-ui,-apple-system,sans-serif;
    font-feature-settings:"tnum" 1;
    line-height:1.6;letter-spacing:-.012em;word-break:keep-all;overflow-wrap:break-word;
    -webkit-font-smoothing:antialiased;
  }
  .serif{font-family:"Pretendard",system-ui,sans-serif;font-weight:700;letter-spacing:-.01em}
  .tnum{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
  .wrap{max-width:1120px;margin:0 auto;padding:0 20px}
  a{color:inherit}

  /* ---------- Top bar ---------- */
  header.top{
    position:sticky;top:0;z-index:40;
    background:var(--paper-veil);backdrop-filter:saturate(1.2) blur(8px);
    border-bottom:1px solid var(--line);
  }
  .top-inner{display:flex;align-items:center;gap:16px;height:60px}
  .brand{display:flex;align-items:baseline;gap:10px;white-space:nowrap}
  /* 화면 밝기 — 지점 버튼 옆. 셋을 돌아가며 고른다(자동 → 어둡게 → 밝게) */
  .theme-btn{appearance:none;border:1px solid var(--line);background:var(--card);
    border-radius:999px;width:34px;height:34px;margin-right:8px;cursor:pointer;
    padding:0;color:var(--ink);display:inline-flex;align-items:center;justify-content:center}
  /* 상태마다 색이 다르다 — 그림만으로는 초승달과 반달이 작은 화면에서 헷갈린다.
     여기가 화면에서 유일하게 색을 쓰는 조작 단추다. 나머지는 흑백으로 두고
     이 하나만 살린다(경고색과는 다른 색이어야 한다 — 경고로 읽히면 안 된다). */
  .theme-btn[data-t="auto"] {color:var(--ic-auto)}
  .theme-btn[data-t="dark"] {color:var(--ic-dark)}
  .theme-btn[data-t="light"]{color:var(--ic-light)}
  .theme-btn:hover{border-color:currentColor}
  .capturing .theme-btn{display:none}   /* 사진에는 조작 단추가 안 나온다 */
  .branch-btn{margin-left:auto;appearance:none;border:1px solid var(--line);background:var(--paper-2);color:var(--ink);font:inherit;font-weight:700;font-size:12.5px;border-radius:999px;padding:6px 14px;cursor:pointer;letter-spacing:-.01em;white-space:nowrap;display:inline-flex;align-items:center;gap:7px}
  .branch-btn::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--jade)}
  .branch-btn::after{content:'⇄';font-size:12px;color:var(--mute);margin-left:1px}
  .branch-btn:hover{border-color:var(--ink)}
  .branch-btn.locked{pointer-events:none}
  .branch-btn.locked::after{content:''}   /* 지점 전용 코드: 전환 화살표 숨김 */
  /* 눌러서 고르는 작은 목록 — 지점 고르기, 시트 불러오기 범위 고르기 */
  .branch-pick,.pick-menu{position:fixed;z-index:220;background:var(--card);border:1px solid var(--line);
    border-radius:12px;padding:5px;min-width:132px;box-shadow:0 14px 34px -10px rgba(0,0,0,.28)}
  .branch-pick button,.pick-menu button{display:block;width:100%;appearance:none;border:0;background:none;
    font:inherit;font-size:13px;font-weight:600;color:var(--ink);text-align:left;
    padding:8px 11px;border-radius:8px;cursor:pointer;white-space:nowrap}
  .branch-pick button:hover,.pick-menu button:hover{background:var(--paper-2)}
  .branch-pick button.on{color:var(--jade)}
  .branch-pick button.on::after{content:'✓';float:right;font-weight:700}
  .pick-menu .sub{display:block;font-weight:500;font-size:11.5px;color:var(--mute);margin-top:1px}
  /* 기간 고르기 — 날짜는 손으로 적는 것보다 달력에서 짚는 게 빠르고 덜 틀린다 */
  .range-dim{position:fixed;inset:0;z-index:230;background:rgba(10,10,10,.35);display:flex;align-items:flex-start;justify-content:center}
  .range-box{width:min(360px,92vw);margin-top:14vh;background:var(--card);border-radius:16px;padding:20px 20px 16px;box-shadow:0 24px 60px -12px rgba(0,0,0,.35)}
  .range-box h1{font-size:15.5px;font-weight:800;margin:0 0 3px}
  .range-box .rb-sub{color:var(--mute);font-size:12.5px;margin:0 0 15px}
  .range-box label{display:block;font-size:11.5px;font-weight:700;color:var(--mute);margin-bottom:5px;letter-spacing:.02em}
  .range-box .rb-two{display:flex;gap:9px;align-items:flex-end}
  .range-box .rb-two > div{flex:1;min-width:0}
  .range-box .rb-tilde{padding-bottom:11px;color:var(--mute);font-weight:700}
  .range-box input[type=date]{width:100%;box-sizing:border-box;appearance:none;border:1px solid var(--line);
    border-radius:10px;padding:9px 10px;font:inherit;font-size:13.5px;color:var(--ink);background:var(--card);
    font-variant-numeric:tabular-nums}
  .range-box input[type=date]:focus{outline:none;border-color:var(--jade);background:var(--jade-softer)}
  .range-box .rb-quick{display:flex;gap:6px;flex-wrap:wrap;margin:11px 0 0}
  .range-box .rb-quick button{appearance:none;border:1px solid var(--line);background:var(--card);font:inherit;
    font-size:12px;font-weight:700;color:var(--ink-2);border-radius:999px;padding:6px 11px;cursor:pointer}
  .range-box .rb-quick button:hover{border-color:var(--jade);color:var(--jade)}
  .range-box .rb-count{margin:13px 0 0;font-size:12.5px;color:var(--mute);min-height:18px}
  .range-box .rb-count b{color:var(--ink)}
  .range-box .rb-count.bad{color:var(--pat)}
  .range-box .rb-btns{display:flex;gap:8px;justify-content:flex-end;margin-top:15px}
  /* 기간 불러오기 달력 (여러 날 콕콕 집기) */
  .cal-nav{display:flex;align-items:center;justify-content:space-between;margin:4px 0 8px}
  .cal-mon{font-size:14px;font-weight:800;font-variant-numeric:tabular-nums}
  .cal-mv{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--ink);
    width:32px;height:32px;border-radius:9px;font-size:17px;font-weight:700;line-height:1;cursor:pointer}
  .cal-mv:hover{border-color:var(--jade);color:var(--jade)}
  .cal-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:2px}
  .cal-dow span{text-align:center;font-size:11px;font-weight:700;color:var(--mute);padding:2px 0}
  .cal-dow .sun{color:var(--pat)} .cal-dow .sat{color:var(--toss)}
  .cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
  .cal-cell{appearance:none;border:1px solid transparent;background:none;color:var(--ink);
    aspect-ratio:1/1;border-radius:9px;font:inherit;font-size:13px;font-weight:600;
    font-variant-numeric:tabular-nums;cursor:pointer;display:flex;align-items:center;justify-content:center}
  .cal-cell.pad{visibility:hidden;pointer-events:none}
  .cal-cell:hover:not(.on):not(:disabled){background:var(--paper-2)}
  .cal-cell.sun{color:var(--pat)} .cal-cell.sat{color:var(--toss)}
  .cal-cell.today{border-color:var(--line)}
  .cal-cell.on{background:var(--jade);border-color:var(--jade);color:var(--paper)}
  .cal-cell:disabled{color:var(--line);cursor:default}
  /* 매출 그래프 커서 표시 */
  #rpChart{position:relative}
  .rp-tip{position:absolute;z-index:5;pointer-events:none;background:var(--ink);color:var(--on-ink);
    border-radius:9px;padding:7px 10px;font-size:12px;font-weight:600;white-space:nowrap;
    box-shadow:0 6px 18px -6px rgba(0,0,0,.4);transform:translate(-50%,-115%)}
  .rp-tip b{display:block;font-size:14px;font-weight:800;margin-top:2px;font-variant-numeric:tabular-nums}
  .rp-tip small{color:#C9D2DD;font-weight:600}
  .rp-hit{cursor:pointer}
  rect[data-bar].on{filter:brightness(1.25)}
  /* 잠금이 꺼졌을 때 띄우는 경고 띠 — 조용히 열려 있는 것이 가장 위험하다 */
  .lockwarn{position:sticky;top:0;z-index:60;background:var(--bad-soft);color:var(--bad);
    font-size:12.5px;font-weight:700;line-height:1.5;padding:9px 22px;text-align:center;
    border-bottom:1px solid var(--bad)}
  .lockwarn b{font-weight:800}
  .lockwarn small{display:block;font-weight:600;color:var(--bad);opacity:.85;font-size:11.5px;margin-top:2px}
  .capturing .lockwarn{display:none}   /* 설정 경고는 기록이 아니다 */
  .capturing #manSalesCard{display:none}   /* 매출 조정은 입력 칸이라 마감 사진에 안 넣는다(사장님 2026-10-18) */
  .capturing #closeCheck{display:none}   /* 마감 점검은 확인용 — 사진에 안 넣는다(2026-10-21) */
  .capturing #recipeCmp{display:none}   /* 레시피 사용량 비교는 확인용 — 마감 사진엔 직원이 적은 사용만(관리자 2026-11-09) */
  /* 토스 판매 비교는 마감 사진에 넣는다(사장님 2026-10-28) — 전엔 확인용이라 뺐다 */
  .pos-cmp{margin-top:16px}
  .pos-cmp .pc-sum{margin:2px 0 12px;font-size:14px;line-height:1.5} .pos-cmp .pc-bad{color:var(--bad)} .pos-cmp .pc-good{color:var(--good,#1a7f5a)}
  .pos-cmp table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
  .pos-cmp th,.pos-cmp td{padding:9px 12px;text-align:right;border-bottom:1px solid var(--line);font-size:14px}
  .pos-cmp th.l,.pos-cmp td.l{text-align:left} .pos-cmp thead th{font-size:12px;color:var(--mute);font-weight:600}
  .pos-cmp td.sum{font-weight:800} .pos-cmp td.dif{width:80px}
  .pos-cmp .pc-in{width:64px;padding:4px 6px;border:1px solid var(--line);border-radius:6px;background:transparent;color:inherit;font:inherit;font-weight:800}
  /* 손으로 고친 토스 판매 — 비교 카드·재고표 둘 다 노란 칸(2026-10-28) */
  .pos-cmp .pc-in.posfix,#stockTable .cinput.pos.posfix{background:var(--warn-soft);color:var(--warn)}
  #stockTable .posw{display:inline-flex;flex-direction:column;align-items:center;gap:2px}
  #stockTable .pos-split{font-size:10.5px;line-height:1.2;color:var(--ink-2);white-space:nowrap}   /* 판매 칸 아래 기본·세트(관리자 2026-11-05) */
  .pos-cmp tr.grp td{background:var(--card-2,rgba(127,127,127,.06));font-size:12px;font-weight:700;color:var(--mute);padding:6px 12px;letter-spacing:.02em}
  .pos-cmp tr.grp td span{margin-left:8px;color:var(--bad)}
  .pos-cmp tr.bad td{background:var(--bad-soft)} .pos-cmp tr.bad td.l{font-weight:700}
  .pos-cmp tr.quiet td{color:var(--mute)}
  .pos-cmp .pc-b{display:inline-block;min-width:38px;padding:2px 8px;border-radius:999px;background:var(--bad);color:#fff;font-weight:800;text-align:center}
  .pos-cmp .pc-ok{color:var(--mute)}
  .close-check .cc-n{font-size:12px;font-weight:700;color:var(--warn)}
  .close-check .cc-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
  .close-check .cc-list li{background:var(--warn-soft);color:var(--warn);border-radius:10px;padding:8px 12px;font-size:12.5px;font-weight:600;line-height:1.5}
  .close-check .cc-list li b{font-weight:800}
  .close-check .cc-foot{margin:8px 0 0}
  .close-check .cc-ok{margin:6px 0 0;font-size:13px;font-weight:700;color:var(--ok)}
  /* 마감 점검 여러 곳 — 매장마다 한 묶음(2026-11-03) */
  .close-check .cc-br{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
  .close-check .cc-br:first-of-type{border-top:0;padding-top:0}
  .close-check .cc-br h4{margin:0;font-size:14px;font-weight:700;display:flex;align-items:center;gap:6px}
  .close-check .cc-br>p{margin:6px 0 0;font-size:13px}
  /* 마스터 전용: 지점 코드 관리 */
  .code-admin-btn{margin-left:8px;appearance:none;border:1px solid var(--line);background:var(--card);color:var(--mute);font:inherit;font-weight:700;font-size:11.5px;border-radius:999px;padding:6px 12px;cursor:pointer;white-space:nowrap}
  .code-admin-btn:hover{color:var(--ink);border-color:var(--ink)}
  /* 오버레이 자체가 세로로 스크롤된다 — 박스가 화면보다 길어도 끝까지 볼 수 있게.
     내용이 늘어(제빵 채우기 등) 화면을 넘겼는데 스크롤이 없어 아래가 잘렸었다. */
  /* 접속 권한 화면(#access) — 예전엔 덮는 창이었다(2026-11-03 본문 화면으로) */
  .code-admin{margin-top:14px;max-width:760px}
  .code-admin .ca-box{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:20px 22px 18px}
  .code-admin p{color:var(--mute);font-size:12.5px;margin:0 0 14px;line-height:1.55}
  .code-admin .ca-row{border:1px solid var(--line-2);border-radius:12px;padding:12px 14px;margin-bottom:10px}
  .code-admin .ca-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
  .code-admin .ca-code{font-variant-numeric:tabular-nums;letter-spacing:.12em;font-weight:700}
  .code-admin .ca-code i{color:var(--mute);font-weight:500;letter-spacing:0}
  .code-admin .ca-btns{display:flex;gap:8px}
  .code-admin .ca-btns button{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--ink);font:inherit;font-size:12.5px;font-weight:700;border-radius:8px;padding:7px 13px;cursor:pointer}
  .code-admin .ca-btns button:hover:not(:disabled){border-color:var(--ink)}
  .code-admin .ca-btns button:disabled{opacity:.4;cursor:default}
  .code-admin .ca-new{margin-top:10px;background:var(--paper-2);border-radius:9px;padding:9px 11px;font-size:12.5px}
  .code-admin .ca-new b{letter-spacing:.15em}
  .code-admin .ca-new button{margin-left:6px;font-size:11px;border:1px solid var(--line);background:var(--card);border-radius:6px;padding:2px 8px;cursor:pointer}
  .code-admin .ca-new small{color:var(--mute)}
  /* 접속 권한(크루 허브 코드, 2026-11-01) — 검은 단추 = 켜짐, 테두리 단추 = 꺼짐 */
  .code-admin .ac-find{width:100%;box-sizing:border-box;font:inherit;font-size:13px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--card);color:var(--ink)}
  .code-admin .ac-grp{font-size:11.5px;font-weight:800;color:var(--ink-2);background:var(--paper-2);border-radius:8px;padding:6px 10px;margin:14px 0 2px}
  .code-admin .ac-grp i{font-style:normal;font-weight:500;color:var(--mute);margin-left:4px}
  .code-admin .ac-row{border-top:1px solid var(--line-2);padding:10px 4px}
  .code-admin .ac-grp+.ac-row{border-top:0}
  .code-admin .ac-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:2px 12px;width:100%;appearance:none;border:0;background:none;padding:0;margin:0;font:inherit;color:inherit;text-align:left;cursor:pointer}
  .code-admin .ac-head:hover b{text-decoration:underline}
  .code-admin .ac-who{display:flex;align-items:baseline;gap:6px;min-width:0}
  .code-admin .ac-ch{font-size:10.5px;font-weight:700;color:var(--bad);border:1px solid currentColor;border-radius:999px;padding:0 6px}
  .code-admin .ac-sum{margin-left:auto;font-size:12px;color:var(--ink-2);text-align:right}
  .code-admin .ac-sum.no{color:var(--mute)}
  .code-admin .ac-row.open .ac-sum{display:none}
  .code-admin .ac-filt{margin-top:10px}
  .code-admin .ac-filt .ac-btns{margin-top:6px}
  .code-admin .ac-head b{font-size:14px}
  .code-admin .ac-meta{font-size:11.5px;color:var(--mute);white-space:nowrap}
  .code-admin .ac-code{display:none;font:600 12px ui-monospace,Menlo,monospace;letter-spacing:.04em;padding:1px 6px;border-radius:6px;border:1px solid var(--line-2);white-space:nowrap}
  .code-admin.codes-on .ac-code{display:inline-block}
  .code-admin .ac-code[data-copy]{cursor:copy} .code-admin .ac-code i{font-style:normal;font-size:11px;opacity:.7}
  .code-admin .ac-lab{font-size:11px;color:var(--mute);margin:8px 0 5px}
  .code-admin .ac-lab.no{color:var(--pat);font-weight:700}
  .code-admin .ac-btns{display:flex;flex-wrap:wrap;gap:6px}
  .code-admin .ac-b{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--mute);font:inherit;font-size:12.5px;border-radius:999px;padding:6px 12px;cursor:pointer}
  .code-admin .ac-b.on{background:var(--ink);border-color:var(--ink);color:var(--on-ink);font-weight:700}
  .code-admin .ac-b:disabled{opacity:.5;cursor:default}
  .code-admin .ac-invb{appearance:none;display:block;border:1px solid var(--line-2);background:none;border-radius:8px;padding:6px 10px;margin-top:10px;font:inherit;font-size:12px;font-weight:700;cursor:pointer}
  .code-admin .ac-inv pre{white-space:pre-wrap;word-break:break-all;font:inherit;font-size:12px;line-height:1.6;background:var(--paper-2);border-radius:8px;padding:10px 12px;margin:8px 0}
  .code-admin .ac-reset{appearance:none;border:0;background:none;padding:0;margin-top:8px;font:inherit;font-size:12px;color:var(--mute);text-decoration:underline;cursor:pointer}
  .code-admin .ac-err{color:var(--bad);font-size:12px;margin-top:6px}
  .code-admin .ac-err:empty{display:none}
  .code-admin .ac-none{color:var(--mute);font-size:12.5px;margin-top:10px}
  .code-admin .ac-note{margin:12px 0 0;font-size:12px;color:var(--mute)}
  .brand .mark{font-family:"Pretendard",system-ui,sans-serif;font-weight:800;font-size:20px;letter-spacing:-.01em;color:var(--ink)}
  .brand .sub{font-size:10.5px;letter-spacing:.16em;color:var(--mute);font-weight:600}
  .brand .dot{width:6px;height:6px;border-radius:50%;background:var(--jade-2);align-self:center}
  .top-spacer{flex:1}
  .who{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-2)}
  .who .ava{width:28px;height:28px;border-radius:50%;background:var(--jade);color:var(--on-ink);display:grid;place-items:center;font-size:11px;font-weight:700}

  /* ---------- Date strip ---------- */
  .datestrip{display:flex;align-items:center;gap:12px;margin:22px 0 4px}
  .eyebrow{font-size:11px;letter-spacing:.16em;font-weight:700;color:var(--mute);text-transform:uppercase}
  .datepick{
    flex:1;display:flex;align-items:center;justify-content:space-between;
    background:var(--card);border:1px solid var(--line);border-radius:12px;
    padding:9px 14px;box-shadow:var(--shadow);max-width:340px;
  }
  .datepick .d{font-weight:600;font-size:14.5px}
  .datepick button{
    border:0;background:transparent;color:var(--mute);font-size:14px;cursor:pointer;
    width:26px;height:26px;border-radius:8px;display:grid;place-items:center;
  }
  .datepick button:hover{background:var(--jade-soft);color:var(--jade)}
  /* 날짜 텍스트(버튼) — ◀▶ 정사각 스타일에서 제외 */
  .datepick button#theDate.d{width:auto;height:auto;display:inline-block;place-items:unset;color:var(--ink);font-weight:600;font-size:14.5px;padding:4px 10px;border-radius:8px}
  .datepick button#theDate.d:hover{background:var(--paper-2);color:var(--ink)}
  .stamp{font-size:11.5px;color:var(--mute);margin-left:2px}
  .stamp b{color:var(--ink-2);font-weight:600}
  /* ---------- 달력 ---------- */
  .cal{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);z-index:60;
    background:var(--card);border:1px solid var(--line);border-radius:14px;
    box-shadow:0 14px 36px -14px rgba(0,0,0,.28);padding:12px;width:286px}
  .cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
  .cal-head b{font-size:13px;font-weight:700;letter-spacing:.02em}
  .cal-head button{border:1px solid var(--line);background:var(--card);width:28px;height:28px;border-radius:8px;cursor:pointer;color:var(--ink-2);font-size:14px;line-height:1}
  .cal-head button:hover{border-color:var(--ink);color:var(--ink)}
  .cal-wk{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px}
  .cal-wk span{text-align:center;font-size:10.5px;color:var(--mute);font-weight:700;padding:3px 0}
  .cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
  .cal-d{display:flex;align-items:center;justify-content:center;height:34px;border:0;background:transparent;border-radius:8px;font:inherit;font-size:12.5px;color:var(--ink);cursor:pointer}
  .cal-d:hover:not(.dis):not(.empty){background:var(--paper-2)}
  .cal-d.empty{visibility:hidden;cursor:default}
  .cal-d.sel{background:var(--ink);color:var(--on-ink);font-weight:700}
  .cal-d.today:not(.sel){box-shadow:inset 0 0 0 1.5px var(--line)}
  .cal-d.dis{color:var(--mute);opacity:.45;cursor:default}

  /* ---------- Hero ---------- */
  .hero{
    margin-top:14px;background:var(--card);border:1px solid var(--line);
    border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;
    display:grid;grid-template-columns:1.05fr 1fr;
  }
  .hero .left{padding:26px 28px;border-right:1px solid var(--line-2)}
  .hero .label{font-size:12.5px;color:var(--ink-2);font-weight:600;display:flex;align-items:center;gap:7px}
  .hero .label .tag{font-size:10.5px;color:var(--jade);background:var(--jade-soft);padding:2px 7px;border-radius:999px;font-weight:700;letter-spacing:.02em}
  .bignum{font-size:clamp(34px,6vw,46px);font-weight:800;letter-spacing:-.03em;margin:6px 0 2px;line-height:1}
  .bignum .won{font-size:.5em;font-weight:700;color:var(--ink-2);margin-left:4px}
  /* 매출 리포트 */
  .rp-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
  .rp-tabs{display:flex;gap:6px;flex-wrap:wrap}
  .rp-t{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--ink-2);font:inherit;font-size:12.5px;font-weight:700;border-radius:999px;padding:7px 14px;cursor:pointer}
  .rp-t.on{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}
  /* 상품분석 머리글 클릭 정렬 — 누른 열은 진하게 + 화살표 */
  #prodTable th.psort{cursor:pointer;user-select:none;white-space:nowrap}
  #prodTable th.psort:hover{color:var(--ink)}
  #prodTable th.psort.on{color:var(--ink);font-weight:800}
  #prodTable th.psort .ar{display:inline-block;width:0;margin-left:3px;font-size:10px;color:var(--ink-2)}
  .rp-range{display:flex;align-items:center;gap:8px}
  .rp-nav{appearance:none;border:1px solid var(--line);background:var(--card);border-radius:8px;width:30px;height:30px;cursor:pointer;font-size:11px;color:var(--ink-2)}
  .rp-nav:disabled{opacity:.35;cursor:default}
  .rp-label{font-weight:800;font-size:14px;font-variant-numeric:tabular-nums;min-width:150px;text-align:center}
  .rp-custom{display:flex;align-items:center;gap:8px;margin-top:12px;flex-wrap:wrap}
  .rp-custom[hidden]{display:none}   /* hidden 속성이 display:flex에 묻히지 않게 */
  /* 지출·매입 */
  #pfTable td,#pfLoss td,#pfWeek td,#pfSplit td{padding:8px 10px;text-align:right;white-space:nowrap}
  #pfTable td:first-child,#pfLoss td:first-child,#pfWeek td:first-child,#pfSplit td:first-child{text-align:left}
  #pfTable tr.sum td,#pfWeek tr.sum td,#pfSplit tr.sum td{font-weight:800;border-top:1px solid var(--line)}
  #pfTable tr.sub td:first-child{padding-left:24px;color:var(--mute)}
  #pfTable .pc,#pfWeek .pc,#pfSplit .pc{color:var(--mute);font-size:11.5px;margin-left:6px}
  #pfTable .neg,#pfWeek .neg,#pfSplit .neg,.rp-kpi .v.neg,.pf-week-head .neg{color:var(--bad)}
  .pf-week-head{font-size:16px;font-weight:700;margin:4px 0 12px;line-height:1.6}
  .pf-week-head b{font-size:20px;font-weight:800}
  .pf-notes{margin:8px 0 0;padding-left:18px}
  /* 영업이익 다듬기 (2026-10-19) — 주간 타일 · 확인할 것 · 접는 계산 방법 */
  .pf-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:4px 0 14px}
  .pf-tile{background:var(--paper-2);border:1px solid var(--line-2);border-radius:12px;padding:12px 14px}
  .pf-tile .k{font-size:12px;color:var(--mute);font-weight:700}
  .pf-tile .v{font-size:20px;font-weight:800;letter-spacing:-.02em;margin:4px 0 1px;font-variant-numeric:tabular-nums}
  .pf-tile .v.neg{color:var(--bad)}
  .pf-tile .s{font-size:12px;color:var(--mute)}
  .pf-alerts{display:flex;flex-direction:column;gap:6px;margin-top:10px}
  .pf-alerts:empty{display:none}
  .pf-alert{display:flex;align-items:center;gap:10px;background:var(--warn-soft);color:var(--warn);border-radius:10px;padding:8px 12px;font-size:12.5px;font-weight:600}
  .pf-alert span{flex:1}
  .pf-alert button{appearance:none;border:1px solid currentColor;background:transparent;color:inherit;font:inherit;font-size:12px;font-weight:700;border-radius:8px;padding:4px 10px;cursor:pointer;white-space:nowrap}
  .pf-month .rp-bar h3{font-size:15px;font-weight:700;display:flex;align-items:center;gap:8px}
  .pf-month .rp-bar h3 .eb{font-size:9.5px;letter-spacing:.16em;color:var(--mute);font-weight:700;text-transform:uppercase}
  .pf-more{margin-top:10px}
  .pf-more summary{cursor:pointer;font-size:12px;font-weight:700;color:var(--mute);list-style:none}
  .pf-more summary::-webkit-details-marker{display:none}
  .pf-more summary::before{content:'▸ '}
  .pf-more[open] summary::before{content:'▾ '}
  @media (max-width:620px){ .pf-tiles{grid-template-columns:1fr} }
  .pf-notes li{margin:3px 0}
  #exTable td{padding:7px 8px}
  .exin{font:inherit;font-size:12.5px;border:1px solid var(--line);border-radius:7px;padding:6px 8px;background:var(--card);max-width:100%}
  .exin:focus{outline:none;border-color:var(--ink)}
  select.exin{padding:6px 4px}
  input.exin.tnum{text-align:right;font-variant-numeric:tabular-nums}
  #exTable td.rcpt{text-align:center;white-space:nowrap}
  #exTable td.rcpt img{width:34px;height:34px;object-fit:cover;border-radius:6px;border:1px solid var(--line);vertical-align:middle}
  .upl{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px dashed var(--line);
    border-radius:7px;color:var(--mute);cursor:pointer;font-weight:700}
  .upl:hover{border-color:var(--ink);color:var(--ink)}
  .xbtn{appearance:none;border:0;background:transparent;cursor:pointer;font-size:13px;color:var(--mute);padding:4px 6px}
  .xbtn:hover{color:var(--pat)}
  #exTable tfoot .rp-sum td{padding:11px 8px;text-align:right;white-space:nowrap;border-top:2px solid var(--ink);
    border-bottom:0;font-weight:800;background:var(--paper-2);font-variant-numeric:tabular-nums}
  #exTable tfoot .rp-sum td.nm{text-align:left}
  /* tfoot에도 tbody와 같은 셀 규칙(패딩·우측정렬)을 적용해 열이 어긋나지 않게 */
  #rpTable tfoot .rp-sum td{padding:11px 10px;text-align:right;white-space:nowrap;
    border-top:2px solid var(--ink);border-bottom:0;font-weight:800;background:var(--paper-2);
    font-variant-numeric:tabular-nums}
  #rpTable tfoot .rp-sum td.nm{text-align:left}
  #rpTable tfoot .rp-sum .dim{font-weight:600}
  .rp-custom input{font:inherit;font-size:13px;border:1px solid var(--line);border-radius:9px;padding:8px 10px}
  .rp-kpi{padding:15px 16px}
  .rp-kpi .k{font-size:12px;color:var(--mute);font-weight:700}
  .rp-kpi .v{font-size:21px;font-weight:800;letter-spacing:-.02em;margin:5px 0 2px}
  .rp-kpi .s{font-size:12px;color:var(--mute)}
  .rp-kpi .s.up{color:var(--ok);font-weight:700}
  .rp-kpi .s.down{color:var(--bad);font-weight:700}
  /* ── 토스식 매출 요약 (헤드라인 + 실매출·주문·취소·할인) ── */
  .rp-head{display:flex;align-items:center;gap:9px;margin-top:16px;padding:14px 16px;border-radius:14px;
    background:color-mix(in srgb, var(--toss) 10%, var(--card));border:1px solid color-mix(in srgb, var(--toss) 22%, var(--line));
    font-size:14.5px;font-weight:700;color:var(--ink);letter-spacing:-.01em}
  .rp-head::before{content:"📈";font-size:16px;line-height:1}
  .rp-summary{display:grid;grid-template-columns:1.35fr 1.35fr 1fr 1fr;gap:12px;margin-top:14px}
  .rp-cell{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:15px 17px;min-width:0}
  .rp-cell .k{font-size:12px;color:var(--mute);font-weight:700}
  .rp-cell .v{font-size:23px;font-weight:800;letter-spacing:-.02em;margin:6px 0 3px;white-space:nowrap}
  .rp-cell .v.ord{white-space:normal}   /* 주문건/건당만 칸이 좁으면 슬래시에서 줄바꿈 */
  .rp-cell.sm .v{font-size:19px}
  .rp-cell .v .sl{color:var(--gold);font-weight:600;margin:0 3px}
  .rp-cell .v.neg{color:var(--bad)}
  .rp-cell .s{font-size:12px;color:var(--mute);font-weight:600}
  .rp-cell .s.up{color:var(--ok);font-weight:700}
  .rp-cell .s.down{color:var(--bad);font-weight:700}
  @media (max-width:820px){ .rp-summary{grid-template-columns:1fr 1fr} .rp-cell .v{font-size:19px} .rp-cell.sm .v{font-size:18px} }
  /* ── 상품 매출 순위 (정렬 가능한 머리글) ── */
  #rpProdTable.rp-prod th.psort{cursor:pointer;user-select:none;white-space:nowrap;text-align:right}
  #rpProdTable.rp-prod th.psort:hover{color:var(--ink)}
  #rpProdTable.rp-prod th.psort.on{color:var(--ink);font-weight:800}
  #rpProdTable.rp-prod th.psort .ar{display:inline-block;width:0;margin-left:3px;font-size:10px;color:var(--ink-2)}
  #rpProdTable.rp-prod td.tnum{text-align:right;font-variant-numeric:tabular-nums}
  #rpProdTable.rp-prod td.nm .rk{display:inline-block;min-width:18px;color:var(--mute);font-weight:700;margin-right:6px}
  .grid.g-4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
  @media (max-width:820px){ .grid.g-4{grid-template-columns:repeat(2,1fr)} .rp-label{min-width:120px;font-size:13px} }
  /* 이번 달 누적 — 실매출과 같은 크기로 둔다. 하루치와 한 달치는 둘 다 마감 때
     보는 숫자라 한쪽만 작으면 다른 쪽을 찾느라 눈이 두 번 움직인다.

     라벨('08월 누적 · 17일')은 숫자 위 줄에 둔다. 옆에 붙이면 큰 숫자가 라벨 폭만큼
     오른쪽으로 밀려 실매출과 왼쪽 끝이 어긋난다 — 큰 숫자 둘이 들쭉날쭉하면 어느
     쪽이 큰지가 길이가 아니라 시작 위치로 읽혀 헷갈린다. 실매출도 라벨이 위에 있어
     이렇게 두면 두 덩어리의 생김새가 같아진다.

     마감 사진(칸 438px)에서도 한 줄에 들어가는 것을 확인했다. */
  .mtd{margin:10px 0 0;font-size:12.5px;color:var(--mute);font-weight:600;
       font-variant-numeric:tabular-nums;white-space:nowrap;
       display:grid;grid-template-columns:auto auto 1fr}
  .mtd > span{grid-row:1;align-self:end}
  .mtd .d{margin-left:5px}
  .mtd b{grid-row:2;grid-column:1/-1;
         color:var(--ink);font-weight:800;font-size:clamp(34px,6vw,46px);letter-spacing:-.03em;line-height:1.15}
  .mtd b i{font-size:.5em;font-weight:700;font-style:normal;color:var(--ink-2);margin-left:4px}
  .ledger{margin-top:18px;border-top:1px dashed var(--line);padding-top:14px}
  .ledger .row{display:flex;justify-content:space-between;align-items:center;padding:5px 0;font-size:13px}
  .ledger .row span{color:var(--mute)}
  .ledger .row b{font-weight:700;color:var(--ink)}
  .ledger .neg b{color:var(--pat)}
  .ledger .row.sub{padding:0 0 5px 10px;font-size:12px}   /* 할인 아래 '복지센터' — 할인 안에 든 금액이라 더하지 않는다 */
  .ledger .row.sub b{font-weight:600;color:var(--mute)}
  .ledger .row[hidden],.rp-cell .s[hidden]{display:none}   /* 위 display:flex 가 hidden 을 이긴다 — 복지센터 0원인 날 줄이 그대로 보였다 */
  .hero .right{padding:22px 24px;display:flex;flex-direction:column}
  .mini-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
  .mini-h .t{font-size:12px;font-weight:700;color:var(--ink-2)}
  .legend2{display:flex;gap:12px;font-size:11px;color:var(--mute)}
  .legend2 i{display:inline-block;width:14px;height:2.5px;border-radius:2px;margin-right:4px;vertical-align:middle}
  .chips{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:14px}
  .chip{background:var(--paper-2);border:1px solid var(--line-2);border-radius:11px;padding:9px 10px;text-align:center}
  .chip .v{font-size:17px;font-weight:800;letter-spacing:-.02em}
  .chip .k{font-size:10.5px;color:var(--mute);margin-top:1px}
  .chip.pat .v{color:var(--pat)}
  .chip.pat.zeroed .v{color:var(--ink)}   /* 환불 0건은 경고가 아니다 */
  .chip.jade .v{color:var(--jade)}

  /* ---------- Panels / cards ---------- */
  main{padding:26px 0 80px}
  .panel{display:none}
  .panel.on{display:block;animation:fade .35s ease}
  @keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
  .grid{display:grid;gap:16px}
  /* minmax(0,…) 없는 1fr 은 '내용보다 좁아지지 않는' 칸이 된다. 안 줄어드는 것이
     하나라도 있으면 칸이 스스로 넓어져 두 칸 합이 화면보다 커지고, 화면에서는
     가로 스크롤로 덮이지만 마감 사진에는 오른쪽이 잘려 나온다(근무표의 퇴근·
     시간이 통째로 사라졌다). 0 을 최소로 박아 칸이 화면을 못 넘게 한다. */
  .g-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .g-3{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}
  .card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px 22px}
  .card > h3{margin:0 0 2px;font-size:15px;font-weight:700;display:flex;align-items:center;gap:8px}
  .card > h3 .eb{font-family:"Pretendard",system-ui,sans-serif;font-size:9.5px;letter-spacing:.16em;color:var(--mute);font-weight:700;text-transform:uppercase}
  .card .csub{font-size:12px;color:var(--mute);margin:0 0 16px}
  .card-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px}
  .card-head .r{text-align:right}
  .card-head .r .v{font-size:18px;font-weight:800}
  .card-head .r .k{font-size:11px;color:var(--mute)}

  /* ---------- Bars (결제수단) ---------- */
  .bars{display:flex;flex-direction:column;gap:13px}
  .bar .bl{display:flex;justify-content:space-between;font-size:13px;margin-bottom:5px}
  .bar .bl .nm{font-weight:600;display:flex;align-items:center;gap:7px}
  .bar .bl .nm .cnt{font-size:11px;color:var(--mute);font-weight:500}
  .bar .bl .amt{font-weight:700}
  .track{height:8px;border-radius:6px;background:var(--line-2);overflow:hidden}
  .fill{height:100%;border-radius:6px;background:var(--jade)}
  .fill.c2{background:var(--jade-2)}
  .fill.c3{background:var(--gold)}

  /* ---------- Deposit list ---------- */
  .dlist{display:flex;flex-direction:column}
  .dlist .di{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--line-2);font-size:13px}
  .dlist .di:last-child{border-bottom:0}
  .dlist .rk{width:18px;color:var(--mute);font-size:11px;font-weight:700;text-align:center}
  .dlist .nm{flex:1;font-weight:600}
  .dlist .cnt{font-size:11px;color:var(--mute)}
  .dlist .amt{font-weight:700;width:88px;text-align:right}
  /* 마감 사진 캡처: 시스템 폰트로 대체돼 폭이 넓어져도 라벨·단위가 쪼개지지 않도록(줄바꿈 금지) */
  .card > h3 .eb{white-space:nowrap;flex-shrink:0}
  .bar .bl .amt{white-space:nowrap;flex-shrink:0}
  .bar .bl .nm .cnt{white-space:nowrap}
  .dlist .nm,.dlist .cnt,.dlist .amt{white-space:nowrap}
  .dlist .cnt{flex-shrink:0}
  .bignum .won,.eyebrow,.ratio-card .big{white-space:nowrap}
  .ledger .row span,.ledger .row b{white-space:nowrap}   /* 캡처 시 '3,705,200 / 원' 줄바꿈 방지 */
  .hero .label .tag{white-space:nowrap}
  /* 마감 사진 촬영 중: 캡처 엔진이 쓰는 시스템 폰트로 잠시 전환해 화면=사진 레이아웃 일치 */
  .capturing, .capturing *{font-family:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif !important}
  /* 촬영 중 매출상세는 넓게 펼쳐 시간대 표가 잘리지 않게 */
  .capturing .hero,.capturing #sales{width:860px;max-width:860px}
  .capturing #sales .tbl-scroll{overflow:visible}
  /* 마감 사진은 표를 통째로 펼쳐 찍으므로 고정 열이 필요 없다 — 캡처 엔진에서 어긋날 수 있어 끈다 */
  .capturing th:first-child,.capturing td:first-child{position:static !important;box-shadow:none !important}
  /* 조작용 버튼은 기록이 아니다 — 사진에는 남기지 않는다
     (시트 불러오기·편집·저장됨·동기화 표시, 줄 추가, 삭제 칸) */
  .capturing .card-bar .rhs,
  .capturing .add-row,
  .capturing .delcol,
  .capturing .row-del,
  .capturing .memo-add,
  .capturing .stockcount{display:none !important}
  /* 근무표 자동 채우기(2026-10-22) — 기준 글·다시 채우기 단추는 조작용이라 사진에 안 넣는다 */
  .capturing .sh-bar,.capturing .sh-auto,
  .capturing .sh-refill{display:none !important}
  /* 안 적은 줄·안 적은 카드는 기록이 아니다 — 사진에는 남기지 않는다.
     특히 대공원점처럼 토스가 없는 지점은 선물세트·환불·디톡스가 늘 비어 있어,
     그대로 두면 이름만 있는 빈 표가 사진 몇 장을 차지한다. */
  .capturing .memo-row.blank,
  .capturing .mini.allblank{display:none !important}
  /* 사진에서 제빵은 뺀다 — 생산일지에 같은 내용이 더 자세히 들어간다.
     단, 생산일지를 쓰는 지점(bakes)만. 굽지 않는 지점은 여기가 유일한 기록이라 남긴다. */
  .capturing #stockTable.bakes tr.bkrow,
  .capturing #stockTable.bakes tr.bkhead,
  .capturing #stockTable.bakes tr.capskip{display:none !important}
  /* 시간대별 상세 표 (오늘 vs 전주) */
  /* 시간대별 그래프 커서/터치 툴팁 */
  #hourly .hbar{cursor:pointer}
  .hchart-tip{position:absolute;z-index:20;pointer-events:none;background:var(--ink);color:var(--on-ink);
    border-radius:9px;padding:8px 11px;font-size:11.5px;line-height:1.5;white-space:nowrap;
    box-shadow:0 6px 18px rgba(0,0,0,.22);min-width:118px}
  .hchart-tip[hidden]{display:none}
  .hchart-tip b{display:block;font-size:12px;font-weight:800;margin-bottom:3px}
  .hchart-tip .tl{display:flex;align-items:center;gap:6px}
  .hchart-tip .tl i{width:8px;height:8px;border-radius:50%;flex:0 0 auto}
  .hchart-tip .tl i.today{background:var(--toss)}   /* 오늘 = 토스 파랑 (그래프 라인과 맞춤) */
  .hchart-tip .tl i.prev{background:var(--gold)}    /* 전주 = 회색 */
  .hchart-tip .tl em{font-style:normal;font-weight:700;font-variant-numeric:tabular-nums;margin-left:auto;padding-left:8px}
  /* 제빵 월매출 품목별 분해 (시트 대조용) */
  .bi-toggle{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--ink-2);font:inherit;font-size:10.5px;font-weight:700;border-radius:999px;padding:2px 9px;cursor:pointer;margin-left:6px;vertical-align:1px}
  .bi-toggle:hover{border-color:var(--ink);color:var(--ink)}
  .bi-box{margin:4px 0 2px;border-top:1px dashed var(--line-2);padding-top:8px}
  .bi-box[hidden]{display:none}
  .bi-row{display:flex;justify-content:space-between;gap:10px;font-size:12.5px;padding:4px 0;border-top:1px solid var(--line-2)}
  .bi-row:first-child{border-top:0}
  .bi-row .n{color:var(--ink-2)}
  .bi-row .v{font-weight:700;font-variant-numeric:tabular-nums}
  .rf-why{display:block;width:100%;box-sizing:border-box;margin:0 0 4px;padding:5px 8px;font:inherit;font-size:12px;color:var(--ink);background:transparent;border:1px solid var(--line-2);border-radius:6px}
  .rf-why:placeholder-shown{border-style:dashed}
  .bi-row.sum{border-top:1.5px solid var(--ink);font-weight:800;margin-top:2px;padding-top:7px}
  .bi-note{font-size:11px;color:var(--mute);margin-top:7px;line-height:1.5}
  .hourly-tbl{border-collapse:collapse;font-size:10.5px;white-space:nowrap}
  .hourly-tbl th{font-weight:700;color:var(--mute);padding:5px 7px;border-bottom:1px solid var(--line);text-align:right}
  .hourly-tbl th.l,.hourly-tbl td.l{text-align:left;font-weight:700;color:var(--ink-2)}
  .hourly-tbl td{padding:5px 7px;text-align:right;border-bottom:1px solid var(--line-2);font-variant-numeric:tabular-nums}
  .hourly-tbl tr.prev td{color:var(--mute)}

  /* ---------- Donut ---------- */
  .donut-wrap{display:flex;align-items:center;gap:24px;flex-wrap:wrap}
  .donut{width:152px;height:152px;border-radius:50%;flex:none;position:relative}
  .donut::after{content:"";position:absolute;inset:30px;background:var(--card);border-radius:50%}
  .donut .dc{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;z-index:1;text-align:center;line-height:1.2}
  .donut .dc .v{font-size:18px;font-weight:800}
  .donut .dc .k{font-size:10px;color:var(--mute)}
  .dleg{flex:1;min-width:180px;display:flex;flex-direction:column;gap:8px}
  .dleg .li{display:flex;align-items:center;gap:9px;font-size:12.5px}
  .dleg .li i{width:9px;height:9px;border-radius:3px;flex:none}
  .dleg .li .nm{flex:1;font-weight:600}
  .dleg .li .pc{color:var(--mute);font-weight:700}

  /* ---------- Tables ---------- */
  .tbl-scroll{overflow-x:auto;margin:0 -22px;padding:0 22px}
  table{width:100%;border-collapse:collapse;font-size:13px;min-width:520px}
  thead th{
    text-align:right;font-weight:600;color:var(--mute);font-size:11.5px;
    padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap;letter-spacing:.01em;
  }
  thead th:first-child,tbody td:first-child{text-align:left}
  thead th.l{text-align:left}
  tbody td{padding:9px 10px;border-bottom:1px solid var(--line-2);text-align:right;white-space:nowrap}
  tbody tr:hover{background:var(--jade-softer)}
  /* 합계(tfoot) 행도 본문과 같은 정렬·패딩. 표를 새로 만들 때마다 어긋나서
     지출·매출리포트에 이어 세 번째 고쳤다 — 이제 공통 규칙으로 둔다. */
  tfoot td{padding:9px 10px;text-align:right;white-space:nowrap}
  tfoot td.l,tfoot td.nm{text-align:left}
  /* 2단 머리글의 아랫줄 첫 칸이 'thead th:first-child' 규칙에 걸려 왼쪽으로 밀리던 것 */
  thead tr + tr th:first-child{text-align:right}
  thead tr + tr th.l:first-child{text-align:left}

  /* 품목 열은 줄어들지 않고, 옆으로 밀어도 왼쪽에 붙어 있는다.
     휴대폰(375px)에서 품목 칸이 27px까지 눌려 'ORM 쌀식빵'이 한 글자만 보였고,
     숫자를 고치려고 오른쪽으로 밀면 어느 품목인지조차 알 수 없었다. */
  #stockTable th:first-child,#stockTable td:first-child:not([colspan]),
  #bakeTable th:first-child,#bakeTable td:first-child:not([colspan]){
    position:sticky;left:0;z-index:2;
    min-width:196px;background:var(--paper);
    /* 오른쪽으로 밀면 숫자들이 이 칸 밑으로 지나간다 —
       그림자로 경계를 만들어 '가려진 것'이지 '글자가 깨진 것'이 아님을 보이게 */
    box-shadow:1px 0 0 var(--line), 7px 0 7px -7px rgba(0,0,0,.22);
  }
  #stockTable thead th:first-child,
  #bakeTable thead th:first-child{z-index:3;background:var(--paper)}
  /* 근무표는 순번+근무자 두 열을 함께 고정한다 (근무자만 고정하면 순번 자리를 덮는다) */
  #wkTable th:nth-child(1),#wkTable td:nth-child(1):not([colspan]),
  #wkTable th:nth-child(2),#wkTable td:nth-child(2):not([colspan]){
    position:sticky;background:var(--paper);z-index:2}
  #wkTable th:nth-child(1),#wkTable td:nth-child(1):not([colspan]){left:0;width:38px;min-width:38px;padding-right:2px}
  #wkTable th:nth-child(2),#wkTable td:nth-child(2):not([colspan]){
    left:38px;min-width:110px;box-shadow:1px 0 0 var(--line), 7px 0 7px -7px rgba(0,0,0,.22)}
  #wkTable thead th:nth-child(1),#wkTable thead th:nth-child(2){z-index:3}
  #wkTable tbody tr:hover td:nth-child(1),#wkTable tbody tr:hover td:nth-child(2){background:var(--jade-softer)}
  /* 주차마다 4열씩 붙는 넓은 표 — 주차 경계에 선을 넣어 어느 주인지 놓치지 않게 */
  /* 서버에 못 올라간 날이 있으면 화면 아래에 계속 띄운다 — 놓치면 그 날이 사라진다 */
  .pendbar{position:fixed;left:12px;right:12px;bottom:12px;z-index:200;display:flex;align-items:center;
    gap:10px;flex-wrap:wrap;background:var(--warn-soft);border:1px solid var(--warn);
    color:var(--warn);border-radius:12px;padding:11px 14px;font-size:13px;font-weight:700;
    box-shadow:0 6px 24px rgba(0,0,0,.12)}
  .pendbar span{font-weight:600;color:var(--ink-2);font-size:12px}
  .pendbar button{margin-left:auto;font-family:inherit;font-size:12.5px;font-weight:800;cursor:pointer;
    border:0;border-radius:9px;padding:7px 13px;background:var(--warn);color:#fff}
  .capturing .pendbar{display:none}
  .wk-also{font-size:10.5px;font-weight:700;color:var(--ink-2);background:var(--paper-2);
           border-radius:20px;padding:2px 7px;margin-left:6px;white-space:nowrap;letter-spacing:.01em}
  #wkTable th.wk-grp{text-align:center;border-left:2px solid var(--line)}
  #wkTable td.wk-c1,#wkTable th.wk-grp{border-left:2px solid var(--line)}
  #wkTable thead tr:first-child th{border-bottom:0}
  #wkTable{min-width:900px}
  tbody tr:hover td:first-child:not([colspan]){background:var(--jade-softer)}
  #stockTable td:first-child .cinput{width:100%;min-width:0}

  tbody td .rk{display:inline-block;width:20px;color:var(--mute);font-size:11px;font-weight:700}
  tbody td.nm{font-weight:600;text-align:left}
  /* 관리자 앱 생산일지(스티커·폐기 사유) — 품목 이름 아래 작은 글, 특이사항·전일재고 재사용은 표 아래 (2026-11-01) */
  .bl-tag{display:block;margin-top:2px;font-size:11.5px;font-weight:500;line-height:1.35;color:var(--ink-2);white-space:normal;overflow-wrap:anywhere}
  .bl-foot{margin-top:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--paper-2);font-size:13px;line-height:1.5;color:var(--ink);overflow-wrap:anywhere}
  .bl-foot div+div{margin-top:4px}
  .bl-foot b{margin-right:6px;color:var(--ink-2)}
  .pill{display:inline-block;font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:999px;line-height:1.6}
  .pill.j{background:var(--jade-soft);color:var(--jade)}
  .pill.p{background:var(--pat-soft);color:var(--pat)}
  .pill.g{background:var(--gold-soft);color:var(--gold)}
  .neg{color:var(--pat);font-weight:700}
  /* 0원짜리는 경고가 아니다 — 빨간색은 실제로 빠져나간 금액에만 */
  .row.neg.zeroed,.row.neg.zeroed b,.neg.zeroed{color:var(--mute);font-weight:600}
  .dim{color:var(--mute)}
  /* 상품 순위 검색 — 품목이 40개가 넘어 원하는 것을 찾으려면 다 펼쳐 훑어야 했다 (사장님 2026-10-03) */
  /* 글자는 16px — 그보다 작으면 아이폰이 칸을 누를 때 화면을 확대해서 또 한 번 튄다 */
  .prod-search{display:block;width:100%;box-sizing:border-box;margin:0 0 10px;padding:9px 12px;font:inherit;font-size:16px;
    border:1px solid var(--line);border-radius:10px;background:var(--paper-2);color:var(--ink);-webkit-appearance:none;appearance:none}
  .prod-search:focus{outline:none;border-color:var(--ink);background:var(--card)}
  .memo-don{margin:6px 0 2px;padding:8px 10px;border-radius:8px;background:var(--warn-soft);color:var(--warn);font-size:12.5px;line-height:1.5}   /* 기부는 폐기 아님(2026-11-01~) */
  #soPointCheck{margin:8px 0 0}  #soPointCheck.warn{color:var(--warn);font-weight:600}   /* 선결제 판매 = 포인트 적립 맞춰 보기(2026-11-07) */
  .card .csub.prod-found{margin:0 0 10px;min-height:1.5em;color:var(--ink-2);font-weight:600}   /* 늘 한 줄 자리 — 나타났다 사라지면 표가 밀린다 */
  .capturing .prod-search,.capturing .prod-found{display:none}   /* 사진에는 검색 칸이 안 나온다 — 사진은 늘 전체 순위다 */
  .more-btn{display:block;width:100%;margin-top:12px;padding:10px;border:1px solid var(--line);background:var(--paper-2);border-radius:10px;color:var(--ink-2);font-weight:600;font-size:13px;cursor:pointer}
  .more-btn:hover{background:var(--jade-soft);color:var(--jade);border-color:var(--jade-soft)}
  .hidden-row{display:none}

  /* ---------- Side mini panels ---------- */
  .mini{background:var(--paper-2);border:1px solid var(--line-2);border-radius:12px;padding:14px 16px}
  .mini h4{margin:0 0 10px;font-size:12.5px;font-weight:700;display:flex;justify-content:space-between;align-items:center}
  .sh-bar{display:flex;align-items:center;gap:8px;margin:-4px 0 8px;font-size:11px}
  .sh-auto{color:var(--ink-3,#999)}
  .sh-bar{flex-wrap:wrap}
  .sh-pend{order:9;flex-basis:100%;color:var(--ink-3,#999)}   /* 실근무 인정 전 — 회색 한 줄, 사진엔 .sh-bar 째로 빠진다(2026-11-03) */
  /* 크루 허브 실근무 인정 칸(관리자 2026-11-07 B안) — 마감 사진에도 찍힌다 */
  .sh-recog{margin-top:10px;border:1px solid var(--line);border-radius:10px;padding:8px 10px}
  .sh-recog .rc-hd{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-2);padding-bottom:6px;border-bottom:1px solid var(--line)}
  .sh-recog ul{list-style:none;margin:0;padding:0}
  .sh-recog li{display:grid;grid-template-columns:auto 1fr auto auto;gap:4px 8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line);font-size:13px}
  .sh-recog li:last-child{border-bottom:0}
  .sh-recog .rc-b{font-size:11px;padding:1px 7px;border-radius:999px;background:var(--ok-soft);color:var(--ok);white-space:nowrap}
  .sh-recog li.wait,.sh-recog li.ab{color:var(--ink-3,#999)}
  .sh-recog li.wait .rc-b{background:transparent;border:1px dashed var(--line);color:var(--ink-3,#999)}
  .sh-recog li.ab .rc-b{background:transparent;color:var(--pat)}
  .sh-recog .rc-h{font-size:12px;color:var(--ink-2);min-width:34px;text-align:right}
  .sh-recog .rc-sub{grid-column:2/-1;display:flex;gap:8px;font-size:11px;color:var(--ink-2)}
  .sh-recog .rc-is{padding:0 6px;border-radius:5px;background:var(--line)}
  .sh-recog .rc-is.warn{background:var(--warn-soft);color:var(--warn)}
  .capturing #memoCards .sh-recog{display:none !important}   /* 매출상세 사진엔 빼고 — 실근무 인정은 한 장 따로(2026-11-07) */
  .shot-recog{width:480px;padding:16px;background:var(--card)}
  .shot-recog[hidden]{display:none}
  .shot-recog .sh-recog{margin-top:0}
  .sh-refill{margin-left:auto;border:1px solid var(--line);background:transparent;border-radius:8px;padding:3px 8px;font-size:11px;color:var(--ink-2);cursor:pointer}
  .mini h4 .tg{font-size:10px;color:var(--jade);background:var(--card);border:1px solid var(--line-2);padding:1px 7px;border-radius:999px}
  /* 위계: 라벨은 물러나고 숫자가 앞으로 */
  .kv{display:flex;justify-content:space-between;font-size:12.5px;padding:5px 0}
  .kv span{color:var(--mute)}
  .kv b{font-weight:700;color:var(--ink)}
  .kv .note{color:var(--mute);font-size:11px;font-weight:400}

  .ratio-card{background:var(--card);color:var(--ink)}
  .ratio-card h3{color:var(--ink)}
  .ratio-card .big{font-size:38px;font-weight:800;letter-spacing:-.02em;line-height:1;margin:6px 0 2px}
  .ratio-card .rsub{color:var(--mute);font-size:12px}
  .ratio-card .rrow{display:flex;justify-content:space-between;font-size:12.5px;padding:6px 0;border-top:1px solid var(--line-2);margin-top:10px}
  .ratio-card .rrow:first-of-type{border-top:0;margin-top:14px}
  .ratio-card .rrow b{font-weight:700}
  .ratio-card .rrow.sub{border-top:0;margin-top:0;padding:0 0 6px 10px;font-size:12px;color:var(--mute)}   /* 할인 아래 '복지센터' — 할인 안에 든 금액 */
  .ratio-card .rrow.sub b{font-weight:600;color:var(--mute)}
  .ratio-card .rrow[hidden]{display:none}   /* display:flex 가 hidden 을 이기지 않게 */

  /* 안전재고 미달은 상태 칸 글씨로만 알린다 — 줄 색·빨간불은 쓰지 않는다.
     시트 기준으로는 미달 품목이 워낙 많아 빨갛게 칠하면 전부 경고처럼 보인다. */
  /* 상태 칩 — 표에서 눈으로 훑을 때 걸리도록 */
  .stat{display:inline-block;font-size:10.5px;font-weight:700;line-height:1.7;padding:2px 8px;border-radius:999px;white-space:nowrap}
  .stat.ok{background:var(--ok-soft);color:var(--ok)}
  .stat.warn{background:var(--warn-soft);color:var(--warn)}
  .stat.bad{background:var(--bad-soft);color:var(--bad)}
  .stat.mute{background:var(--paper-2);color:var(--mute)}
  .stat.wait{background:var(--jade-softer);color:var(--ink-2);outline:1px dashed var(--line)}
  .ord-cancel{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px;font-size:11px;color:var(--ink-2);line-height:1.4}   /* 주문 취소 확인(2026-11-06) */
  .ord-cancel .btn.xs{padding:2px 8px;font-size:11px;min-height:0;border-radius:999px}   /* 입고 대기 — 발주는 보냈고 도착 전(2026-10-28) */
  .stat[data-ord]{cursor:pointer}
  /* 상태를 고르는 select 자체에 색을 입혀 표 전체가 한눈에 스캔되게 */
  select.exin.s-ok{background:var(--ok-soft);color:var(--ok);border-color:transparent;font-weight:700}
  select.exin.s-warn{background:var(--warn-soft);color:var(--warn);border-color:transparent;font-weight:700}
  select.exin.s-bad{background:var(--bad-soft);color:var(--bad);border-color:transparent;font-weight:700}
  /* KPI 숫자: 값이 있을 때만 색이 붙어 '지금 볼 것'이 드러남 */
  .rp-kpi .v.is-warn{color:var(--warn)}
  .rp-kpi .v.is-bad{color:var(--bad)}
  .ok-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--jade-2);margin-right:6px}
  .warn-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--pat);margin-right:6px}

  /* ---------- editable inventory ---------- */
  .card-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:6px}
  .card-bar .lhs h3{margin:0}
  .card-bar .rhs{display:flex;align-items:center;gap:10px}
  .sync{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:var(--mute);background:var(--paper-2);border:1px solid var(--line-2);border-radius:999px;padding:4px 10px}
  .sync i{width:7px;height:7px;border-radius:50%;background:var(--gold);display:inline-block}
  .sync.live i{background:var(--jade-2)}
  /* 서버 연동 성공 시 초록불 */
  .sync.ok i{background:#1FA971;box-shadow:0 0 0 3px rgba(31,169,113,.18)}
  .sync.ok{color:#1FA971;border-color:rgba(31,169,113,.35)}
  .saved{font-size:11px;color:var(--mute)}
  .btn{appearance:none;border:1px solid var(--jade);background:var(--jade);color:var(--on-ink);font-weight:700;font-size:13px;border-radius:10px;padding:9px 16px;cursor:pointer;letter-spacing:-.01em}
  .btn:hover{background:var(--jade-2);border-color:var(--jade-2)}
  .btn:disabled{opacity:.5;cursor:default}
  .btn.ghost{background:transparent;color:var(--jade)}
  .btn.ghost:hover{background:var(--jade-soft)}
  .btn.ghost.on{background:var(--ink);color:var(--on-ink)}  /* 편집 모드 활성 */

  #stockTable.edit td{padding:5px 6px;vertical-align:middle}
  .cinput{
    width:100%;border:1px solid transparent;background:transparent;border-radius:8px;
    font:inherit;color:var(--ink);padding:6px 8px;text-align:right;
    font-variant-numeric:tabular-nums;-moz-appearance:textfield;
  }
  .cinput::-webkit-outer-spin-button,.cinput::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
  .cinput.name{text-align:left;font-weight:600}
  .cinput.od-lot{width:64px;text-align:right}   /* 발주 탭: 발주 단위 */
  /* 발주 탭 골라 담기 · 개수 · 찾기 (사장님 2026-10-21) */
  .od-count{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
  .od-count .stat{font-size:12px}
  .od-count .n{font-size:12px;color:var(--mute);font-weight:600}
  .od-tools{margin:12px 0 8px}
  .od-tools .sync:empty{display:none}
  #odTable .od-pickcol{width:34px;text-align:center}
  #odTable td.od-pick{text-align:center}
  #odTable input[type=checkbox]{width:18px;height:18px;accent-color:var(--ink);cursor:pointer}
  #odTable tr.off td:not(.od-pick){opacity:.45}
  #odTable .cinput.od-qty{width:72px;text-align:right;font-weight:700}
  #odTable td .dim-tag{font-size:11px;color:var(--mute);margin-left:4px}
  /* 매출 조정 (2026-10-19 다듬음) — 줄: 항목 · 더하기/빼기 · 금액 · ✕ */
  .man-row{display:flex;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line-2)}
  .man-row:first-child{border-top:1px solid var(--line-2)}
  .man-row .minput{font-size:14px;padding:8px 10px;border-radius:9px;height:38px;box-sizing:border-box}
  .man-row .man-n{flex:0 1 150px;min-width:0;font-weight:700}
  .man-amt{flex:1 1 120px;display:flex;align-items:center;gap:4px;min-width:0}
  .man-amt .man-a{flex:1;min-width:0;text-align:right;font-variant-numeric:tabular-nums;font-weight:700}
  .man-amt .u{font-size:13px;color:var(--mute)}
  .man-amt .man-a.neg{color:var(--bad)}
  .man-empty{margin:2px 0 4px;font-size:13px;color:var(--mute)}
  .man-quick{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
  .man-quick button{appearance:none;font:inherit;font-size:12.5px;font-weight:600;color:var(--ink);background:var(--paper-2);border:1px solid var(--line-2);border-radius:999px;padding:6px 12px;cursor:pointer}
  .man-quick button:hover{border-color:var(--ink)}
  .man-foot{display:flex;align-items:center;gap:12px;margin-top:14px;padding-top:12px;border-top:1px dashed var(--line)}
  .man-sum{font-size:14px;font-weight:800;font-variant-numeric:tabular-nums}
  .man-sum .k{font-size:12px;font-weight:600;color:var(--mute);margin-right:6px}
  .man-sum.pos .v{color:var(--ok)} .man-sum.neg .v{color:var(--bad)}
  .man-status{flex:1;font-size:12px;color:var(--mute)}
  .man-status.warn{color:var(--warn)}
  @media (max-width:520px){ .man-row .man-n{flex-basis:118px} }
  .rptgt{display:inline-flex;gap:3px}.rptgt .cinput{width:52px}   /* 재고표: 발주점·목표 두 칸 한 자리에 (폰 격자는 칸 순서를 세므로 칸을 늘리지 않는다) */
  .cinput:hover{background:var(--paper-2)}
  .cinput:focus{outline:none;border-color:var(--jade);background:var(--jade-softer)}
  .cinput.stockv{font-weight:700;text-align:center}
  .cinput.move{text-align:left;font-weight:500;color:var(--ink-2)}
  .cinput.bad{color:var(--pat);font-weight:700}
  /* 생산일지: 열마다 세로 구분선 — 숫자 열이 8개라 줄을 따라 읽다 보면 어느 열인지 놓친다(2026-09-08 사장님).
     가격 3열(원가·유통가·판매가) 뒤와 이동 2열 앞은 조금 진한 선으로 묶음을 나눈다. */
  #bakeTable th,#bakeTable td{border-right:1px solid var(--line-2)}
  #bakeTable th:last-child,#bakeTable td:last-child{border-right:0}
  #bakeTable th:nth-child(4),#bakeTable td:nth-child(4),
  #bakeTable th:nth-child(9),#bakeTable td:nth-child(9){border-right:1px solid var(--line)}
  /* 품목 이름까지 전부 가운데 정렬(2026-09-08 사장님). 세로선 안에서 글자가 한가운데 오게. */
  #bakeTable th,#bakeTable td{text-align:center}
  #bakeTable.edit{min-width:720px}
  #bakeTable.edit input[type="number"].cinput{width:62px}
  #bakeTable.edit input.cinput.move{width:92px}
  .srccell{text-align:right;font-weight:700;font-variant-numeric:tabular-nums;background:var(--jade-softer);white-space:nowrap}
  .srctag{display:inline-block;margin-left:5px;font-size:9px;font-weight:700;color:var(--jade);background:var(--card);border:1px solid var(--jade-soft);border-radius:5px;padding:0 4px;vertical-align:middle;letter-spacing:.02em}
  tr.divider td{background:var(--paper-2);color:var(--mute);font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;padding:8px 10px;text-align:left;border-bottom:1px solid var(--line)}
  /* 구역 머리글: 숫자 칸 라벨은 본문 숫자와 같은 줄에 서도록 오른쪽 정렬 */
  tr.grouphead td{text-align:right;letter-spacing:.02em;font-size:10.5px}
  tr.grouphead td.l{text-align:left;letter-spacing:.14em;color:var(--ink-2)}
  /* 머리글·구역머리글·숫자를 같은 세로선에 세운다.
     한 칸 안에서 글자가 서는 자리가 셋 다 달랐다:
       큰 머리글  칸 여백 10px                       → 오른쪽에서 10px
       구역 머리글 칸 여백 6px                        → 6px
       본문 숫자  칸 여백 6px + input 여백 8px + 투명 테두리 1px → 15px
     9px씩 어긋나 사진에서 숫자가 제목보다 안쪽으로 밀려 보였다.
     보기·사진 모드에서는 input 여백을 걷어내 칸 여백 하나에만 기대게 한다.
     (편집 중에는 그대로 둔다 — 누를 자리가 좁아지면 값을 고치기 불편하다) */
  #stockTable thead th{padding-left:6px;padding-right:6px}
  #stockTable:not(.editing) td > .cinput{padding-left:0;padding-right:0}
  /* 재고 숫자도 다른 숫자 칸처럼 오른쪽에 세운다.
     이 칸만 가운데 정렬이라, 소분/PK 묶음 때문에 넓어진 칸 한가운데에 숫자가 서고
     제목은 오른쪽 끝에 서서 27px 어긋나 있었다. */
  #stockTable .cinput.stockv{text-align:right}
  #stockTable .substock input.cinput{text-align:right}
  #stockTable:not(.editing) .substock input.cinput{padding-left:0;padding-right:0}
  #stockTable.edit input[type="number"].cinput{width:54px}
  #stockTable.edit input.cinput.carry{width:46px;color:var(--mute)}
  #stockTable.edit input.cinput.unit{width:38px;text-align:center;color:var(--mute);font-size:12px}
  /* 해동/냉동(소분/PK) 묶음은 오른쪽 정렬 — 단일 재고 숫자와 같은 선에 세워야 세로로 읽힌다 */
  /* 숫자를 오른쪽에 세우면서 gap 이 2px 이면 '소분 128' 의 8 이 다음 'PK' 라벨에 붙는다 */
  .substock{display:inline-flex;align-items:center;justify-content:flex-end;gap:6px;white-space:nowrap}
  .jatwrap{display:inline-flex;flex-direction:column;align-items:flex-end;gap:4px}   /* 자투리(광교·신촌) — 아랫줄에 한 칸 더 */
  .memo-cord{display:inline-flex;gap:2px;margin-left:6px;vertical-align:middle}   /* 카드 순서 ▲▼(편집 모드) */
  .memo-cord button{appearance:none;border:1px solid var(--line-2);background:transparent;color:var(--mute);font-size:10px;line-height:1;padding:3px 5px;border-radius:5px;cursor:pointer}
  .substock .sublbl{flex:0 0 auto}
  .sublbl{font-size:10.5px;color:var(--mute);font-weight:700;letter-spacing:.02em}
  /* 해동/냉동 칸이 38px라 세 자리부터 잘렸다 — 네 자리(1080)까지 들어가게.
     flex 안에서 줄어들지 않도록 basis 를 못박는다 */
  .substock input.cinput{flex:0 0 58px;width:58px;min-width:58px;text-align:center;padding-left:4px;padding-right:4px}
  .st{display:inline-flex;align-items:center;font-size:12px;white-space:nowrap}
  .row-del{border:1px solid var(--line);background:var(--card);color:var(--pat);cursor:pointer;font-size:11.5px;font-weight:700;line-height:1;padding:6px 11px;border-radius:7px;white-space:nowrap}
  .row-del:hover{background:var(--pat-soft);border-color:var(--pat-soft)}
  /* 삭제 칸은 '편집' 모드일 때만 보임 */
  #stockTable:not(.editing) .delcol,#stockTable:not(.editing) .delcell{display:none}
  /* 가독성: 한 화면에 60줄이 뜬다. 눈이 찾는 건 값이 든 칸이다. */
  #stockTable input.cinput.z0{color:var(--line-2)}        /* 0은 자리만 남기고 거의 지운다 */
  #stockTable:not(.editing) input.cinput.carry{color:var(--mute)}   /* 이월은 참고값 — 늘 한 톤 뒤로 */
  /* 이름 옆 단위 — 'ea' 가 아닌 줄에만 붙는다(죽·앙금 같은 팩 품목 16개).
     품목 칸이 sticky 라 그 안에서 절대 위치를 잡을 수 있다. 편집할 때는
     단위 칸이 따로 보이므로 겹치지 않게 숨긴다. */
  #stockTable td:first-child .unit-tag{
    position:absolute; right:9px; top:50%; transform:translateY(-50%);
    font-style:normal; font-size:10.5px; font-weight:800; letter-spacing:.02em;
    color:var(--ink-2); background:var(--paper-2); border-radius:20px; padding:2px 7px;
    pointer-events:none;
  }
  #stockTable.editing td:first-child .unit-tag{display:none}
  #stockTable:not(.editing) .unitcol{display:none}        /* 'ea'가 60줄 반복되는 건 정보가 아니다 */
  #stockTable tbody tr:nth-child(even):not(.grouphead){background:var(--jade-softer)}  /* 눈이 가로로 따라가게. 색을 박아 두면(#FCFCFC) 어두운 화면에서 흰 줄이 된다 */
  #stockTable tbody tr:hover:not(.grouphead){background:var(--jade-softer)}
  /* ── 재고 표: 세로줄 · 큰 글자 · 가운데 정렬 ──
     시트를 보던 눈에 맞춘다. 칸마다 세로줄을 세우고 숫자를 칸 한가운데 놓는다. */
  #stockTable th + th, #stockTable td + td{border-left:1px solid var(--line-2)}
  #stockTable{font-size:14.5px}
  #stockTable thead th{font-size:12.5px}
  #stockTable tr.grouphead td{font-size:11.5px}
  #stockTable .stat{font-size:11.5px}
  #stockTable .sublbl{font-size:11.5px}
  /* 가운데 정렬 — 앞서 오른쪽으로 맞춰둔 규칙들을 전부 덮는다 */
  #stockTable th, #stockTable td,
  #stockTable thead th, #stockTable thead th.l,
  #stockTable tr.grouphead td, #stockTable tr.grouphead td.l,
  #stockTable tbody td:first-child{text-align:center}
  #stockTable .cinput,
  #stockTable .cinput.name,
  #stockTable .cinput.stockv,
  #stockTable .substock input.cinput{text-align:center}
  #stockTable .substock{justify-content:center}
  /* ── 60줄을 훑기 위한 장치들 ── */
  /* 세로줄을 한 단계 진하게 — 칸 구분이 먼저 보이게 */
  #stockTable th + th, #stockTable td + td{border-left:1px solid var(--line)}
  /* ① 머리글 고정 — 60줄을 훑을 때 그 숫자가 입고인지 사용인지 알 수 있게.
     표를 감싼 .tbl-scroll 이 이미 가로 스크롤 상자라, 페이지 스크롤에는 sticky 가
     안 먹는다. 그래서 표에 자체 스크롤 높이를 주고 그 안에서 머리글을 붙인다. */
  #stock .tbl-scroll{max-height:70vh;overflow:auto}
  #stockTable thead th{position:sticky;top:0;z-index:3;background:var(--card)}
  #stockTable thead th:first-child{z-index:4}
  /* 머리글은 진회색 띠 — 표가 길어지면 어디가 위인지 한눈에 잡혀야 한다.
     순검정은 화면에 구멍처럼 뚫려 보여 한 톤 올렸다. 대비는 그대로 남는다.
     칸 구분선도 어두운 바탕에 맞춰 흰 실선으로 뒤집는다. */
  #stockTable thead th{
    background:var(--head);color:#FFF;font-weight:700;letter-spacing:.02em;
    border-bottom-color:var(--head);
  }
  #stockTable thead th + th{border-left-color:rgba(255,255,255,.22)}
  /* 발주·주의는 품목 칸을 옅게 칠한다. 상태 칸은 표 오른쪽 끝이라
     60줄을 훑을 때 이름과 상태 사이를 눈이 왕복해야 했다.
     글자 색으로 하던 것을 칸 색으로 옮겼다 — 면이 글자보다 멀리서 보이고,
     이름은 검은 글자 그대로라 읽기가 나빠지지 않는다.
     품목 칸은 :first-child:not([colspan]) 로 제 배경을 쥐고 있어 더 세게 준다.
     hover 규칙(0,3,3)보다도 세서 마우스를 얹어도 색이 안 지워진다. */
  #stockTable tbody tr.lv-bad  td:first-child:not([colspan]){background:var(--bad-soft)}
  #stockTable tbody tr.lv-warn td:first-child:not([colspan]){background:var(--warn-soft)}
  /* 품목 칸은 왼쪽 고정이라 제 배경을 따로 쥐고 있다(:first-child 가 더 세다).
     머리글 모서리도 같이 칠하고, 경계 그림자만 흰 실선으로 뒤집는다. */
  #stockTable thead th:first-child{
    background:var(--head);
    box-shadow:1px 0 0 rgba(255,255,255,.22), 7px 0 7px -7px rgba(0,0,0,.22);
  }
  /* 사진에는 붙박이도 스크롤도 필요 없다 — 통째로 펼쳐 찍는다 */
  .capturing #stock .tbl-scroll{max-height:none;overflow:visible}
  .capturing #stockTable thead th{position:static}
  /* ③ 품목명도 가운데 — 나머지 칸이 전부 가운데라 이 칸만 왼쪽이면 줄이 어긋나 보인다 */
  #stockTable th:first-child, #stockTable td:first-child,
  #stockTable .cinput.name{text-align:center}
  /* 품목 이름이 이 표에서 가장 먼저 읽는 값이다 — 숫자보다 한 단계 크고 진하게.
     다른 칸은 14.5px/보통이라 이 대비가 곧 '어디부터 읽나'를 알려준다. */
  #stockTable .cinput.name{font-size:16.5px;font-weight:800;color:var(--ink);letter-spacing:-.01em}
  /* ④ 재고 칸 좁히기 — 소분/PK 때문에 이 칸만 두세 배로 벌어져 있었다 */
  #stockTable .substock{gap:4px}
  #stockTable .substock input.cinput{flex:0 0 44px;width:44px;min-width:44px}
  #stockTable .sublbl{font-size:10.5px}
  /* ⑤ 구역 접기 */
  #stockTable tr.grouphead{cursor:pointer}
  #stockTable tr.grouphead td.l::after{content:'  ▾';color:var(--mute);font-size:10px}
  #stockTable tr.grouphead.folded td.l::after{content:'  ▸'}
  #stockTable.foldb tbody tr[data-grp="b"]:not(.grouphead),
  #stockTable.foldm tbody tr[data-grp="m"]:not(.grouphead){display:none}
  /* ── 재고 표 다시 읽기 쉽게 (사장님 2026-10-07 "가시성이 많이 떨어진다") ──
     63줄이 전부 같은 무게였다: 이름·숫자가 다 굵고 가운데, 칸마다 가로·세로 선.
     ① 이름은 왼쪽·숫자는 오른쪽에 세우고 세로선을 걷는다(가로로 따라 읽고 세로로 훑는다) · 줄 높이를 줄인다
     ② 0은 한 톤 뒤로 — 생산·사용의 0은 '확인 안 한 칸'처럼 사라지면 안 돼서 읽히는 회색으로만(z1)
     ③ 마감 때 직접 적는 재고·폐기 칸에 옅은 바탕
     ④ 문제 있는 줄만 색: 안전재고에 못 미친 재고는 빨강, 폐기가 있으면 주황
     넓은 화면과 마감 사진에만 건다(html.wide 는 app.js 가 붙인다) — 폰은 줄마다 카드라 이 표가 아니다.
     위쪽의 '가운데 정렬·세로줄'(2026-09) 규칙을 덮는 것이므로, 되돌리려면 이 묶음만 지우면 된다. */
  /* 2026-10-29 사장님 "세로 구분선 아직 적용 안 됐다" — 넓은 화면·사진에서 오른쪽 정렬·세로선 걷기(위 ①)를 뺐다.
     이제 폰·넓은 화면·마감 사진 모두 가운데 정렬 + 세로선(재고 표 위쪽 규칙). 구역 줄 이름만 왼쪽(한 칸을 가로지른다) */
  :root:is(.wide,.capturing) #stockTable tr.grouphead td.l{text-align:center}   /* 구역 이름 줄도 가운데(사장님 2026-10-29 "다 정렬 맞춰줘") */
  :root:is(.wide,.capturing) #stockTable.edit td{padding:2px 10px}
  :root:is(.wide,.capturing) #stockTable.edit td:first-child{padding-left:14px}
  :root:is(.wide,.capturing) #stockTable .cinput.name{font-size:15px;font-weight:700}
  :root:is(.wide,.capturing) #stockTable tr.grouphead td{font-size:12.5px;font-weight:800;color:var(--ink);background:var(--paper-2);padding-top:9px;padding-bottom:9px}
  #stockTable input.cinput.z1, #stockTable .calc.z1{color:var(--mute);font-weight:400}
  /* 표 안쪽 스크롤 막대 — 색을 안 정하면 어두운 화면에서 흰 띠가 선다 */
  #stock .tbl-scroll{scrollbar-color:var(--grid) transparent}
  :root:is(.wide,.capturing) #stockTable td:is([data-lbl="재고"],[data-lbl="폐기"]){background:var(--jade-soft)}
  :root:is(.wide,.capturing) #stockTable tbody tr:hover td:is([data-lbl="재고"],[data-lbl="폐기"]){background:var(--jade-soft)}
  #stockTable tr.lv-bad .cinput.stockv, #stockTable tr.lv-bad .substock input.cinput{color:var(--bad);font-weight:800}
  #stockTable input.cinput.wv{color:var(--warn);font-weight:800}
  /* ── 재고 골라 보기 · 구역 개수 · 넓은 화면에서도 페이지째 내리기 (사장님 2026-10-07) ── */
  .sfilter{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0 12px}
  .sf-chips{display:flex;gap:6px;flex-wrap:wrap;flex:1 1 auto}
  .sf-chip{appearance:none;font:inherit;font-size:12.5px;font-weight:600;color:var(--ink-2);background:var(--card);
    border:1px solid var(--line);border-radius:999px;padding:6px 12px;cursor:pointer;white-space:nowrap}
  .sf-chip b{font-weight:800;color:var(--ink);margin-left:2px;font-variant-numeric:tabular-nums}
  .sf-chip.none{opacity:.55}                                  /* 해당 줄이 없는 것 — 눌러도 되지만 조용히 */
  .sf-chip.on{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}
  .sf-chip.on b{color:var(--on-ink)}
  .sf-chip[data-sf="warn"]:not(.on):not(.none) b,.sf-chip[data-sf="waste"]:not(.on):not(.none) b{color:var(--warn)}
  .sf-search{flex:0 1 220px;min-width:140px;font:inherit;font-size:16px;padding:7px 12px;border:1px solid var(--line);
    border-radius:999px;background:var(--card);color:var(--ink)}   /* 16px — 아이폰이 누를 때 화면을 확대하지 않게 */
  .sf-search:focus{outline:none;border-color:var(--ink)}
  .capturing .sfilter{display:none}                           /* 사진은 늘 전체 */
  @media (max-width:640px){ .sf-search{flex:1 1 100%} }       /* 폰에선 검색 칸이 한 줄을 통째로 */
  :root:not(.capturing) #stockTable:not(.editing) tbody tr.fhide{display:none !important}   /* 편집(순서 바꾸기) 중에는 다 보인다 */
  #stockTable tr.grouphead .gcount{margin-left:6px;font-weight:600;color:var(--mute);font-variant-numeric:tabular-nums}
  .capturing #stockTable tr.grouphead .gcount{display:none}
  .sf-empty{margin:14px 0 4px;color:var(--ink-2)}
  /* 넓은 화면도 표를 상자(70vh)에 가두지 않는다 — 열두 줄만 보이고 스크롤이 이중이었다. 태블릿·폰은 이미 이렇게 돈다.
     머리글은 위 줄(.topbar) 바로 아래(--stick-top)에 붙어 따라온다. 1101px 부터는 표가 카드 폭에 들어가 가로로 밀 일이 없다. */
  @media (min-width:1101px){
    :root:not(.capturing) #stock .tbl-scroll{max-height:none;overflow:visible}
    :root:not(.capturing) #stockTable thead th{top:var(--stick-top,0px)}
  }
  .rowtools{display:inline-flex;align-items:center;gap:4px}
  .drag-handle{border:1px solid var(--line);background:var(--card);color:var(--mute);width:26px;height:26px;border-radius:7px;cursor:grab;font-size:13px;line-height:1;padding:0}
  .drag-handle:hover{border-color:var(--ink);color:var(--ink)}
  .drag-handle:active{cursor:grabbing}
  #stockTable tr.dragging{opacity:.4}
  #stockTable tr.drop-into td{box-shadow:inset 0 2px 0 var(--ink)}
  /* 메모 카드 편집 */
  .memo-add{margin-top:10px;padding:9px}
  .memo-edit{display:flex;flex-direction:column;gap:4px;padding:7px 0;border-bottom:1px solid var(--line-2)}
  .memo-edit .drag-handle{width:22px;height:28px;flex:none}   /* 끌어서 순서 변경(2026-11-09, 재고표와 같은 손잡이) */
  .memo-edit.dragging{opacity:.4}
  .memo-edit.drop-before{box-shadow:inset 0 2px 0 var(--ink)}
  .memo-edit.drop-after{box-shadow:inset 0 -2px 0 var(--ink)}
  .me-top{display:flex;align-items:center;gap:5px}
  .me-bot{display:flex;gap:5px;padding-left:26px}
  .minput{font:inherit;font-size:12.5px;border:1px solid var(--line);border-radius:7px;padding:5px 7px;min-width:0;color:var(--ink)}
  .minput:focus{outline:none;border-color:var(--ink)}
  /* 캡처 때 메모 입력칸을 대신하는 줄바꿈 글상자 — 긴 특이사항·폐기가 안 잘리고 여러 줄로 나온다.
     폭·정렬은 옆의 .ml/.mv/.mn 규칙을 그대로 받고, 여기선 줄바꿈만 켠다. */
  .cap-text{font:inherit;font-size:12.5px;line-height:1.45;padding:5px 7px;color:var(--ink);min-width:0;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere}
  .capturing .memo-row{align-items:flex-start}   /* 여러 줄로 늘어난 메모는 위로 맞춘다 */
  .me-top .ml{flex:1}
  .me-bot .mv{flex:0 0 64px}
  .me-bot .mn{flex:1}
  /* 보기 모드 행: 항목 글자 + 수량·세부사항 입력칸 */
  .memo-row{display:flex;align-items:flex-start;gap:6px;padding:4px 0}   /* 글이 여러 줄로 늘어도 옆 칸이 첫 줄에 맞게 위로(2026-11-09) */
  /* 영업일지 글칸 — 한 줄 textarea, 글 길이만큼 아래로 늘어난다(높이는 memoFit, 되는 브라우저는 field-sizing) */
  textarea.minput{display:block;resize:none;overflow:hidden;line-height:1.45;height:auto;white-space:pre-wrap;overflow-wrap:anywhere;field-sizing:content}
  .memo-row input.minput{line-height:1.45}
  /* 창고 카드 — 영업일지 카드(.mini·.memo-row)를 그대로 쓰고, 이름 칸·지우기 단추만 더한다 */
  .dp-name{flex:1 1 0;font-weight:700;font-size:13.5px;background:transparent;border-color:transparent;padding-left:0}
  .dp-name:hover,.dp-name:focus{border-color:var(--line);padding-left:7px}
  .dp-row .ml{flex:2.2 1 0}   /* 폰에서 품목 이름이 잘리지 않게 — 수량·단위는 짧다 */
  .dp-row .mv{flex:.9 1 0}
  .dp-row .dp-u{flex:.6 1 0;min-width:0;text-align:center}
  .dp-row .dp-min{flex:.7 1 0;min-width:0;text-align:center}
  .dp-x{flex:none;width:26px;height:26px;border:0;background:transparent;color:var(--ink-3,#999);font-size:15px;border-radius:7px;cursor:pointer}
  .dp-x:hover{background:var(--bad-soft);color:var(--bad)}
  .memo-row .mr-label{flex:1.1 1 0;min-width:0;font-size:13px;line-height:1.45;padding:6px 0;color:var(--ink-2);overflow-wrap:anywhere}   /* 긴 항목 이름도 줄바꿈, 옆 칸 첫 줄과 같은 높이 */
  .memo-row .ml{flex:1.1 1 0;min-width:0;color:var(--ink-2)}
  .memo-row .mv{flex:1 1 0;min-width:0;text-align:center;font-weight:600}
  .memo-row .mn{flex:1.4 1 0;min-width:0}
  .memo-row.nonote .mv{flex:1.8 1 0;text-align:left;font-weight:400}
  /* 특이사항은 문장이 들어와서 이름표만 한 폭으로는 못 읽는다 */
  .memo-row.note .ml{flex:2.6 1 0}
  .memo-row.note .mv{flex:1.2 1 0;text-align:left;font-weight:400}   /* 특이사항 비고는 문장 — 여러 줄이면 가운데 정렬이 어지럽다 */
  /* 근무 탭: 사람 줄을 펼치면 주차별·일자별이 나온다 */
  .wk-toggle{border:0;background:transparent;color:var(--mute);font-size:11px;cursor:pointer;padding:0 4px 0 0}
  .wk-row{cursor:pointer}
  .wk-row:hover td{background:var(--paper-2)}
  .wk-detail td{background:var(--paper-2);padding:10px 12px}
  /* 펼침 안 주차 요약 — 넓은 화면에는 주차가 이미 열로 있으므로 숨긴다.
     폰에서는 그 열들을 통째로 감추므로 거기서만 켠다(아래 640px 규칙). */
  .wk-weeks{display:none}
  .wk-weeks,.wk-log{flex-wrap:wrap;gap:6px 14px;font-size:12px}
  .wk-log{display:flex}
  .wk-log{margin-top:8px;color:var(--ink-2)}
  .wk-weeks em,.wk-log em{font-style:normal;font-weight:700;color:var(--ink)}
  .wk-weeks span{color:var(--ink-2)}
  .wk-weeks b{color:var(--ok);font-weight:700}

  /* 근무표: 이름 · 출근 ~ 퇴근 · 계산된 근무시간 */
  .memo-row.shift .ml{flex:1 1 0}
  .memo-row.shift .mv,.memo-row.shift .mn{flex:0 0 auto;width:82px;text-align:center;font-weight:600}
  .memo-row.shift .sh-sep{color:var(--mute);font-size:12px}
  .memo-row.shift .sh-dur{flex:0 0 auto;min-width:62px;text-align:right;font-size:12px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
  .memo-row.shift .sh-dur:empty::before{content:'—';color:var(--mute);font-weight:400}
  /* 근무표 아래 요약 — 총원·합계·평균 */
  .memo-sum{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:baseline;
    margin-top:6px;padding-top:8px;border-top:1px solid var(--line);
    font-size:12px;color:var(--mute)}
  .memo-sum b{color:var(--ink);font-weight:700;font-variant-numeric:tabular-nums}
  .memo-sum .ms-note{color:var(--warn)}
  .memo-row .minput{border-color:transparent;background:transparent}
  .memo-row .minput:hover{background:var(--paper-2)}
  .memo-row .minput:focus{border-color:var(--ink);background:var(--card)}
  .memo-row.dp-low .minput.mv{background:var(--bad-soft);color:var(--bad);border-color:var(--bad);font-weight:700}   /* 창고: 최소 수량 밑 — 위 투명 바탕 규칙보다 뒤·더 세게 */
  /* 폐기 내역 – 재고 탭에서 자동으로 온 읽기전용 행 */
  .memo-row.auto .av{flex:1 1 0;min-width:0;text-align:center;font-weight:600;color:var(--ink)}
  .memo-row.auto .an{flex:1.4 1 0;min-width:0}
  .auto-chip{font-style:normal;font-size:9px;font-weight:700;color:var(--jade);background:var(--card);border:1px solid var(--line-2);border-radius:999px;padding:0 5px;margin-left:6px;vertical-align:middle}
  /* 레시피 */
  .ring-add{margin-top:8px;padding:8px;font-size:12px}
  .memo-del{border:1px solid var(--line);background:var(--card);color:var(--pat);width:26px;height:28px;border-radius:7px;cursor:pointer;font-size:13px;flex:none}
  .memo-del:hover{background:var(--pat-soft)}
  h4 .memo-tag{width:96px;text-align:right;font-size:11px;padding:3px 7px}
  .add-row{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;margin-top:10px;padding:11px;border:1px dashed var(--line);background:transparent;border-radius:11px;color:var(--ink-2);font-weight:600;font-size:13px;cursor:pointer}
  .add-row:hover{border-color:var(--jade);color:var(--jade);background:var(--jade-softer)}
  .toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,16px);background:var(--ink);color:var(--on-ink);font-size:13px;font-weight:600;padding:11px 18px;border-radius:12px;box-shadow:0 12px 32px -12px rgba(0,0,0,.4);opacity:0;pointer-events:none;transition:opacity .25s ease,transform .25s ease;z-index:60}
  .shotbtn{position:fixed;right:16px;bottom:20px;z-index:55;background:var(--ink);color:var(--on-ink);border:0;border-radius:999px;padding:12px 18px;font-family:inherit;font-weight:700;font-size:13px;box-shadow:0 10px 28px -8px rgba(0,0,0,.45);cursor:pointer;letter-spacing:-.01em}
  /* 모바일 마감 사진: 합친 이미지를 보여주고 꾹 눌러 저장 */
  .shot-overlay{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.9);overflow:auto;-webkit-overflow-scrolling:touch}
  .shot-overlay .so-bar{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;background:#111;color:#fff;font-size:13px;font-weight:600}
  .shot-overlay .so-bar b{color:#fff;font-weight:800}
  .shot-overlay .so-close{appearance:none;border:1px solid #555;background:#222;color:#fff;font:inherit;font-weight:700;font-size:13px;border-radius:8px;padding:7px 15px;cursor:pointer;white-space:nowrap}
  .shot-overlay .so-cap{color:#fff;font-size:12.5px;font-weight:700;letter-spacing:.02em;padding:14px 16px 6px}
  .shot-overlay img{display:block;width:100%;height:auto}
  /* 직원 코드 잠금 화면 */
  .staff-gate{position:fixed;inset:0;z-index:200;background:var(--paper-veil-2);display:flex;align-items:flex-start;justify-content:center}
  .staff-gate .sg-box{width:min(340px,86vw);margin-top:16vh;text-align:center}
  .staff-gate h1{font-size:17px;font-weight:800;margin:0 0 6px;letter-spacing:-.01em}
  .staff-gate p{color:var(--mute);font-size:13px;margin:0 0 16px}
  .staff-gate input{width:100%;font:inherit;font-size:16px;text-align:center;letter-spacing:.2em;border:1px solid var(--line);border-radius:11px;padding:12px;box-sizing:border-box}
  .staff-gate input:focus{outline:none;border-color:var(--ink)}
  .staff-gate button{width:100%;margin-top:10px;appearance:none;border:0;background:var(--ink);color:var(--on-ink);font:inherit;font-weight:700;font-size:14px;border-radius:11px;padding:12px;cursor:pointer}
  .staff-gate #sgBio{background:var(--card);color:var(--ink);border:1px solid var(--line)}
  .staff-gate #sgBio:hover{border-color:var(--ink)}
  .staff-gate #sgEmail,.staff-gate #sgPw,.staff-gate #fpEmail{letter-spacing:0;text-align:left;margin-bottom:8px}
  .staff-gate #sgSignup{margin-top:14px;padding-top:12px;border-top:1px solid var(--line-2)}
  .staff-gate #sgSignup input{letter-spacing:0;text-align:left;margin-bottom:8px}
  .staff-gate .sg-or{margin:16px 0 10px}
  .staff-gate .sg-forgot{display:inline-block;margin-top:10px;color:var(--mute);font-size:12.5px;text-decoration:underline;cursor:pointer;letter-spacing:0}
  .staff-gate .sg-forgot:hover{color:var(--ink)}
  .staff-gate .sg-err{color:#C0392B;font-size:12.5px;min-height:18px;margin-top:10px}
  .shotbtn:disabled{opacity:.6;cursor:default}
  .shotbtn:active{transform:translateY(1px)}
  .toast.show{opacity:1;transform:translate(-50%,0)}

  footer{border-top:1px solid var(--line);margin-top:40px}
  .foot{padding:22px 0 40px;font-size:12px;color:var(--mute);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
  .foot .serif{color:var(--ink-2)}
  .foot code{background:var(--paper-2);border:1px solid var(--line-2);border-radius:6px;padding:1px 6px;font-size:11px;color:var(--jade)}

  .section-lead{margin:0 0 16px}
  .section-lead .eyebrow{margin-bottom:6px;display:block}
  .section-lead h2{margin:0;font-size:21px;font-weight:800;letter-spacing:-.02em}
  .section-lead p{margin:5px 0 0;color:var(--ink-2);font-size:13.5px;max-width:560px}

  @media (max-width:860px){
    .hero{grid-template-columns:1fr}
    .hero .left{border-right:0;border-bottom:1px solid var(--line-2)}
    /* 여기도 minmax(0,…). 한 칸이어도 맨 1fr 은 '내용보다 좁아지지 않는' 칸이라,
       안 줄어드는 것이 있으면 칸이 505px 로 부풀어 화면(331px)을 넘겼다.
       그러면 매출상세 전체가 옆으로 밀린다 — 위 .g-2 만 고치고 여기를 놓쳤었다. */
    .g-2,.g-3{grid-template-columns:minmax(0,1fr)}
  }
  @media (max-width:560px){
    .chips{grid-template-columns:repeat(2,1fr)}
    .who .nm-hide{display:none}
  }
  @media (prefers-reduced-motion:reduce){
    *{animation:none!important;transition:none!important}
  }

  /* 안전재고 막대 — 폰 카드에서만 쓴다. 표와 마감 사진에는 안 나온다.
     숫자만 있으면 '안전 5인데 2면 많이 모자란 건가'를 머리로 셈해야 한다. */
  #stockTable .safebar{display:none;height:4px;border-radius:4px;background:var(--line-2);overflow:hidden}
  #stockTable .safebar i{display:block;height:100%;border-radius:4px;background:var(--mute)}
  #stockTable .safebar.bad i{background:var(--bad)}
  #stockTable .safebar.warn i{background:var(--warn)}
  #stockTable .safebar.ok i{background:var(--ok)}
  #stockTable .shortnum{display:none;font-size:11.5px;font-weight:700;color:var(--bad);white-space:nowrap}

  /* ===== 폰에서는 재고표를 카드로 =====
     표 그대로 두면 721px 라 화면(390px) 밖으로 절반이 나간다. 마감은 폰으로 하니
     가로로 밀면서 숫자를 넣게 된다.

     칸(<input>)은 손대지 않고 배치만 바꾼다 — 같은 data-i·data-k 를 쓰므로
     저장·편집·시트 불러오기가 전부 그대로 돈다. 머리글이 사라지는 대신
     각 칸 위에 이름을 붙인다(::before).                                    */
  @media (max-width:640px){
    /* 헤더가 좁은 화면에서 넘쳤다: 브랜드(OKRUMONG·CLOSING) 199px + 밝기 + 지점 버튼이
       한 줄에 안 들어가 지점 버튼이 19px 밖으로 나갔다. CLOSING 은 장식이라 뺀다. */
    .top-inner{gap:10px}
    /* 로그아웃·코드 관리·설명서 단추까지 붙으면 320px 에서 머리 줄이 넘쳐 화면 전체가 옆으로 밀렸다 — 두 줄로 접어 단추가 다 보이게(2026-11-01).
       (옛 위 탭 막대는 지웠다 2026-11-03 — 지금은 위 줄(.topbar) 높이를 app.js setStickTop 이 재서 표 머리글을 붙인다) */
    .top-inner{flex-wrap:wrap;height:auto;min-height:60px;row-gap:6px;padding-top:8px;padding-bottom:8px;box-sizing:border-box}
    .top-inner{column-gap:6px}
    .branch-btn{padding:6px 10px}
    .code-admin-btn{margin-left:0;padding:6px 8px}
    .brand{gap:7px}
    .brand .sub,.brand .dot{display:none}
    /* 날짜가 두 줄로 접혔다: 날짜칸이 상태문구(마감 완료 데이터예요)와 한 줄을
       나눠 쓰느라 91px 로 좁아졌다. 폰에선 날짜칸을 한 줄 통째로, 문구는 그 아래로. */
    .datestrip{flex-wrap:wrap;gap:8px;margin:16px 0 4px}
    .datepick{flex:1 1 100%;max-width:none}
    #theDate{white-space:nowrap}
    .stamp{margin-left:2px}
    :root:not(.capturing) #stock .tbl-scroll{max-height:none;overflow:visible;margin:0;padding:0}
    :root:not(.capturing) #stockTable{min-width:0;display:block}
    :root:not(.capturing) #stockTable thead{display:none}
    :root:not(.capturing) #stockTable tbody{display:block}
    :root:not(.capturing) #stockTable tbody tr{display:block}

    /* 품목 한 줄이 카드 하나 */
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead){
      display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px;
      background:var(--card); border:1px solid var(--line); border-radius:12px;
      padding:12px 13px 11px; margin-bottom:10px;
    }
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):nth-child(even){background:var(--card)}
    :root:not(.capturing) #stockTable tbody tr:hover:not(.grouphead){background:var(--card)}
    :root:not(.capturing) #stockTable tbody tr.lv-bad{border-color:#F0C9CF}
    :root:not(.capturing) #stockTable tbody tr.lv-warn{border-color:#F0DCB6}

    /* 칸 공통 — 표의 테두리·고정을 걷어내고 네모 칸으로 */
    :root:not(.capturing) #stockTable tbody td{
      display:block; border:1px solid var(--line); border-radius:10px;
      padding:6px 9px 7px; text-align:left; white-space:normal;
      position:static; min-width:0; box-shadow:none;
    }
    :root:not(.capturing) #stockTable tbody td+td{border-left:1px solid var(--line)}
    /* 표에서 품목 칸을 왼쪽에 붙여두던 규칙 — 폰에서는 카드라 필요 없다.
       :first-child:not([colspan]) 가 더 세서 여기서 같은 세기로 풀어준다. */
    :root:not(.capturing) #stockTable tbody td:first-child:not([colspan]){
      position:static; left:auto; min-width:0; width:auto; box-shadow:none; z-index:auto}
    :root:not(.capturing) #stockTable tbody td::before{
      content:attr(data-lbl); display:block; height:14px; line-height:14px;
      font-size:10.5px; font-weight:700; color:var(--mute); letter-spacing:.02em;
    }
    /* 칸을 꽉 채우고 오른쪽 끝에 붙인다.
       표 시절 규칙들이 폭을 54px·46px·44px 로 잡아두고 재고는 가운데 정렬이라
       숫자가 칸 한가운데 떠 있었다. 같은 세기 이상으로 하나씩 푼다. */
    :root:not(.capturing) #stockTable tbody td .cinput{
      width:100%; height:28px; line-height:28px; font-size:22px; font-weight:800;
      text-align:right; padding:0; color:var(--ink);
    }
    :root:not(.capturing) #stockTable.edit tbody td input[type="number"].cinput{width:100%}
    :root:not(.capturing) #stockTable.edit tbody td input.cinput.carry{width:100%}
    :root:not(.capturing) #stockTable tbody td .cinput.stockv{text-align:right}
    :root:not(.capturing) #stockTable tbody .substock{gap:10px}
    :root:not(.capturing) #stockTable tbody .substock input.cinput{flex:1 1 0;width:auto;min-width:0;text-align:right}
    :root:not(.capturing) #stockTable tbody td input.cinput.z0{color:#C8C8C8}

    /* 자리 잡기 — 이름·상태 / 이월 / 입고·사용 / 재고·폐기 / 안전 */
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead) td:nth-child(1){grid-area:1/1/2/2;
      border:0;padding:0;display:flex;align-items:center;gap:7px;min-height:24px}
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead) td:nth-child(1)::before{content:none}
    :root:not(.capturing) #stockTable tbody td:nth-child(1) .cinput.name{
      width:auto;flex:0 1 auto;height:24px;line-height:24px;font-size:16.5px;text-align:left}
    :root:not(.capturing) #stockTable td:first-child .unit-tag{position:static;transform:none}

    :root:not(.capturing) #stockTable tbody tr:not(.grouphead) td:nth-child(11){grid-area:1/2/2/3;
      border:0;padding:0;display:flex;align-items:center;justify-content:flex-end}
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead) td:nth-child(11)::before{content:none}

    :root:not(.capturing) #stockTable tbody tr:not(.grouphead) td:nth-child(2){grid-area:2/1/3/2}
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead) td:nth-child(3){grid-area:3/1/4/2}
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead) td:nth-child(4){grid-area:3/2/4/3}
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead) td:nth-child(5){grid-area:4/1/5/2;
      border-color:var(--ink);border-width:1.5px}   /* 재고 — 마감 때 실제로 적는 칸 */
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead) td:nth-child(6){grid-area:4/2/5/3}
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead) td:nth-child(7){grid-area:5/1/6/3}
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead) td.delcell{grid-area:6/1/7/3;border:0;padding:4px 0 0}

    /* 이월은 참고값 — 한 단계 뒤로 */
    :root:not(.capturing) #stockTable tbody td:nth-child(2) .cinput{font-size:15px;color:var(--ink-2)}
    /* 안전은 가로로 눕혀 한 줄 — 라벨 · 숫자 · 막대 · 부족분 */
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead) td:nth-child(7){display:flex;align-items:center;gap:8px}
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead) td:nth-child(7)::before{height:auto;flex:0 0 auto}
    /* 안전 숫자는 좁게 — 남는 자리는 막대가 가져간다.
       위의 width:100% 규칙(.edit input[type=number].cinput)이 더 세서 여기서
       그보다 한 단계 더 좁혀 잡는다. 안 그러면 입력칸이 칸 전체를 먹는다. */
    :root:not(.capturing) #stockTable tbody td:nth-child(7) .cinput,
    :root:not(.capturing) #stockTable.edit tbody td:nth-child(7) input[type="number"].cinput{
      flex:0 0 auto;width:40px;font-size:15px;text-align:right;height:20px;line-height:20px}
    :root:not(.capturing) #stockTable tbody td:nth-child(7) .safebar{display:block;flex:1 1 0;min-width:24px;width:auto}
    :root:not(.capturing) #stockTable tbody td:nth-child(7) .shortnum{display:block;flex:0 0 auto}

    /* 소분/PK — 한 칸 안에서 둘로 */
    :root:not(.capturing) #stockTable .substock{gap:8px;justify-content:space-between}
    :root:not(.capturing) #stockTable .substock input.cinput{flex:1 1 0;min-width:0;width:auto;font-size:20px}
    :root:not(.capturing) #stockTable .sublbl{font-size:10px}

    /* 구역 머리글 — 표에서는 열 이름을 되풀이하지만 카드에서는 이름만 */
    :root:not(.capturing) #stockTable tbody tr.grouphead{
      display:block;background:transparent;border:0;padding:14px 2px 6px;margin:0}
    :root:not(.capturing) #stockTable tbody tr.grouphead td{display:none;border:0;padding:0}
    :root:not(.capturing) #stockTable tbody tr.grouphead td:first-child{
      display:block;text-align:left;font-size:11px;font-weight:800;
      letter-spacing:.14em;color:var(--mute)}
    :root:not(.capturing) #stockTable tbody tr.grouphead td::before{content:none}

    /* 단위 칸은 이름 옆 표시로 대신한다 */
    :root:not(.capturing) #stockTable tbody td.unitcol{display:none}

    /* ===== 폰 마감 줄 — 한 품목이 한 줄 (사장님 2026-09-20) =====
       카드(2열 격자)는 한 화면에 두세 개뿐이라 68개를 세려면 스무 번 넘게 밀어야 했다.
       상태점·이름·사용·생산·재고·폐기만 한 줄에 두고 나머지는 눌러서 펼친다. */
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand){
      display:flex; align-items:center; gap:5px;
      border:0; border-bottom:1px solid var(--line); border-radius:0;
      padding:6px 2px; margin:0; background:transparent;
    }
    /* 구역 접기 — 위의 한 줄 배치 규칙이 바깥의 접기 규칙(app.css:818)을 명시도로 눌러
       폰에서 접기가 안 먹었다. 같은 범위·같은 명시도로 다시 적는다. */
    :root:not(.capturing) #stockTable.foldb tbody tr[data-grp="b"]:not(.grouphead),
    :root:not(.capturing) #stockTable.foldm tbody tr[data-grp="m"]:not(.grouphead){display:none}
    /* 펼친 줄 자체 — 위의 카드형(그리드 2열) 규칙(app.css:985)이 tr.expand 에도 걸려
       바깥 카드 테두리 + 안쪽 td 테두리가 겹치고 colspan=12 칸이 2열 그리드의
       절반 폭에 눌려 있었다. 펼친 줄은 카드가 아니라 상세 설명이라 한 줄 통짜로 되돌린다. */
    :root:not(.capturing) #stockTable tbody tr.expand{
      display:block;background:transparent;border:0;border-radius:0;padding:0;margin:0}
    :root:not(.capturing) #stockTable tbody tr.expand > td{
      display:block; border:1px solid var(--line); border-radius:10px;
      padding:8px 10px; margin:0 0 8px; font-size:12px; color:var(--ink-2);
    }
    :root:not(.capturing) #stockTable tbody tr.expand .ex-calc{display:block;margin-top:5px;color:var(--mute)}
    :root:not(.capturing) #stockTable tbody tr.expand .ex-bad{display:block;margin-top:3px;color:var(--bad);font-weight:700}
    /* 줄 안에서 칸 자리 잡기 — 나머지 칸은 숨긴다(값은 살아 있다) */
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) > td{
      display:none; border:0!important; padding:0; margin:0; background:transparent;
    }
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) > td::before{content:none}
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) > td:nth-child(1){display:flex;flex:1;min-width:0;align-items:center;gap:5px}
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) > td:nth-child(3),
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) > td:nth-child(4),
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) > td:nth-child(5),
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) > td:nth-child(6){display:block;flex:none}
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) > td:nth-child(4){width:32px}       /* 사용 */
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) > td:nth-child(3),
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) > td:nth-child(5),
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) > td:nth-child(6){width:38px}       /* 생산·재고·폐기 */
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) .cinput.name{
      width:100%;flex:1;min-width:0;height:22px;line-height:22px;font-size:13px;text-align:left;
      white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    }
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) td:nth-child(3) .cinput,
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) td:nth-child(5) .cinput,
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) td:nth-child(6) .cinput{
      width:100%;height:26px;line-height:26px;font-size:15px;font-weight:700;text-align:center;
      border:1px solid var(--line);border-radius:6px;padding:0;
    }
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) td:nth-child(5) .cinput{border-color:var(--ink)}   /* 재고 — 매일 적는 칸 */
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) .cinput.kp-on{outline:2px solid var(--jade);outline-offset:0}
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) td:nth-child(4) .calc{font-size:13px;font-weight:700;color:var(--ink-2)}
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) td:nth-child(4) .calc.off{color:var(--bad)}
    /* 안전재고 막대·상태·단위·순서 손잡이는 폰 줄에서 뺀다 (펼치면 보인다) */
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) .safebar,
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) .shortnum{display:none}
    /* 상태점 — 안전재고 대비 색 */
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) td:nth-child(1)::after{
      content:"";width:6px;height:6px;border-radius:50%;background:transparent;flex:none;order:-1;
    }
    /* 기준(안전재고) 없이는 초록을 안 칠한다 — '충분'을 근거 없이 보여주는 게 아무것도
       안 보여주는 것보다 나쁘다(stockLevel 위 주석). lv-ok 인 줄만 초록. */
    :root:not(.capturing) #stockTable tbody tr.lv-ok:not(.expand)   td:nth-child(1)::after{background:var(--ok)}
    :root:not(.capturing) #stockTable tbody tr.lv-warn:not(.expand) td:nth-child(1)::after{background:var(--warn)}
    :root:not(.capturing) #stockTable tbody tr.lv-bad:not(.expand)  td:nth-child(1)::after{background:var(--bad)}
    :root:not(.capturing) .stockcount{display:block;font-size:12px;margin:2px 0 0}
    /* 펼친 상세 줄은 사진에 안 남는다 — 위 .capturing 복구 규칙(아래 '.capturing #stockTable
       tbody tr:not(.grouphead)')과 세기가 같아(둘 다 id+class 2개+태그 2개) 순서로 갈리는데
       그 규칙이 파일에서 더 뒤에 있어 이겨버린다. !important 로 확실히 이긴다 — 바로 위
       제빵 줄 감추기(.bakes tr.bkrow 등)도 같은 이유로 !important 를 쓴다 (리뷰 2026-09-21). */
    .capturing #stockTable tbody tr.expand{display:none !important}

    /* 칸 순서 — 설계는 이름 다음 사용 → 생산(td3 가 DOM은 사용보다 앞이라 그냥 사용만
       앞으로 당기면(order:-1) 이름(기본 order 0)보다도 앞으로 튀어나간다 — 이름 칸엔
       order 가 없어 0이기 때문. 넷 다 순서를 매겨 이름 뒤로 확실히 묶어둔다 (리뷰 2026-09-21). */
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) > td:nth-child(4){order:1}   /* 사용 */
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) > td:nth-child(3){order:2}   /* 생산 */
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) > td:nth-child(5){order:3}   /* 재고 */
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) > td:nth-child(6){order:4}   /* 폐기 */

    /* 품목명을 눌러도 안 펼쳐졌다 — input.cinput.name 이 칸을 거의 다 채워 클릭이
       입력칸으로 먼저 먹혔다. 편집 모드가 아닐 때만 입력칸을 클릭 통과시켜 줄 클릭이 받게 한다
       (편집 중엔 이름을 고칠 수 있어야 하니 그대로 둔다). (리뷰 2026-09-21) */
    :root:not(.capturing) #stockTable:not(.editing) tbody tr:not(.grouphead):not(.expand) .cinput.name{pointer-events:none}

    /* 누를 수 있다는 표시 — 손 커서 + 펼침 화살표(▸/▾). 펼쳐진 줄 바로 위 줄만 ▾ (리뷰 2026-09-21) */
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) td:nth-child(1){cursor:pointer}
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) td:nth-child(1)::before{
      content:"▸"; order:2; flex:none; font-size:9px; color:var(--mute); margin-left:2px;
    }
    :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand):has(+ tr.expand) td:nth-child(1)::before{content:"▾"}

    /* ===== 근무표: 폰에서는 사람 하나가 카드 하나 =====
       열이 최소 7개에 주차마다 4개씩 더 붙는다(5주면 27열, 최소 폭 900px).
       폰에서는 표를 옆으로 밀어야 보이는데, 미는 동안 왼쪽 이름이 어느 줄이었는지
       놓친다. 주차별은 눌러서 펼치는 안으로 옮기고, 카드에는 달 전체 숫자만 둔다. */
    #wkTable{min-width:0;display:block}
    #wkTable thead{display:none}
    #wkTable tbody,#wkTable tfoot{display:block}
    /* 순번·근무자 두 열을 왼쪽에 붙여두던 규칙을 푼다 — 카드에는 밀 것이 없다 */
    #wkTable th:nth-child(1),#wkTable td:nth-child(1):not([colspan]),
    #wkTable th:nth-child(2),#wkTable td:nth-child(2):not([colspan]){
      position:static;left:auto;width:auto;min-width:0;box-shadow:none;padding-right:0;background:none}
    #wkTable .wk-detail .wk-weeks{display:flex}

    #wkTable tbody tr.wk-row,#wkTable tfoot tr{
      display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px;
      background:var(--card);border:1px solid var(--line);border-radius:12px;
      padding:12px 14px;margin:0 0 10px}
    #wkTable tfoot tr{background:var(--paper-2)}
    #wkTable tbody tr.wk-row>td,#wkTable tfoot tr>td{
      display:flex;align-items:baseline;justify-content:space-between;gap:8px;
      border:0;padding:4px 0;text-align:right}
    /* 머리글이 없으니 칸마다 무슨 값인지 붙여준다 */
    #wkTable tbody tr.wk-row>td::before,#wkTable tfoot tr>td::before{
      content:attr(data-lbl);font-size:11px;font-weight:600;color:var(--mute);
      text-align:left;white-space:nowrap}

    /* 주차 칸(wkw)과 순번은 감춘다 — 주차는 펼침 안 요약으로 대신한다.
       바로 위 'display:flex' 와 무게를 맞춰야 이긴다(선택자를 짧게 쓰면 진다). */
    #wkTable tbody tr.wk-row>td.wkw,#wkTable tbody tr.wk-row>td.wk-no,
    #wkTable tfoot tr>td.wkw,#wkTable tfoot tr>td.wk-no{display:none}

    /* 이름과 '월 총 근무'를 위로 끌어올린다. 달 마감에서 먼저 찾는 두 가지다 */
    /* 이 둘도 위 'td' 규칙과 무게를 맞춰야 한다 — 짧게 쓰면 정렬이 도로 밀린다 */
    #wkTable tbody tr.wk-row>td.wk-name,#wkTable tfoot tr>td.wk-name{
      order:-2;grid-column:1/-1;justify-content:flex-start;gap:4px;text-align:left;
      font-size:15px;font-weight:800;padding:0 0 8px;border-bottom:1px solid var(--line-2)}
    #wkTable tbody tr.wk-row>td.wk-key,#wkTable tfoot tr>td.wk-key{
      order:-1;grid-column:1/-1;padding:8px 0 6px;
      font-size:22px;font-weight:800;letter-spacing:-.02em}
    #wkTable .wk-key::before{font-size:11.5px}
    /* 합계 줄의 '4주 평균'은 값이 없다 — 이름표만 남으면 덜 만든 것처럼 보인다 */
    #wkTable tfoot tr>td:empty{display:none}

    /* 펼침 — 카드 바로 밑에 이어 붙는다 */
    #wkTable tbody tr.wk-row:has(+ .wk-detail){margin-bottom:0;border-radius:12px 12px 0 0;border-bottom:0}
    #wkTable tbody tr.wk-detail{display:block;margin:0 0 10px}
    #wkTable tbody tr.wk-detail>td{display:block;border:1px solid var(--line);border-top:0;
      border-radius:0 0 12px 12px;padding:10px 14px 12px}


    /* ===== 매출 리포트: 폰에서는 기간 하나가 카드 하나 =====
       열이 여섯이라 폰에서는 564px 이 되어 옆으로 밀어야 했다. 근무표와 같은 꼴로 둔다. */
    #rpTable{min-width:0;display:block}
    #rpTable thead{display:none}
    #rpTable tbody,#rpTable tfoot{display:block}
    #rpTable tbody tr,#rpTable tfoot tr{
      display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px;
      background:var(--card);border:1px solid var(--line);border-radius:12px;
      padding:12px 14px;margin:0 0 10px}
    #rpTable tfoot tr{background:var(--paper-2)}
    /* tfoot 은 '.rp-sum' 을 넣어야 위쪽 '#rpTable tfoot .rp-sum td' 를 이긴다.
       그 규칙이 칸마다 굵은 윗선을 그어서, 카드에서는 줄이 어지럽게 남았다. */
    #rpTable tbody tr>td,#rpTable tfoot tr.rp-sum>td{
      border-top:0;display:flex;align-items:baseline;justify-content:space-between;gap:8px;
      border:0;padding:4px 0;text-align:right}
    #rpTable tbody tr>td::before,#rpTable tfoot tr.rp-sum>td::before{
      content:attr(data-lbl);font-size:11px;font-weight:600;color:var(--mute);
      text-align:left;white-space:nowrap}
    /* 기간과 실매출을 위로. 리포트에서 먼저 찾는 두 가지다.
       (근무표와 같은 이유로 선택자 무게를 위 'td' 규칙에 맞춘다) */
    #rpTable tbody tr>td.nm,#rpTable tfoot tr.rp-sum>td.nm{
      order:-2;grid-column:1/-1;justify-content:flex-start;gap:6px;text-align:left;
      font-size:15px;font-weight:800;padding:0 0 8px;border-bottom:1px solid var(--line-2)}
    #rpTable tbody tr>td.rp-key,#rpTable tfoot tr.rp-sum>td.rp-key{
      order:-1;grid-column:1/-1;padding:8px 0 6px;
      font-size:22px;font-weight:800;letter-spacing:-.02em}
    #rpTable tbody tr>td.rp-key::before,#rpTable tfoot tr.rp-sum>td.rp-key::before{font-size:11.5px}
    /* '데이터가 없어요' 한 칸짜리 줄은 카드로 만들지 않는다 */
    #rpTable tbody tr>td[colspan]{grid-column:1/-1;display:block;text-align:left}

    /* ===== 시간대별 매출표는 표로 둔다 =====
       14시간이 흐름으로 읽혀야 하는 것이라 카드로 쪼개면 오히려 못 읽는다.
       대신 날짜 칸을 왼쪽에 붙여둔다 — 옆으로 미는 동안 어느 날 줄인지 놓치지 않게.
       (재고·근무표에서 쓰던 것과 같은 방식) */
    #hourlyTable table th:first-child,#hourlyTable table td:first-child,
    #hourlyTable tr > :first-child{
      position:sticky;left:0;z-index:2;background:var(--paper);
      box-shadow:1px 0 0 var(--line), 7px 0 7px -7px rgba(0,0,0,.22)}

  }

    /* 마감 사진은 폰에서도 표로 찍는다.
       카드로 찍으면 품목 하나가 275px 라 44줄이 11,629px 가 되고, 사진 한 변
       한계(4096) 를 훌쩍 넘겨 배율이 0.33 까지 떨어진다 — 읽을 수 없는 사진이 된다.
       표로 찍으면 예전 높이 그대로다. 사진은 훑어보는 기록이지 적는 화면이 아니다. */
    /* 폰 카드 규칙은 위에서 사진 찍을 땐 꺼진다(:root:not(.capturing)) — 폰 사진도 PC 표 그대로 찍힌다.
       예전엔 여기서 카드 규칙을 하나씩 되돌렸는데 덜 되돌려져 선이 사라지고 이름이 위로 붙었다(2026-09-22). */
    .capturing #stockTable .safebar{display:none}
    .capturing #stock .card{width:max-content;min-width:100%}

  /* ===== 앱으로 설치했을 때 =====
     홈 화면에서 열면 브라우저 껍데기가 없어져 화면 끝까지 쓴다. 그러면 아이폰의
     노치·홈 인디케이터, 안드로이드의 제스처 바 자리에 내용이 깔린다.
     viewport-fit=cover 로 그 자리까지 받은 뒤 여기서 비워준다. */
  header.top{padding-top:env(safe-area-inset-top)}
  .wrap{padding-left:calc(22px + env(safe-area-inset-left));
        padding-right:calc(22px + env(safe-area-inset-right))}
  .shotbtn{bottom:calc(20px + env(safe-area-inset-bottom));
           right:calc(16px + env(safe-area-inset-right))}
  .pendbar{bottom:calc(12px + env(safe-area-inset-bottom));
           left:calc(12px + env(safe-area-inset-left));
           right:calc(12px + env(safe-area-inset-right))}
  .toast{bottom:calc(26px + env(safe-area-inset-bottom))}
  .shot-overlay{padding-bottom:env(safe-area-inset-bottom)}
  /* 사진 저장 단추 줄이 노치·다이내믹 아일랜드 밑에 깔렸다(앱은 화면 끝까지 쓴다, 2026-09-22) — 위쪽 안전 영역만큼 띄운다 */
  .shot-overlay .so-bar{padding-top:calc(12px + env(safe-area-inset-top));
    padding-left:calc(16px + env(safe-area-inset-left));padding-right:calc(16px + env(safe-area-inset-right))}

  /* 설치 안내 띠 — 아직 홈 화면에 없을 때만 한 번 띄운다 */
  .installbar{position:fixed;left:calc(12px + env(safe-area-inset-left));
    right:calc(12px + env(safe-area-inset-right));
    bottom:calc(12px + env(safe-area-inset-bottom));z-index:190;
    display:flex;align-items:center;gap:10px;flex-wrap:wrap;
    background:var(--ink);color:var(--on-ink);border-radius:12px;padding:11px 14px;
    font-size:13px;font-weight:700;box-shadow:0 10px 28px -8px rgba(0,0,0,.45)}
  .installbar small{font-weight:600;opacity:.75;font-size:12px;display:block;margin-top:2px}
  .installbar .go{margin-left:auto;font-family:inherit;font-size:12.5px;font-weight:800;cursor:pointer;
    border:0;border-radius:9px;padding:7px 13px;background:var(--card);color:var(--ink)}
  .installbar .x{background:transparent;border:1px solid currentColor;color:var(--on-ink);opacity:.75;
    border-radius:9px;padding:7px 10px;font-family:inherit;font-size:12.5px;cursor:pointer}
  .capturing .installbar{display:none}

  /* 재고표 '차이' — 실사용(이월+입고−재고−폐기−이동) − 사용(POS). 0은 흐리게, 아니면 붉게 (시트의 차이 칸) */
  #stockTable .difcell{text-align:center}
  .dif{font-variant-numeric:tabular-nums;color:var(--mute);font-weight:600}
  .dif.none{color:var(--line)}
  .dif.bad{color:var(--pat);font-weight:800}

  /* 재고표 '사용' 계산 셀(읽기 전용) — 이월+입고−재고−폐기−이동 */
  #stockTable .usecell{text-align:center}
  .calc{font-variant-numeric:tabular-nums;font-weight:700;color:var(--ink-2)}

  /* 토스 비교 칸 숨김 — 판매(7열)·차이(8열): 머리글·구역머리글·본문 */
  #stockTable.nodiff thead th:nth-child(7),#stockTable.nodiff thead th:nth-child(8),
  #stockTable.nodiff tr.grouphead td:nth-child(7),#stockTable.nodiff tr.grouphead td:nth-child(8),
  #stockTable.nodiff .poscell,#stockTable.nodiff .difcell{display:none}

  /* ===== 앱(폰)에서 어긋나던 세 곳 — 2026-09-18 사장님 지적 =====
     1) 메뉴 탭이 오른쪽에서 잘렸다 — 옛 위 탭 줄은 왼쪽 메뉴로 바뀌어 지웠다(2026-11-03).
     2) 디톡스 판매 개수: 세부사항 칸이 없는 카드(nonote)만 숫자가 왼쪽으로 치우쳤다
        → 다른 카드와 같은 자리(가운데 칸)에 놓고, 세부사항 자리는 빈 칸으로 채운다.
     3) 재고 카드 버튼 줄(서버 연동·토스 비교 숨기기·시트 불러오기·편집·저장):
        글자가 두세 줄로 꺾여 높이가 제각각 → 한 줄 고정, 자리가 모자라면 버튼 단위로 다음 줄. */
  @media (max-width:640px){
    .card-bar .rhs{flex-wrap:wrap;gap:8px}
    .card-bar .rhs .btn{white-space:nowrap;padding:8px 12px;font-size:12.5px;line-height:1.2}
    .card-bar .rhs .sync{white-space:nowrap;padding:6px 10px}
  }
  /* 재고 카드 버튼 줄(폰): 줄바꿈 위치가 글자 길이에 따라 들쭉날쭉했다 — 2026-09-21 사장님 지적.
     상태 표시는 맨 윗줄 왼쪽에 따로 두고, 버튼 넷은 같은 너비·같은 높이로 2×2 칸에 맞춘다. */
  @media (max-width:640px){
    #stock .card-bar .rhs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;width:100%;flex:1 1 100%}   /* 토스 비교 단추를 빼 셋 — 한 줄 */
    #stock .card-bar .rhs .sync{grid-column:1 / -1;justify-self:start}
    #stock .card-bar .rhs .btn{width:100%;min-height:40px;justify-content:center;text-align:center}
  }
  .memo-row.nonote .mv{flex:1 1 0;text-align:center;font-weight:600}
  .memo-row.nonote::after{content:"";flex:1.4 1 0;min-width:0}

  /* ===== 4) 상단 밝기 단추가 옆으로 눌려 납작해졌다 =====
     헤더가 flex 라 자리가 모자라면 34px 단추가 18px 로 줄었다(iPhone 16 Pro 폭). 줄어들지 않게 고정. */
  .theme-btn{flex:0 0 34px;min-width:34px}

  /* ===== 5) 생산일지 표를 폰에서는 카드로 =====
     11칸(680px)이라 폰(402px)에선 옆으로 밀어야 했다. 재고 표와 같은 방식으로 품목 하나가
     카드 하나. 머리글 대신 칸마다 ::before 로 이름을 붙인다. 표 자체(JS)는 손대지 않는다.
     줄 배치: 이름 / 생산·판매·재고·폐기 / 기부·이동·이동 매출 / 원가·유통가·판매가 */
  @media (max-width:640px){
    #bake .tbl-scroll{overflow:visible;margin:0;padding:0}
    #bakeTable,#bakeTable.edit{min-width:0;display:block}
    #bakeTable thead{display:none}
    #bakeTable tbody{display:block}
    #bakeTable tbody tr{
      display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;
      background:var(--card);border:1px solid var(--line);border-radius:12px;
      padding:11px 12px 10px;margin-bottom:8px;
    }
    #bakeTable tbody td,#bakeTable tbody td:first-child:not([colspan]){
      display:block;border:0!important;padding:0;text-align:left;white-space:nowrap;
      position:static;min-width:0;width:auto;box-shadow:none;background:transparent;
      font-size:15px;font-weight:700;color:var(--ink);
    }
    #bakeTable tbody td::before{
      display:block;font-size:10.5px;font-weight:700;color:var(--mute);letter-spacing:.02em;line-height:14px;margin-bottom:1px;
    }
    #bakeTable tbody td.nm{grid-column:1/-1;font-size:16px;padding-bottom:5px;border-bottom:1px solid var(--line-2)!important;white-space:normal}
    #bakeTable tbody td:nth-child(2)::before{content:"원가"}
    #bakeTable tbody td:nth-child(3)::before{content:"유통가"}
    #bakeTable tbody td:nth-child(4)::before{content:"판매가"}
    #bakeTable tbody td:nth-child(5)::before{content:"생산"}
    #bakeTable tbody td:nth-child(6)::before{content:"판매"}
    #bakeTable tbody td:nth-child(7)::before{content:"재고"}
    #bakeTable tbody td:nth-child(8)::before{content:"폐기"}
    #bakeTable tbody td:nth-child(9)::before{content:"기부"}
    #bakeTable tbody td:nth-child(10)::before{content:"이동"}
    #bakeTable tbody td:nth-child(11)::before{content:"이동 매출"}
    #bakeTable tbody td:nth-child(12)::before{content:"판매 매출"}
    #bakeTable tbody td:nth-child(5){grid-area:2/1}
    #bakeTable tbody td:nth-child(6){grid-area:2/2}
    #bakeTable tbody td:nth-child(7){grid-area:2/3}
    #bakeTable tbody td:nth-child(8){grid-area:2/4}
    #bakeTable tbody td:nth-child(9){grid-area:3/1}
    #bakeTable tbody td:nth-child(10){grid-area:3/2}
    #bakeTable tbody td:nth-child(11){grid-area:3/3}
    #bakeTable tbody td:nth-child(12){grid-area:3/4}
    #bakeTable tbody td:nth-child(2){grid-area:4/1}
    #bakeTable tbody td:nth-child(3){grid-area:4/2}
    #bakeTable tbody td:nth-child(4){grid-area:4/3/5/5}
    #bakeTable tbody td.dim,#bakeTable tbody td:nth-child(2),#bakeTable tbody td:nth-child(3){font-weight:500;color:var(--ink-2)}
    #bakeTable tbody td.srccell{background:transparent}
    #bakeTable tbody td .cinput,#bakeTable.edit tbody td input[type="number"].cinput,#bakeTable.edit tbody td input.cinput.move{width:100%;text-align:left}
  }

  /* ===== 폰 마감 숫자판 ===== */
  /* z-index 90 — .pendbar(200, '서버에 아직 안 올라간 날')·.installbar(190) 가 화면 아래에
     함께 떠 있으면 그 위에 숫자판이 깔려 '다음' 버튼을 가로챈다(실기기 확인 2026-09-21).
     한때 201 로 올려 해결했지만, 그러면 .staff-gate(200, 직원 코드 잠금 화면)보다도 위에 서게 된다 —
     숫자 입력 500ms 뒤 자동저장이 401 을 받으면 그 화면이 뜨는데, 숫자판에 가려 안 보이면 로그인이
     막힌 줄 모른 채 계속 입력하게 된다. 그래서 판은 낮게 두고, 부딪히는 하단 막대만 판이 떠 있는
     동안 숨긴다(어차피 불투명한 판이 그 자리를 덮으므로 — 아래 body.kpad-on 규칙). */
  .kpad{position:fixed;left:0;right:0;bottom:0;z-index:90;background:var(--paper-2);
        border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
  .kpad[hidden]{display:none}
  .kpad-hd{display:flex;justify-content:space-between;align-items:baseline;gap:10px;
           padding:7px 12px;border-bottom:1px solid var(--line);font-size:13px;color:var(--ink)}
  .kpad-hd b{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .kpad-hd span{font-size:11px;color:var(--mute);font-weight:500;white-space:nowrap}
  .kpad-keys{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:8px}
  .kpad-keys button{appearance:none;background:var(--card);border:1px solid var(--line);
    border-radius:9px;height:46px;font:inherit;font-size:19px;font-weight:600;color:var(--ink);cursor:pointer}
  .kpad-keys button:active{background:var(--paper)}
  .kpad-keys .kpad-back{font-size:17px;color:var(--mute)}
  .kpad-keys .kpad-next{background:var(--jade);border-color:var(--jade);color:var(--on-ink);font-size:15px;font-weight:800}
  body.kpad-on{padding-bottom:calc(300px + env(safe-area-inset-bottom))}   /* 판에 가려 마지막 줄을 못 보는 일이 없게 */
  /* 판(z90)보다 위(200)에 떠서 '다음' 키를 가로채던 막대들 — 어차피 불투명한 판이
     그 자리를 덮으므로 판이 열려 있는 동안은 그냥 숨긴다. .staff-gate(200) 는 로그인이
     막혔다는 뜻이라 반대로 판 위에 그대로 떠 있어야 하므로 여기서 건드리지 않는다. */
  body.kpad-on .pendbar, body.kpad-on .installbar{display:none}

/* ===== 재고 표 — 모바일에서 표가 이리저리 움직이던 것 + 머리글 고정 (사장님 2026-09-22) =====
   태블릿(아이패드) 폭에선 표가 제 스크롤 상자(높이 70vh, 가로도 넘침) 안에 들어 있어서, 손가락으로 잡으면
   페이지 대신 표 속이 위아래·옆으로 따로 밀렸다. 태블릿에선 상자를 풀고 페이지째 내려가게 한다.
   표가 화면 폭에 들어가도록 안전 칸을 빼고(폰 화면에서도 뺐다) 품목 칸을 조금 줄인다.
   머리글은 위 줄(.topbar) 바로 아래(--stick-top)에 붙인다 — 내려도 입고·사용·재고·폐기 이름이 보인다. */
@media (min-width:641px) and (max-width:1100px){
  :root:not(.capturing) #stock .tbl-scroll{max-height:none;overflow:visible;margin:0;padding:0}
  :root:not(.capturing) #stockTable{min-width:0;width:100%}
  :root:not(.capturing) #stockTable thead th{top:var(--stick-top,0px)}
  :root:not(.capturing) #stockTable th:nth-child(11),
  :root:not(.capturing) #stockTable td:nth-child(11){display:none}       /* 안전 (기부 칸이 9번 이동 뒤에 들어와 한 칸씩 밀림, 2026-11-08) */
  :root:not(.capturing) #stockTable .cinput.name{font-size:15px;width:148px}
  /* 품목 칸 최소 196px(가로로 밀 때 이름이 눌리지 않게 둔 것)을 풀어준다 — 여기선 가로로 밀 일이 없다 */
  :root:not(.capturing) #stockTable th:first-child,
  :root:not(.capturing) #stockTable td:first-child:not([colspan]){min-width:156px}
  :root:not(.capturing) #stockTable .substock .cinput{width:46px}      /* 소분·PK 두 칸 — 재고 칸이 150px 로 벌어지던 것 */
}
/* 폰: 머리글을 줄과 똑같은 한 줄로 되살려 붙인다 (줄 순서 = 품목 · 입고 · 사용 · 재고 · 폐기) */
@media (max-width:640px){
  :root:not(.capturing) #stockTable thead{display:block;position:sticky;top:var(--stick-top,0px);z-index:5}
  :root:not(.capturing) #stockTable thead tr{
    display:flex;align-items:center;gap:5px;padding:7px 2px;
    background:var(--head);border-radius:8px;
  }
  :root:not(.capturing) #stockTable thead th{
    display:none;position:static;padding:0;border:0!important;box-shadow:none;background:transparent;
    font-size:11.5px;font-weight:700;letter-spacing:0;   /* 글자색은 위 PC 머리글 규칙(흰 글자)을 그대로 받는다 */text-align:center;white-space:nowrap;
  }
  :root:not(.capturing) #stockTable thead th:nth-child(1){display:block;flex:1;min-width:0;text-align:left;padding-left:8px}
  :root:not(.capturing) #stockTable thead th:nth-child(3),
  :root:not(.capturing) #stockTable thead th:nth-child(5),
  :root:not(.capturing) #stockTable thead th:nth-child(6){display:block;flex:none;width:38px}
  :root:not(.capturing) #stockTable thead th:nth-child(4){display:block;flex:none;width:32px}
  /* 머리글 순서 = 줄 순서 */
  :root:not(.capturing) #stockTable thead th:nth-child(3){order:1}   /* 입고(생산) */
  :root:not(.capturing) #stockTable thead th:nth-child(4){order:2}   /* 사용 */
  :root:not(.capturing) #stockTable thead th:nth-child(5){order:3}   /* 재고 */
  :root:not(.capturing) #stockTable thead th:nth-child(6){order:4}   /* 폐기 */
  /* '생산·입고' 는 38px 에 안 들어간다 — 폰 머리글에선 '입고' 로 */
  :root:not(.capturing) #stockTable thead th:nth-child(3){font-size:0}
  :root:not(.capturing) #stockTable thead th:nth-child(3)::after{content:"입고";font-size:11.5px}
  /* 소분·PK(해동·생동) 두 칸 품목 — 38px 재고 칸에 두 입력칸이 옆으로 붙어 65px 로 넘쳤다.
     위아래로 쌓고 이름표는 숨긴다(빈 칸엔 흐린 '소분'·'PK', 숫자판을 열면 머리에 이름이 뜬다). */
  :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) .substock{
    display:flex;flex-direction:column;gap:3px;align-items:stretch;justify-content:center}
  :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) .substock .sublbl{display:none}
  :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) .substock input.cinput{
    flex:none;width:38px;min-width:0;height:22px;padding:0 2px;font-size:13px;text-align:center}
  :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) .substock input.cinput::placeholder{font-size:9.5px;color:var(--mute)}
  /* 두 칸 품목은 사용이 입력칸으로 그려져 크게 튀었다 — 다른 줄의 사용 숫자와 같은 모양으로 */
  :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) td:nth-child(4) input.cinput{
    width:32px;min-width:0;padding:0;border:0;background:transparent;font-size:13px;font-weight:700;color:var(--ink-2);text-align:center}
  /* 줄 순서도 입고 → 사용 → 재고 → 폐기 (사장님이 부른 순서, PC 표와 같은 순서) */
  :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) > td:nth-child(3){order:1}
  :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand) > td:nth-child(4){order:2}
}

/* ===== 재고 탭 다듬기 (사장님 2026-09-22) ===== */
/* 재고 탭 안 날짜 이동 — 표를 내려 본 채로 날짜를 넘긴다 */
.stock-date{display:flex;align-items:center;gap:8px;margin:8px 0 2px}
.stock-date .btn{padding:5px 11px;min-height:32px;font-size:12px}
.stock-date b{font-size:15px;min-width:92px;text-align:center}
.capturing .stock-date .btn{display:none}      /* 사진엔 날짜만 남긴다 */

/* 칸 구분선을 진하게 — 칸 사이 세로선·줄 사이 가로선 모두 (PC·태블릿 표, 폰 한 줄 배치) */
#stockTable th + th, #stockTable td + td{border-left-color:var(--grid)}
#stockTable tbody td{border-bottom-color:var(--grid)}
/* 재고표 바깥 테두리(관리자 2026-11-06) — 시트처럼 표 둘레를 닫는다. 머리글은 고정이라 위 선은 머리글 칸에. 폰 한 줄 배치는 줄 카드라 뺀다 */
#stockTable{border:1px solid var(--grid)}
/* 두 칸·세 칸 품목 안 구분선(관리자 2026-11-06) — 해동|냉동 · 소분|PK 는 세로선, 원팩/자투리 · 소분·PK/자투리 는 가로선 */
#stockTable .substock .seg{display:inline-flex;align-items:center;justify-content:center;gap:6px;flex:1 1 0;align-self:stretch;padding:4px 6px}
#stockTable .substock .seg + .seg{border-left:1px solid var(--grid)}
/* 나뉜 칸은 칸 테두리까지 선이 닿게 — 그 칸만 안쪽 여백을 없애고 속을 칸 높이·너비 가득(td height:1px + 100% 는 표 칸 높이를 물려받는 방법) (관리자 2026-11-06 '구분선이 외곽선이랑 끝까지 연결이 안 돼') */
@media (min-width:641px){
  :root:root #stockTable td:has(> .jatwrap), :root:root #stockTable td:has(> .substock .seg){padding:0;height:1px}   /* :root:root — 넓은 화면 칸 여백 규칙(:root:is(.wide) #stockTable.edit td)보다 세게 */
  #stockTable td > .jatwrap, #stockTable td > .substock:has(.seg){height:100%;width:100%}
  #stockTable .substock:has(.seg){gap:0;align-items:stretch}
}
:root.capturing:root #stockTable td:has(> .jatwrap), :root.capturing:root #stockTable td:has(> .substock .seg){padding:0;height:1px}
.capturing #stockTable td > .jatwrap, .capturing #stockTable td > .substock:has(.seg){height:100%;width:100%}
.capturing #stockTable .substock:has(.seg){gap:0;align-items:stretch}
#stockTable .jatwrap{display:flex;flex-direction:column;align-items:stretch;gap:0}
#stockTable .jatwrap > .substock{flex:1 1 0;justify-content:center;padding:4px 6px}
#stockTable .jatwrap > .substock:has(.seg){padding:0}
#stockTable .jatwrap > .substock + .substock{border-top:1px solid var(--grid)}
/* 원팩·자투리 숫자를 세로로 맞춘다 — 이름표 너비를 같게(자투리 세 글자 기준) */
#stockTable .jatwrap > .substock > .sublbl{min-width:3.4em;text-align:right}
@media (max-width:640px){   /* 폰 한 줄 배치는 예전 그대로 — 위 나뉜 칸 모양을 되돌린다 */
  :root:not(.capturing) #stockTable .substock .seg{display:contents}
  :root:not(.capturing) #stockTable .jatwrap{display:inline-flex;width:auto;align-items:flex-end;gap:4px}
  :root:not(.capturing) #stockTable .jatwrap > .substock{flex:none;padding:0;border-top:0}
  :root:not(.capturing) #stockTable .jatwrap > .substock > .sublbl{min-width:0}
}
/* 토스 판매 비교 표 바깥 테두리 — 재고표와 같게 */
.pos-cmp table{border:1px solid var(--grid)}
#stockTable thead th{box-shadow:inset 0 1px 0 var(--grid)}
@media (max-width:640px){ :root:not(.capturing) #stockTable{border:0} :root:not(.capturing) #stockTable thead th{box-shadow:none} }
@media (max-width:640px){
  :root:not(.capturing) #stockTable tbody tr:not(.grouphead):not(.expand){border-bottom-color:var(--grid)}
}

/* 태블릿: 상태 칸을 빼고 폰처럼 이름 앞 점으로 — 발주 빨강 · 주의 주황 · 충분 초록(기준 있을 때만) */
@media (min-width:641px) and (max-width:1100px){
  :root:not(.capturing) #stockTable th:nth-child(13),
  :root:not(.capturing) #stockTable td:nth-child(13){display:none}      /* 상태 */
  :root:not(.capturing) #stockTable tbody tr:not(.grouphead) td:first-child:not([colspan]){padding-left:20px}
  :root:not(.capturing) #stockTable tbody tr:not(.grouphead) td:first-child:not([colspan])::after{
    content:"";position:absolute;left:8px;top:50%;width:7px;height:7px;margin-top:-3.5px;border-radius:50%;background:transparent}
  :root:not(.capturing) #stockTable tbody tr.lv-ok   td:first-child:not([colspan])::after{background:var(--ok)}
  :root:not(.capturing) #stockTable tbody tr.lv-warn td:first-child:not([colspan])::after{background:var(--warn)}
  :root:not(.capturing) #stockTable tbody tr.lv-bad  td:first-child:not([colspan])::after{background:var(--bad)}
  /* 상태 칸이 빠진 자리 — 숫자 칸 폭을 고르게 나눠 줄을 맞춘다 */
  :root:not(.capturing) #stockTable{table-layout:fixed}
  :root:not(.capturing) #stockTable th:first-child{width:24%}
  :root:not(.capturing) #stockTable th:nth-child(5){width:20%}     /* 재고 — 소분·PK 두 칸 품목이 들어가게 */
  /* 나머지 숫자 칸도 폭을 준다 — 구역 줄(제빵·원부재료)이 13칸을 걸쳐 숨은 칸(토스 판매·차이·안전·단위·상태·편집)도 열로 남아,
     폭 없는 그 칸들이 남는 폭을 다 가져가 표 오른쪽이 비고 숫자 칸이 찌그러졌다(관리자 2026-11-03 "창 크기 줄였을 때 찌그러짐").
     편집 중엔 편집 도구 칸이 남는 폭을 써야 해서 그대로 둔다 */
  :root:not(.capturing) #stockTable:not(.editing) th:not(:first-child):not(:nth-child(5)){width:11%}
}
/* 두 칸 품목의 흐린 이름(placeholder)은 폰 전용 — 태블릿·PC 는 옆에 이름표(sublbl)가 이미 있다 */
@media (min-width:641px){ #stockTable .substock input.cinput::placeholder{color:transparent} }

/* ===== 재고 편집 도구: 구역(제빵/원·부재료) · ▲▼ · 삭제 (사장님 2026-09-22) ===== */
#stockTable .rowtools{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
#stockTable .lot-in{width:52px;padding:4px 6px;border:1px solid var(--line);border-radius:7px;background:var(--card);color:var(--ink);font:inherit;font-size:12px;text-align:right}
#stockTable .grp-sel{font:inherit;font-size:12px;padding:3px 4px;border:1px solid var(--line);border-radius:6px;background:var(--card);color:var(--ink)}
#stockTable .row-mv{min-width:30px;min-height:30px;border:1px solid var(--line);border-radius:6px;background:var(--card);color:var(--ink);font-size:11px;cursor:pointer}
/* 폰 한 줄 배치에선 편집 도구 칸이 숨어 있어 지우거나 옮길 수 없었다 — 편집 중엔 줄 아래에 한 줄로 */
@media (max-width:640px){
  :root:not(.capturing) #stockTable.editing tbody tr:not(.grouphead):not(.expand){flex-wrap:wrap}
  :root:not(.capturing) #stockTable.editing tbody tr:not(.grouphead):not(.expand) > td.delcell{
    display:block;order:9;flex:1 1 100%;text-align:right;padding-top:4px}
}

/* ===== 생산일지 편집 — 입력칸 ===== */
#bakeTable.editing .bkin{width:56px;text-align:center;font:inherit;font-weight:700;padding:5px 4px;border:1px solid var(--grid);border-radius:7px;background:var(--card);color:var(--ink)}
#bakeTable.editing .bkmove{white-space:nowrap}
#bakeTable.editing .bkdest{font:inherit;font-size:11.5px;margin-left:4px;padding:3px 2px;border:1px solid var(--line);border-radius:6px;background:var(--card);color:var(--ink)}
#bakeEdit.on{background:var(--ink);color:var(--paper)}
/* 폰 카드에선 이동 칸이 좁다 — 수량과 보낸 곳을 위아래로 */
@media (max-width:640px){
  #bakeTable.editing .bkmove{white-space:normal;display:flex;flex-direction:column;align-items:flex-start;gap:4px}
  #bakeTable.editing .bkdest{margin-left:0;max-width:100%}
}
/* 마감 사진(폰): 공유 시트로 '이미지 저장' — 크게 누르기 쉬운 단추 (2026-09-22) */
.shot-overlay .so-save{flex:1;min-height:44px;border:0;border-radius:10px;background:#fff;color:#111;font:inherit;font-size:15px;font-weight:800;cursor:pointer}

/* 마감 사진 — 폰에서 생산일지를 카드 모양 그대로 찍어 폭 200px 남짓의 길쭉한 사진(읽을 수 없음)이 됐다(2026-09-22 확인).
   재고 표처럼 사진 찍는 동안만 표 모양으로 되돌린다. 사진은 훑어보는 기록이지 적는 화면이 아니다. */
@media (max-width:640px){
  .capturing #bake .tbl-scroll{overflow:visible;margin:0;padding:0}
  .capturing #bake .card{width:max-content;min-width:100%}
  .capturing #bakeTable{display:table;min-width:640px}
  .capturing #bakeTable thead{display:table-header-group}
  .capturing #bakeTable tbody{display:table-row-group}
  .capturing #bakeTable tbody tr{display:table-row;background:none;border:0;border-radius:0;padding:0;margin:0}
  .capturing #bakeTable tbody td,
  .capturing #bakeTable tbody td:first-child:not([colspan]){
    display:table-cell;padding:8px 9px;text-align:center;vertical-align:middle;white-space:nowrap;
    font-size:13.5px;border-bottom:1px solid var(--line-2)!important}
  .capturing #bakeTable tbody td::before{content:none}
  .capturing #bakeTable tbody td.nm{font-size:14px;text-align:left}
}
/* 사진 찍는 칸(패널) 자체가 화면 폭(331px)이라 그보다 넓은 표(생산일지 730px·재고 520px+)의 오른쪽이 사진에서 잘렸다.
   찍는 동안만 패널을 내용 폭만큼 넓힌다 (캡처 엔진은 찍는 요소의 폭으로 그림을 자른다). */
@media (max-width:640px){
  /* max-content 로 두면 긴 글줄(특이사항 등)까지 한 줄로 펴져 재고 패널이 1600px 가 넘었다 — 표에 맞춘 폭으로 */
  .capturing #bake{width:max(100%,740px)}
  .capturing #stock{width:max(100%,910px)}
  .capturing #product{width:max(100%,600px)}
  .capturing #product .tbl-scroll{overflow:visible}
}
@media (max-width:640px){
}

/* 실시간 같이 보기 — 적는 중에 다른 기기가 고쳤을 때 알림 띠 (덮어쓰지 않는다) */
.livebar{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:185;display:flex;align-items:center;gap:10px;
  padding:12px 14px;border-radius:12px;background:var(--ink);color:var(--paper);font-size:13.5px;font-weight:600;box-shadow:0 10px 30px -10px rgba(0,0,0,.4)}
.livebar span{flex:1}
.livebar .lb-go{border:0;border-radius:8px;padding:8px 12px;background:var(--paper);color:var(--ink);font:inherit;font-weight:800;cursor:pointer}
.livebar .lb-x{border:0;background:transparent;color:var(--paper);font:inherit;font-size:15px;cursor:pointer;padding:4px 6px}
body.kpad-on .livebar{display:none}

/* ===== 변경 기록 (2026-09-23 → 2026-11-09 메뉴로) ===== */
.chg-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.chg-d{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--mute)}
.chg-d input,.chg-q{font:inherit;font-size:14px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:var(--card);color:var(--ink)}
.chg-q{flex:1;min-width:200px}
.chg-list{display:flex;flex-direction:column;gap:0;margin-top:6px}
.chg-day{font-size:12.5px;font-weight:800;color:var(--ink-2);padding:14px 2px 6px;border-bottom:1px solid var(--line)}
.chg-day:first-child{padding-top:4px}
.chg-row{display:grid;grid-template-columns:52px 1fr;gap:10px;padding:7px 2px;border-top:1px solid var(--line-2);font-size:13px;line-height:1.45}
.chg-day+.chg-row,.chg-row:first-child{border-top:0}
.chg-t{color:var(--mute);font-variant-numeric:tabular-nums;padding-top:1px}
.chg-who{font-weight:700}
.chg-kind{color:var(--mute)}
.chg-item{font-weight:600}
.chg-val{font-variant-numeric:tabular-nums}
.chg-val b{font-weight:800}
.chg-empty{color:var(--mute);font-size:13px;padding:8px 2px}
.chg-err{color:var(--bad);font-weight:700}

/* ---------- 계정 관리 새 창(/?accounts=1, 2026-10-15) — 사람이 많아도 찾기·묶음으로, 권한은 단추로 ---------- */
.acct-page{position:fixed;inset:0;z-index:220;background:var(--paper);overflow-y:auto;-webkit-overflow-scrolling:touch}
.acct-page .ap-wrap{max-width:760px;margin:0 auto;padding:20px 16px 48px}
.acct-page .ap-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.acct-page h1{font-size:20px;font-weight:800;margin:0}
.acct-page .ap-n{color:var(--mute);font-size:13px;font-weight:700;margin-right:auto}
.acct-page .ap-ghost{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--ink);font:inherit;font-size:12.5px;font-weight:700;border-radius:999px;padding:7px 13px;cursor:pointer;text-decoration:none}
.acct-page .ap-msg{color:var(--mute);font-size:14px;line-height:1.7;padding:24px 4px}
.acct-page .ap-msg a{color:var(--ink);font-weight:700}
.acct-page .ap-q{width:100%;box-sizing:border-box;font:inherit;font-size:15px;border:1px solid var(--line);border-radius:12px;padding:11px 14px;background:var(--card);color:var(--ink)}
.acct-page .ap-chips{display:flex;gap:6px;overflow-x:auto;padding:10px 0 12px;scrollbar-width:none}
.acct-page .ap-chips::-webkit-scrollbar{display:none}
.acct-page .ap-chips button,.acct-page .ap-seg button,.crewadm-sub button{appearance:none;flex:0 0 auto;border:1px solid var(--line);background:var(--card);color:var(--ink-2);font:inherit;font-size:13px;font-weight:700;border-radius:999px;padding:7px 13px;cursor:pointer;min-height:36px}
.acct-page .ap-chips button span{color:var(--mute);font-weight:600;margin-left:2px}
.acct-page .ap-chips button[aria-pressed="true"],.acct-page .ap-seg button[aria-pressed="true"],.crewadm-sub button[aria-pressed="true"]{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}
.acct-page .ap-chips button[aria-pressed="true"] span{color:inherit;opacity:.75}
.acct-page .ap-seg button:disabled{opacity:.35;cursor:not-allowed}
.acct-page .ap-list{border:1px solid var(--line-2);border-radius:14px;overflow:hidden;background:var(--card)}
.acct-page .ap-row + .ap-row{border-top:1px solid var(--line-2)}
.acct-page .ap-head{appearance:none;border:0;background:none;color:inherit;font:inherit;text-align:left;width:100%;display:flex;align-items:center;gap:10px;padding:12px 14px;cursor:pointer}
.acct-page .ap-head:hover{background:var(--paper-2)}
.acct-page .ap-who{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.acct-page .ap-who b{font-size:14.5px}
.acct-page .ap-who small{color:var(--mute);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acct-page .ap-me{vertical-align:2px;margin-left:4px;font-size:10.5px;font-weight:800;border:1px solid var(--line);border-radius:999px;padding:0 6px;color:var(--mute)}
.acct-page .ap-badge{align-self:flex-start;max-width:100%;margin-top:4px;font-size:12px;font-weight:700;color:var(--ink-2);border:1px solid var(--line);border-radius:999px;padding:3px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acct-page .ap-badge.mst{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}
.acct-page .ap-badge.wait{color:var(--warn);background:var(--warn-soft);border-color:transparent}
.acct-page .ap-badge.none{color:var(--mute)}
.acct-page .ap-chev{color:var(--mute);font-size:18px;transition:transform .15s}
.acct-page .ap-row.open .ap-chev{transform:rotate(90deg)}
.acct-page .ap-row.open{background:var(--paper-2)}
.acct-page .ap-ed{padding:2px 14px 16px}
.acct-page .ap-lbl{font-size:12px;font-weight:800;color:var(--ink);margin:12px 0 6px}
.acct-page .ap-lbl small{font-weight:500;color:var(--mute);margin-left:6px}
.acct-page .ap-seg{display:flex;gap:6px;flex-wrap:wrap}
.acct-page .ap-prev{margin-top:14px;font-size:13px;color:var(--ink-2)}
.acct-page .ap-err{color:var(--warn);font-weight:700}
.acct-page .ap-act{display:flex;gap:8px;margin-top:12px;align-items:center}
.acct-page .ap-save{appearance:none;border:0;background:var(--ink);color:var(--on-ink);font:inherit;font-weight:800;font-size:14px;border-radius:10px;padding:10px 22px;cursor:pointer}
.acct-page .ap-save:disabled{opacity:.35;cursor:not-allowed}
.acct-page .ap-del{margin-left:auto;white-space:nowrap;appearance:none;border:1px solid var(--bad-soft);background:var(--card);color:var(--bad);font:inherit;font-size:12.5px;font-weight:700;border-radius:10px;padding:9px 13px;cursor:pointer}
.acct-page .ap-del:disabled{opacity:.35;cursor:not-allowed}
.acct-page .ap-note{margin-top:10px;font-size:12px;color:var(--mute)}
body.acct-mode{overflow:hidden}   /* 밑의 대시보드가 넓어 가로 스크롤이 생기지 않게 — 계정 관리 창은 스스로 스크롤 */
.acct-page .ap-req{margin:2px 0 6px;padding:12px 14px;border-radius:12px;background:var(--warn-soft);color:var(--ink);font-size:13px;line-height:1.6}   /* 크루 기록 연결 신청 — 승인할 일 */
.acct-page .ap-req small{color:var(--ink-2)}

/* 직원 관리 — 크루 허브 관리자 화면(iframe). 화면 높이에 맞춰 길게, 안에서 스크롤 */
#crewadm .section-lead{display:flex;align-items:center;gap:10px}
#crewadm .crewadm-sub{display:flex;gap:6px;margin:0 0 12px}
#crewadm .crewadm-sub[hidden]{display:none}
.acct-page.acct-inline{position:static;inset:auto;z-index:auto;background:none;overflow:visible}   /* 인사 관리 › 계정 · 권한 — 패널 안에 */
.acct-page.acct-inline .ap-wrap{max-width:960px;margin:0;padding:0 0 24px}

/* ==STAFF-CSS== 직원 관리 2단계 — 크루 허브 관리자 화면 스타일을 #staffDash 아래로 가둬 옮김(크루 허브 <style> 352-353·358-773·1262-1297).
   크루 허브처럼 밝은 카드 위에 그린다(크루 허브 색이 박혀 있어 어두운 화면 색과 섞지 않는다). */
#staffDash{--bg:#FFFFFF;--ink:#0A0A0A;--gray:#9B9B9B;--gray2:#5F5F5F;--line:#E7E7E7;--soft:#F5F5F4;--mut:#C2C2C2;--warn:#B00020;--full:#EDEDEC;--gold:#C99A1E;--goldbg:#FBF2D8;--goldink:#7A5B00;--card:#fff;
  background:#fff;color:var(--ink);border:1px solid var(--line-2,#e7e7e7);border-radius:14px;padding:4px 22px 24px;line-height:1.6;letter-spacing:-0.012em;word-break:keep-all;overflow-wrap:break-word;color-scheme:light}
:where(#staffDash) *{box-sizing:border-box;margin:0;padding:0}
#staffDash[hidden],#staffDash [hidden]{display:none !important}
#staffDash .khead{padding-top:18px}
#staffDash #staffBody{max-width:1100px}
#staffDash .khead{display:flex;justify-content:space-between;align-items:baseline;padding:34px 0 0;font-size:11.5px;letter-spacing:.2em;color:var(--gray);font-weight:600;}
#staffDash .khead .pg{font-variant-numeric:tabular-nums;letter-spacing:.16em;}
#staffDash .rule{height:1px;background:var(--ink);margin:28px 0 4px;}
#staffDash .rule.soft{background:var(--line);}
#staffDash .field{padding:20px 0;border-bottom:1px solid var(--line);}
#staffDash .field:last-child{border-bottom:0;}
#staffDash .field > label.q{display:block;font-size:15px;font-weight:700;line-height:1.5;margin-bottom:5px;}
#staffDash .field .help{font-size:12.5px;color:var(--gray);margin-bottom:13px;line-height:1.65;}
#staffDash .field .help .ex{color:var(--gray2);}
#staffDash .req{color:var(--ink);font-weight:800;}
#staffDash .opt{font-weight:500;color:var(--gray);font-size:12px;}
#staffDash input[type=text],#staffDash input[type=number],#staffDash textarea{width:100%;font-family:inherit;font-size:15px;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 13px;transition:.15s;line-height:1.6;}
#staffDash input:focus,#staffDash textarea:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px rgba(10,10,10,.07);}
#staffDash textarea{resize:vertical;min-height:80px;line-height:1.7;}
#staffDash ::placeholder{color:var(--mut);}
#staffDash .chips{display:flex;flex-wrap:wrap;gap:8px;}
#staffDash .chips.col{flex-direction:column;}
#staffDash .chip{font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:10px;padding:11px 0;flex:1 1 auto;min-width:46px;text-align:center;transition:.13s;-webkit-tap-highlight-color:transparent;}
#staffDash .chip:hover{border-color:var(--ink);}
#staffDash .chip.on{background:var(--ink);border-color:var(--ink);color:#fff;}
#staffDash .chips.salary .chip{flex:1 1 28%;font-size:13px;}
#staffDash .chips.scale .chip{flex:1 1 auto;min-width:34px;padding:10px 0;font-size:13.5px;font-variant-numeric:tabular-nums;}
#staffDash .chip.wide{flex:1 1 100%;text-align:left;padding:13px 15px;}
#staffDash .scale-cap{display:flex;justify-content:space-between;font-size:11px;color:var(--gray);margin-top:8px;}
#staffDash .range{display:flex;align-items:center;gap:10px;margin-top:11px;}
#staffDash .range .box{position:relative;flex:1;}
#staffDash .range .box span{position:absolute;right:13px;top:50%;transform:translateY(-50%);color:var(--gray);font-size:13px;pointer-events:none;}
#staffDash .range .box input{padding-right:40px;text-align:right;font-variant-numeric:tabular-nums;}
#staffDash .range .tilde{color:var(--gray);font-weight:600;}
#staffDash .payest{border:1.5px solid var(--ink);border-radius:11px;padding:12px 14px;margin-bottom:14px;}
#staffDash .payest .pe-k{font-size:11px;letter-spacing:.06em;color:var(--gray);font-weight:700;}
#staffDash .payest .pe-k span{display:block;font-weight:500;margin-top:3px;letter-spacing:0;color:var(--gray);font-size:11.5px;line-height:1.5;}
#staffDash .payest .pe-row{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-top:8px;}
#staffDash .payest .pe-row .pe-lbl{font-size:12px;color:var(--gray2);font-weight:600;white-space:nowrap;}
#staffDash .payest .pe-row .pe-amt{font-size:16px;font-weight:800;letter-spacing:-.01em;font-variant-numeric:tabular-nums;text-align:right;}
#staffDash .payest .pe-row.off .pe-amt{font-size:11.5px;font-weight:500;color:var(--gray);}
#staffDash .myfold{margin-top:12px;border-top:1px solid var(--line);padding-top:10px;}
#staffDash .myfold>summary{font-size:11px;letter-spacing:.1em;color:var(--gray);font-weight:700;cursor:pointer;list-style:none;}
#staffDash .myfold>summary::-webkit-details-marker{display:none}
#staffDash .myfold>summary::after{content:' ▾';color:var(--mut);}
#staffDash .myfold[open]>summary::after{content:' ▴';}
#staffDash .myfold>summary{margin-bottom:4px;}
#staffDash .payest .pe-warn{margin-top:10px;padding-top:9px;border-top:1px dashed var(--warn);font-size:11.5px;color:var(--warn);font-weight:600;line-height:1.55;}
#staffDash .payest .pe-warn b{font-weight:800;}
#staffDash .branchHint{font-size:13px;color:var(--gray);padding:18px 0;text-align:center;border:1px dashed var(--line);border-radius:10px;}
#staffDash .bizHours{font-size:12px;color:var(--gray2);margin-bottom:12px;font-weight:600;letter-spacing:.01em;}
#staffDash .bizHours b{color:var(--ink);}
#staffDash .slotgrid{display:grid;gap:6px;}
#staffDash .sg-h{text-align:center;padding:6px 2px;font-size:12.5px;font-weight:700;}
#staffDash .sg-d{display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;cursor:pointer;border-radius:8px;transition:.12s;-webkit-tap-highlight-color:transparent;}
#staffDash .sg-d.sun{color:var(--gray2);}
#staffDash .sg-d:hover{background:var(--goldbg,#FBF2D8);}
#staffDash .sg-d.pref{background:var(--gold,#C99A1E);color:#fff;box-shadow:0 1px 4px rgba(201,154,30,.35);}
#staffDash .sg-d.pref.sun{color:#fff;}
#staffDash .sg-help{font-size:11.5px;color:var(--gray);margin:2px 0 8px;}
#staffDash .mnavwrap{margin:2px 0 12px;}
#staffDash .mnav{display:flex;align-items:center;justify-content:center;gap:12px;margin:0 0 12px;}
#staffDash .mnav .mnavb{width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--ink);font-size:19px;line-height:1;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.12s;-webkit-tap-highlight-color:transparent;}
#staffDash .mnav .mnavb:hover{border-color:var(--ink);background:var(--ink);color:#fff;}
#staffDash .mnav .mnavb:active{transform:scale(.92);}
#staffDash .mnav .mnavl{font-size:15px;font-weight:800;color:var(--ink);min-width:104px;text-align:center;font-variant-numeric:tabular-nums;}
#staffDash .mnav .mnavl i{display:inline-block;margin-left:5px;font-style:normal;font-size:10.5px;font-weight:700;color:var(--goldink,#7A5B00);background:var(--goldbg,#FBF2D8);border:1px solid var(--gold,#C99A1E);border-radius:20px;padding:1px 7px;vertical-align:2px;}
#staffDash .lockCard{text-align:center;padding:44px 24px;border:1px dashed var(--line);border-radius:16px;background:var(--card,#fff);font-size:34px;}
#staffDash .lockCard .lt{font-size:18px;font-weight:800;color:var(--ink);margin:12px 0 8px;}
#staffDash .lockCard .lb{font-size:13.5px;font-weight:500;color:var(--gray);line-height:1.6;}
#staffDash .applyClosed{background:#FDECEC;border:1px solid #F3B9B9;color:#A23A3A;border-radius:10px;padding:10px 12px;font-size:12.5px;line-height:1.55;margin:6px 0 10px;}
#staffDash .applyClosed b{color:#8E2B2B;}
#staffDash .closeBar{display:flex;flex-direction:column;gap:8px;margin:0 0 14px;padding:12px;background:var(--card,#fff);border:1px solid var(--line);border-radius:12px;}
#staffDash .closeBar .clbtn{text-align:left;font-size:13px;font-weight:700;padding:11px 13px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);cursor:pointer;transition:.12s;}
#staffDash .closeBar .clbtn.on{background:#FDECEC;border-color:#F3B9B9;color:#A23A3A;}
#staffDash .closeBar .clhint{font-size:11px;color:var(--gray);line-height:1.5;margin-top:2px;}
#staffDash .meta .pref{border:1px solid var(--gold,#C99A1E)!important;background:var(--goldbg,#FBF2D8);color:var(--goldink,#7A5B00)!important;}
#staffDash .slot{border:1px solid var(--line);border-radius:9px;text-align:center;cursor:pointer;min-height:46px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;transition:.12s;-webkit-tap-highlight-color:transparent;}
#staffDash .slot .rem{font-weight:700;font-size:13px;color:var(--ink);font-variant-numeric:tabular-nums;}
#staffDash .slot .cap{font-size:9.5px;color:var(--gray);}
#staffDash .slot:hover{border-color:var(--ink);}
#staffDash .slot.on{background:var(--ink);border-color:var(--ink);}
#staffDash .slot.on .rem,#staffDash .slot.on .cap{color:#fff;}
#staffDash .slot.full{background:var(--full);border-color:var(--full);cursor:not-allowed;}
#staffDash .slot.full .rem,#staffDash .slot.full .cap{color:var(--mut);}
#staffDash .slot.full:hover{border-color:var(--full);}
#staffDash .slot-legend{display:flex;gap:16px;margin-top:14px;font-size:11.5px;color:var(--gray);}
#staffDash .slot-legend i{display:inline-block;width:11px;height:11px;border-radius:3px;vertical-align:-1px;margin-right:5px;border:1px solid var(--line);}
#staffDash .pickcnt{font-size:12.5px;color:var(--gray);margin-top:12px;}
#staffDash .pickcnt b{color:var(--ink);}
#staffDash .calhead2{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;}
#staffDash .calhead2 .m{font-weight:800;font-size:15px;letter-spacing:-.02em;}
#staffDash .calcnt{font-size:12px;color:var(--gray);font-weight:600;}
#staffDash .dow{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;text-align:center;font-size:11px;color:var(--gray);margin-bottom:6px;}
#staffDash .dow span:first-child{color:var(--gray2);}
#staffDash .grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;}
#staffDash .ccell{aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;border-radius:9px;font-size:13.5px;border:1px solid transparent;cursor:pointer;position:relative;transition:.12s;font-variant-numeric:tabular-nums;}
#staffDash .ccell.out{color:var(--mut);cursor:default;}
#staffDash .ccell.in{background:#fff;border-color:var(--line);}
#staffDash .ccell.in:hover{border-color:var(--ink);}
#staffDash .ccell.sun{color:var(--gray2);}
#staffDash .ccell.blocked{background:var(--ink);border-color:var(--ink);color:#fff;}
#staffDash .ccell .memo-dot{position:absolute;top:5px;right:5px;width:5px;height:5px;border-radius:50%;background:#fff;}
#staffDash .blist{margin-top:14px;display:flex;flex-direction:column;gap:8px;}
#staffDash .brow{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:9px 11px;}
#staffDash .brow .d{font-size:13px;font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums;}
#staffDash .brow input{border:0;padding:4px 0;font-size:13px;border-radius:0;}
#staffDash .brow input:focus{box-shadow:none;}
#staffDash .brow .x{flex:0 0 auto;border:0;background:transparent;color:var(--gray);font-size:18px;cursor:pointer;line-height:1;padding:2px 4px;}
#staffDash .cta{position:sticky;bottom:0;background:linear-gradient(0deg,#fff 72%,rgba(255,255,255,0));padding:18px 0 24px;margin-top:8px;}
#staffDash .btn{width:100%;font-family:inherit;font-size:16px;font-weight:700;cursor:pointer;border:1px solid var(--ink);border-radius:12px;padding:16px;background:var(--ink);color:#fff;transition:.15s;letter-spacing:.01em;}
#staffDash .btn:hover{background:#000;}
#staffDash .btn:disabled{opacity:.35;cursor:not-allowed;}
#staffDash .btn.ghost{background:#fff;color:var(--ink);}
#staffDash .btn.ghost:hover{background:var(--soft);}
#staffDash .btn.small{font-size:13.5px;padding:12px;}
#staffDash .err{color:var(--ink);font-size:12.5px;text-align:center;margin-top:10px;min-height:16px;font-weight:600;line-height:1.5;}
#staffDash .result{border:1.5px solid var(--ink);border-radius:16px;padding:26px 22px;margin:22px 0;}
#staffDash .result .tagline{font-size:11.5px;letter-spacing:.2em;color:var(--gray);font-weight:600;}
#staffDash .result .big{font-weight:800;font-size:38px;letter-spacing:-.03em;margin:8px 0 4px;line-height:1.1;}
#staffDash .result .sub{font-size:14px;color:var(--gray2);}
#staffDash .result .block{margin-top:20px;padding-top:18px;border-top:1px solid var(--line);}
#staffDash .result .block .k{font-size:11px;letter-spacing:.16em;color:var(--gray);font-weight:600;margin-bottom:8px;}
#staffDash .result .tag{display:inline-block;border:1px solid var(--ink);border-radius:7px;padding:5px 10px;font-size:12.5px;font-weight:600;margin:0 6px 6px 0;}
#staffDash .result .v{font-size:14.5px;font-weight:600;}
#staffDash .result-actions{margin-top:16px;}
#staffDash .note-status{font-size:12.5px;color:var(--gray);margin-top:14px;line-height:1.7;}
#staffDash .note-status b{color:var(--ink);}
#staffDash .rp{border:1px solid var(--line);border-radius:16px;padding:22px 20px;margin:22px 0;}
#staffDash .rp-head{padding-bottom:16px;border-bottom:1px solid var(--ink);margin-bottom:18px;}
#staffDash .rp-tagline{font-size:11px;letter-spacing:.2em;color:var(--gray);font-weight:600;}
#staffDash .rp-title{font-size:21px;font-weight:800;letter-spacing:-.02em;margin-top:8px;line-height:1.25;}
#staffDash .rp-oneline{font-size:14.5px;color:var(--gray2);margin-top:12px;line-height:1.6;font-style:italic;}
#staffDash .rp-metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;}
#staffDash .rp-m{border:1px solid var(--line);border-radius:11px;padding:12px 13px;}
#staffDash .rp-mk{font-size:11px;color:var(--gray);font-weight:600;letter-spacing:.04em;}
#staffDash .rp-mv{font-size:22px;font-weight:800;letter-spacing:-.02em;margin-top:4px;font-variant-numeric:tabular-nums;}
#staffDash .rp-mv small{font-size:13px;font-weight:600;color:var(--gray);}
#staffDash .rp-mc{font-size:11.5px;color:var(--gray2);font-weight:600;margin-top:2px;}
#staffDash .rp-sec{margin-top:20px;}
#staffDash .rp-h{font-size:11px;letter-spacing:.16em;color:var(--gray);font-weight:700;margin-bottom:10px;}
#staffDash .rp-comment p{font-size:14px;line-height:1.7;margin-bottom:7px;color:var(--ink);}
#staffDash .rp-comment p:last-child{margin-bottom:0;}
#staffDash .rp-comment b{font-weight:700;}
#staffDash .rp-tags{display:flex;flex-wrap:wrap;gap:7px;}
#staffDash .rp-tag{border:1px solid var(--ink);border-radius:8px;padding:6px 11px;font-size:13px;font-weight:600;}
#staffDash .rp-qa{margin-bottom:12px;}
#staffDash .rp-qa:last-child{margin-bottom:0;}
#staffDash .rp-q{font-size:12px;font-weight:700;color:var(--gray2);margin-bottom:4px;}
#staffDash .rp-a{font-size:13.5px;line-height:1.65;white-space:pre-wrap;}
#staffDash .rp-foot{margin-top:20px;padding-top:14px;border-top:1px solid var(--line);font-size:11.5px;color:var(--gray);line-height:1.6;}
#staffDash .gate{padding:60px 0;}
#staffDash .gate h2{font-weight:800;font-size:26px;letter-spacing:-.03em;margin-bottom:8px;}
#staffDash .gate p{color:var(--gray);font-size:13.5px;margin-bottom:24px;line-height:1.6;}
#staffDash .gate .row{display:flex;gap:8px;max-width:300px;}
#staffDash .gate input{text-align:center;letter-spacing:.2em;}
#staffDash .subtabs{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 16px;}
#staffDash .subtabs button{flex:1 1 auto;min-width:70px;font-family:inherit;font-size:12.5px;font-weight:600;border:1px solid var(--line);background:#fff;color:var(--gray);border-radius:10px;padding:11px 6px;cursor:pointer;transition:.13s;}
#staffDash .subtabs button.on{background:var(--ink);color:#fff;border-color:var(--ink);}
#staffDash .subtabs.schedsub2{margin:0 0 16px;padding:0 0 0 10px;gap:6px;}
#staffDash .subtabs.schedsub2 button{flex:0 1 auto;font-size:11.5px;padding:8px 14px;border-radius:20px;color:var(--gray2);}
#staffDash .subtabs.schedsub2 button.on{background:var(--goldbg,#FBF2D8);border-color:var(--gold,#C99A1E);color:var(--goldink,#7A5B00);}
#staffDash .viewtoggle{display:flex;gap:8px;margin:0 0 14px;}
#staffDash .viewtoggle button{flex:1;font-family:inherit;font-size:13px;font-weight:600;border:1px solid var(--line);background:#fff;color:var(--gray);border-radius:9px;padding:9px 0;cursor:pointer;}
#staffDash .viewtoggle button.on{background:var(--ink);color:#fff;border-color:var(--ink);}
#staffDash .hbranch{font-size:13px;font-weight:800;letter-spacing:-.01em;margin:16px 0 9px;padding-bottom:6px;border-bottom:1px solid var(--ink);}
#staffDash .hbranch small{font-weight:500;color:var(--gray);font-size:11px;margin-left:6px;letter-spacing:0;}
#staffDash .hours-row{display:flex;justify-content:space-between;align-items:baseline;gap:10px;border:1px solid var(--line);border-radius:10px;padding:9px 12px;margin-bottom:7px;}
#staffDash .hours-row .hn{font-size:13.5px;font-weight:700;}
#staffDash .hours-row .hv{font-size:12.5px;color:var(--gray2);font-variant-numeric:tabular-nums;}
#staffDash .hours-row .hv b{color:var(--ink);font-weight:800;}
#staffDash .laborcost{display:flex;justify-content:space-between;align-items:center;gap:10px;background:var(--soft);border-radius:10px;padding:11px 13px;margin:8px 0 4px;font-size:13px;font-weight:700;}
#staffDash .paymonthbar{display:grid;grid-template-columns:34px 1fr 34px;align-items:center;gap:8px;background:var(--ink);color:#fff;border-radius:10px;padding:7px;margin-bottom:12px;}
#staffDash .paymonthbar span{text-align:center;font-size:13.5px;font-weight:800;letter-spacing:.01em;}
#staffDash .paymonthbar button{height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.08);color:#fff;font-size:12px;line-height:1;padding:0;cursor:pointer;}
#staffDash .paymonthbar button:active{background:rgba(255,255,255,.22);}
#staffDash .laborcost b{font-size:16px;font-weight:800;font-variant-numeric:tabular-nums;}
#staffDash .laborcost.total{background:var(--ink);color:#fff;}
#staffDash .laborcost.total b{color:#fff;}
#staffDash .hrow{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:11px;padding:10px 12px;margin-bottom:8px;}
#staffDash .hrow .hn{font-size:14px;font-weight:700;flex:0 0 auto;min-width:58px;}
#staffDash .hrow input[type=date]{flex:1;min-width:0;font-family:inherit;font-size:13px;border:1px solid var(--line);border-radius:8px;padding:8px 9px;color:var(--ink);background:#fff;}
#staffDash .hrow .exp{font-size:11px;color:var(--gray);white-space:nowrap;}
#staffDash .hbadge{font-size:10.5px;font-weight:700;border-radius:6px;padding:3px 8px;white-space:nowrap;}
#staffDash .hbadge.ok{background:var(--soft);color:var(--gray2);}
#staffDash .hbadge.warn{background:#FFF4E5;color:#9A5B00;border:1px solid #F0C36D;}
#staffDash .hbadge.exp{background:#FDECEC;color:var(--warn);border:1px solid #F3B6B6;}
#staffDash .hbadge.none{background:#fff;color:var(--mut);border:1px dashed var(--line);}
#staffDash .hadd{display:flex;gap:8px;margin:6px 0 18px;}
#staffDash .hadd input{flex:1;font-family:inherit;font-size:13px;border:1px solid var(--line);border-radius:8px;padding:9px 10px;}
#staffDash .agg{border:1px solid var(--line);border-radius:13px;padding:14px 15px;margin-bottom:11px;}
#staffDash .agg .aq{font-size:13.5px;font-weight:700;line-height:1.45;margin-bottom:9px;}
#staffDash .agg .astat{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px;}
#staffDash .agg .astat span{font-size:12px;font-weight:600;border:1px solid var(--line);border-radius:7px;padding:4px 9px;}
#staffDash .agg .astat span.big{background:var(--ink);color:#fff;border-color:var(--ink);}
#staffDash .agg .alist{font-size:12.5px;line-height:1.6;color:var(--ink);}
#staffDash .agg .alist .row{padding:6px 0;border-top:1px solid var(--line);}
#staffDash .agg .alist .row:first-child{border-top:0;}
#staffDash .agg .alist .who{font-weight:700;color:var(--gray2);margin-right:6px;}
#staffDash .filter{display:flex;gap:7px;overflow-x:auto;padding-bottom:16px;-webkit-overflow-scrolling:touch;}
#staffDash .filter::-webkit-scrollbar{display:none}
#staffDash .filter button{flex:0 0 auto;font-family:inherit;font-size:13px;font-weight:600;border:1px solid var(--line);background:#fff;color:var(--gray);border-radius:999px;padding:7px 15px;cursor:pointer;white-space:nowrap;}
#staffDash .filter button.on{background:var(--ink);color:#fff;border-color:var(--ink);}
#staffDash .dashCnt{font-size:13px;color:var(--gray);}
#staffDash .sub{border:1px solid var(--line);border-radius:13px;padding:15px 16px;margin-bottom:11px;}
#staffDash .sub .top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:9px;gap:8px;}
#staffDash .sub .nm{font-size:15px;font-weight:700;}
#staffDash .sub .br{font-size:12px;color:var(--gray2);font-weight:600;}
#staffDash .sub .badge{font-size:10.5px;font-weight:700;border-radius:6px;padding:3px 8px;letter-spacing:.04em;white-space:nowrap;}
#staffDash .sub .badge.ok{background:var(--ink);color:#fff;}
#staffDash .sub .badge.wait{background:var(--soft);color:var(--gray2);}
#staffDash .sub .lbl{font-size:11px;color:var(--gray);font-weight:600;margin:9px 0 5px;}
#staffDash .sub .meta{display:flex;flex-wrap:wrap;gap:6px;font-size:12px;}
#staffDash .sub .meta span{border:1px solid var(--line);border-radius:6px;padding:4px 8px;}
#staffDash .sub .meta span.cf{background:var(--ink);color:#fff;border-color:var(--ink);}
#staffDash .sub .meta span.off{border-style:dashed;border-color:var(--warn);color:var(--warn);}
#staffDash .sub .note{font-size:12.5px;color:var(--gray);margin-top:9px;padding-top:9px;border-top:1px solid var(--line);line-height:1.6;}
#staffDash .empty{text-align:center;color:var(--gray);font-size:13.5px;padding:50px 0;line-height:1.7;}
#staffDash .dash-tools{display:flex;gap:9px;margin:4px 0 22px;flex-wrap:wrap;}
#staffDash .dash-tools .btn{flex:1 1 40%;}
#staffDash .secttl{font-size:13px;font-weight:700;letter-spacing:.02em;margin:6px 0 4px;}
#staffDash .sectsub{font-size:12px;color:var(--gray);margin-bottom:14px;line-height:1.65;}
#staffDash .daygroup{margin-bottom:18px;}
#staffDash .daygroup.past{opacity:.85;}
#staffDash .daygroup.past h4{border-bottom-color:var(--line);}
#staffDash .lockbadge{background:var(--soft)!important;color:var(--gray2)!important;font-weight:700;}
#staffDash .ac button.lockday{background:var(--soft);border-color:var(--line);color:var(--gray2);cursor:default;}
#staffDash .daygroup h4{font-size:14px;font-weight:800;letter-spacing:-.01em;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid var(--ink);}
#staffDash .daygroup h4.sun{color:var(--gray2);}
#staffDash .daygroup h4 small{font-weight:500;color:var(--gray);margin-left:8px;font-size:11px;letter-spacing:0;}
#staffDash .slotrow{margin-bottom:12px;}
#staffDash .slothead{display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;margin-bottom:7px;}
#staffDash .slothead .bl{font-weight:700;}
#staffDash .slothead .cnt{font-weight:700;font-variant-numeric:tabular-nums;}
#staffDash .slothead .cnt.over{color:var(--warn);}
#staffDash .ac{display:flex;flex-wrap:wrap;gap:7px;}
#staffDash .ac button{font-family:inherit;font-size:12.5px;font-weight:600;border:1px solid var(--line);background:#fff;color:var(--gray2);border-radius:8px;padding:7px 11px;cursor:pointer;transition:.12s;position:relative;}
#staffDash .ac button.on{background:var(--ink);color:#fff;border-color:var(--ink);}
#staffDash .ac button.offwarn{border-style:dashed;border-color:var(--warn);}
#staffDash .ac .none{font-size:12px;color:var(--mut);padding:6px 0;}
#staffDash .acg{margin-top:9px;}
#staffDash .acg .acl{font-size:10.5px;color:var(--gray);font-weight:700;letter-spacing:.04em;margin-bottom:5px;}
#staffDash .applist{display:flex;flex-direction:column;gap:7px;}
#staffDash .approw{display:flex;align-items:center;gap:9px;padding:7px 9px;border:1px solid var(--line);border-radius:11px;background:#fff;line-height:1.5;}
#staffDash .approw.on{background:#F5FAF6;border-color:#C7E3D1;}
#staffDash .approw .apbtn{flex:0 0 auto;font-family:inherit;font-size:13px;font-weight:700;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:8px;padding:8px 13px;cursor:pointer;letter-spacing:-.01em;}
#staffDash .approw .apbtn.on{background:var(--ink);color:#fff;border-color:var(--ink);}
#staffDash .approw .apbtn.lockday{background:var(--soft);color:var(--gray2);cursor:default;}
#staffDash .approw .apblk{flex:1;display:flex;flex-wrap:wrap;gap:5px;min-width:0;}
#staffDash .approw .apblk i{font-style:normal;font-size:11.5px;font-weight:800;letter-spacing:.02em;color:#2C5AA0;background:#EAF0FB;border-radius:6px;padding:3px 9px;white-space:nowrap;}
#staffDash .approw .apblk i.req{color:var(--gray2);background:var(--soft);font-weight:700;}
#staffDash .approw .aprej{flex:0 0 auto;font-family:inherit;font-size:11.5px;font-weight:700;border:1px solid #E4B4AE;background:#fff;color:#9A3B34;border-radius:8px;padding:6px 11px;cursor:pointer;}
#staffDash .approw .brtag{font-style:normal;font-size:10px;font-weight:700;color:#8A6D1B;background:var(--goldbg,#F5EDDC);border-radius:4px;padding:1px 5px;margin-left:5px;}
#staffDash .assignview{display:flex;gap:6px;margin-bottom:12px;}
#staffDash .assignview button{flex:1;font-family:inherit;font-size:13px;font-weight:800;border:1px solid var(--line);background:#fff;color:var(--gray2);border-radius:10px;padding:9px 0;cursor:pointer;}
#staffDash .assignview button.on{background:var(--ink);color:#fff;border-color:var(--ink);}
#staffDash .asgcal{margin-bottom:14px;}
#staffDash .asgcal .dow{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:5px;}
#staffDash .asgcal .dow span{text-align:center;font-size:11px;font-weight:700;color:var(--gray);}
#staffDash .asgcal .dow span.sat{color:#3E6FB0;}
#staffDash .acal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;}
#staffDash .acell{position:relative;min-height:46px;border:1px solid var(--line);border-radius:9px;background:#fff;padding:5px 6px;font-size:12px;font-weight:700;color:var(--ink);cursor:pointer;transition:.1s;}
#staffDash .acell.out{background:transparent;border-color:transparent;color:var(--mut);cursor:default;font-weight:500;}
#staffDash .acell.sun{color:#C0392B;}
#staffDash .acell.has{background:#F5FAF6;border-color:#C7E3D1;}
#staffDash .acell.sel{background:var(--ink);border-color:var(--ink);color:#fff;box-shadow:0 2px 8px #00000022;}
#staffDash .acell.past{opacity:.6;}
#staffDash .acell b{position:absolute;right:5px;bottom:4px;font-size:12.5px;font-weight:900;color:#1D7A4E;}
#staffDash .acell.sel b{color:#8FE3B4;}
#staffDash .acell .offd{position:absolute;left:5px;bottom:4px;font-style:normal;font-size:10px;font-weight:800;color:#9A3B34;}
#staffDash .acell .lk{position:absolute;right:4px;top:3px;font-style:normal;font-size:9px;}
#staffDash .acalleg{display:flex;gap:14px;flex-wrap:wrap;margin-top:8px;font-size:11px;color:var(--gray);}
#staffDash .acalleg b{color:#1D7A4E;font-weight:900;}#staffDash .acalleg i{font-style:normal;color:#9A3B34;font-weight:800;}
#staffDash .acell .sadots{position:absolute;left:5px;bottom:5px;display:flex;gap:2px;}
#staffDash .acell .sadots i{width:5px;height:5px;border-radius:50%;display:block;}
#staffDash .saday{margin-top:6px;}
#staffDash .sadayh{font-size:15px;font-weight:900;margin-bottom:12px;padding-bottom:7px;border-bottom:2px solid var(--ink);}
#staffDash .sabranch{border:1px solid var(--line);border-radius:12px;padding:11px 12px;margin-bottom:10px;background:var(--card,#fff);}
#staffDash .sabh{display:flex;align-items:center;gap:7px;font-size:13.5px;font-weight:800;margin-bottom:8px;}
#staffDash .sabh .sadot{width:10px;height:10px;border-radius:3px;flex:0 0 auto;}
#staffDash .sabh small{font-weight:600;color:var(--gray);}
#staffDash .sarow{display:flex;align-items:center;gap:8px;padding:5px 0;border-top:1px solid var(--soft);}
#staffDash .sarow:first-of-type{border-top:0;}
#staffDash .sarow .sanm{flex:1;font-size:13px;font-weight:700;min-width:52px;}
#staffDash .sarow .satime{flex:0 0 auto;display:inline-flex;align-items:center;gap:4px;}
#staffDash .sarow .satime input{font-family:inherit;font-size:13.5px;border:1px solid var(--line);border-radius:7px;padding:6px;width:54px;text-align:center;letter-spacing:.02em;}
#staffDash .sarow .satime input:disabled{background:var(--soft);color:var(--gray2);}
#staffDash .sarow .satime b{color:var(--mut);font-weight:400;}
#staffDash .sarow .sahr{flex:0 0 auto;font-size:11.5px;font-weight:800;color:var(--gray2);min-width:34px;text-align:right;font-variant-numeric:tabular-nums;}
#staffDash .sarow .sadel{flex:0 0 auto;font-family:inherit;font-size:12px;font-weight:800;border:1px solid var(--line);background:#fff;color:#9A3B34;border-radius:7px;width:26px;height:26px;cursor:pointer;padding:0;}
#staffDash .sarow .salk{flex:0 0 auto;font-size:12px;width:26px;text-align:center;}
#staffDash .sanone{font-size:12px;color:var(--mut);padding:4px 0;}
#staffDash .saapp{display:flex;flex-wrap:wrap;align-items:center;gap:5px;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);}
#staffDash .saapp>span{font-size:11px;font-weight:800;color:var(--gray);}
#staffDash .saapp button{font-family:inherit;font-size:12px;font-weight:700;border:1px solid #C7E3D1;background:#F5FAF6;color:#1D7A4E;border-radius:8px;padding:5px 9px;cursor:pointer;}
#staffDash .saapp button i{font-style:normal;font-size:9.5px;color:#3E7D5A;margin-left:4px;font-weight:800;}
#staffDash .sasum{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;background:var(--soft);border-radius:10px;padding:9px 13px;margin-bottom:12px;font-size:12.5px;font-weight:700;color:var(--gray2);}
#staffDash .sasum b{color:var(--ink);font-weight:900;}
#staffDash .sasum .low{color:#9A3B34;font-weight:800;}
#staffDash .sasum .ok{color:#1D7A4E;font-weight:800;}
#staffDash .sasum .warn{color:#8A5A00;font-weight:800;}
#staffDash .sabh .saratio{margin-left:auto;font-size:12px;font-weight:900;border-radius:999px;padding:2px 10px;}
#staffDash .saratio.ok{background:#E7F3EB;color:#1D7A4E;}
#staffDash .saratio.low{background:#FBEBE9;color:#C0392B;}
#staffDash .saratio.over{background:#F7EFD8;color:#8A6D1B;}
#staffDash .samet{display:flex;align-items:center;gap:9px;margin:2px 0 8px;}
#staffDash .sambar{flex:1;height:8px;border-radius:5px;background:#ece8e1;overflow:hidden;min-width:60px;}
#staffDash .sambar i{display:block;height:100%;}
#staffDash .samval{flex:0 0 auto;font-size:11.5px;color:var(--gray2);font-weight:700;}
#staffDash .samval b{color:var(--ink);font-weight:900;}
#staffDash .samval small{font-weight:500;color:var(--gray);}
#staffDash .saflags{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px;}
#staffDash .saflags .fl{font-style:normal;font-size:11px;font-weight:800;border-radius:6px;padding:3px 8px;}
#staffDash .saflags .fl.low{background:#FBEBE9;color:#C0392B;}
#staffDash .saflags .fl.over{background:#F7EFD8;color:#8A6D1B;}
#staffDash .saflags .fl.warn{background:#FBF0DC;color:#8A5A00;}
#staffDash .saflags .fl.off{background:#F1E7E6;color:#9A3B34;}
#staffDash .saflags .fl.rot{background:#EAF0FB;color:#2C5AA0;}
#staffDash details.acg>summary{font-size:10.5px;color:var(--gray);font-weight:700;letter-spacing:.04em;cursor:pointer;list-style:none;margin-bottom:5px;}
#staffDash details.acg>summary::-webkit-details-marker{display:none}
#staffDash details.acg>summary::after{content:' ▾';color:var(--mut);}
#staffDash details.acg[open]>summary::after{content:' ▴';}
#staffDash .ac button.ghostbtn{color:var(--mut);border-style:dashed;}
#staffDash .ac button.ext{border-color:#D9CBA0;}
#staffDash .ac button .brtag{display:inline-block;margin-left:4px;font-size:9px;font-weight:800;font-style:normal;color:#fff;background:#9B9B9B;border-radius:4px;padding:1px 4px;vertical-align:middle;letter-spacing:0;}
#staffDash .ac button .brtag.alt{background:#C99A1E;}
#staffDash .ac button.on .brtag{background:rgba(255,255,255,.32);}
#staffDash .mvbar{display:flex;align-items:center;gap:10px;background:var(--ink);color:#fff;border-radius:10px;padding:9px 12px;margin-bottom:12px;font-size:13px;font-weight:700;}
#staffDash .mvbar button{flex:0 0 auto;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.1);color:#fff;border-radius:8px;padding:6px 11px;font-size:12px;font-weight:700;cursor:pointer;}
#staffDash .mvbar span{flex:1;text-align:right;}#staffDash .mvbar small{font-weight:500;color:rgba(255,255,255,.6);}
#staffDash .mvlist{display:grid;grid-template-columns:1fr 1fr;gap:7px;}
#staffDash .mvbtn{display:flex;flex-direction:column;align-items:flex-start;gap:2px;border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 12px;cursor:pointer;text-align:left;font-family:inherit;}
#staffDash .mvbtn:active{background:var(--soft);}
#staffDash .mvbtn .mvn{font-size:14px;font-weight:800;color:var(--ink);}
#staffDash .mvbtn .mvr{font-size:11px;color:var(--gray);font-weight:600;}
#staffDash .pairnote{display:flex;flex-direction:column;gap:2px;background:var(--goldbg);border-radius:10px;padding:9px 12px;margin:0 0 12px;font-size:12px;color:#7A5B00;line-height:1.5;}
#staffDash .pairnote span{font-size:11px;color:#A98A3A;}
#staffDash .daytabs{display:flex;gap:5px;margin:0 0 14px;flex-wrap:wrap;}
#staffDash .daytabs button{flex:1 1 auto;min-width:38px;font-family:inherit;font-size:13px;font-weight:700;border:1px solid var(--line);background:#fff;color:var(--gray);border-radius:8px;padding:9px 0;cursor:pointer;}
#staffDash .daytabs button.on{background:var(--ink);color:#fff;border-color:var(--ink);}
#staffDash .daytabs button.sun{color:var(--gray2);}
#staffDash .daytabs button.on.sun{color:#fff;}
#staffDash .slottime{display:flex;align-items:center;gap:6px;margin:8px 0 2px;}
#staffDash .slottime .stl{font-size:10.5px;color:var(--gray);font-weight:700;}
#staffDash .slottime input[type=time]{font-family:inherit;font-size:12px;border:1px solid var(--line);border-radius:7px;padding:5px 7px;color:var(--ink);}
#staffDash .slottime .sttil{color:var(--gray);font-weight:600;}
#staffDash .slottime .sthr{font-size:11px;font-weight:700;color:var(--gray2);background:var(--soft);border-radius:6px;padding:3px 7px;}
#staffDash .slotppl{font-size:11px;color:var(--gray2);background:var(--soft);border-radius:8px;padding:6px 9px;margin:2px 0 4px;line-height:1.5;}
#staffDash .slotppl b{color:var(--ink);font-weight:700;font-variant-numeric:tabular-nums;}
#staffDash .scell{aspect-ratio:1/1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:9px;font-size:13px;background:#fff;border:1px solid var(--line);color:var(--ink);font-variant-numeric:tabular-nums;cursor:pointer;transition:.12s;position:relative;min-width:0;overflow:hidden;}
#staffDash .scell.out{background:transparent;border:0;color:var(--mut);cursor:default;}
#staffDash .scell:not(.out):hover{border-color:var(--ink);}
#staffDash .scell.sel{background:var(--ink);color:#fff;border-color:var(--ink);}
#staffDash .scell.sun:not(.sel){color:var(--gray2);}
#staffDash .scell b{font-size:10px;font-weight:700;margin-top:2px;}
#staffDash .scell b.tm{font-size:8px;line-height:1.1;letter-spacing:-.03em;font-variant-numeric:tabular-nums;}
#staffDash .scell.sel b{color:#fff;}
#staffDash .scell.done{background:#E5B53A!important;border-color:#E5B53A!important;color:#3A2E0A!important;}
#staffDash .scell.done b,#staffDash .scell.done b.tm{color:#3A2E0A!important;}
#staffDash .scell .donechk{position:absolute;top:2px;left:4px;font-size:9px;font-weight:800;color:#3A2E0A;}
#staffDash .scell.claim::after{content:'';position:absolute;top:4px;right:4px;width:6px;height:6px;border-radius:50%;background:#E5B53A;}
#staffDash .stbranch{font-size:13px;font-weight:800;margin:16px 0 8px;}
#staffDash .stday{border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px;}
#staffDash details.stday>summary{list-style:none;cursor:pointer;}
#staffDash details.stday>summary::-webkit-details-marker{display:none;}
#staffDash details.stday>summary::before{content:'▸';font-size:12px;color:var(--gray);margin-right:2px;transition:.15s;}
#staffDash details.stday[open]>summary::before{content:'▾';color:var(--ink);}
#staffDash details.stday[open]>summary{margin-bottom:8px;}
#staffDash .sthd .stcnt.pend{color:#A9802A;font-weight:800;}
#staffDash .sthd{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
#staffDash .sthd b{font-size:14px;font-weight:800;}
#staffDash .sthd .stcnt{font-size:11px;color:var(--gray);margin-left:auto;}
#staffDash .stblk{margin-top:8px;}
#staffDash .stblk .stbl{font-size:11px;letter-spacing:.06em;color:var(--gray2);font-weight:700;margin:6px 0 4px;}
#staffDash .strow{display:flex;align-items:center;gap:7px;padding:5px 0;flex-wrap:wrap;}
#staffDash .strow .wtog{flex:0 0 auto;font-family:inherit;font-size:11.5px;font-weight:700;border:1px solid var(--line);background:#fff;color:var(--gray2);border-radius:7px;padding:5px 9px;cursor:pointer;min-width:62px;}
#staffDash .strow .wtog.on{background:#E5B53A;border-color:#E5B53A;color:#3A2E0A;}
#staffDash .strow.absent .wtog{background:#FBECEC;border-color:#E7C4C4;color:#B00020;}
#staffDash .strow .snm{flex:1;min-width:54px;font-size:13.5px;font-weight:700;}
#staffDash .strow .snm .claim{font-style:normal;font-size:10px;font-weight:700;color:#A9802A;background:#FBF2D8;border-radius:5px;padding:1px 5px;margin-left:5px;vertical-align:1px;}
#staffDash .strow .stime{flex:0 0 auto;display:inline-flex;align-items:center;gap:4px;}
#staffDash .strow .stime input{font-family:inherit;font-size:14px;border:1px solid var(--line);border-radius:6px;padding:6px 6px;width:56px;min-width:52px;box-sizing:content-box;text-align:center;letter-spacing:.02em;}
#staffDash .strow .stime b{color:var(--mut);font-weight:400;}
#staffDash .strow .sissue{font-family:inherit;font-size:11px;border:1px solid var(--line);border-radius:6px;padding:4px 5px;color:var(--gray2);}
#staffDash .strow .shr{flex:0 0 auto;font-size:11px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--gray2);min-width:34px;text-align:right;}
#staffDash .strow .snm .claim.sub{background:#E8F0FB;color:#2D6CC0;}
#staffDash .strow .atag{font-style:normal;font-size:10px;font-weight:800;border-radius:5px;padding:1px 5px;margin-left:5px;vertical-align:1px;white-space:nowrap;}
#staffDash .strow .atag.late{color:#C0392B;background:#FBEBE9;}
#staffDash .strow .atag.early{color:#8A5A00;background:#FBF0DC;}
#staffDash .strow .xrm{flex:0 0 auto;border:1px solid var(--line);background:#fff;color:var(--gray);border-radius:6px;width:24px;height:24px;font-size:11px;cursor:pointer;padding:0;line-height:1;}
#staffDash .strow .xrm:hover{border-color:var(--warn);color:var(--warn);}
#staffDash .stempty{font-size:11.5px;color:var(--mut);padding:4px 0 2px;}
#staffDash .addsel{margin-top:7px;font-family:inherit;font-size:11.5px;font-weight:600;color:var(--gray2);border:1px dashed var(--line);border-radius:7px;padding:6px 8px;background:var(--soft);max-width:100%;}
#staffDash .daygroup h4 .cnt{margin-left:auto;font-size:11px;font-weight:700;color:var(--gray2);background:var(--soft);border-radius:6px;padding:2px 8px;}
#staffDash .daygroup h4 .copyprev{font-family:inherit;font-size:10.5px;font-weight:700;color:var(--gray2);background:#fff;border:1px solid var(--line);border-radius:6px;padding:3px 8px;cursor:pointer;letter-spacing:0;}
#staffDash .daygroup h4 .copyprev:hover{border-color:var(--gold);color:var(--goldink,#7A5B00);background:var(--goldbg,#FBF2D8);}
#staffDash .daygroup h4 .cpwrap{display:inline-flex;gap:4px;}
#staffDash .daygroup h4{display:flex;align-items:center;gap:8px;}
#staffDash .acl small{font-weight:500;color:var(--gray);font-size:10.5px;}
#staffDash .shiftbox{margin-top:10px;border-top:1px dashed var(--line);padding-top:9px;}
#staffDash .shiftrow{display:flex;align-items:center;gap:8px;padding:6px 0;flex-wrap:wrap;}
#staffDash .shiftrow .snm{flex:1 1 64px;min-width:54px;font-size:13.5px;font-weight:700;}
#staffDash .shiftrow .stime{display:inline-flex;align-items:center;gap:4px;flex:0 0 auto;}
#staffDash .shiftrow .stime input{font-family:inherit;font-size:14px;border:1px solid var(--line);border-radius:6px;padding:6px 6px;width:56px;min-width:52px;box-sizing:content-box;text-align:center;letter-spacing:.02em;}
#staffDash .shiftrow .stime b{color:var(--mut);font-weight:400;}
#staffDash .shiftrow .shr{flex:0 0 auto;font-size:11px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--gray2);min-width:46px;text-align:right;}
#staffDash .wbtn{font-family:inherit;font-size:11.5px;font-weight:700;border:1px solid var(--ink);background:#fff;color:var(--ink);border-radius:7px;padding:5px 11px;cursor:pointer;white-space:nowrap;flex:0 0 auto;}
#staffDash .wbtn.on{background:#E5B53A;border-color:#E5B53A;color:#3A2E0A;}
#staffDash .wsoon{font-size:11px;color:var(--gray);font-weight:600;flex:0 0 auto;}
#staffDash .scell.sel b{color:#fff;}
#staffDash .scell .offmark{position:absolute;top:5px;right:5px;width:5px;height:5px;border-radius:50%;background:var(--warn);}
#staffDash .scell.sel .offmark{background:#fff;}
#staffDash .calhead{display:flex;justify-content:space-between;align-items:center;margin:18px 0 10px;}
#staffDash .calhead .m{font-weight:800;font-size:17px;letter-spacing:-.02em;}
#staffDash .daybox{border:1px solid var(--ink);border-radius:13px;padding:16px;margin-top:14px;}
#staffDash .daybox h4{font-size:14px;font-weight:800;margin-bottom:12px;}
#staffDash .daybox .blk{margin-bottom:12px;}
#staffDash .daybox .blk:last-child{margin-bottom:0;}
#staffDash .daybox .blk .bl{font-size:12px;font-weight:700;margin-bottom:6px;}
#staffDash .daybox .blk .bl small{font-weight:500;color:var(--gray);margin-left:6px;font-variant-numeric:tabular-nums;}
#staffDash .daybox .nms{display:flex;flex-wrap:wrap;gap:6px;}
#staffDash .daybox .nms span{font-size:12.5px;border:1px solid var(--ink);border-radius:7px;padding:4px 9px;}
#staffDash .daybox .nms .none{border-color:var(--line);color:var(--mut);}
#staffDash .daybox .offseg{margin-top:14px;padding-top:12px;border-top:1px dashed var(--warn);}
#staffDash .daybox .offseg .bl{color:var(--warn);}
#staffDash .daybox .offseg .nms span{border-color:var(--warn);color:var(--warn);border-style:dashed;}
#staffDash .crow{border:1px solid var(--line);border-radius:13px;padding:14px 16px;margin-bottom:11px;}
#staffDash .crow .top{display:flex;justify-content:space-between;align-items:baseline;}
#staffDash .crow .nm{font-size:15px;font-weight:700;}
#staffDash .crow .br{font-size:12px;color:var(--gray2);font-weight:600;}
#staffDash .crow .quick{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12.5px;color:var(--ink);margin-top:9px;}
#staffDash .crow .quick b{font-weight:700;}
#staffDash .crow .more{font-family:inherit;border:0;background:transparent;color:var(--gray);font-size:12px;font-weight:600;cursor:pointer;margin-top:11px;padding:0;text-decoration:underline;}
#staffDash .crow .detail{margin-top:12px;padding-top:12px;border-top:1px solid var(--line);}
#staffDash .crow .qa{margin-bottom:12px;}
#staffDash .crow .qa .q{font-size:12.5px;font-weight:700;margin-bottom:3px;line-height:1.5;}
#staffDash .crow .qa .a{font-size:13px;color:var(--ink);white-space:pre-wrap;line-height:1.6;}
#staffDash .crow .qa .a.blank{color:var(--mut);}
#staffDash .foot-note{text-align:center;color:var(--gray);font-size:11.5px;padding:34px 0 10px;line-height:1.8;}
#staffDash .hidden{display:none !important;}
/* 인사 관리(크루 허브 <style> 166-195·218-221·1233-1261 — 급여·계약/초대 모달 #sysmodal 은 #staffDash 안에 붙는다) */
#staffDash .hrcell{border:1px solid var(--line);border-radius:13px;padding:12px 13px;margin-bottom:9px;background:var(--card,#fff);}
#staffDash .hrcell .hrtop{display:flex;flex-wrap:wrap;align-items:center;gap:6px 7px;}
#staffDash .hrcell .cn{font-size:15px;font-weight:800;letter-spacing:-.01em;margin-right:1px;}
#staffDash .hrcell .cc{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13.5px;font-weight:800;letter-spacing:.1em;background:var(--soft);color:var(--gray2);border-radius:7px;padding:3px 9px;}
#staffDash .hrcell .hchip{font-family:inherit;font-size:11px;font-weight:700;letter-spacing:-.01em;border-radius:999px;padding:3px 10px;line-height:1.55;white-space:nowrap;}
#staffDash .hrcell .hchip b{font-weight:800;}
#staffDash .hrcell .hchip.fix{background:#E8F0FB;color:#2C5AA0;}
#staffDash .hrcell .hchip.hourly{background:#EFECE6;color:#8a8a8a;}
#staffDash .hrcell .hchip.wage{background:#E7F3EB;color:#1C7A4C;}
#staffDash .hrcell .hchip.tax{background:#F5EDDC;color:#8A6D1B;}
#staffDash .hrcell .hrbtns{display:flex;flex-wrap:wrap;gap:6px;margin-top:11px;padding-top:10px;border-top:1px solid var(--soft);align-items:center;}
#staffDash .hrcell .hrbtns button{font-family:inherit;font-size:11.5px;font-weight:700;border:1px solid var(--line);background:#fff;color:var(--gray2);border-radius:8px;padding:6px 10px;cursor:pointer;}
#staffDash .hrcell .hrbtns select{border-radius:8px !important;}
#staffDash .hrcell .hgauge{margin-top:11px;}
#staffDash .piifold{margin-top:10px;border-top:1px solid var(--soft);padding-top:9px;}
#staffDash .piifold>summary{cursor:pointer;font-size:12px;font-weight:800;color:#8A2A26;list-style:none;}
#staffDash .piifold>summary::-webkit-details-marker{display:none;}
#staffDash .piifold .piimiss{color:var(--warn);font-weight:700;}
#staffDash .piifold .piiok{color:var(--green);font-weight:700;}
#staffDash .piibody{margin-top:9px;background:#FBF7F6;border:1px solid #EAD9D6;border-radius:10px;padding:10px 12px;}
#staffDash .piirow{display:flex;justify-content:space-between;gap:10px;font-size:12.5px;padding:3px 0;}
#staffDash .piirow span{color:var(--gray2);font-weight:600;}
#staffDash .piirow b{font-variant-numeric:tabular-nums;letter-spacing:.02em;text-align:right;word-break:break-all;}
#staffDash .piiact{display:flex;gap:6px;margin-top:8px;}
#staffDash .piirev{font-family:inherit;font-size:11.5px;font-weight:700;border:1px solid #D8B7B2;background:#fff;color:#8A2A26;border-radius:8px;padding:6px 11px;cursor:pointer;}
#staffDash .piinote{font-size:10.5px;color:var(--gray);margin-top:8px;line-height:1.5;}
#staffDash .piiload{font-size:12px;color:var(--gray2);padding:4px 2px;}
#staffDash .piiwarn{font-size:12px;color:#8A2A26;background:var(--redbg,#FBEBE9);border-radius:8px;padding:8px 10px;line-height:1.5;}
#staffDash .piihint{font-weight:500;color:var(--gray);font-size:11px;}
#staffDash .eduedbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0 12px;}
#staffDash .hrcell .hgauge .hgl{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:11.5px;color:var(--gray2);margin-bottom:5px;}
#staffDash .hrcell .hgauge .hgl .hgv{font-weight:800;color:var(--ink);}
#staffDash .hrcell .hgauge .hgtrack{height:8px;border-radius:999px;background:#ECE8E1;overflow:hidden;}
#staffDash .hrcell .hgauge .hgtrack i{display:block;height:100%;border-radius:999px;transition:none;}
#staffDash #sysmodal{position:fixed;inset:0;z-index:10001;background:rgba(10,10,10,.5);display:none;align-items:center;justify-content:center;padding:24px;}
#staffDash #sysmodal.show{display:flex;}
#staffDash #sysmodal .smbox{background:#fff;border-radius:16px;padding:24px 22px;max-width:320px;width:100%;text-align:center;border:1px solid var(--ink);}
#staffDash #sysmodal .smtag{letter-spacing:.26em;font-size:11px;font-weight:800;color:#C99A1E;}
#staffDash #sysmodal .smtitle{font-size:24px;font-weight:800;margin-top:10px;}
#staffDash #sysmodal .smdesc{font-size:13px;color:var(--gray2);margin-top:6px;line-height:1.6;word-break:keep-all;}
#staffDash #sysmodal .smdesc.lone{margin-top:12px;font-size:13.5px;color:var(--ink);text-align:left;}
#staffDash #sysmodal .nps{margin-top:12px;border-radius:11px;padding:11px 13px;text-align:left;border:1px solid var(--line);background:var(--soft);}
#staffDash #sysmodal .nps.quest{background:#FBF2D8;border-color:#EBD9A0;}
#staffDash #sysmodal .nps.hid{background:#EFE9FB;border-color:#CBBBEA;}
#staffDash #sysmodal .npt{font-size:13px;font-weight:800;margin-bottom:7px;}
#staffDash #sysmodal .nps.hid .npt{color:#6B46C1;}
#staffDash #sysmodal .nps.quest .npt{color:#A9802A;}
#staffDash #sysmodal .npr{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:12.5px;padding:4px 0;line-height:1.45;}
#staffDash #sysmodal .npr span{word-break:keep-all;}
#staffDash #sysmodal .npr b{flex:0 0 auto;font-size:11.5px;font-weight:800;}
#staffDash #sysmodal .nps.hid .npr b{color:#6B46C1;}
#staffDash #sysmodal .nps.quest .npr b{color:#A9802A;}
#staffDash #sysmodal .npd{margin-top:6px;font-size:10.5px;color:#8A76B8;}
#staffDash #sysmodal .npfoot{margin-top:12px;font-size:11px;color:var(--gray);}
#staffDash #sysmodal .smbtn{margin-top:16px;width:100%;font-family:inherit;font-size:15px;font-weight:700;border:0;background:var(--ink);color:#fff;border-radius:10px;padding:13px;cursor:pointer;}
#staffDash #sysmodal .attbtns{display:flex;gap:10px;margin-top:16px;}
#staffDash #sysmodal .attbtn{flex:1;font-family:inherit;font-size:15px;font-weight:800;border:0;border-radius:12px;padding:16px 0;cursor:pointer;color:#fff;}
#staffDash #sysmodal .attbtn.in{background:#1D7A4E;}#staffDash #sysmodal .attbtn.out{background:#C0392B;}
#staffDash #sysmodal .attbtn:disabled{cursor:default;}
#staffDash #sysmodal .attbtn.done{background:var(--soft);color:var(--gray2);border:1px solid var(--line);}
#staffDash #sysmodal .attbtn.out.lock{opacity:.4;}
#staffDash #sysmodal .attbtn.ghost{background:var(--soft);color:var(--gray2);border:1px solid var(--line);font-weight:700;}
#staffDash .mline.wkline{align-items:center;}
/* 공지(크루 허브 <style> 336-350·1137-1157·1162·1178-1182) */
#staffDash .ncard{border:1px solid var(--line);border-radius:13px;padding:15px 16px;margin-bottom:11px;}
#staffDash .ninput{width:100%;font-family:inherit;font-size:15px;font-weight:700;border:1px solid var(--line);border-radius:9px;padding:11px 12px;}
#staffDash .ntext{width:100%;font-family:inherit;font-size:14px;border:1px solid var(--line);border-radius:9px;padding:11px 12px;margin-top:9px;min-height:90px;line-height:1.6;}
#staffDash .nlbl{font-size:11px;letter-spacing:.1em;color:var(--gray);font-weight:700;margin:14px 0 7px;}
#staffDash .ntargets{display:flex;gap:7px;}
#staffDash .ntargets button{flex:1;font-family:inherit;font-size:13px;font-weight:600;border:1px solid var(--line);background:#fff;color:var(--gray);border-radius:9px;padding:9px 0;cursor:pointer;}
#staffDash .ntargets button.on{background:var(--ink);color:#fff;border-color:var(--ink);}
#staffDash .nchk{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
#staffDash .nchk label{font-size:12.5px;font-weight:600;border:1px solid var(--line);border-radius:8px;padding:7px 11px;cursor:pointer;color:var(--gray2);}
#staffDash .nchk label.on{background:var(--ink);color:#fff;border-color:var(--ink);}
#staffDash .nchk input{display:none;}
#staffDash .ncg{margin-top:10px;}
#staffDash .ncgh{font-size:11.5px;font-weight:800;color:var(--gray2);margin-bottom:5px;}
#staffDash .nphoto img{max-width:100%;border-radius:10px;display:block;}
#staffDash .nphoto button{font-family:inherit;font-size:12px;font-weight:600;border:1px solid var(--line);background:#fff;color:var(--warn);border-radius:8px;padding:7px 11px;cursor:pointer;margin-top:8px;}
#staffDash .nstat{margin-top:10px;border-top:1px solid var(--line);padding-top:9px;}
#staffDash .nstatbar{font-size:12px;color:var(--gray2);font-weight:700;}
#staffDash .nstatbar i{display:block;height:6px;border-radius:99px;background:var(--ink);margin-top:5px;}
#staffDash .nstatbar span b{color:var(--ink);}
#staffDash .nfold{margin-top:8px;}
#staffDash .nfold>summary{font-size:12px;color:var(--gray2);font-weight:700;cursor:pointer;}
#staffDash .nsec{margin-top:9px;}
#staffDash .nsec .nsh{font-size:11.5px;font-weight:800;margin-bottom:5px;}
#staffDash .ntags{display:flex;flex-wrap:wrap;gap:5px;}
#staffDash .ntag{font-size:11.5px;border:1px solid var(--line);border-radius:6px;padding:2px 8px;color:var(--gray2);}
#staffDash .ntag.on{background:#EAF6EF;border-color:#CDE9D8;color:#1D7A4E;}
#staffDash .nrep-item{font-size:12.5px;padding:6px 0;border-top:1px solid var(--line);display:flex;gap:8px;}
#staffDash .nrep-item b{flex:0 0 auto;min-width:48px;}
#staffDash .nrep-item span{color:var(--gray2);}
#staffDash .nrep-none{font-size:11.5px;color:var(--gray);}
#staffDash .nquest{margin-top:10px;border-top:1px solid var(--line);padding-top:9px;}
#staffDash .nquest .nqtoggle{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:700;cursor:pointer;}
#staffDash .nquest .nqtoggle small{font-weight:500;color:var(--gray);font-size:11px;}
#staffDash .nquest .nqtoggle input{width:17px;height:17px;}
#staffDash .nquest .nqxp{margin-top:8px;font-size:12.5px;color:var(--gray2);}
#staffDash .nquest .nqxp input{width:70px;font-family:inherit;font-size:13px;border:1px solid var(--line);border-radius:7px;padding:6px 8px;margin:0 4px;}
#staffDash .nqtoggle.leg{color:#9A6A10;font-weight:800;}
#staffDash .nq .qok,#staffDash .qok{font-size:11.5px;font-weight:800;color:#1D7A4E;}
#staffDash .nquestbox{margin-top:10px;border-top:1px solid var(--line);padding-top:9px;}
#staffDash .nquestbox .nsh{font-size:11.5px;font-weight:800;margin-bottom:6px;}
#staffDash .qrow{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:5px 0;font-size:13px;}
#staffDash .qrow .qn{font-weight:700;}#staffDash .qrow .qn small{font-weight:500;color:var(--gray);font-size:11px;margin-left:5px;}
/* 매장 관리(크루 허브 <style> 233-250·278-283·335·774-828·856-883·885-899·906-908·940-964·1024·1032-1037·1039-1053) */
#staffDash .rvpick{display:flex;flex-wrap:wrap;gap:7px;margin:4px 0 16px;}
#staffDash .rvpick button{font-family:inherit;font-size:13px;font-weight:600;border:1px solid var(--line);background:#fff;color:var(--gray2);border-radius:999px;padding:7px 14px;cursor:pointer;}
#staffDash .rvpick button.on{background:var(--ink);color:#fff;border-color:var(--ink);}
#staffDash .rvmeta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px;}
#staffDash .rvmeta label{flex:1 1 30%;font-size:11px;color:var(--gray);font-weight:600;}
#staffDash .rvmeta label input{display:block;width:100%;margin-top:4px;font-family:inherit;font-size:13px;border:1px solid var(--line);border-radius:8px;padding:8px 9px;}
#staffDash .rvcat{font-size:13px;font-weight:800;margin:16px 0 8px;padding-bottom:6px;border-bottom:1px solid var(--ink);}
#staffDash .rvitem{border:1px solid var(--line);border-radius:11px;padding:11px 12px;margin-bottom:8px;}
#staffDash .rvit-t{font-size:13.5px;font-weight:700;line-height:1.4;}
#staffDash .rvit-d{font-size:11.5px;color:var(--gray);margin:3px 0 9px;line-height:1.5;}
#staffDash .rvchips{display:flex;gap:5px;}
#staffDash .rvchips button{flex:1;font-family:inherit;font-size:11px;font-weight:700;border:1px solid var(--line);background:#fff;color:var(--gray2);border-radius:8px;padding:8px 0;cursor:pointer;line-height:1.2;}
#staffDash .rvchips button b{display:block;font-size:13px;}
#staffDash .rvchips button.on{background:var(--ink);color:#fff;border-color:var(--ink);}
#staffDash .rvcmt{width:100%;margin-top:8px;font-family:inherit;font-size:12.5px;border:1px solid var(--line);border-radius:8px;padding:8px 9px;}
#staffDash .rvtot{position:sticky;bottom:0;background:#fff;border-top:1.5px solid var(--ink);padding:14px 0 6px;margin-top:8px;display:flex;justify-content:space-between;align-items:center;gap:10px;}
#staffDash .rvtot .tv{font-size:20px;font-weight:800;font-variant-numeric:tabular-nums;}
#staffDash .rvtot .tv small{font-size:12px;color:var(--gray);font-weight:600;}
#staffDash .rvnote{border:1.5px solid #EBD9A0;background:#FCF9EF;border-radius:12px;padding:13px;margin-top:14px;}
#staffDash .rvnote-h{font-size:13px;font-weight:800;margin-bottom:10px;}#staffDash .rvnote-h small{font-weight:500;color:var(--gray);font-size:11px;margin-left:4px;}
#staffDash .rvnl{display:block;font-size:12px;font-weight:700;margin-top:9px;}#staffDash .rvnl span{font-weight:500;color:var(--gray);font-size:11px;margin-left:3px;}
#staffDash .rvnl textarea{width:100%;margin-top:5px;font-family:inherit;font-size:13px;line-height:1.6;border:1px solid var(--line);border-radius:9px;padding:9px 10px;min-height:62px;resize:vertical;}
#staffDash .rvnl.praise textarea{border-color:#E5C766;}#staffDash .rvnl.grow textarea{border-color:#9FC3E8;}
#staffDash .rvpub{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:700;margin-top:11px;}#staffDash .rvpub input{width:16px;height:16px;}#staffDash .rvpub span{font-weight:500;color:var(--gray);font-size:11px;}
#staffDash .cnone{font-size:12.5px;color:var(--mut);}
#staffDash .storefold{margin-top:18px;border-top:1px solid var(--line);padding-top:14px;}
#staffDash .storefold>summary{font-size:13px;font-weight:800;cursor:pointer;list-style:none;}
#staffDash .storefold>summary::-webkit-details-marker{display:none}
#staffDash .storefold>summary::after{content:' ▾';color:var(--mut);}
#staffDash .slogdone{background:#EAF6EE;border:1px solid #BFE3CB;color:#1D7A4E;border-radius:10px;padding:9px 12px;font-size:12.5px;font-weight:700;margin-bottom:10px;}
#staffDash .slogdone small{font-weight:500;color:#5B9A74;}
#staffDash .slmeta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:4px 0 6px;}
#staffDash .slmeta label{font-size:11.5px;font-weight:700;color:var(--gray2);}
#staffDash .slmeta input{width:90px;font-family:inherit;font-size:12.5px;border:1px solid var(--line);border-radius:8px;padding:7px 9px;}
#staffDash .slshift{display:inline-flex;gap:5px;}
#staffDash .slshift button{font-family:inherit;font-size:12px;font-weight:700;border:1px solid var(--line);background:#fff;color:var(--gray2);border-radius:8px;padding:7px 12px;cursor:pointer;}
#staffDash .slshift button.on{background:var(--ink);color:#fff;border-color:var(--ink);}
#staffDash .slh{font-size:12px;font-weight:800;margin:14px 0 7px;}
#staffDash .slh small{font-weight:500;color:var(--gray);font-size:10.5px;margin-left:4px;}
#staffDash .slitem{display:flex;align-items:center;gap:9px;width:100%;text-align:left;font-family:inherit;border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px 11px;margin-bottom:6px;cursor:pointer;}
#staffDash .slitem .sli{flex:0 0 20px;height:20px;border-radius:50%;background:var(--soft);font-size:10.5px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;color:var(--gray2);}
#staffDash .slitem .slt{flex:1;font-size:12.5px;color:var(--ink);line-height:1.45;}
#staffDash .slitem .sls{flex:0 0 auto;font-size:10.5px;font-weight:800;color:var(--mut);}
#staffDash .slitem.ok{border-color:#BFE3CB;background:#F4FBF6;}
#staffDash .slitem.ok .sls{color:#1D7A4E;}
#staffDash .slitem.ok .sli{background:#1D7A4E;color:#fff;}
#staffDash .slitem.bad{border-color:#F0C2BE;background:#FDF5F4;}
#staffDash .slitem.bad .sls{color:#C2453C;}
#staffDash .slitem.bad .sli{background:#C2453C;color:#fff;}
#staffDash .sltemp{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
#staffDash .sltemp span{font-size:11.5px;font-weight:700;color:var(--gray2);}
#staffDash .sltemp input{width:74px;font-family:inherit;font-size:12.5px;border:1px solid var(--line);border-radius:8px;padding:7px 8px;}
#staffDash .slwide{width:100%;margin-top:7px;font-family:inherit;font-size:12.5px;border:1px solid var(--line);border-radius:9px;padding:8px 10px;}
#staffDash .slwide.ta{min-height:64px;resize:vertical;line-height:1.6;}
#staffDash .slrev{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:10px;padding:8px 11px;margin-bottom:6px;font-size:12px;}
#staffDash .slrev .slrp{flex:0 0 76px;font-weight:700;}
#staffDash .slrev input[type=number]{width:58px;font-family:inherit;font-size:12.5px;border:1px solid var(--line);border-radius:7px;padding:6px 7px;}
#staffDash .slrev label{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;color:var(--gray2);}
#staffDash .slrev label.comp{color:#C2453C;}
#staffDash .slcalh{font-size:12px;font-weight:800;margin:4px 0 8px;}#staffDash .slcalh small{font-weight:500;color:var(--gray);}
#staffDash .slgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;}
#staffDash .slcell{aspect-ratio:1/1;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:8px;font-size:12.5px;background:#fff;position:relative;cursor:pointer;color:var(--ink);}
#staffDash .slcell.out{background:transparent;border:0;color:var(--mut);cursor:default;}
#staffDash .slcell.fut{color:var(--mut);cursor:default;background:var(--soft);}
#staffDash .slcell.sun:not(.sel){color:var(--gray2);}
#staffDash .slcell.sel{background:var(--ink);color:#fff;border-color:var(--ink);}
#staffDash .slcell .slc{position:absolute;top:2px;right:3px;font-size:8.5px;font-weight:800;color:#fff;background:#1D7A4E;border-radius:50%;min-width:13px;height:13px;line-height:13px;text-align:center;}
#staffDash .slcell.sel .slc{background:#E5B53A;color:#3A2E0A;}
#staffDash .slpick{text-align:center;color:var(--gray);font-size:13px;padding:16px 0 6px;}
#staffDash .slsel{display:flex;align-items:center;gap:10px;margin:14px 0 8px;}
#staffDash .slsel .sldl{font-size:14px;font-weight:800;}
#staffDash .slsel .slback{margin-left:auto;font-family:inherit;font-size:11.5px;font-weight:700;border:1px solid var(--line);background:#fff;color:var(--gray2);border-radius:8px;padding:6px 11px;cursor:pointer;}
#staffDash .slbtabs{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:10px;}
#staffDash .slbtabs button{flex:1 1 auto;font-family:inherit;font-size:12.5px;font-weight:700;border:1px solid var(--line);background:#fff;color:var(--gray);border-radius:8px;padding:8px 0;cursor:pointer;}
#staffDash .slbtabs button.on{background:var(--ink);color:#fff;border-color:var(--ink);}
#staffDash .slnd{font-size:11.5px;color:var(--gray2);margin:2px 0 6px;}#staffDash .slnd .slndc{color:#1D7A4E;font-weight:800;margin-left:2px;}
#staffDash .slhoto{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px;}
#staffDash .slhchip{font-family:inherit;font-size:12px;font-weight:600;border:1px solid var(--line);background:#fff;color:var(--gray2);border-radius:999px;padding:6px 11px;cursor:pointer;}
#staffDash .slhchip.cf{border-color:#BFE3CB;color:#1D7A4E;}
#staffDash .slhchip.on{background:var(--ink);color:#fff;border-color:var(--ink);}
#staffDash .pakpi{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:6px;}
#staffDash .pak{background:var(--soft);border-radius:11px;padding:11px 8px;text-align:center;}
#staffDash .pak.warn{background:#FCEEE8;}
#staffDash .pak .pkv{font-size:19px;font-weight:800;line-height:1;}#staffDash .pak .pkv small{font-size:11px;font-weight:700;color:var(--gray);}
#staffDash .pak.warn .pkv{color:#B5451F;}
#staffDash .pak .pkl{font-size:10px;color:var(--gray2);margin-top:4px;font-weight:600;}
#staffDash .pah{font-size:12px;font-weight:800;margin:14px 0 8px;}#staffDash .pah small{font-weight:500;color:var(--gray);font-size:10.5px;}
#staffDash .pacard{border:1px solid var(--line);border-radius:11px;padding:9px 12px;margin-bottom:7px;}
#staffDash .parow{display:flex;align-items:center;gap:9px;}
#staffDash .padot{width:9px;height:9px;border-radius:50%;flex:0 0 auto;}#staffDash .padot.hi{background:#D9534F;}#staffDash .padot.mid{background:#E5B53A;}
#staffDash .parow .pan{flex:1;font-size:13.5px;font-weight:700;}#staffDash .parow .pan small{display:block;font-weight:500;color:var(--gray);font-size:10.5px;}
#staffDash .palv{flex:0 0 auto;font-size:10.5px;font-weight:800;border-radius:6px;padding:3px 9px;}
#staffDash .palv.hi{background:#FCEEE8;color:#B5451F;}#staffDash .palv.mid{background:var(--goldbg);color:#A9802A;}
#staffDash .pareason{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px;}
#staffDash .pareason span{font-size:10.5px;color:var(--gray2);background:var(--soft);border-radius:5px;padding:2px 7px;}
#staffDash .paeng{display:flex;align-items:center;gap:9px;padding:5px 0;}
#staffDash .paeng .pan.sm{flex:0 0 96px;font-size:12.5px;font-weight:700;}#staffDash .paeng .pan.sm small{color:var(--gray);font-weight:500;margin-left:3px;font-size:10px;}
#staffDash .pabar{flex:1;height:8px;background:var(--soft);border-radius:99px;overflow:hidden;}#staffDash .pabar i{display:block;height:100%;}
#staffDash .pae{flex:0 0 auto;font-size:11.5px;font-weight:800;color:var(--gray2);min-width:32px;text-align:right;}
#staffDash .pafold{border:1px solid var(--line);border-radius:12px;padding:11px 13px;margin-bottom:8px;}
#staffDash .pafold>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:13.5px;}
#staffDash .pafold>summary::-webkit-details-marker{display:none;}
#staffDash .pafold>summary::before{content:'▸';color:var(--gray);font-size:12px;}
#staffDash .pafold[open]>summary::before{content:'▾';color:var(--ink);}
#staffDash .pafold>summary small{font-weight:500;color:var(--gray);font-size:11px;}
#staffDash .pafold>summary .pawarn{margin-left:auto;font-size:10.5px;font-weight:800;color:#B5451F;background:#FCEEE8;border-radius:6px;padding:3px 8px;}
#staffDash .pafold>summary .pawarn.mid{color:#A9802A;background:var(--goldbg);}
#staffDash .pabody{margin-top:11px;}
#staffDash .atbox{border:1px solid var(--line);border-radius:12px;padding:11px 13px;margin-bottom:8px;}
#staffDash .atbox>summary{list-style:none;cursor:pointer;display:flex;align-items:center;font-size:13.5px;font-weight:700;}
#staffDash .atbox>summary::-webkit-details-marker{display:none;}
#staffDash .atbox>summary::before{content:'▸';color:var(--gray);font-size:12px;margin-right:6px;}
#staffDash .atbox[open]>summary::before{content:'▾';color:var(--ink);}
#staffDash .atqr{text-align:center;margin:12px 0 6px;}
#staffDash .atqr img{border:1px solid var(--line);border-radius:12px;background:#fff;padding:6px;}
#staffDash .aturl{font-size:11px;color:var(--gray);margin-top:6px;}
#staffDash .atbtns{text-align:center;margin-bottom:6px;}
#staffDash .ath{font-size:12px;font-weight:800;margin:12px 0 7px;}
#staffDash .atrow{display:flex;align-items:center;gap:8px;font-size:12.5px;border-top:1px solid var(--line);padding:7px 0;}
#staffDash .atrow:first-of-type{border-top:0;}
#staffDash .atrow .atn{flex:1;font-weight:700;}
#staffDash .atrow .atin,#staffDash .atrow .atout{flex:0 0 auto;color:var(--gray2);font-size:11.5px;}
#staffDash .atrow .atdur{flex:0 0 auto;font-size:11px;color:var(--gray);min-width:56px;text-align:right;}
#staffDash .atgeo{font-size:11.5px;color:#A9802A;background:var(--goldbg);border-radius:9px;padding:9px 11px;margin:2px 0 8px;line-height:1.6;}
#staffDash .atgeo.on{color:#136B41;background:#EAF6EE;}
#staffDash .atgeo input{width:60px;border:1px solid var(--line);border-radius:6px;padding:4px 6px;font-family:inherit;font-size:12px;margin:0 2px;}
#staffDash .stqr{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:11px;color:var(--gray2);background:var(--soft);border-radius:8px;padding:6px 10px;margin:-2px 0 8px;}
#staffDash .stqr b{color:var(--ink);font-variant-numeric:tabular-nums;}
#staffDash .stqr span{font-size:10px;color:var(--gray);background:#fff;border:1px solid var(--line);border-radius:5px;padding:1px 6px;}
#staffDash .stqr button{margin-left:auto;font-family:inherit;font-size:11px;font-weight:700;border:1px solid var(--line);background:#fff;color:var(--gray2);border-radius:7px;padding:5px 10px;cursor:pointer;}
#staffDash .stqr .stqrx{margin-left:6px;padding:5px 9px;}
#staffDash .stqr .stqrx.del,#staffDash .strow.xqr .stqrx.del{color:#B3261E;border-color:#F0C9C6;}
#staffDash .stnoqr{display:flex;align-items:center;gap:7px;flex-wrap:wrap;border-radius:9px;padding:7px 10px;margin:-2px 0 9px;}
#staffDash .stnoqr.need{background:#FDF4E7;border:1px solid #F0D9A8;}
#staffDash .stnoqr.opt{background:#F5F3EE;border:1px solid var(--line);}
#staffDash .stnoqr.has{background:#EEF6EF;border:1px solid #CFE6D3;}
#staffDash .stnoqr .nqopt{flex:0 0 auto;font-size:10px;font-weight:700;color:var(--gray);background:#fff;border:1px solid var(--line);border-radius:5px;padding:2px 7px;}
#staffDash .stnoqr .nqb{flex:0 0 auto;font-size:10.5px;font-weight:800;color:#9A6B12;background:#F7E7C6;border-radius:6px;padding:2px 8px;}
#staffDash .stnoqr.has .nqb{color:#245c43;background:#DCEEDF;}
#staffDash .stnoqr .nqin{flex:1 1 180px;min-width:120px;font-family:inherit;font-size:12px;font-weight:600;color:var(--ink);border:1px solid var(--line);background:#fff;border-radius:7px;padding:6px 9px;}
#staffDash .stnoqr .nqin::placeholder{color:#B79A63;font-weight:500;}
#staffDash .stnoqr.has .nqin::placeholder{color:var(--mut);}
#staffDash .stnoqr .nqreq{flex:0 0 auto;font-size:10px;font-weight:800;color:#B0443C;background:#FBE3E2;border-radius:5px;padding:2px 7px;}
#staffDash .stnoqr .nqok{flex:0 0 auto;font-size:10px;font-weight:800;color:#1D7A4E;background:#DCEEDF;border-radius:5px;padding:2px 7px;}
#staffDash .strow.xqr{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:#FCF3F2;border:1px dashed #F0C9C6;border-radius:9px;padding:8px 10px;margin:5px 0;}
#staffDash .strow.xqr .xqrbadge{flex:0 0 auto;font-size:10px;font-weight:800;color:#B3261E;background:#FBE3E2;border-radius:5px;padding:2px 7px;}
#staffDash .strow.xqr .snm{font-weight:700;}
#staffDash .strow.xqr .xqrt{font-size:11px;color:var(--gray2);font-variant-numeric:tabular-nums;}
#staffDash .strow.xqr .stqrx{font-family:inherit;font-size:11px;font-weight:700;border:1px solid var(--line);background:#fff;color:var(--gray2);border-radius:7px;padding:5px 9px;cursor:pointer;}
#staffDash .strow.xqr .stqrx:first-of-type{margin-left:auto;}
#staffDash .storefold[open]>summary::after{content:' ▴';}
#staffDash .ordrow{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:10px;padding:9px 11px;font-size:13.5px;}
#staffDash .ordrow.done{opacity:.55;}
#staffDash .ordu{flex:0 0 auto;font-size:12px;}#staffDash .ordu.urg{color:#D9534F;}
#staffDash .ordit{flex:1;min-width:0;}#staffDash .ordit b{font-weight:700;}
#staffDash .ordit small{display:block;color:var(--gray);font-size:11px;margin-top:1px;}
#staffDash .ordit .ordwho{font-style:normal;font-size:10.5px;color:var(--gray);font-weight:600;}
#staffDash .ordx{flex:0 0 auto;border:0;background:transparent;color:var(--mut);font-size:14px;cursor:pointer;padding:2px 4px;}
#staffDash .ordx:hover{color:#D9534F;}
#staffDash .ordbtn{flex:0 0 auto;border:1px solid var(--line);background:#fff;font-family:inherit;font-size:11.5px;font-weight:700;border-radius:8px;padding:7px 10px;cursor:pointer;color:var(--gray2);}
#staffDash .ordbtn.on{background:#E7F4EC;border-color:#1D7A4E;color:#1D7A4E;}
#staffDash .hfold{border:1px solid var(--line);border-radius:10px;padding:4px 12px;margin-bottom:8px;}
#staffDash .hfold>summary{display:flex;align-items:center;gap:8px;padding:9px 0;cursor:pointer;list-style:none;font-size:13px;}
#staffDash .hfold>summary::-webkit-details-marker{display:none}
#staffDash .hfold>summary .hfb{font-weight:800;}
#staffDash .hfold>summary small{color:var(--gray);font-size:11.5px;}
#staffDash .hfold>summary::after{content:'▾';color:var(--mut);margin-left:auto;}
#staffDash .hfold[open]>summary::after{content:'▴';}
#staffDash .hfold[open]>summary{border-bottom:1px solid var(--line);}
#staffDash .hfbadge{font-size:10.5px;font-weight:700;border-radius:6px;padding:2px 7px;}
#staffDash .hfbadge.warn{background:#FBECEC;color:#B00020;}
#staffDash .hfbadge.ok{background:#EAF6EF;color:#1D7A4E;}
/* 인사 관리 위 '계정 연결이 필요한 관리자' 안내(관리자 화면에서 새로 씀) */
#staffDash .hrlink{border:1px solid #F3B9B9;background:#FDECEC;color:#8E2B2B;border-radius:12px;padding:11px 13px;margin:0 0 12px;font-size:12.5px;line-height:1.6}
#staffDash .hrlink.ok{border-color:#C7E3D1;background:#F5FAF6;color:#1D7A4E}
#staffDash .hrlink .hrlinkn{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
#staffDash .hrlink .hrlinkn span{background:#fff;border:1px solid #F3B9B9;border-radius:8px;padding:3px 9px;font-weight:700;color:var(--ink)}
#staffDash .hrlink .hrlinkn small{font-weight:500;color:var(--gray2)}
/* 퇴사자 보관함(크루 허브와 같게, 팀장 10-03) */
#staffDash .rtfold{margin:6px 0 12px;border:1px dashed var(--line);border-radius:12px;padding:0 12px;background:var(--soft);}
#staffDash .rtfold summary{cursor:pointer;padding:11px 0;font-size:13px;font-weight:800;color:var(--gray2);}
#staffDash .wtadj{display:inline-block;margin-left:6px;font-style:normal;font-size:10.5px;font-weight:800;color:#7A5B00;background:#FBF2D8;border:1px solid #EADFB8;border-radius:12px;padding:1px 7px;white-space:nowrap;vertical-align:middle;}
#staffDash .rtfold summary small{font-weight:500;color:var(--gray);margin-left:4px;}
#staffDash .rtrow{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:10px 0;border-top:1px solid var(--line);}
#staffDash .rtrow.orphan b{color:var(--warn);}
#staffDash .rtmain{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1;}
#staffDash .rtmain b{font-size:14px;}
#staffDash .rtsub{font-size:11.5px;color:var(--gray);}
#staffDash .rtbtns{display:flex;gap:6px;flex:0 0 auto;}
#staffDash .rtbtns button{font-family:inherit;font-size:12px;font-weight:700;border:1px solid var(--ink);background:#fff;border-radius:8px;padding:6px 10px;cursor:pointer;}
#staffDash .rtbtns .rtdel{border-color:var(--warn);color:var(--warn);}
#staffDash .rtbtns button:disabled{opacity:.4;cursor:default;}
#staffDash .rtnote{font-size:12.5px;line-height:1.6;color:var(--gray2);background:#FBF2D8;border:1px solid #EADFB8;border-radius:10px;padding:9px 12px;margin-top:10px;text-align:left;}
/* 근로계약서(크루 허브 <style> 전자 근로계약서 · 2026-10-16) — 창(#ctOverlay)은 관리자 화면에선 #staffDash 안에 미리 만들어 둔다(#sysmodal 과 같은 까닭).
   인쇄는 새 창(contractPrint)이라 크루 허브의 @media print 는 안 옮긴다. */
#staffDash #ctOverlay{position:fixed;inset:0;z-index:10002;background:rgba(10,10,10,.55);display:none;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px 12px 40px;}
#staffDash #ctOverlay.show{display:block;}
#staffDash #ctOverlay .ctsheet{max-width:640px;margin:0 auto;background:#fff;border-radius:18px;padding:20px 18px 18px;box-shadow:0 12px 40px rgba(0,0,0,.3);}
#staffDash .cthead{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:12px;}
#staffDash .cttag{font-size:11.5px;font-weight:800;letter-spacing:.08em;color:#7A5B00;}
#staffDash .ctttl{font-size:21px;font-weight:800;margin-top:2px;}
#staffDash .ctttl small{font-size:12.5px;color:var(--gray);font-weight:600;margin-left:4px;}
#staffDash .ctx{flex:0 0 auto;width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:#fff;font-size:16px;cursor:pointer;}
#staffDash .ctstate{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12.5px;color:var(--gray2);margin-bottom:10px;}
#staffDash .ctnote{font-size:12.5px;color:var(--gray2);background:#FBF2D8;border:1px solid #EADFB8;border-radius:10px;padding:9px 12px;margin-bottom:6px;line-height:1.55;}
#staffDash .ctempty{font-size:13.5px;color:var(--gray);padding:14px 2px;}
#staffDash .ctlist{display:flex;flex-direction:column;gap:8px;}
#staffDash .ctli{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--line);border-radius:12px;padding:10px 12px;}
#staffDash .ctli b{display:block;font-size:14px;}
#staffDash .ctli small{display:block;font-size:11.5px;color:var(--gray);margin-top:1px;}
#staffDash .ctbtn{flex:0 0 auto;margin-left:auto;font-family:inherit;font-size:12.5px;font-weight:800;border:1px solid var(--ink);background:#fff;color:var(--ink);border-radius:8px;padding:6px 12px;cursor:pointer;white-space:nowrap;}
#staffDash .ctrow{flex-wrap:wrap;}
#staffDash .ctrow .exp{font-size:11.5px;}
#staffDash .cthr{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);font-size:12.5px;}
#staffDash .cthr .cthl{font-weight:800;color:var(--gray2);}
#staffDash .ctbar{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;}
#staffDash .ctbar button{flex:1;min-height:48px;border-radius:12px;font-family:inherit;font-size:15px;font-weight:800;cursor:pointer;border:1.5px solid var(--line);background:#fff;color:var(--ink);}
#staffDash .ctbar button.pri{background:#141210;color:#fff;border-color:#141210;}
#staffDash .ctbar button:disabled{opacity:.5;cursor:default;}
#staffDash .ctform label{display:flex;flex-direction:column;gap:5px;font-size:12.5px;font-weight:700;color:var(--gray2);margin-top:10px;}
#staffDash .ctform input,#staffDash .ctform textarea,#staffDash .ctform select{font-family:inherit;font-size:15px;color:var(--ink);padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;width:100%;box-sizing:border-box;}
#staffDash .ctform textarea{resize:vertical;min-height:52px;line-height:1.5;}
#staffDash .ctgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
#staffDash .ctreq{color:#B00020;font-size:11px;font-weight:800;}
#staffDash .ctchk{flex-direction:row!important;align-items:center;gap:8px!important;font-size:13px!important;color:var(--ink)!important;margin-top:10px;cursor:pointer;}
#staffDash .ctchk input{width:18px;height:18px;flex:0 0 auto;}
#staffDash .ctdoc{font-size:13px;line-height:1.7;color:#141210;}
#staffDash .ctpage{border:1px solid var(--line);border-radius:14px;padding:16px 14px;background:#FFFEFB;margin-bottom:12px;word-break:keep-all;}
#staffDash .ctpage h2{text-align:center;font-size:19px;letter-spacing:.12em;margin:2px 0 12px;}
#staffDash .ctpage p{margin:8px 0;}
#staffDash .cttbl{border-collapse:collapse;width:100%;margin:6px 0;font-size:12.5px;}
#staffDash .cttbl th,#staffDash .cttbl td{border:1px solid #DDD6C8;padding:6px 8px;vertical-align:top;text-align:left;}
#staffDash .cttbl th{background:#F5F1E8;font-weight:800;color:#4A4339;width:92px;}
#staffDash .cttbl.ctin2{margin:6px 0 8px;font-size:12px;}
#staffDash .cttbl.ctin2 th{width:auto;}
#staffDash .ctlead{font-weight:600;}
#staffDash .ctkv{margin-top:6px;padding-top:6px;border-top:1px dashed #E3DCCD;}
#staffDash .ctsub{color:var(--gray);font-size:11.5px;}
#staffDash .ctclause{white-space:normal;}
#staffDash .ctdoc .ctsigbox .ctinimg{height:56px;max-width:160px;}
#staffDash .ctagree{font-weight:700;font-size:12px;margin:2px 0 12px;color:#4A4339;}
#staffDash .ctrecv,#staffDash .ctto{text-align:right;margin:6px 0;font-weight:700;}
#staffDash .ctinname{font-weight:800;}
#staffDash .ctin{color:#9A8F7E;margin-left:3px;}
#staffDash .ctinimg{height:40px;max-width:130px;object-fit:contain;vertical-align:middle;margin:0 2px 0 6px;}
#staffDash .ctblank{color:#B5830E;font-weight:700;}
#staffDash .ctdoc .ctdate{text-align:center;font-weight:700;margin:14px 0 8px;}
#staffDash .ctdoc .ctsig{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
#staffDash .ctdoc .ctsigbox{border:1px solid #E3DCCD;border-radius:12px;padding:10px 12px;min-height:96px;font-size:12.5px;}
#staffDash .ctdoc .ctsigbox small{display:block;color:var(--gray);font-size:11px;margin-top:4px;}
#staffDash .ctcs{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 0;border-top:1px solid #ECEAE4;font-size:13px;}
#staffDash .ctcs span{flex:1 1 150px;font-weight:700;}
#staffDash .ctcs label{display:flex;align-items:center;gap:4px;cursor:pointer;}
#staffDash .ctcs input{width:17px;height:17px;}
#staffDash .ctfield{display:flex;flex-direction:column;gap:5px;font-size:12.5px;font-weight:700;color:var(--gray2);}
#staffDash .ctfield input{font-family:inherit;font-size:15px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;}
#staffDash .cthint{font-size:12px;color:var(--gray2);background:#F5F1E8;border-radius:8px;padding:7px 10px;margin-top:10px;}
#staffDash .ctpaper{font-size:11.5px;color:var(--gray);}
#staffDash .ctsk{font-size:12px;font-weight:800;color:#7A5B00;margin-bottom:4px;}
#staffDash .ctsigwait,#staffDash .ctsigload{margin-top:10px;font-size:12.5px;font-weight:800;color:#B5830E;}
#staffDash .ctsignarea{margin-top:14px;border:1.5px solid #EADFB8;background:#FFFDF7;border-radius:14px;padding:12px;}
#staffDash .ctpad{display:block;width:100%;height:150px;margin-top:10px;border:1.5px dashed #C8A24B;border-radius:12px;background:#fff;touch-action:none;cursor:crosshair;}
#staffDash .ctpadbar{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:6px;font-size:11.5px;color:var(--gray);}
#staffDash .ctpadbar button{font-family:inherit;font-size:12px;font-weight:700;border:1px solid var(--line);background:#fff;border-radius:8px;padding:5px 10px;cursor:pointer;}
#staffDash .ctdone{background:#E7F4EC;color:#1D7A4E;border-radius:12px;padding:11px 13px;font-size:13.5px;font-weight:700;margin-bottom:10px;}
#staffDash .ctmyalert{display:flex;flex-direction:column;gap:4px;background:#FBF2D8;border:1px solid #EADFB8;border-radius:12px;padding:12px 13px;}
#staffDash .ctmyalert b{font-size:15px;}
#staffDash .ctmyalert span{font-size:12.5px;color:var(--gray2);}
#staffDash .ctmyalert.warn{background:#FBEAEC;border-color:#F2CDD3;}
#staffDash .ctmybtn{margin-top:8px;min-height:46px;border:0;border-radius:12px;background:#141210;color:#fff;font-family:inherit;font-size:15px;font-weight:800;cursor:pointer;}
/* ==STAFF-CSS-END== */

/* 표 전체: 가운데 정렬 · 세로 구분선 (사장님 2026-10-28 "가독성 개선") — 재고표에만 있던 규칙을 모든 표로.
   제목 줄(colspan)은 그대로 왼쪽. !important 는 표마다 따로 둔 오른쪽·왼쪽 정렬(인라인 포함)을 덮으려고 */
.tbl-scroll table :is(th,td):not([colspan]){text-align:center!important}
.tbl-scroll table :is(th,td):not([colspan]) :is(input,select){text-align:center!important}
/* 세로 구분선은 재고표와 같은 진한 칸선(--grid) — --line-2 는 흰 바탕과 거의 같아 안 보였다(사장님 2026-10-29 "세로 구분선 만들어줘") */
:is(.tbl-scroll table, .hourly-tbl) :is(th,td) + :is(th,td){border-left:1px solid var(--grid)}

/* 같이 적기(2026-10-28) — 남이 커서를 둔 칸: 그 사람 색 테두리 + 이름표 · 받은 값은 잠깐 빛남 · 아래 '같이 보는 중' */
.co-peer{position:relative;box-shadow:inset 0 0 0 2px var(--co)}
.co-peer::after{content:attr(data-co);position:absolute;top:-9px;left:2px;z-index:6;padding:0 5px;border-radius:4px;background:var(--co);color:#fff;font-size:10px;font-weight:700;line-height:15px;white-space:nowrap;pointer-events:none}
.co-flash{transition:background .6s;background:var(--jade-softer)!important}
.cobar{position:fixed;left:12px;bottom:12px;z-index:60;padding:6px 12px;border-radius:999px;background:var(--card);border:1px solid var(--line);box-shadow:0 2px 10px rgba(0,0,0,.12);font-size:12.5px;color:var(--ink-2)}
.co-go{font:inherit;font-weight:800;background:none;border:0;padding:2px 2px;cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}
.co-jump{animation:coJump 1.6s ease-out}
@keyframes coJump{0%,40%{box-shadow:inset 0 0 0 3px var(--jade,#0a7);background:var(--jade-softer)}100%{box-shadow:inset 0 0 0 0 transparent}}
.capturing .cobar{display:none} .capturing .co-peer{box-shadow:none} .capturing .co-peer::after{display:none}

/* ── 가독성 2차 (사장님 2026-10-29 고른 것) ── */
/* 1 사용이 음수면 빨갛게 — 재고·입고를 잘못 적은 것 */
#stockTable .calc.useneg{color:var(--bad);font-weight:800}
/* 3 0 은 모두 같은 옅은 회색(칸선 색) — 폐기·안전재고 0 은 거의 안 보이고 생산·이동 0 은 진해서 섞여 있었다. 값이 든 칸이 먼저 보이게 */
#stockTable input.cinput.z0, #stockTable input.cinput.z1, #stockTable .calc.z1,
:root:not(.capturing) #stockTable tbody td input.cinput.z0{color:var(--grid);font-weight:400}
/* 4 안전재고 / 목표 — 두 숫자 사이에 '/' · 안 적은 안전재고는 '–' */
#stockTable .rptgt{align-items:center}
#stockTable .rpsep{color:var(--mute);font-weight:400;padding:0 1px}
#stockTable .rptgt .cinput::placeholder, #stockTable .cinput.mvq::placeholder, #stockTable .cinput.dnq::placeholder{color:var(--grid)}   /* 이동 빈칸의 '0' 도 같은 옅은 회색 */
/* 6 작은 글자 키우기 — 폰에서 머리글·상태 칩·저장 표시가 작았다 */
.stat{font-size:12.5px}
#stockTable .stat{font-size:13px}
#stockTable thead th{font-size:13.5px}
.sync{font-size:12.5px}
/* 7 마감 점검 — 앞 3개 뒤 '외 n개'를 눌러 펼친다 */
.cc-more{display:inline} .cc-more summary{display:inline;cursor:pointer;color:var(--ink-2);text-decoration:underline;text-underline-offset:2px}
.cc-more[open] summary{display:none}
/* 마감 사진의 토스 판매 비교 — 고칠 수 있는 칸이지만 사진에선 글자처럼(테두리·바탕 없이), 고친 값만 노란 글자 */
.capturing .pos-cmp .pc-in{border:0;background:transparent;padding:0}
.capturing .pos-cmp .pc-in.posfix{background:transparent;color:var(--warn)}

/* ── 토스 판매 비교 모양(사장님 2026-10-29 "ui 개선") — 재고표와 같은 진한 머리글 · 세로선 · 0 옅게 · 차이 색 알약 ── */
.pos-cmp .pc-sum{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:2px 0 12px;font-size:13.5px}
.pos-cmp .pc-chip{display:inline-flex;align-items:center;padding:3px 11px;border-radius:999px;font-size:13px;font-weight:800}
.pos-cmp .pc-chip.bad{background:var(--bad-soft);color:var(--bad)}
.pos-cmp .pc-chip.ok{background:var(--paper-2);color:var(--ink-2)}
.pos-cmp .pc-list{color:var(--ink-2)}
.pos-cmp .neg{color:var(--bad);font-weight:800} .pos-cmp .pos{color:var(--warn);font-weight:800}
.pos-cmp thead th{background:var(--head);color:#fff;font-size:13px;font-weight:700;border-bottom-color:var(--head)}
.pos-cmp thead th + th{border-left-color:rgba(255,255,255,.22)}
.pos-cmp th,.pos-cmp td{padding:8px 10px;border-bottom-color:var(--grid)}
.pos-cmp tr.grp td{background:var(--paper-2);color:var(--ink);font-size:12.5px;font-weight:800;padding:7px 12px}
.pos-cmp tr.grp td .pc-gn{color:var(--mute);font-weight:600;margin-left:4px}
.pos-cmp tr.grp td .pc-gbad{margin-left:10px;color:var(--bad)}
.pos-cmp tr.bad td{background:var(--bad-soft)} .pos-cmp tr.bad td.l{font-weight:800}
.pos-cmp .pc-na{color:var(--grid);font-weight:400}
.pos-cmp td.sum{font-weight:800} .pos-cmp td.sum.posfix{color:var(--warn)}   /* 기본·옵션을 고친 합계 */
.pos-cmp .pc-in{width:56px;padding:3px 4px;border:1px solid transparent;border-bottom:1px dashed var(--grid);border-radius:6px 6px 0 0;background:transparent;text-align:center;font-weight:800}
.pos-cmp .pc-in:hover{border-color:var(--line)} .pos-cmp .pc-in:focus{border:1px solid var(--ink-2);border-radius:6px;outline:none;background:var(--card)}
.pos-cmp .pc-b{min-width:40px;padding:2px 9px}
.pos-cmp .pc-b.minus{background:var(--bad);color:#fff} .pos-cmp .pc-b.plus{background:var(--warn);color:#fff}
.pos-cmp .pc-foot{margin-top:10px;line-height:1.6}
.capturing .pos-cmp .pc-in{border:0}

/* 품목 코드 화면(2026-10-29) */
#itTable .it-code{font-variant-numeric:tabular-nums;letter-spacing:.04em}
#itTable tr.it-off td{color:var(--mute)} #itTable tr.it-off .it-code{text-decoration:line-through}
#itTable .cinput{text-align:center}
#itTable select.cinput{width:auto;min-width:78px;padding-right:22px}   /* 분류·상태 고르기 — 글자가 화살표에 가려 안 보였다 */
/* 품목 코드 — 기본/상세(2026-10-29) */
#itTable .it-size{white-space:nowrap} #itTable .it-size select.cinput{min-width:58px}
#itTable .it-from{color:var(--mute)} #itTable input.it-from{font-style:italic}
#itTable .it-toggle{padding:4px 10px;font-size:12.5px} #itTable .it-toggle b{color:var(--jade,#1a7f5a)}
#itTable tr.it-open > td{background:var(--paper-2)}
#itTable tr.it-detail > td{background:var(--paper-2);padding:12px 16px;text-align:left!important}
#itTable .it-dwrap{display:flex;gap:28px;flex-wrap:wrap;align-items:flex-start}
#itTable .it-dcol h4{margin:0 0 8px;font-size:13px}
#itTable .it-rtab{min-width:0;width:auto;background:var(--card)}
#itTable .it-rtab th{background:var(--paper-2);color:var(--mute);font-size:12px}
#itTable .it-rcode{font-size:12px;color:var(--mute);letter-spacing:.04em}
#itTable .it-rdel{appearance:none;border:0;background:none;color:var(--mute);cursor:pointer;font-size:14px}
#itTable .it-more label{display:flex;align-items:center;gap:8px;margin:0 0 6px;font-size:12.5px;color:var(--mute)}
#itTable .it-more label .cinput{text-align:left!important}
/* 품목 관리 UI 다듬기(관리자 2026-11-07) — 칸마다 입력 상자처럼 보이던 표를 읽는 표로: 세로줄·화살표는 마우스를 올리거나 고칠 때만,
   줄 높이를 줄이고, 이름은 왼쪽·돈은 오른쪽(쉼표), 머리 줄은 위에 붙는다 */
#itTable :is(th,td)+:is(th,td){border-left:0}
#itTable td{padding:2px 6px}
#itTable th{padding:9px 6px;white-space:nowrap}
#itTable :is(th,td).it-l, #itTable thead th:nth-child(-n+2){text-align:left!important}   /* 표 공통 가운데 정렬(!important)을 이긴다 */
#itTable td.it-l .cinput{text-align:left!important}
#itTable .it-name .cinput{width:100%!important;min-width:150px;font-weight:600}
#itTable .cinput{height:30px;padding:4px 8px;border:1px solid transparent;border-radius:6px;background:transparent;transition:border-color .12s,background .12s}
#itTable tr:hover .cinput{border-color:var(--line)}
#itTable .cinput:focus{border-color:var(--ink);background:var(--card);outline:0}
#itTable .it-num{text-align:right!important;font-variant-numeric:tabular-nums}
#itTable input.it-from{font-style:normal}
#itTable select.cinput{appearance:none;-webkit-appearance:none;min-width:64px;padding-right:20px;background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23999' stroke-width='1.4'/%3E%3C/svg%3E") no-repeat right 6px center/0 0}
#itTable tr:hover select.cinput, #itTable select.cinput:focus{background-size:10px 6px}
#itTable .it-size select.cinput{min-width:44px}
#itTable tr.it-off .cinput, #itTable tr.it-off b{color:var(--mute)}
#itTable td.it-st select.cinput{font-weight:600}
#itTable tr.it-off td.it-st select.cinput{color:var(--bad)}
#itTable tbody > tr:not(.it-detail):hover > td{background:var(--paper-2)}
#itTable .it-toggle{appearance:none;border:0;background:transparent;color:var(--ink-2);font:inherit;font-size:12.5px;padding:4px 8px;border-radius:6px;cursor:pointer;white-space:nowrap}
#itTable .it-toggle:hover, #itTable tr.it-open .it-toggle{background:var(--line);color:var(--ink)}
@media (min-width:700px){
  #items .tbl-scroll{max-height:calc(100vh - 230px);overflow:auto}
  #itTable thead th{position:sticky;top:0;z-index:2;background:var(--card);box-shadow:inset 0 -1px 0 var(--line)}
}
#stockTable .sub-sel{font:inherit;font-size:12px;padding:3px 4px;border:1px solid var(--line);border-radius:6px;background:var(--card);color:var(--ink)}   /* 재고 칸 모양(한 칸·해동/냉동·소분/PK, 2026-10-29) */
#itTable .it-del{appearance:none;margin-left:6px;border:1px solid var(--line);background:var(--card);color:var(--bad);border-radius:6px;padding:4px 8px;font:inherit;font-size:12px;cursor:pointer}   /* 품목 지우기(마스터) */
.it-addbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:4px 0 10px;padding:10px 12px;border:1px dashed var(--line);border-radius:10px}
.it-addbar[hidden]{display:none}
.it-unmatched{margin:4px 0 10px;padding:10px 12px;border:1px solid var(--warn,#c8781e);border-radius:10px;font-size:13px}
.it-unmatched[hidden]{display:none}
.it-unmatched ul{margin:6px 0 0;padding-left:18px;columns:2}
.it-addbar b{font-size:13px}
.it-addbar .cinput{flex:0 0 auto;width:auto;text-align:left}
.it-addbar #itNewName{width:190px} .it-addbar #itNewCat{width:96px} .it-addbar #itNewUnit{width:60px;text-align:center}

.chg-dev{display:block;font-size:11.5px;color:var(--ink-3,#888);margin-top:1px}   /* 변경 기록 — 어느 기기에서(마스터만) */

.pc-t td.why{min-width:120px} .pc-t .pc-why{width:100%;min-width:110px;box-sizing:border-box;padding:4px 6px;border:1px solid var(--line);border-radius:6px;font:inherit;font-size:13px;text-align:left;background:var(--card);color:var(--ink)}   /* 판매 비교 차이 사유 */

/* ===== 왼쪽 메뉴 · 위 줄 · 폰 서랍 (관리자 왼쪽 메뉴 1단계, 2026-11-03 · 시안 모양 맞춤 같은 날) =====
   큰 화면: 왼쪽 220px 고정 메뉴(로고 → 계정 카드 → 묶음 → 아이콘 항목) + 위 줄(제목 줄 / 필터 줄). 폰(≤860px): 메뉴는 ☰ 로 여는 서랍.
   색은 지금 토큰 그대로 — 다크 모드가 따라온다(시안 고정 색은 가장 가까운 토큰으로). */
.side{position:fixed;top:0;bottom:0;left:0;width:220px;z-index:35;display:flex;flex-direction:column;
  background:var(--paper-2);border-right:1px solid var(--line);
  padding:calc(16px + env(safe-area-inset-top)) 12px calc(14px + env(safe-area-inset-bottom)) calc(12px + env(safe-area-inset-left));box-sizing:border-box}
.side-head{padding:4px 8px 12px}
.side-head .mark{font-weight:800;font-size:14px;letter-spacing:.14em;color:var(--ink)}
.side-acct{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:4px;font-size:12px}
.side-who{color:var(--ink-2)}
.side-who:empty{display:none}
.side-who em{font-style:normal;background:color-mix(in srgb,var(--toss) 12%,var(--card));color:var(--toss);font-size:10px;font-weight:700;border-radius:4px;padding:1px 5px;margin-left:4px}
.side-org{display:block;font-size:13px;font-weight:700;color:var(--ink);margin-top:2px}
.side-nav{flex:1;overflow-y:auto;overscroll-behavior:contain}
.side-gl{font-size:11px;font-weight:700;color:var(--mute);margin:14px 8px 4px}
.side-g0{margin-top:10px}   /* 묶음 이름 없는 맨 위(홈) — 시안처럼 계정 카드와 띄운다 */
.side-i{display:flex;align-items:center;gap:8px;width:100%;appearance:none;border:0;background:none;text-align:left;cursor:pointer;
  font:inherit;font-size:13.5px;color:var(--ink);padding:8px 10px;border-radius:8px}
.side-i:hover{background:color-mix(in srgb,var(--line) 55%,var(--paper-2))}
.side-i.on{background:var(--line);font-weight:700}
.side-ic{width:18px;text-align:center;flex:none}
.side-tag{margin-left:auto;font-size:10px;font-weight:600;color:var(--mute);white-space:nowrap}
/* 메뉴 순서 편집(마스터, 2026-11-03) — 묶음 이름·항목마다 ▲▼, 맨 아래 단추 줄 */
.side-gl{display:flex;align-items:center;gap:6px}
.side-mv{margin-left:auto;display:inline-flex;gap:2px;flex:none}
.side-mv button{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--mute);font:inherit;font-size:10px;line-height:1;border-radius:6px;padding:4px 6px;cursor:pointer}
.side-mv button:hover{color:var(--ink);border-color:var(--ink)}
.side-ie{cursor:default}
.side-ie:hover{background:none}
.side-edit{display:flex;flex-wrap:wrap;gap:6px;padding:12px 8px 8px}
.side-edit .code-admin-btn{margin-left:0}
.side-foot{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:12px 8px 0;border-top:1px solid var(--line)}
.side-foot .theme-btn{margin-right:0}
.side-foot .code-admin-btn{margin-left:auto}
/* 위 줄 — 제목 줄(☰ + 큰 제목) 아래 필터 줄(날짜 · 매장 ▼, 시안 .sel 상자 모양). 통째로 붙어 있고 높이는 app.js setStickTop 이 잰다 */
.topbar{position:sticky;top:0;z-index:40;background:var(--paper-veil);backdrop-filter:saturate(1.2) blur(8px);
  border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top)}
.topbar-inner{display:flex;flex-direction:column;align-items:stretch;gap:12px;padding-top:18px;padding-bottom:12px;box-sizing:border-box}
.top-ttl{display:flex;align-items:center;gap:10px;min-width:0}
.top-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.menu-btn{display:none;appearance:none;border:1px solid var(--line);background:var(--card);color:var(--ink);
  width:36px;height:36px;border-radius:8px;font-size:18px;line-height:1;cursor:pointer;flex:0 0 36px}
.menu-title{font-size:22px;font-weight:800;letter-spacing:-.02em;margin:0;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar .datepick{flex:0 1 auto;max-width:none;padding:3px 4px;border-radius:8px;box-shadow:none}
.topbar .datepick button#theDate.d{font-size:13px;padding:4px 6px}
.topbar .branch-btn{margin-left:0;background:var(--card);border-radius:8px;padding:8px 12px;font-size:13px;gap:8px}   /* 시안 .sel — 어느 매장에 적는지 보이게 굵게 */
.topbar .branch-btn::after{content:'▼';font-size:10px;color:var(--mute);margin-left:0}
.topbar .branch-btn.locked::after{content:''}
/* 안 쓰는 화면에선 날짜·매장 ▼ 를 숨긴다(app.js menuTop → body[data-nodate]·[data-nobr], 2026-11-03). 둘 다 없으면 필터 줄째 접는다 — 빈 틈 없이 */
:root:not(.capturing) body[data-nodate] .topbar .datepick{display:none}
:root:not(.capturing) body[data-nobr] .topbar .branch-btn{display:none}
:root:not(.capturing) body[data-nodate][data-nobr] .topbar .top-bar{display:none}
:root:not(.capturing) body:is([data-nodate],[data-nobr]) .datestrip{display:none}   /* '이스트폴점 · 00:00 기준 마감 완료' 줄도 — 그 날·그 매장 이야기라 날짜·매장을 숨긴 화면엔 안 맞는다 */
.datestrip{margin:14px 0 4px}
.sub-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 2px}
.sub-tabs[hidden]{display:none}
.sub-tab{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--ink-2);font:inherit;font-size:12.5px;font-weight:700;border-radius:999px;padding:7px 14px;cursor:pointer}
.sub-tab.on{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}
#report .rp-tabs{display:none}   /* 리포트 안 주간·월간·… 줄은 위 작은 탭이 대신(같은 단추를 눌러 준다) */
@media (min-width:861px){
  body{padding-left:220px}
  .cobar,.livebar,.pendbar{left:calc(220px + 12px)}   /* 아래 고정 띠가 왼쪽 메뉴 맨 아래(로그아웃·밝기)를 덮지 않게 */
}
@media (max-width:860px){
  .side{transform:translateX(-100%);transition:transform .2s ease;z-index:70;width:min(250px,82vw);box-shadow:none}
  body.side-open .side{transform:none;box-shadow:0 0 40px rgba(0,0,0,.25)}
  body.side-open::before{content:'';position:fixed;inset:0;z-index:69;background:rgba(0,0,0,.3)}
  .menu-btn{display:inline-flex;align-items:center;justify-content:center}
  /* 위 줄 두 줄: (☰ · 화면 이름) / (날짜 · 매장 ▼) — 날짜가 남는 폭을 다 쓴다 */
  .topbar-inner{gap:8px;padding-top:10px;padding-bottom:10px}
  .menu-title{font-size:19px}
  .topbar .datepick{flex:1 1 auto}
  .topbar .branch-btn{padding:8px 10px}
}

/* 매출상세(#sales) 안 카드를 메뉴마다 골라 보인다 — 카드는 옮기지 않고 data-mv 로 표시만.
   마감 사진(:root.capturing) 중엔 이 규칙이 다 꺼져 지금처럼 전부 찍힌다. */
:root:not(.capturing) #sales[data-view="day"] [data-mv]:not([data-mv~="day"]),
:root:not(.capturing) #sales[data-view="ch"] [data-mv]:not([data-mv~="ch"]),
:root:not(.capturing) #sales[data-view="pay"] [data-mv]:not([data-mv~="pay"]),
:root:not(.capturing) #sales[data-view="adj"] [data-mv]:not([data-mv~="adj"]),
:root:not(.capturing) #sales[data-view="memo"] [data-mv]:not([data-mv~="memo"]),
:root:not(.capturing) #sales[data-view="close"] [data-mv]:not([data-mv~="close"]){display:none}
:root:not(.capturing) #sales[data-view="ch"] .grid.g-2{display:none}   /* 배달채널별엔 결제수단·입금처 줄이 통째로 빈다 */
#methodBars .pg-total{display:flex;justify-content:space-between;font-size:15px;font-weight:800;padding-bottom:10px;border-bottom:1px solid var(--line-2)}
/* 실매출 칸(.hero)은 기간별 › 하루와 매출 조정(조정이 실매출에 바로 보이게)에서만 */
:root:not(.capturing) body:not([data-menu="period"][data-sub="day"]):not([data-menu="adjust"]) .hero{display:none}
/* 첫 주 안내 줄(#moveNote, 2026-11-03~11-17) — 위 줄 바로 아래 */
.move-note{display:flex;align-items:center;gap:10px;margin-top:10px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--paper-2);font-size:13px;color:var(--ink-2)}
.move-note span{flex:1 1 auto}
.move-note button{appearance:none;border:0;background:transparent;cursor:pointer;color:var(--mute);font-size:14px;padding:2px 6px}

/* ===== 관리자 홈(전 매장, 2단계 2026-11-03) — 시안 1 모양, 색은 토큰 =====
   카드 넷(4칸, 폰 2칸) · 시간대 선 · 매장별 표 · 매장·채널 비중(2칸, 폰 1칸). 마감 사진엔 안 들어간다 */
:root:not(.capturing) body:is([data-menu="home"],[data-menu="orders"],[data-menu="paylist"]) .datestrip{display:none}   /* 위 '기준' 줄은 curBranch 것 — 여러 매장 화면은 자기 줄(.home-stamp) */
#home .home-stamp{margin:14px 0 12px;font-size:12.5px;color:var(--ink-2)}
#home .home-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}
#home .home-kpi{padding:16px 18px;min-width:0}
#home .home-kpi .l{font-size:13px;color:var(--ink-2)}
#home .home-kpi .v{font-size:22px;font-weight:800;margin:6px 0 4px;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#home .home-kpi .d{font-size:12px;font-weight:600}
#home .up{color:var(--toss)} #home .down{color:var(--bad)}
#home .home-miss{color:var(--bad);font-weight:700}
#home .home-card{margin-top:14px}
#home .home-card h3{margin:0 0 12px;font-size:15px;font-weight:800}
#home .card-head h3{margin:0}
#home .home-empty{margin:0;padding:40px 0;text-align:center}
#homeHourly .hbar{cursor:pointer}
:is(#home,.store-split) .home-tbl{overflow-x:auto;border:1px solid var(--line);border-radius:10px}
:is(#home,.store-split) .home-tbl table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
:is(#home,.store-split) .home-tbl th{background:var(--paper-2);font-size:12px;color:var(--ink-2);font-weight:600;text-align:right;padding:10px 12px;white-space:nowrap}
:is(#home,.store-split) .home-tbl td{padding:10px 12px;border-top:1px solid var(--line);text-align:right;white-space:nowrap}
:is(#home,.store-split) .home-tbl :is(th,td):first-child{text-align:left;background:var(--paper-2);font-weight:600}
:is(#home,.store-split) .home-tbl td.l{text-align:left}
:is(#home,.store-split) .home-tbl tr.sum td{font-weight:700}
#home .home-go{appearance:none;border:0;background:none;padding:0;font:inherit;font-weight:600;color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;gap:6px}
#home .home-go:hover{text-decoration:underline}
#home .home-retry{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:6px;padding:3px 10px;font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.store-split{margin-top:16px}   /* 기간별 매출 — 매장별 표(2026-11-09, 홈 표와 같은 모양) */
.store-split h3{margin:0 0 12px;font-size:15px;font-weight:800}
.store-split .ss-bar{display:inline-block;width:64px;height:6px;border-radius:3px;background:var(--line-2);vertical-align:middle;margin-right:8px;overflow:hidden}
.store-split .ss-bar i{display:block;height:100%}
.store-split .home-dot{margin-right:6px}
.capturing .store-split{display:none!important}
:is(#home,.store-split) .home-dot{width:9px;height:9px;border-radius:50%;flex:none;display:inline-block}
#home .home-two{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}
#home .home-two .home-card{margin-top:0}
#home .home-row{display:grid;grid-template-columns:90px 1fr 100px 46px;align-items:center;gap:10px;margin:10px 0;font-size:13px}
#home .home-row .nm{display:flex;align-items:center;gap:6px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#home .home-tr{height:10px;background:var(--paper-2);border-radius:5px;overflow:hidden}
#home .home-fi{height:100%;border-radius:5px}
#home .home-row .n{text-align:right;color:var(--ink-2)} #home .home-row .p{text-align:right;font-weight:700}
@media (max-width:860px){
  #home .home-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  #home .home-kpi{padding:14px}
  #home .home-kpi .v{font-size:17px}
  #home .home-two{grid-template-columns:1fr}
  #home .home-row{grid-template-columns:76px 1fr 88px 40px;gap:8px}
}
/* ===== 관리자 홈 끝 ===== */
/* ===== 주문 현황·결제 내역(2026-11-03) — 시안 모양, 색은 토큰. 폰(≤640px)은 표 대신 한 건 = 카드 한 장 =====
   매장 ▼ 체크 상자(.scope-pick)도 여기 — 홈·주문 현황·결제 내역(여러 매장 화면) */
.scope-pick{min-width:190px}
.scope-pick button{display:flex;align-items:center;gap:8px;white-space:nowrap}
.scope-pick button.on::after{margin-left:auto;padding-left:14px}   /* 고른 매장 = 이름 뒤 ✓ (.branch-pick button.on::after) */
.scope-pick hr{border:0;border-top:1px solid var(--line);margin:4px 0}
.scope-pick .home-dot,:is(#orders,#paylist) .home-dot{width:9px;height:9px;border-radius:50%;flex:none;display:inline-block}
:is(#orders,#paylist) .home-dot{margin-right:6px;vertical-align:middle}
:is(#orders,#paylist) .home-stamp{margin:14px 0 12px;font-size:12.5px;color:var(--ink-2)}
:is(#orders,#paylist) .ord-notes{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin:-4px 0 12px;font-size:12.5px}
:is(#orders,#paylist) .home-miss{color:var(--bad);font-weight:700}
:is(#orders,#paylist) .home-retry{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:6px;padding:3px 10px;font:inherit;font-size:12px;font-weight:700;cursor:pointer}
:is(#orders,#paylist) .down{color:var(--bad)}
:is(#orders,#paylist) .ord-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:14px}
:is(#orders,#paylist) .ord-kpi{padding:16px 18px;min-width:0}
:is(#orders,#paylist) .ord-kpi .l{font-size:13px;color:var(--ink-2)}
:is(#orders,#paylist) .ord-kpi .v{font-size:22px;font-weight:800;margin:6px 0 4px;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
:is(#orders,#paylist) .ord-kpi .d{font-size:12px;font-weight:600;color:var(--mute);overflow:hidden;text-overflow:ellipsis}
:is(#orders,#paylist) .ord-tools{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
:is(#orders,#paylist) .ord-find{border:1px solid var(--line);border-radius:8px;padding:8px 12px;font:inherit;font-size:13px;min-width:220px;flex:1;max-width:320px;background:var(--card);color:var(--ink)}
:is(#orders,#paylist) .ord-chips{display:flex;gap:6px;flex-wrap:wrap}
:is(#orders,#paylist) .ord-chip{appearance:none;border:1px solid var(--line);background:var(--card);border-radius:999px;padding:6px 12px;font:inherit;font-size:12.5px;cursor:pointer;color:var(--ink-2)}
:is(#orders,#paylist) .ord-chip.on{background:var(--ink);color:var(--on-ink);border-color:var(--ink);font-weight:700}
:is(#orders,#paylist) .ord-tbl{overflow-x:auto;border:1px solid var(--line);border-radius:10px}
:is(#orders,#paylist) .ord-tbl table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
:is(#orders,#paylist) .ord-tbl th{background:var(--paper-2);font-size:12px;color:var(--ink-2);font-weight:600;text-align:right;padding:10px 12px;white-space:nowrap}
:is(#orders,#paylist) .ord-tbl td{padding:10px 12px;border-top:1px solid var(--line);text-align:right;white-space:nowrap;vertical-align:top}
:is(#orders,#paylist) .ord-tbl :is(th,td).l{text-align:left}
:is(#orders,#paylist) .ord-tbl td.ord-items{white-space:normal;min-width:180px}
#orders .ord-r{cursor:pointer}
#orders .ord-r:hover td,#orders .ord-r.on td{background:var(--jade-softer)}
:is(#orders,#paylist) .cx td,:is(#orders,#paylist) .ord-c.cx{color:var(--mute)}
:is(#orders,#paylist) .cx .amt{text-decoration:line-through}
:is(#orders,#paylist) .ord-src,:is(#orders,#paylist) .ord-st{display:inline-block;font-size:11px;font-weight:700;border-radius:4px;padding:2px 6px;white-space:nowrap}
:is(#orders,#paylist) .ord-src{background:var(--paper-2);color:var(--ink-2)}
:is(#orders,#paylist) .ord-src.d{background:var(--warn-soft);color:var(--warn)}
:is(#orders,#paylist) .ord-src.q{background:color-mix(in srgb,var(--toss) 14%,transparent);color:var(--toss)}
:is(#orders,#paylist) .ord-st.ok{background:var(--ok-soft);color:var(--ok)}
:is(#orders,#paylist) .ord-st.cx{background:var(--bad-soft);color:var(--bad)}
:is(#orders,#paylist) .ord-st.pr{background:var(--warn-soft);color:var(--warn)}
:is(#orders,#paylist) .ord-st.no{background:var(--paper-2);color:var(--ink-2)}   /* 미결제 — 회색 */
:is(#orders,#paylist) .ord-chip[hidden]{display:none}
#orders .ord-det td,#orders .ord-c .ord-det{background:var(--paper-2);font-size:12.5px;color:var(--ink-2);white-space:normal;text-align:left;cursor:default}
#orders .ord-c .ord-det{margin:10px -14px -12px;padding:10px 14px;border-radius:0 0 12px 12px}
#orders .ord-det .li{display:flex;justify-content:space-between;gap:12px;max-width:420px;padding:2px 0}
#orders .ord-pays{margin-top:6px}
#orders .ord-hint{font-size:12px;color:var(--mute);margin:8px 0 0}
#paylist .ord-go{appearance:none;border:0;background:none;padding:0;font:inherit;font-size:13px;color:var(--toss);cursor:pointer}
:is(#orders,#paylist) .ord-cards{display:none}
:is(#orders,#paylist) .ord-c{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:8px;background:var(--card);cursor:pointer;overflow:hidden}
:is(#orders,#paylist) .ord-c .r1{display:flex;align-items:center;gap:10px;font-size:13px}
:is(#orders,#paylist) .ord-c .r1 .w{flex:1;min-width:0;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
:is(#orders,#paylist) .ord-c .r2{margin-top:6px;font-size:13px;line-height:1.5}
:is(#orders,#paylist) .ord-c .r3{margin-top:2px;text-align:right;font-weight:700;font-variant-numeric:tabular-nums}
/* 주문 현황 칸 화면(관리자 2026-11-10) — 매장 칸 나란히 [준비 중 | 완료]. '더 토스 느낌으로': 회색 바탕 위 흰 카드·큰 둥근 모서리·테두리 없이·굵은 숫자·꼬리표.
   생김새만 비슷하게 — 토스 글꼴·아이콘·로고·이름은 안 쓴다, 색은 옥루몽 토큰. 휴대폰은 한 칸씩 옆으로 넘긴다 */
#orders .ord-views{display:inline-flex;gap:2px;margin:14px 0 14px;padding:3px;background:var(--paper-2);border-radius:12px}
#orders .ord-seg{appearance:none;border:0;background:none;border-radius:9px;padding:7px 18px;font:inherit;font-size:13.5px;font-weight:600;color:var(--ink-2);cursor:pointer}
#orders .ord-seg.on{background:var(--card);color:var(--ink);font-weight:700;box-shadow:0 1px 3px rgba(0,0,0,.08)}
#orders .live-wrap[hidden],#orders .ord-list[hidden]{display:none}
#orders .ord-go{appearance:none;border:0;background:none;padding:0;font:inherit;font-size:13px;color:var(--toss);cursor:pointer}
#orders .live-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:14px}
#orders .live-kpi{padding:16px 18px;min-width:0;border:0;border-radius:18px;box-shadow:0 1px 2px rgba(0,0,0,.04),0 2px 10px rgba(0,0,0,.04)}
#orders .live-kpi .l{font-size:13px;color:var(--ink-2);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#orders .live-kpi .v{font-size:22px;font-weight:800;margin:8px 0 2px;letter-spacing:-.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#orders .live-kpi.tot .v{font-size:26px}
#orders .live-kpi .d{font-size:12.5px;color:var(--mute)}
#orders .live-sum{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;font-size:13px;margin:2px 2px 12px}
#orders .live-refresh{appearance:none;margin-left:auto;border:0;background:var(--paper-2);border-radius:10px;padding:7px 14px;font:inherit;font-size:13px;font-weight:700;color:var(--ink);cursor:pointer}
#orders .live-refresh:disabled{color:var(--mute);cursor:default}
#orders .live-cols{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:12px;align-items:start}
#orders .live-col{background:var(--paper-2);border-radius:20px;padding:14px 12px;min-width:0}
#orders .live-col h4{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 4px 12px;font-size:15px;font-weight:800}
#orders .live-col h4 .nm{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#orders .live-col h4 .cnt{font-size:12.5px;font-weight:600;color:var(--ink-2);white-space:nowrap}
#orders .live-col h4 .cnt b{font-size:15px;color:var(--warn);margin-left:2px}
#orders .live-col h5{margin:16px 4px 8px;font-size:13px;color:var(--ink-2);font-weight:700}
#orders .live-col > p{margin:6px 4px 10px;font-size:13px}
#orders .live-note{font-size:12.5px;margin:0 4px 10px;line-height:1.5}
#orders .live-c{background:var(--card);border-radius:14px;padding:12px 14px;margin-bottom:8px;box-shadow:0 1px 2px rgba(0,0,0,.05)}
#orders .live-c.gone{opacity:.55}
#orders .live-c .r1{display:flex;align-items:center;gap:8px}
#orders .live-c .no{font-size:20px;font-weight:800;letter-spacing:-.02em;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#orders .live-c.done .no{font-size:17px;color:var(--ink-2)}
#orders .live-c .pill{flex:none;font-size:12px;font-weight:700;border-radius:999px;padding:3px 10px;white-space:nowrap}
#orders .pill.wait{background:var(--warn-soft);color:var(--warn)}
#orders .pill.late{background:var(--bad-soft);color:var(--bad)}
#orders .pill.ok{background:var(--ok-soft);color:var(--ok)}
#orders .pill.dlv{background:var(--paper-2);color:var(--ink-2)}
#orders .pill.gone{background:var(--paper-2);color:var(--mute)}
#orders .live-c .i{font-size:14px;font-weight:600;margin-top:6px;line-height:1.45}
#orders .live-c.done .i{font-weight:500;color:var(--ink-2)}
#orders .live-c .w{font-size:12px;color:var(--mute);margin-top:4px}
#orders .live-more{appearance:none;width:100%;border:0;background:var(--card);border-radius:12px;padding:10px;font:inherit;font-size:13px;font-weight:600;color:var(--ink-2);cursor:pointer}
@media (max-width:720px){
  #orders .live-cols{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-bottom:4px}
  #orders .live-col{flex:0 0 88%;scroll-snap-align:start}
  #orders .live-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  #orders .live-kpi{padding:10px 12px;border-radius:14px}
  #orders .live-kpi .v{font-size:17px}
  #orders .live-kpi.tot{grid-column:1/-1}
  #orders .live-kpi.tot .v{font-size:22px}
}
:is(#orders,#paylist) .ord-found{margin:0 0 10px;font-size:13.5px;color:var(--ink-2)}   /* 찾은 주문 N건 · 상품 N개 · 금액 */
:is(#orders,#paylist) .ord-empty{margin:0;padding:36px 0;text-align:center;color:var(--mute);border:1px dashed var(--line);border-radius:12px}
:is(#orders,#paylist) .ord-note{font-size:12px;color:var(--mute);line-height:1.7;margin-top:16px}
@media (max-width:640px){
  :is(#orders,#paylist) .ord-tbl{display:none}
  :is(#orders,#paylist) .ord-cards{display:block}
  :is(#orders,#paylist) .ord-kpis{gap:8px}
  :is(#orders,#paylist) .ord-kpi{padding:10px}
  :is(#orders,#paylist) .ord-kpi .v{font-size:15px}
  :is(#orders,#paylist) .ord-kpi .d{font-size:11px;white-space:nowrap}
  :is(#orders,#paylist) .ord-find{max-width:none;min-width:0;width:100%}
}
/* ===== 주문 현황·결제 내역 끝 ===== */

/* 매출 묶음·마감 점검을 여러 매장으로 볼 때(body[data-many], 2026-11-03) — 보기만: 마감 사진(한 매장)은 숨긴다 */
body[data-many] #shotBtn{display:none}
/* 홈 근무표(관리자 2026-11-05) */
.home-shift{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}
.home-shift h4{margin:0;font-size:14px;display:flex;align-items:center;gap:6px}
.home-shift ul{list-style:none;margin:6px 0 0;padding:0;font-size:13.5px;line-height:1.75}
.home-shift li.pend{color:var(--ink-2)}
.home-shift p{margin:6px 0 0;font-size:13px}
.home-shift .dim-tag{font-size:11px;color:var(--mute);margin-left:2px}
.home-shift .hs-ok{font-size:11px;color:var(--ok,#2e7d32);margin-left:2px;font-weight:600}

/* 근무표 달력(2026-11-05) — 칸마다 사람별 '하루 띠'(08~24시): 칠함=인정 · 빗금=인정 전 · 빨강=결근 · 옅게=예정. 칸 테두리 없이 가는 줄만 */
#shiftcal .sc-wrap{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;align-items:start}
@media (min-width:1180px){ #shiftcal .sc-wrap{grid-template-columns:minmax(0,1fr) 340px} #shiftcal .sc-det{position:sticky;top:12px} }
#shiftcal .sc-card{padding:18px 18px 14px}
#shiftcal .sc-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
#shiftcal .sc-mon{display:flex;align-items:center;gap:6px}
#shiftcal .sc-mon h2{margin:0 4px;font-size:22px;font-weight:800;letter-spacing:-.02em;display:flex;align-items:baseline;gap:6px;min-width:92px;justify-content:center}
#shiftcal .sc-mon h2 small{font-size:13px;font-weight:600;color:var(--mute);letter-spacing:0}
#shiftcal .sc-arw{width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:16px;line-height:1;cursor:pointer}
#shiftcal .sc-arw:hover{background:var(--paper-2)}
#shiftcal .sc-now{border:0;background:var(--paper-2);color:var(--ink-2);border-radius:999px;padding:5px 11px;font:inherit;font-size:12px;cursor:pointer}
#shiftcal .sc-pend{display:flex;gap:6px;font-size:12px}
#shiftcal .sc-pend>span{padding:4px 10px;border-radius:999px} #shiftcal .sc-pend b{font-weight:800;margin-left:2px}
#shiftcal .sc-pend .w{background:var(--paper-2);color:var(--ink-2)} #shiftcal .sc-pend .a{background:var(--bad-soft);color:var(--bad)}
#shiftcal .sc-keys{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:12px 0 10px;font-size:12px;color:var(--ink-2)}
#shiftcal .sc-stores,#shiftcal .sc-legend{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
#shiftcal .sc-legend>span{display:inline-flex;align-items:center;gap:5px}
#shiftcal .home-dot{width:8px;height:8px;border-radius:50%;flex:none;display:inline-block;margin-right:5px;vertical-align:middle}
#shiftcal .sc-ld{margin-left:5px;color:var(--mute)} #shiftcal .sc-ld.err{color:var(--bad);font-weight:700}
#shiftcal .sc-sw{display:inline-block;width:18px;height:6px;border-radius:3px;--c:var(--ink-2)}
#shiftcal .sc-g{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line)}
#shiftcal .sc-w{font-size:11px;font-weight:600;color:var(--mute);padding:8px 6px 6px;border-bottom:1px solid var(--line)}
#shiftcal .sc-w.sun,#shiftcal .sc-c.sun .sc-n{color:var(--bad)} #shiftcal .sc-w.sat,#shiftcal .sc-c.sat .sc-n{color:var(--toss)}
#shiftcal .sc-c{all:unset;box-sizing:border-box;display:flex;flex-direction:column;gap:4px;min-height:112px;padding:7px 7px 8px;border-bottom:1px solid var(--line);border-right:1px solid var(--line-2);cursor:pointer;min-width:0;transition:background .12s}
#shiftcal .sc-c:nth-child(7n){border-right:0}
#shiftcal .sc-c:hover{background:var(--jade-softer)} #shiftcal .sc-c:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}
#shiftcal .sc-x{cursor:default;background:none!important}
#shiftcal .sc-c.sc-sel{background:var(--paper-2)}
#shiftcal .sc-top{display:flex;align-items:center;gap:5px}
#shiftcal .sc-n{font-size:13px;font-weight:700;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;margin:-3px 0 0 -3px}
#shiftcal .sc-c.past .sc-n{opacity:.55}
#shiftcal .sc-today .sc-n{background:var(--ink);color:var(--on-ink)!important;opacity:1}
#shiftcal .sc-flag{width:6px;height:6px;border-radius:50%} #shiftcal .sc-flag.wait{box-shadow:inset 0 0 0 1.5px var(--mute)} #shiftcal .sc-flag.ab{background:var(--bad)}
#shiftcal .sc-cnt{margin-left:auto;font-size:11px;color:var(--mute);font-variant-numeric:tabular-nums}
#shiftcal .sc-rows{display:flex;flex-direction:column;gap:3px;min-width:0}
#shiftcal .sc-p{display:grid;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:4px}
#shiftcal .sc-pn{font-size:11px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:clip}
#shiftcal .sc-grp{display:flex;flex-direction:column;gap:2px;padding:1px 0}
#shiftcal .sc-grp+.sc-grp{margin-top:2px}
#shiftcal .sc-tr{position:relative;display:block;height:6px;border-radius:3px;background:color-mix(in srgb,var(--ink) 5%,transparent)}
#shiftcal .sc-tr.thin{height:4px;border-radius:2px}
#shiftcal .sc-b{position:absolute;top:0;bottom:0;border-radius:inherit}
#shiftcal .b-ok{background:var(--c)}
#shiftcal .b-plan{background:color-mix(in srgb,var(--c) 38%,transparent)}
#shiftcal .b-wait{background:repeating-linear-gradient(-45deg,var(--c) 0 1.5px,transparent 1.5px 3.5px);box-shadow:inset 0 0 0 1px var(--c)}
#shiftcal .b-ab{background:var(--bad)}
#shiftcal .sc-more{font-size:10px;color:var(--mute);line-height:1}
#shiftcal .sc-mdots{display:none}
#shiftcal .sc-foot{margin:10px 0 0;font-size:11px;color:var(--mute)}
#shiftcal .sc-det{padding:18px}
#shiftcal .sc-dh h3{margin:0;font-size:20px;font-weight:800;letter-spacing:-.02em} #shiftcal .sc-dh h3 span{font-size:13px;font-weight:600;color:var(--mute);margin-left:4px;letter-spacing:0}
#shiftcal .sc-hrs{color:var(--mute);font-size:12px} #shiftcal .sc-cnt b{color:var(--ink-2);font-weight:700} #shiftcal .sc-dsum{margin:4px 0 12px;font-size:13px;color:var(--ink-2)} #shiftcal .sc-dsum b{color:var(--ink)} #shiftcal .sc-dsum em{font-style:normal} #shiftcal .sc-dsum .a{color:var(--bad);font-weight:700}
#shiftcal .sc-ruler,#shiftcal .sc-dr{display:grid;grid-template-columns:44px minmax(0,1fr) 78px 46px;align-items:center;gap:8px}
#shiftcal .sc-ticks{position:relative;height:14px;font-size:10px;color:var(--mute)} #shiftcal .sc-ticks span{position:absolute;transform:translateX(-50%)}
#shiftcal .sc-dbr{padding-top:10px;margin-top:10px;border-top:1px solid var(--line-2)}
#shiftcal .sc-dbr h4{margin:0 0 6px;font-size:13px;font-weight:700;display:flex;align-items:center} #shiftcal .sc-dbr h4>span{margin-left:6px;font-weight:500;color:var(--mute)}
#shiftcal .sc-dr{padding:4px 0} #shiftcal .sc-dn{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#shiftcal .sc-tr.wide{height:10px;border-radius:5px;background:repeating-linear-gradient(90deg,transparent 0 calc(18.75% - 1px),var(--line) calc(18.75% - 1px) 18.75%),color-mix(in srgb,var(--ink) 4%,transparent);background-position:6.25% 0}
#shiftcal .sc-dt{font-size:12px;color:var(--ink-2);text-align:right}
#shiftcal .sc-chip{font-size:11px;font-weight:600;text-align:center;padding:2px 0;border-radius:999px}
#shiftcal .sc-chip.ok{background:var(--ok-soft);color:var(--ok)} #shiftcal .sc-chip.wait{box-shadow:inset 0 0 0 1px var(--line);color:var(--mute)}
#shiftcal .sc-chip.ab{background:var(--bad-soft);color:var(--bad)} #shiftcal .sc-chip.plan{background:var(--paper-2);color:var(--ink-2)} #shiftcal .sc-chip.ghost{visibility:hidden}
@media (max-width:760px){
  #shiftcal .sc-card{padding:14px 10px 10px}
  #shiftcal .sc-c{min-height:58px;padding:5px 3px} #shiftcal .sc-rows{display:none}
  #shiftcal .sc-cnt{margin:0;font-size:10px} #shiftcal .sc-top{flex-wrap:wrap;gap:2px}
  #shiftcal .sc-mdots{display:flex;gap:2px;flex-wrap:wrap;margin-top:auto} #shiftcal .sc-mdots i{width:5px;height:5px;border-radius:50%}
  #shiftcal .sc-legend{display:none}
  #shiftcal .sc-ruler,#shiftcal .sc-dr{grid-template-columns:40px minmax(0,1fr) 70px 42px;gap:6px}
}
@media (prefers-reduced-motion:reduce){ #shiftcal .sc-c{transition:none} }
#shiftcal .sc-mon h2,#shiftcal .sc-mon h2 small,#shiftcal .sc-cnt,#shiftcal .sc-legend span,#shiftcal .sc-pend span,#shiftcal .sc-ticks span,#shiftcal .sc-stores span,#shiftcal .sc-dt,#shiftcal .sc-chip,#shiftcal .sc-dh h3{white-space:nowrap}   /* 사진 저장(다른 글꼴)에서도 줄이 안 꺾이게 */
/* 저장은 자동(관리자 2026-11-08 '따로 저장 없이') — 저장 단추는 상태 글씨로만. 못 올라가 '저장(로컬)'일 때만 단추처럼 눌린다 */
#saveBtn:disabled,#memoSave:disabled{background:none;border-color:transparent;box-shadow:none;color:var(--mute);font-weight:500;cursor:default;padding-left:4px;padding-right:4px}
