  /* ── 전자결재: 리치에디터/별첨 ── */
  .aw-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 2px; border: 1px solid var(--border); border-bottom: none; border-radius: 8px 8px 0 0; padding: 6px; background: var(--bg); }
  .aw-toolbar button { min-width: 28px; height: 28px; padding: 0 6px; border: none; background: transparent; color: var(--text); border-radius: 5px; cursor: pointer; font-size: 12.5px; }
  .aw-toolbar button:hover { background: rgba(43,94,163,.15); }
  .approval-person-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:8px; margin-top:8px; }
  .approval-person-card { aspect-ratio:4/3; min-width:0; padding:10px; border:1px solid var(--border); border-radius:8px; display:flex; flex-direction:column; gap:8px; background:var(--surface); }
  .approval-person-card-main { display:flex; align-items:center; gap:7px; min-width:0; }
  .approval-person-card-name { flex:1; display:flex; align-items:center; justify-content:center; text-align:center; font-weight:600; overflow:hidden; text-overflow:ellipsis; }
  .approval-person-card-actions { margin-top:auto; display:flex; justify-content:center; gap:6px; }
  @media (max-width:1024px) { .approval-person-grid { grid-template-columns:repeat(3,minmax(0,1fr)); } }
  @media (max-width:768px) { .approval-person-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
  @media (max-width:390px) { .approval-person-grid { grid-template-columns:1fr; } }
  .aw-sep { width: 1px; height: 18px; background: var(--border); margin: 0 4px; }
  #approval-w-body { border: 1px solid var(--border); border-radius: 0 0 8px 8px; padding: 12px; font-size: 13.5px; line-height: 1.6; }
  #approval-w-body:focus { outline: none; border-color: var(--accent); }
  #approval-w-body img { max-width: 100%; border-radius: 6px; }
  .approval-attach-link { font-size: 12.5px; color: var(--accent); cursor: pointer; text-decoration: underline; }
  .approval-dropzone { margin-top: 10px; border: 1px dashed var(--border); border-radius: 8px; padding: 20px; text-align: center; font-size: 12.5px; color: var(--muted); transition: .15s; }
  .approval-dropzone.drag { border-color: var(--accent); color: var(--accent); background: rgba(43,94,163,.06); }
  .approval-tbl { width: 100%; border-collapse: collapse; margin-top: 6px; }
  .approval-tbl th, .approval-tbl td { border: 1px solid var(--border); padding: 6px 8px; font-size: 12.5px; text-align: left; }
  .approval-tbl th { background: var(--bg); color: var(--muted); font-weight: 600; white-space: nowrap; }
  /* ── 지출결의서 전용 서식 표(대표 제공 참고 이미지와 동일한 형태) — 실제 종이양식처럼 앱 테마와 무관하게
     고정 흑백 톤 유지(인쇄물 재현이 목적이라 다크모드에서도 라이트 문서 그대로 보이는 게 맞음) ── */
  .approval-expense-form { width: 100%; border-collapse: collapse; font-size: 12.5px; background: #fff; color: #1a1a1a; }
  .approval-expense-form th, .approval-expense-form td { border: 1px solid #444; padding: 6px 8px; }
  .approval-expense-form .aef-lbl { background: #333; color: #fff; font-weight: 600; text-align: center; white-space: nowrap; }
  .approval-expense-form .aef-title { text-align: center; font-size: 16px; font-weight: 700; padding: 10px 8px; }
  .approval-expense-form .aef-c { text-align: center; }
  .approval-expense-form .aef-r { text-align: right; }
  .approval-expense-form th:not(.aef-lbl) { background: #eee; color: #1a1a1a; font-weight: 600; white-space: nowrap; }

  /* ── 전자결재: 상단 탭(밑줄+개수뱃지) ── */
  .appr-tabs { display: flex; gap: 20px; border-bottom: 1px solid var(--border); margin-bottom: 12px; flex-wrap: wrap; }
  .appr-tab { position: relative; background: none; border: none; padding: 9px 1px 11px; font-size: 13.5px; color: var(--muted); cursor: pointer; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
  .appr-tab:hover { color: var(--text); }
  .appr-tab.active { color: var(--accent); font-weight: 700; }
  .appr-tab.active::after { content: ''; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: var(--accent); border-radius: 1px 1px 0 0; }
  .appr-tab-count { font-size: 11px; font-weight: 700; padding: 1px 6px; border-radius: 10px; background: var(--border); color: var(--muted); }
  .appr-tab.active .appr-tab-count { background: rgba(43,94,163,.18); color: var(--accent); }

  /* ── 전자결재: 목록/상세 분할뷰(선택 전=표 전체폭, 선택 시=좌 간략목록+우 상세) ── */
  .approval-split { display: flex; gap: 16px; align-items: flex-start; }
  .approval-list-pane { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 8px; }
  .approval-split.has-selection .approval-list-pane {
    flex: 0 0 clamp(210px, 18vw, 260px);
    width: clamp(210px, 18vw, 260px);
    min-width: 190px;
    max-width: 270px;
  }
  .approval-detail-pane { flex: 1; min-width: 0; }
  /* .screen.active{display:block !important}가 우선순위(importance)로 이 규칙의 display:flex를 항상 이겨서
     내부 스크롤 컨테이너(#approval-dashboard-scroll)가 flex 자식으로 취급되지 않아 높이가 콘텐츠만큼(문서
     2759건 표 포함) 그대로 늘어나고, 부모(overflow:hidden)에 잘려 맨 아래 추이 그래프까지 스크롤이 아예
     안 되던 결함 — !important로 우선순위를 맞추고 ID 특정도가 더 높아 정상적으로 이김 */
  #screen-approval-dashboard.active{display:flex !important;flex-direction:column;height:calc(100vh - 96px);min-height:0;overflow:hidden;}
  #approval-dashboard-sticky{position:relative;flex:0 0 auto;background:var(--bg);padding:0 0 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;}
  #approval-dashboard-scroll{flex:1 1 auto;overflow:auto;padding-right:4px;min-height:0;}
  #approval-d-body { max-width: 100%; overflow: visible; }
  #approval-d-body .se-contents, #approval-d-body #hw_dext_default_style { overflow: visible !important; }
  #approval-d-body .se-drawing-object-wrapper { display: block; max-width: 100%; overflow: visible !important; vertical-align: top !important; line-height: 0; }
  #approval-d-body img { display:block; max-width:100% !important; height:auto !important; border-radius:6px; }
  #approval-list-rows { display: flex; flex-direction: column; gap: 8px; }
  .approval-row-card { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 9px 10px; cursor: pointer; transition: .15s; }
  .approval-row-card:hover { border-color: var(--accent); }
  .approval-row-card.selected { border-color: var(--accent); background: rgba(43,94,163,.08); box-shadow: 0 0 0 1px var(--accent); }
  @media (max-width: 900px) {
    .approval-split { flex-direction: column; }
    .approval-split.has-selection .approval-list-pane { display: none; }   /* 모바일에서 문서 선택 시 목록을 숨겨 상세(본문)가 화면 맨 위에 바로 보이게 함 — <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="mrp-icon mrp-icon-close" style="display:inline-block;vertical-align:-0.125em;flex-shrink:0;" role="img" aria-label="닫기"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>  닫기로 복귀 */
  }

  /* ── 전자결재: 통합 대시보드(E43) ── */
  .adb-grid2{display:grid;grid-template-columns:1fr 1.2fr;gap:14px;margin-bottom:14px;align-items:stretch;}
  .adb-grid2 > .card{display:flex;flex-direction:column;}
  @media (max-width:920px){ .adb-grid2{grid-template-columns:1fr;} }
  .adb-legend{display:flex;gap:14px;font-size:11px;color:var(--muted);margin-bottom:10px;flex-wrap:wrap;}
  .adb-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px;vertical-align:middle;}
  .adb-kpi{border-left:3px solid var(--border);}
  .adb-kpi.warn{border-left-color:var(--warn);}
  .adb-kpi.accent{border-left-color:var(--accent);}
  .adb-kpi.success{border-left-color:var(--success);}
  .adb-kpi.danger{border-left-color:var(--danger);}
  .adb-bar-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;width:100%;background:none;border:none;padding:1px 0;cursor:pointer;font-family:inherit;color:inherit;text-align:left;border-radius:6px;}
  .adb-bar-row:last-of-type{margin-bottom:0;}
  .adb-bar-row:hover .adb-bar-lbl{color:var(--accent);}
  .adb-bar-row:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
  .adb-bar-lbl{width:52px;font-size:12px;color:var(--text);font-weight:600;flex-shrink:0;transition:color .12s;}
  .adb-bar-track{flex:1;height:15px;border-radius:5px;overflow:hidden;display:flex;background:var(--bg);gap:2px;}
  .adb-bar-seg{height:100%;transition:filter .12s;}
  .adb-bar-seg:hover{filter:brightness(1.15);}
  .adb-bar-total{width:34px;text-align:right;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;flex-shrink:0;}
  #adb-bar-chart{flex:1;display:flex;flex-direction:column;justify-content:center;}
  .adb-cal-hd{display:flex;align-items:center;gap:10px;}
  .adb-cal-nav{background:transparent;border:1px solid var(--border);color:var(--text);width:26px;height:26px;border-radius:7px;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;font-family:inherit;}
  .adb-cal-nav:hover{border-color:var(--accent);color:var(--accent);}
  .adb-cal-nav:disabled{opacity:.3;cursor:default;}
  .adb-cal-my{font-size:13.5px;font-weight:700;min-width:76px;text-align:center;}
  .adb-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-top:8px;}
  .adb-cal-wd{text-align:center;font-size:9px;font-weight:700;color:var(--muted);padding:1px 0 3px;}
  .adb-cal-wd.sun{color:var(--danger);}
  .adb-cal-wd.sat{color:var(--accent2);}
  .adb-cal-day{border:1px solid transparent;border-radius:6px;background:transparent;cursor:pointer;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
    padding:2px;font-family:inherit;color:inherit;height:23px;transition:border-color .12s,background .12s;}
  .adb-cal-day:hover{border-color:var(--border);background:var(--bg);}
  .adb-cal-day.empty{visibility:hidden;pointer-events:none;}
  .adb-cal-day.sun .adb-cal-num{color:var(--danger);}
  .adb-cal-day.sat .adb-cal-num{color:var(--accent2);}
  .adb-cal-day.today{border-color:var(--accent);}
  .adb-cal-day.selected{background:rgba(43,94,163,.14);border-color:var(--accent);}
  .adb-cal-day.in-range{background:rgba(43,94,163,.16);border-radius:0;}
  .adb-cal-day.range-start{background:var(--accent);border-color:var(--accent);border-radius:6px 0 0 6px;}
  .adb-cal-day.range-end{background:var(--accent);border-color:var(--accent);border-radius:0 6px 6px 0;}
  .adb-cal-day.range-start.range-end{border-radius:6px;}
  .adb-cal-day.range-start .adb-cal-num,.adb-cal-day.range-end .adb-cal-num{color:#fff;}
  .adb-cal-num{font-size:10.5px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1;}
  .adb-cal-dot{width:4px;height:4px;border-radius:50%;background:var(--border);}
  .adb-cal-selline{font-size:11.5px;color:var(--accent);font-weight:700;display:flex;align-items:center;gap:8px;margin-top:8px;min-height:14px;visibility:hidden;}
  #master-cal-grid.adb-cal-grid .adb-cal-day,#sr-cal-grid.adb-cal-grid .adb-cal-day{height:32px;}   /* 영업 달력만 더 넉넉하게(전자결재 대시보드 달력은 기존 높이 유지) */
  .adb-cal-grid-months{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:8px;}
  .adb-cal-month-btn{padding:10px 0;border:1px solid var(--border);border-radius:8px;background:transparent;color:var(--text);cursor:pointer;font-size:13px;font-family:inherit;transition:.12s;}
  .adb-cal-month-btn:hover{border-color:var(--accent);color:var(--accent);}
  .adb-cal-month-btn.selected{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:700;}
  .mcal-body{display:flex;gap:24px;flex-wrap:wrap;margin-top:12px;overflow:hidden;max-height:1600px;opacity:1;transition:max-height .22s ease,opacity .16s ease,margin-top .22s ease;}
  .mcal-body.collapsed{max-height:0;opacity:0;margin-top:0;pointer-events:none;}
  /* 재고 제품속성 필터 컬럼 전용 — 버튼 살짝 작게, 목록은 4.5개 높이만 보이고 스크롤바는 숨김(휠/드래그 스크롤은 그대로) */
  #master-invf-cols .chip-btn{font-size:12px;padding:6px 10px;}
  #master-invf-cols .invf-col-list{max-height:151px;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none;}
  #master-invf-cols .invf-col-list::-webkit-scrollbar{display:none;}
  #bom-attr-cols .chip-btn{font-size:12px;padding:6px 10px;}
  #bom-attr-cols .invf-col-list{max-height:151px;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none;}
  #bom-attr-cols .invf-col-list::-webkit-scrollbar{display:none;}
  #bom-attr-cols.collapsed{margin-top:0 !important;}
  .adb-cal-selline.show{visibility:visible;}
  .adb-cal-selline button{background:none;border:none;color:var(--muted);cursor:pointer;font-size:11px;text-decoration:underline;font-family:inherit;}
  .adb-tooltip{position:fixed;pointer-events:none;background:var(--text);color:var(--bg);font-size:11.5px;font-weight:600;
    padding:6px 9px;border-radius:7px;z-index:var(--z-popover);opacity:0;transform:translate(-50%,-100%) translateY(-8px);transition:opacity .1s;
    white-space:nowrap;box-shadow:0 6px 20px rgba(0,0,0,.25);}
  .adb-tooltip.show{opacity:1;}
  .adb-dday{font-size:11px;font-weight:700;padding:2px 7px;border-radius:20px;display:inline-block;font-variant-numeric:tabular-nums;}
  .adb-dday.urgent{background:rgba(239,68,68,.15);color:var(--danger);}
  .adb-dday.soon{background:rgba(245,158,11,.15);color:var(--warn);}
  .adb-dday.ok{background:rgba(113,113,122,.15);color:var(--muted);}
  .adb-line-row{display:flex;align-items:center;}
  .adb-line-av{position:relative;width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#fff;background:var(--border);flex-shrink:0;}
  .adb-line-av.done{background:var(--navy);}
  .adb-line-av.wait{background:var(--surface);color:var(--muted);border:1.5px dashed var(--border);}
  .adb-line-av.rejected{background:var(--danger);}
  .adb-line-av i{position:absolute;bottom:-2px;right:-2px;width:12px;height:12px;border-radius:50%;background:var(--success);color:#fff;font-size:7px;font-style:normal;display:flex;align-items:center;justify-content:center;border:1.5px solid var(--surface);}
  .adb-line-av.rejected i{background:var(--danger);}
  .adb-line-conn{width:10px;height:1.5px;background:var(--border);flex-shrink:0;}
  .adb-line-conn.done{background:var(--success);}
  /* 결재함 목록 "결재현황" 열 — 결재선(참조자·후열 확인 전용 참여자 제외) 진행 점 표시 */
  .appr-line-row{display:flex;align-items:center;justify-content:center;gap:0;}
  .appr-line-dot{position:relative;width:11px;height:11px;border-radius:50%;flex-shrink:0;background:var(--warn);}
  .appr-line-dot.done{background:var(--success);}
  .appr-line-dot.rejected{background:var(--danger);}
  .appr-line-dot.is-me{box-shadow:0 0 0 2px var(--accent);}
  .appr-line-conn{width:7px;height:1.5px;background:var(--border);flex-shrink:0;}
  .appr-line-conn.done{background:var(--success);}
  th.adb-sortable{cursor:pointer;user-select:none;}
  th.adb-sortable:hover{color:var(--text);}
  th.adb-sortable:focus-visible{outline:2px solid var(--accent);}
  .adb-sort-arrow{font-size:9px;opacity:.5;margin-left:2px;}
  .adb-sort-arrow.active{opacity:1;color:var(--accent);}
  .adb-trend-card{margin-bottom:14px;min-width:0;}
  .adb-trend-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px;}
  .adb-trend-sub{font-size:11px;color:var(--muted);margin-top:3px;}
  .adb-trend-legend{display:flex;align-items:center;justify-content:flex-end;gap:13px;flex-wrap:wrap;font-size:11px;color:var(--muted);}
  .adb-trend-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px;vertical-align:middle;}
  .adb-trend-legend i.line{width:15px;height:0;border-top:2px dashed var(--accent2);border-radius:0;}
  .adb-trend-chart{width:100%;max-width:100%;min-height:188px;overflow:hidden;}
  .adb-trend-chart svg{display:block;width:100%;height:188px;overflow:visible;}
  .adb-trend-grid{stroke:var(--border);stroke-width:1;opacity:.65;}
  .adb-trend-axis{fill:var(--muted);font-size:9px;font-family:inherit;}
  .adb-trend-bar{cursor:default;transition:opacity .12s;}
  .adb-trend-bar:hover{opacity:.78;}
  .adb-trend-ma{fill:none;stroke:var(--accent2);stroke-width:2;stroke-dasharray:5 4;stroke-linejoin:round;stroke-linecap:round;}
  .adb-trend-empty{height:188px;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:12px;}
  @media (max-width:600px){
    .adb-trend-head{display:block;}
    .adb-trend-legend{justify-content:flex-start;margin-top:9px;gap:10px;}
  }

  /* ── 대시보드: 영업·재고·생산 3축(E44 v2) ── */
  .bd-pillar{min-width:0;border-top:3px solid var(--bd-pc,var(--border));cursor:pointer;transition:box-shadow .12s;}
  .bd-pillar:hover{box-shadow:0 0 0 1px var(--bd-pc,var(--border)) inset;}
  .bd-pillar.sales{--bd-pc:#f59e0b;}
  .bd-pillar.inv{--bd-pc:var(--accent2);}
  .bd-pillar.prod{--bd-pc:var(--accent);}
  .bd-p-hd{display:flex;align-items:center;gap:9px;margin-bottom:16px;}
  .bd-p-icon{width:32px;height:32px;border-radius:9px;background:rgba(128,128,128,.16);
    display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;}
  .bd-p-title{font-size:15px;font-weight:800;}
  .bd-p-window{margin-left:auto;font-size:10.5px;color:var(--muted);background:var(--bg);padding:3px 9px;border-radius:20px;}

  .bd-kpi-hero{background:var(--bg);border-radius:12px;padding:14px 16px;margin-bottom:8px;}
  .bd-kpi-hero-lbl{font-size:11.5px;color:var(--muted);font-weight:600;}
  .bd-kpi-hero-row{display:flex;align-items:baseline;gap:8px;margin-top:4px;flex-wrap:wrap;}
  .bd-kpi-hero-num{font-size:25px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.01em;}
  .bd-trend{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:700;padding:2px 7px;border-radius:20px;}
  .bd-trend.up{color:var(--success);background:rgba(34,197,94,.12);}
  .bd-trend.down{color:var(--danger);background:rgba(239,68,68,.12);}
  .bd-trend.flat{color:var(--muted);background:rgba(128,128,128,.12);}

  .bd-kpi-ytd{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--muted);
    padding:9px 2px;margin-bottom:8px;border-bottom:1px dashed var(--border);}
  .bd-kpi-ytd b{font-size:13px;color:var(--text);font-weight:700;font-variant-numeric:tabular-nums;}
  .bd-kpi-ytd.bd-muted-note{font-size:11px;justify-content:flex-start;color:var(--muted);line-height:1.5;}

  .bd-chart-wrap{margin-top:14px;padding-top:12px;border-top:1px solid var(--border);}
  .bd-chart-lbl{font-size:10.5px;color:var(--muted);margin-bottom:6px;}
  .bd-chart-empty{height:56px;display:flex;align-items:center;justify-content:center;font-size:11.5px;color:var(--muted);
    background:var(--bg);border-radius:8px;border:1px dashed var(--border);}
  .bd-chart-range{display:flex;justify-content:space-between;font-size:9.5px;color:var(--muted);margin-top:3px;}
  .bd-hoverline{stroke:var(--border);stroke-width:1;pointer-events:none;opacity:0;}
  .bd-hoverdot{pointer-events:none;opacity:0;stroke:var(--surface);stroke-width:2;}
  .bd-hitlayer{fill:transparent;cursor:crosshair;}
  .bd-goal-line{stroke:var(--accent);stroke-width:1.25;stroke-dasharray:5 3;pointer-events:none;}
  .bd-goal-handle{fill:var(--surface);stroke:var(--accent);stroke-width:2;cursor:ns-resize;touch-action:none;}
  .bd-goal-handle:hover,.bd-goal-handle:focus{fill:var(--accent);outline:none;}
  .bd-goal-marker{fill:var(--muted);stroke:var(--surface);stroke-width:1;pointer-events:none;}
  .bd-goal-marker.achieved{fill:var(--success);}
  .bd-goal-label{fill:var(--text);font-size:7.5px;font-weight:700;pointer-events:none;}
  .bd-goal-badge{pointer-events:none;}
  .bd-goal-badge rect{fill:var(--surface);stroke:var(--border);stroke-width:1;}
  .bd-goal-badge text{fill:var(--success);font-size:7.5px;font-weight:800;text-anchor:middle;}

  .bd-top5-wrap{margin-top:14px;padding-top:12px;border-top:1px solid var(--border);}
  .bd-top5-lbl{font-size:10.5px;color:var(--muted);margin-bottom:8px;}
  .bd-top5-row{display:flex;align-items:center;gap:8px;margin-bottom:7px;cursor:pointer;}
  .bd-top5-row:last-child{margin-bottom:0;}
  .bd-top5-row:hover .bd-top5-name{text-decoration:underline;}
  .bd-top5-rank{width:20px;height:20px;border-radius:50%;font-size:10px;font-weight:800;color:var(--muted);background:var(--bg);
    flex-shrink:0;display:flex;align-items:center;justify-content:center;}
  .bd-top5-row:first-child .bd-top5-rank{color:#fff;background:var(--bd-pc);}
  .bd-top5-body{flex:1;min-width:0;}
  .bd-top5-name{font-size:11.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .bd-top5-bar-track{height:4px;border-radius:3px;background:var(--bg);margin-top:3px;overflow:hidden;}
  .bd-top5-bar-fill{height:100%;border-radius:3px;background:var(--bd-pc);}
  .bd-top5-val{font-size:11px;color:var(--muted);flex-shrink:0;font-variant-numeric:tabular-nums;}
  .bd-top5-empty{font-size:11.5px;color:var(--muted);padding:8px 0;}

  /* ── CFO 대시보드 벤토그리드 (Bento Grid) ── */
  .bento-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:12px;}
  .bento-toolbar-title{font-size:13px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:6px;}
  .bento-btn-reset{font-size:11px;padding:4px 10px;border-radius:6px;color:var(--muted);border:1px solid var(--border);
    background:var(--surface);cursor:pointer;display:inline-flex;align-items:center;gap:5px;font-family:inherit;transition:.12s;}
  .bento-btn-reset:hover{color:var(--text);border-color:var(--accent);background:var(--bg);}
  .bento-grid{display:grid;gap:16px;width:100%;grid-template-columns:repeat(4,minmax(0,1fr));transition:grid-template-columns .2s ease;}

  /* 4단계 반응형 브레이크포인트 (480 / 768 / 1024 / 1440px) */
  @media (max-width:479.98px){
    .bento-grid{grid-template-columns:repeat(1,minmax(0,1fr));gap:12px;}
  }
  @media (min-width:480px) and (max-width:767.98px){
    .bento-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
  }
  @media (min-width:768px) and (max-width:1023.98px){
    .bento-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;}
  }
  @media (min-width:1024px) and (max-width:1439.98px){
    .bento-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;}
  }
  @media (min-width:1440px){
    .bento-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;}
  }

  .bento-card{position:relative;min-width:0;margin:0 !important;}
  .bento-resize-handle{position:absolute;top:8px;right:0;bottom:8px;width:14px;cursor:col-resize;touch-action:none;user-select:none;
    z-index:10;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s ease;border-radius:0 8px 8px 0;}
  .bento-card:hover .bento-resize-handle,.bento-resize-handle:focus,.bento-resize-handle.resizing{opacity:1;}
  .bento-resize-handle::after{content:'';width:3px;height:24px;border-radius:2px;background:var(--border);transition:background .15s,height .15s;}
  .bento-resize-handle:hover::after,.bento-resize-handle.resizing::after{background:var(--accent);height:38px;}
  .bento-card.resizing{outline:2px solid var(--accent);box-shadow:0 4px 16px rgba(0,0,0,.18);z-index:12;}
  .bento-grid.is-resizing{user-select:none;cursor:col-resize;}
  .bento-resize-badge{position:absolute;top:8px;right:20px;background:var(--surface);color:var(--accent);border:1px solid var(--accent);
    font-size:10.5px;font-weight:700;padding:3px 8px;border-radius:6px;pointer-events:none;z-index:20;box-shadow:0 4px 12px rgba(0,0,0,.15);}

  .bd-combo-card{padding:20px 22px;}
  .bd-combo-hd{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:6px;}
  .bd-combo-title{font-size:15px;font-weight:800;}
  .bd-combo-sub{font-size:11.5px;color:var(--muted);margin-bottom:14px;}
  .bd-combo-legend{display:flex;gap:6px;flex-wrap:wrap;}
  .bd-combo-leg-btn{display:flex;align-items:center;gap:6px;padding:5px 12px;border-radius:20px;border:1px solid var(--border);
    background:var(--bg);color:var(--text);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:.12s;}
  .bd-combo-leg-btn i{width:8px;height:8px;border-radius:2px;flex-shrink:0;}
  .bd-combo-leg-btn.off{opacity:.35;}
  .bd-combo-leg-btn:hover{border-color:var(--text);}
  .bd-combo-axis-lbl{font-size:9.5px;fill:var(--muted);}
  .bd-combo-grid-line{stroke:var(--border);stroke-width:0.5;}

  .alert.alert-clickable{cursor:pointer;transition:.12s;}
  .alert.alert-clickable:hover{opacity:.82;}
  @keyframes bdRowFlash{0%{background:rgba(43,94,163,.28);}100%{background:transparent;}}
  .bd-row-flash{animation:bdRowFlash 1.6s ease-out;}

  .bd-tooltip{position:fixed;pointer-events:none;background:var(--text);color:var(--bg);font-size:11.5px;font-weight:600;
    padding:6px 9px;border-radius:7px;z-index:var(--z-popover);opacity:0;transform:translate(-50%,-100%) translateY(-8px);transition:opacity .1s;
    white-space:nowrap;box-shadow:0 6px 20px rgba(0,0,0,.25);}
  .bd-tooltip.show{opacity:1;}
  .bd-tooltip .tt-sub{opacity:.7;font-weight:500;}
  .aw-chip-row { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
  .aw-chip { font-size: 11.5px; padding: 4px 10px; border-radius: 999px; border: 1px solid var(--border); color: var(--muted); cursor: pointer; transition: .15s; white-space: nowrap; }
  .aw-chip:hover { border-color: var(--accent); color: var(--text); }
  .aw-chip.active { background: var(--accent); color: #fff; border-color: var(--accent); font-weight: 600; }

  /* PROGRESS */
  .progress-bar { height: 6px; background: var(--border); border-radius: 3px; overflow: hidden; }
  .progress-fill { height: 100%; border-radius: 3px; background: var(--accent); }

  /* MINI STAT */
  .mini-stat { display: flex; justify-content: space-between; align-items: center; padding: 10px 0; border-bottom: 1px solid var(--border); }
  .mini-stat:last-child { border-bottom: none; }

  /* ALERT */
  .alert { padding: 12px 16px; border-radius: 8px; margin-bottom: 12px; font-size: 13px; display: flex; align-items: center; gap: 10px; }
  .alert-red { background: rgba(239,68,68,.1); border: 1px solid rgba(239,68,68,.3); color: #fca5a5; }
  .alert-yellow { background: rgba(245,158,11,.1); border: 1px solid rgba(245,158,11,.3); color: #fcd34d; }

  /* NAV ACCORDION */
  .nav-group-hd { display: flex; align-items: center; gap: 10px; padding: 9px 16px; cursor: pointer; font-size: 13px; color: var(--muted); transition: background .15s; user-select: none; }
  .nav-group-hd:hover { background: rgba(43,94,163,.08); }
  .nav-group-hd .arrow { margin-left: auto; font-size: 10px; color: var(--muted); transition: transform .2s; display: inline-block; }
  .nav-group-hd.open .arrow { transform: rotate(90deg); }
  .sitemap-link { display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:9px; cursor:pointer; transition:.15s; border:1px solid var(--border); color:var(--text); }
  .sitemap-link:hover { background: rgba(43,94,163,.15); border-color: var(--accent); color: var(--accent); }
  .nav-sub { display: none; }
  .nav-sub.open { display: block; }
  .nav-sub .nav-item { padding-left: 32px; }
  .nav-sub-label { padding: 6px 16px 2px 32px; font-size: 10px; font-weight: 700; color: var(--muted); letter-spacing: .06em; text-transform: uppercase; opacity: .7; }
  /* 3섹션 아코디언 */
  .nav-section-hd { display: flex; align-items: center; gap: 10px; padding: 13px 16px; cursor: pointer; font-size: 13px; font-weight: 700; color: var(--text); transition: background .15s; user-select: none; border-top: 1px solid var(--border); }
  .nav-section-hd:hover { background: rgba(43,94,163,.08); }
  .nav-section-hd .sec-arrow { margin-left: auto; font-size: 10px; color: var(--muted); transition: transform .2s; display: inline-block; }
  .nav-section-hd.open { color: var(--accent); }
  .nav-section-hd.open .sec-arrow { transform: rotate(90deg); }
  .nav-section-body { display: none; }
  .nav-section-body.open { display: block; }

  /* SIDEBAR BOTTOM */
  .sidebar-foot { padding: 16px; border-top: 1px solid var(--border); font-size: 12px; color: var(--muted); flex-shrink:0; }
  .sidebar-foot .admin-only { display:block; width:100%; box-sizing:border-box; margin-top:8px !important; }
  .company-name { color: var(--text); font-weight: 600; font-size: 13px; }

  /* INLINE CHART BARS */
  .bar-chart { display: flex; align-items: flex-end; gap: 6px; height: 80px; }
  .bar { flex: 1; background: var(--accent); border-radius: 3px 3px 0 0; opacity: .7; transition: opacity .2s; }
  .bar:hover { opacity: 1; }

  /* CALENDAR */
  .cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); border-top: 1px solid var(--border); border-left: 1px solid var(--border); }
  .cal-hd { padding: 8px 6px; font-size: 11px; font-weight: 700; color: var(--muted); text-align: center; text-transform: uppercase; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); }
  .cal-hd.weekend { color: var(--danger); }
  .cal-day { min-height: 88px; padding: 6px; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); vertical-align: top; position: relative; }
  .cal-day.other-month { opacity: .3; }
  .cal-day.today { background: rgba(43,94,163,.07); }
  .cal-day-num { font-size: 12px; font-weight: 700; margin-bottom: 4px; width: 22px; height: 22px; display: flex; align-items: center; justify-content: center; border-radius: 50%; }
  .cal-day.today .cal-day-num { background: var(--accent); color: #fff; }
  .cal-day.weekend-day .cal-day-num { color: var(--danger); opacity: .8; }
  .cal-event { font-size: 10px; padding: 2px 5px; border-radius: 3px; margin-bottom: 2px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; cursor: pointer; line-height: 1.4; }
  .cal-event:hover { opacity: .8; }
  .ev-prod { background: rgba(43,94,163,.25); color: #a5b4fc; }
  .ev-haccp { background: rgba(34,197,94,.2); color: #4ade80; }
  .ev-hr { background: rgba(245,158,11,.2); color: var(--warn); }
  .ev-audit { background: rgba(239,68,68,.2); color: #f87171; }
  .ev-etc { background: rgba(34,211,238,.15); color: var(--accent2); }
  .ev-leave { background: rgba(168,85,247,.2); color: #c084fc; }
  .ev-alert { background: rgba(239,68,68,.2); color: #f87171; font-weight: 700; }
  .cal-day:not(.other-month) { cursor: pointer; transition: background .15s; }
  .cal-day:not(.other-month):hover { background: rgba(43,94,163,.06); }
  .db-cal { display:grid; grid-template-columns:repeat(7,1fr); gap:1px 0; }
  .db-cal-hd { font-size:10px; font-weight:600; color:var(--muted); text-align:center; padding:5px 0 6px; letter-spacing:.04em; }
  .db-cal-hd.wd { color:var(--danger); opacity:.7; }
  .db-cal-day { display:flex; align-items:center; justify-content:center; font-size:12px; cursor:pointer; font-weight:500; transition:background .1s; position:relative; padding:4px 0; }
  .db-cal-day:not(.other-m):hover .db-day-n { background:rgba(43,94,163,.15); }
  .db-day-n { width:28px; height:28px; display:flex; align-items:center; justify-content:center; border-radius:50%; transition:background .1s; }
  .db-cal-day.today-d .db-day-n { background:var(--accent); color:#fff; font-weight:700; }
  .db-cal-day.has-ev::after { content:''; position:absolute; bottom:2px; left:50%; transform:translateX(-50%); width:4px; height:4px; border-radius:50%; background:var(--accent2); opacity:.75; }
  .db-cal-day.today-d.has-ev::after { background:#fff; }
  .db-cal-day.other-m { opacity:.2; cursor:default; }
  .db-cal-day.wd .db-day-n { color:var(--danger); opacity:.8; }
  .db-ev-row { display:flex; align-items:center; gap:8px; padding:7px 0; border-bottom:1px solid var(--border); font-size:12px; }
  .db-ev-row:last-child { border-bottom:none; }
  .db-ev-dot { width:8px; height:8px; border-radius:50%; flex-shrink:0; }
  /* CALENDAR MODAL — 반응형 팝업 */
  .cal-modal-overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,.6); z-index:var(--z-modal); align-items:flex-end; justify-content:center; }
  .cal-modal-overlay.open { display:flex !important; }

  /* Mobile: 바텀 시트 */
  .cal-sheet { background:var(--surface); border-radius:16px 16px 0 0; padding:20px 20px 28px; width:100%; max-height:60vh; overflow-y:auto; border-top:1px solid var(--border); animation:slideUp .22s ease; }
  @keyframes slideUp { from{transform:translateY(100%)} to{transform:translateY(0)} }

  /* Tablet (768px+): 중앙 모달 */
  @media(min-width:768px){
    .cal-modal-overlay { align-items:center; }
    .cal-sheet { border-radius:16px; width:440px; max-height:70vh; border:1px solid var(--border); box-shadow:0 20px 60px rgba(0,0,0,.45); animation:popIn .18s ease; }
  }
  /* Desktop (1024px+): 블러 백드롭 + 세련된 다이얼로그 */
  @media(min-width:1024px){
    .cal-modal-overlay { background:rgba(0,0,0,.35); }
    .cal-sheet { width:380px; box-shadow:0 24px 80px rgba(0,0,0,.4), 0 0 0 1px rgba(255,255,255,.06); }
  }
  @keyframes popIn { from{transform:scale(.94);opacity:0} to{transform:scale(1);opacity:1} }

  .cal-sheet .ev-row { font-size:13px; padding:9px 14px; border-radius:7px; margin-bottom:7px; line-height:1.4; }

  /* NUMBER BADGE */
  .num-tag { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 15px; background: rgba(43,94,163,.22); color: #a5b4fc; font-size: 9px; font-weight: 700; border-radius: 3px; padding: 0 3px; margin-right: 5px; font-family: 'Courier New', monospace; flex-shrink: 0; vertical-align: middle; line-height: 1; }

  /* CHIP BUTTONS (click-select) */
  .chip-btn { padding: 8px 14px; border-radius: 20px; border: 1px solid var(--border); background: transparent; color: var(--muted); cursor: pointer; font-size: 13px; transition: all .15s; }
  .chip-btn.active { background: rgba(43,94,163,.2); border-color: var(--accent); color: var(--accent); font-weight: 600; }
  .chip-btn:hover { border-color: var(--accent); color: var(--text); }

  /* TOAST */
  .toast { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%) translateY(80px); background: var(--success); color: #fff; padding: 12px 24px; border-radius: 8px; font-size: 13px; font-weight: 600; z-index: var(--z-toast); transition: transform .3s ease; white-space: nowrap; }
  .toast.toast-error { background: var(--danger); }
  .toast.toast-loading { background: var(--accent); }
  .toast.show { transform: translateX(-50%) translateY(0); }

  /* HAMBURGER */
  .hamburger { display: none; flex-direction: column; gap: 5px; cursor: pointer; padding: 4px; }
  .hamburger span { display: block; width: 22px; height: 2px; background: var(--text); border-radius: 2px; transition: all .2s; }

  /* OVERLAY */
  .overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.6); z-index: var(--z-menu); }
  .overlay.open, #modal-po-create:not(.hidden) { display: flex; align-items: center; justify-content: center; }
  .overlay.hidden, #modal-po-create.hidden { display: none !important; }

  /* TABLE SCROLL WRAPPER */
  .table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  /* 카드뷰 인프라 — 모바일(≤767px) 테이블 → 카드 (data-label 있는 경우) */
  @media(max-width:767px){
    .card-tbl thead{display:none;}
    .card-tbl tr{display:block;border:1px solid var(--border);border-radius:10px;margin-bottom:10px;padding:6px 0;background:var(--surface);}
    .card-tbl td{display:flex;justify-content:space-between;align-items:baseline;padding:6px 14px;font-size:13px;border:none;}
    .card-tbl td::before{content:attr(data-label);color:var(--muted);font-size:11px;font-weight:600;white-space:nowrap;margin-right:10px;flex-shrink:0;}
    .card-tbl td:empty{display:none;}
  }

