  /* 대량 조회 그리드(기준정보·작업자·인사·근태현황·사용자관리) 전용 — 표 영역만 자체 스크롤,
     제목·검색창·열도구·컬럼헤더는 화면 스크롤과 무관하게 항상 보이도록(대표 피드백 2026-08-05) */
  #screen-master .table-wrap, #screen-man .table-wrap,
  #screen-attendance-list .table-wrap, #screen-users .table-wrap { max-height: calc(100vh - 400px); overflow-y: auto; }
  /* 다열 기준정보 표: 열을 압축하지 않고 표 영역에서 가로 스크롤 */
  /* max-content는 펼침 행의 width:100% 내부표와 순환 계산되어 표 폭이 비정상적으로 커질 수 있다.
     표는 화면 폭을 기준으로 두고, gSyncMin이 열 합계만큼의 안전한 최소폭을 부여한다. */
  #screen-master #master-table { width:100%; min-width:100%; table-layout:auto; }
  .ship-drill-content { width:min(100%,1200px); overflow-x:auto; }
  /* 관계법령은 .form-group 밖의 독립 입력칸이라 브라우저 기본 높이(약 18px)가 노출됐다.
     제목·검색·날짜·분류를 동일한 40px 입력 기준으로 맞춘다. */
  #screen-legal input:not([type="checkbox"]):not([type="radio"]), #screen-legal select {
    box-sizing:border-box; min-height:40px; padding:9px 12px; line-height:20px;
    font:inherit;
  }
  #screen-legal .legal-alert-form .btn { min-height:40px; }
  #screen-hr .table-wrap { max-height: calc(100vh - 300px); overflow-y: auto; }
  #screen-master thead th, #screen-man thead th, #screen-hr thead th,
  #screen-attendance-list thead th, #screen-users thead th { position: sticky; top: 0; background: var(--surface); z-index: var(--z-sticky); }

  /* 작업자 급여 폭포수 — 직원 요약 → 카테고리 → 조회 상세. 월별 수기 입력은 접힘 밖에 상시 노출. */
  .pr-waterfall-list { display:grid; gap:12px; }
  .pr-employee { border:1px solid var(--border); border-radius:12px; overflow:hidden; background:var(--surface); }
  .pr-employee-summary { display:flex; align-items:center; gap:18px; padding:15px 18px; border-left:4px solid var(--accent); background:rgba(43,94,163,.055); }
  .pr-employee-person { flex:1; min-width:150px; }
  .pr-employee-name { font-size:15px; font-weight:800; color:var(--text); }
  .pr-employee-meta { margin-top:3px; font-size:10.5px; color:var(--muted); }
  .pr-employee-totals { display:flex; align-items:center; gap:22px; }
  .pr-summary-metric { min-width:108px; text-align:right; }
  .pr-summary-label { display:block; margin-bottom:2px; font-size:10px; color:var(--muted); }
  .pr-summary-value { font-size:14px; font-weight:800; color:var(--text); }
  .pr-summary-value.net { color:var(--accent2); font-size:16px; }
  .pr-categories { display:grid; gap:8px; padding:10px; background:var(--bg); }
  .pr-category { border:1px solid var(--border); border-radius:10px; overflow:hidden; background:var(--surface); }
  .pr-category-head { display:flex; align-items:center; gap:10px; padding:11px 13px; border-left:3px solid var(--accent2); cursor:pointer; user-select:none; transition:background .15s; }
  .pr-category-head:hover,.pr-category-head.open { background:rgba(43,94,163,.09); }
  .pr-category-arrow { font-size:9px; color:var(--accent); transition:transform .2s; }
  .pr-category-arrow.open { transform:rotate(90deg); }
  .pr-category-title { flex:1; font-size:12.5px; font-weight:800; color:var(--text); }
  .pr-category-total { text-align:right; }
  .pr-category-total .pr-summary-label { margin:0; }
  .pr-category-total .pr-summary-value { font-size:13px; }
  .pr-category-detail { display:none; padding:11px 13px; border-top:1px solid var(--border); }
  .pr-category-detail.open { display:block; }
  .pr-value-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(128px,1fr)); gap:8px; }
  .pr-value-item { min-width:0; padding:9px 10px; border:1px solid var(--border); border-radius:8px; background:var(--bg); }
  .pr-value-label { display:flex; align-items:flex-start; justify-content:space-between; gap:4px; min-height:17px; font-size:10.5px; color:var(--muted); }
  .pr-value-number { margin-top:4px; font-size:13px; font-weight:700; color:var(--text); text-align:right; overflow-wrap:anywhere; }
  .pr-edit-always { padding:0 13px 12px; border-top:1px solid var(--border); background:rgba(43,94,163,.025); }
  .pr-edit-title { padding:9px 0 7px; font-size:10px; font-weight:700; color:var(--muted); }
  .pr-edit-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,210px)); gap:8px; }
  .pr-edit-field { display:grid; grid-template-columns:minmax(64px,1fr) minmax(84px,110px); align-items:center; gap:8px; }
  .pr-edit-field label { font-size:11px; font-weight:700; color:var(--text); }
  .pr-edit-field .cell-input { width:100%; min-width:0; padding:7px 8px; text-align:right; background:var(--surface); }
  .pr-empty { padding:28px 16px; text-align:center; color:var(--muted); }
  /* 상단 알림 벨 — 내가 처리해야 할 결재·회람·최근 공문 */
  .notif-wrap { position: relative; display: flex; align-items: center; }
  .notif-btn { position: relative; background: transparent; border: none; font-size: 17px; line-height: 1;
               cursor: pointer; padding: 5px 7px; border-radius: 8px; color: var(--text); }
  .notif-btn:hover { background: rgba(43,94,163,.14); }
  .notif-btn.has-new { animation: notifRing 2.4s ease-in-out infinite; }
  @keyframes notifRing { 0%,88%,100%{transform:none} 90%{transform:rotate(-13deg)} 93%{transform:rotate(11deg)} 96%{transform:rotate(-6deg)} }
  .notif-count { position: absolute; top: -1px; right: -1px; min-width: 16px; height: 16px; padding: 0 4px;
                 border-radius: 8px; background: var(--danger); color: #fff; font-size: 10px; font-weight: 700;
                 line-height: 16px; text-align: center; }
  .notif-panel { display: none; position: absolute; top: calc(100% + 9px); right: 0; width: 340px;
                 max-height: 62vh; overflow-y: auto; background: var(--surface); border: 1px solid var(--border);
                 border-radius: 10px; box-shadow: 0 14px 36px rgba(0,0,0,.30); z-index: var(--z-popover); }
  .notif-panel.open { display: block; }
  .notif-head { display:flex; align-items:center; justify-content:space-between; padding: 11px 14px;
                border-bottom: 1px solid var(--border); font-size: 12px; font-weight: 700; color: var(--muted);
                position: sticky; top: 0; background: var(--surface); }
  .notif-refresh { background:transparent; border:none; color:var(--muted); cursor:pointer; font-size:14px; padding:0 2px; }
  .notif-refresh:hover { color: var(--accent); }
  .notif-group { padding: 9px 14px 5px; font-size: 10.5px; font-weight: 700; color: var(--accent);
                 letter-spacing: .03em; background: rgba(43,94,163,.06); }
  .notif-item { display: block; width: 100%; text-align: left; padding: 9px 14px; border: none;
                border-top: 1px solid var(--border); background: transparent; cursor: pointer; font-family: inherit; }
  .notif-item:hover { background: rgba(43,94,163,.10); }
  .notif-title { font-size: 12.5px; color: var(--text); font-weight: 600; }
  .notif-sub { font-size: 11px; color: var(--muted); margin-top: 2px; }
  .notif-empty { padding: 28px 14px; text-align: center; font-size: 12px; color: var(--muted); }
  /* 급여대장 구분 탭 — 귀속월 줄 바로 아래 */
  .pr-tabs { display:flex; gap:4px; margin-top:12px; padding-top:12px; border-top:1px solid var(--border); flex-wrap:wrap; }
  .pr-tab { padding:7px 16px; border:1px solid var(--border); border-radius:8px; background:transparent;
            color:var(--muted); font-size:13px; font-weight:600; font-family:inherit; cursor:pointer; transition:all .12s; }
  .pr-tab:hover { color:var(--text); border-color:var(--accent); }
  .pr-tab.active { background:var(--accent); border-color:var(--accent); color:#fff; }
  /* 급여 열 출처 뱃지 — 근태/인사 기준정보 어디서 수정하는 값인지 헤더에 표시 */
  .pr-src { display:block; margin-top:3px; font-size:9.5px; font-weight:600; letter-spacing:0; text-transform:none; cursor:pointer; }
  .pr-src-att { color:#8b5cf6; }
  .pr-src-hr { color:#2b5ea3; }
  .pr-src:hover { text-decoration:underline; }

  /* Leave period rows retain the desktop five-column form layout. */
  .aw-leave-period-row {
    display: grid;
    grid-template-columns: auto minmax(88px, .65fr) minmax(0, 1fr) minmax(0, 1fr) auto;
    gap: 8px;
    align-items: end;
  }
  .aw-leave-period-row.is-single {
    grid-template-columns: auto minmax(88px, .65fr) minmax(0, 1fr) auto;
  }
  .aw-leave-period-row.is-range {
    grid-template-columns: auto minmax(88px, .65fr) minmax(0, 1fr) minmax(0, 1fr) auto;
  }
  .aw-leave-period-row > span:first-child { padding-bottom: 9px; }

  /* ── MOBILE ── */
  @media (max-width: 768px) {
    body { font-size: 13px; }

    .pr-employee-summary { align-items:flex-start; gap:12px; padding:13px 14px; }
    .pr-employee-totals { flex-direction:column; align-items:flex-end; gap:7px; }
    .pr-summary-metric { min-width:100px; }
    .pr-employee-totals .pr-summary-metric:first-child { display:none; }
    .pr-categories { padding:8px; }
    .pr-category-head { padding:11px; }
    .pr-value-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .pr-edit-grid { grid-template-columns:1fr; }

    /* Sidebar: slide-in drawer */
    .sidebar {
      position: fixed; left: -100%; top: 0; height: 100%; z-index: var(--z-drawer);
      transition: left .25s ease; width: 260px;
    }
    .sidebar.open { left: 0; }

    /* Main fills full width */
    .main { width: 100%; }

    /* Topbar & Header 390px Overflow Fix */
    .topbar { padding: 0 10px; height: 48px; gap:6px; }
    .page-title { font-size: 13.5px; max-width: 120px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex-shrink: 1; }
    .erp-company-tabs { flex: 1; min-width: 0; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
    .erp-company-tabs::-webkit-scrollbar { display: none; }
    .erp-company-tab { padding:0 5px; font-size:11px; min-height: 44px; display: inline-flex; align-items: center; }
    .hamburger { display: flex; min-width: 44px; min-height: 44px; align-items: center; justify-content: center; }
    .notif-btn, .theme-toggle { min-width: 44px; min-height: 44px; display: flex; align-items: center; justify-content: center; }
    .content { padding: 16px 12px; padding-bottom: 96px !important; }

    /* Leave period rows: override the desktop inline five-column grid safely. */
    .aw-leave-period-row {
      display: grid !important;
      grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
      gap: 8px !important;
      align-items: end !important;
      width: 100% !important;
      min-width: 0;
      box-sizing: border-box;
    }
    .aw-leave-period-row > span:first-child {
      grid-column: 1;
      align-self: center;
      padding-bottom: 0 !important;
    }
    .aw-leave-period-row > label {
      display: block;
      width: 100%;
      min-width: 0 !important;
    }
    .aw-leave-period-row > label:last-of-type { grid-column: 1 / -1; }
    .aw-leave-period-row select,
    .aw-leave-period-row input[type="date"] {
      width: 100% !important;
      min-width: 0;
      max-width: 100%;
      box-sizing: border-box;
    }
    .aw-leave-period-row > button {
      grid-column: 2;
      grid-row: 1;
      justify-self: end;
      min-width: 44px;
      min-height: 44px;
    }

    /* 미니달력 위젯 — 모바일에서는 본문 아래로 쌓임 */
    .erp-main-layout { flex-direction: column; }
    .content-calendar { width: 100%; flex: 0 0 auto; }
    .calendar-widget-card { position: static; }
    .cw-nav-btn { width: 36px; height: 36px; }

    #screen-master .table-wrap, #screen-man .table-wrap,
    #screen-attendance-list .table-wrap, #screen-users .table-wrap {
      max-height: calc(100vh - 260px);
    }

    /* Grids collapse */
    .g2, .g3, .g4, .g5 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
    .g4, .g5 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

    /* Cards */
    .card { padding: 14px; border-radius: 8px; }
    .kpi-value { font-size: 22px; }

    @media (max-width: 390px) {
      .g2, .g3, .g4, .g5 { grid-template-columns: 1fr; }
      .content { padding: 12px 8px; }
      .kpi-value { font-size: 20px; }
      .card { padding: 12px; }
      .aw-leave-period-row { grid-template-columns: minmax(0, 1fr) !important; }
      .aw-leave-period-row > span:first-child,
      .aw-leave-period-row > label,
      .aw-leave-period-row > button {
        grid-column: 1 / -1;
      }
      .aw-leave-period-row > button {
        grid-row: auto;
        justify-self: stretch;
        width: 100%;
      }
      /* <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-shield" style="display:inline-block;vertical-align:-0.125em;flex-shrink:0;" role="img" aria-label="보안"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg> ️ Defect 2 Fix: 390px Mobile Table Horizontal Overflow Optimization */
      .table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
      #mrpTable th, #mrpTable td, #poTable th, #poTable td { padding: 6px 4px; font-size: 11px; }
      #mrpTable .hide-mobile, #poTable .hide-mobile { display: none !important; }
      .topbar { padding: 0 6px !important; gap: 4px !important; }
      .page-title { font-size: 12.5px !important; max-width: 95px !important; }
      .erp-company-tab { padding: 0 4px !important; font-size: 10px !important; }
      .topbar-right { gap: 4px !important; }
    }

    /* Form grid → single column */
    .form-grid { grid-template-columns: 1fr; gap: 12px; }
    #approval-d-meta .form-grid { grid-template-columns: repeat(auto-fit, minmax(88px, 1fr)); gap: 10px 12px; }
    .form-grid [style*="grid-column"] { grid-column: 1 !important; }

    /* Buttons full width on forms */
    .form-actions { display: flex; flex-direction: column; gap: 8px; }
    .form-actions .btn { width: 100%; padding: 12px; font-size: 14px; }

    /* Touch-friendly inputs */
    .form-group input, .form-group select, .form-group textarea {
      padding: 11px 12px; font-size: 16px; /* prevents iOS zoom */
    }
    .btn { min-height: 44px; }

    /* Section headers */
    .sec-head { flex-wrap: wrap; gap: 10px; }
    .sec-head .btn { width: 100%; }
    .screen-context { align-items:stretch; }
    .screen-context .btn { width:100%; }

    /* Alerts */
    .alert { font-size: 12px; }

    /* Calendar mobile */
    .cal-day { min-height: 55px !important; padding: 4px !important; }
    .cal-event { font-size: 9px !important; padding: 1px 3px !important; }
    .cal-hd { font-size: 11px !important; padding: 6px 4px !important; }

    /* Charts shorter */
    .bar-chart { height: 60px; }

    /* Hide topbar date on small screens */
    .topbar-right span { display: none; }

    /* Nav items bigger touch target */
    .nav-item, .nav-group-hd { padding: 12px 16px; font-size: 14px; min-height: 44px; box-sizing: border-box; }
    .nav-section-hd { min-height: 44px; box-sizing: border-box; }
    .sidebar-foot button, .sidebar-foot a { min-height: 44px; box-sizing: border-box; }
  }

  @media (max-width: 480px) {
    .g2, .g4, .g5 { grid-template-columns: 1fr; }
    .kpi-value { font-size: 20px; }
  }

  .comp-num {
    display: inline-block;
    font-size: 9px;
    font-weight: 700;
    color: var(--accent);
    background: rgba(43,94,163,.12);
    border: 1px solid rgba(43,94,163,.25);
    border-radius: 4px;
    padding: 0 4px;
    margin-right: 4px;
    line-height: 16px;
    vertical-align: middle;
    font-family: "SF Mono", monospace;
    letter-spacing: .3px;
  }


  /* SmartSelect — 직접 입력 */
  .chip-custom { border-style: dashed !important; color: var(--accent) !important; opacity: .75; }
  .chip-custom.active { opacity: 1; border-style: solid !important; }
  .chip-custom-wrap { display: none; align-items: center; gap: 8px; margin-top: 8px; width: 100%; }
  .chip-custom-input { flex: 1; padding: 10px 13px; border-radius: 10px; border: 1.5px solid var(--border); background: transparent; color: var(--text, var(--txt, #e2e8f0)); font-size: 14px; outline: none; }
  .chip-custom-confirm { padding: 10px 16px; border-radius: 10px; border: none; background: var(--accent); color: #fff; font-size: 14px; font-weight: 700; cursor: pointer; }
  .chip-custom-confirm:active { opacity: .8; }
  /* select에 붙는 직접입력 박스(.sel-custom-wrap)는 좁은 테이블 셀 안에서도 행 높이를 밀어내거나
     옆 행과 겹치지 않도록 뜨는 형태로 오버라이드(2026-08-07 — 인사 기준정보 테이블편집에서 레이아웃 깨짐) */
  .chip-custom-wrap.sel-custom-wrap { position: absolute; width: max-content; min-width: 180px; max-width: 260px; margin-top: 4px; z-index: var(--z-menu); background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 6px; box-shadow: 0 6px 20px rgba(0,0,0,.22); }
  table.tbl-modern td { position: relative; }

  /* ===== 그리드 모던화 (신정기공 거래처 패턴 이식) ===== */
  .data-toolbar{display:flex;gap:10px;align-items:center;margin-bottom:12px;flex-wrap:wrap;}
  .data-search{flex:1;min-width:220px;padding:9px 14px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);font-size:13px;transition:.15s;}
  .data-search:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(43,94,163,.18);}
  .data-count{font-size:12px;color:var(--muted);font-weight:600;white-space:nowrap;}
  .btn-sm{padding:6px 12px;font-size:12px;font-family:inherit;border-radius:7px;}
  .table-wrap{overflow-x:auto;}
  table.tbl-modern{width:100%;border-collapse:collapse;table-layout:fixed;}
  table.tbl-modern th,table.tbl-modern td{text-align:center;vertical-align:middle;transition:background .12s;padding:10px 12px;border-bottom:1px solid var(--border);font-size:13px;color:var(--text);}
  table.tbl-modern.sales-drill-table th,table.tbl-modern.sales-drill-table td{padding:5px 8px;white-space:normal;word-break:break-word;}   /* 매출 드릴다운 품목 표 — 가시화면 폭에 맞춰 줄바꿈 허용(대표 지시: 좌우 스크롤 없이 전부 보이도록) — .tbl-modern 기본 규칙보다 상세도를 높여 덮어씀 */
  tr.ship-drill>td.sales-drill-cell{padding:0!important;background:rgba(43,94,163,.05);border-left:3px solid var(--accent);}
  .sales-drill-viewport{position:sticky;left:0;width:calc(var(--master-viewport-width, 100%) - 3px);min-width:min(860px, 100%);max-width:calc(100vw - 320px);box-sizing:border-box;padding:10px 12px;overflow-x:auto;}
  table.tbl-modern th{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;position:relative;}
  /* 열 너비 조정 그립 — 헤더 우측 경계 드래그(더블클릭 = 해당 열 너비 초기화) */
  .col-grip{position:absolute;top:0;right:-4px;width:9px;height:100%;cursor:col-resize;z-index:var(--z-base);background:transparent;}
  .col-grip::after{content:'';position:absolute;top:20%;right:4px;width:2px;height:60%;background:var(--border);border-radius:1px;transition:background .12s;}
  .col-grip:hover::after{background:var(--accent);}
  .col-grip.rz::after{background:var(--accent);}
  table.tbl-modern tbody tr:not(.cli-add-row):hover td{background:rgba(43,94,163,.07);}
  /* 생산실적 세부내역서 — 단일표(제품/원부포/인원/설비/유틸리티) */
  table.prod-statement{table-layout:auto;}
  table.prod-statement td{text-align:left;font-size:12.5px;padding:8px 12px;}
  tr.prod-cat-hd td{background:var(--accent2);color:#fff;font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.04em;padding:7px 12px;}
  tr.prod-col-hd td{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.04em;padding:5px 12px 6px;border-bottom:1px solid var(--border);}
  td.prod-empty{color:var(--muted);font-size:11.5px;font-style:italic;}
  tr.prod-add-row td{background:var(--bg);padding:8px 12px;}
  .prod-sub{font-size:10.5px;color:var(--muted);margin-right:6px;white-space:nowrap;}
  /* 2026-08-06 높이 일치 수정 — padding/font-size를 .cell-input(그리드 표준 입력칸)과 통일.
     이전엔 padding 4px 6px·11.5px로 다른 데이터그리드 입력칸(9px 10px·12.5px)보다 눈에 띄게 낮았음. */
  tr.prod-add-row input,tr.prod-add-row select{font-size:12.5px;padding:9px 10px;margin-right:4px;border-radius:7px;border:1px solid var(--border);background:var(--surface);color:var(--text);}
  tr.prod-add-row input[type="number"]{width:72px;}
  tr.prod-add-row input[type="text"]{width:110px;}
  .prod-cost-section{margin-bottom:8px;border:1px solid var(--border);border-radius:11px;overflow:hidden;background:var(--surface)}
  .prod-cost-section:last-child{margin-bottom:0}
  .prod-cost-head{display:flex;align-items:center;gap:10px;padding:11px 14px;border-left:4px solid var(--accent2);background:rgba(43,94,163,.05);cursor:pointer;user-select:none;transition:background .15s}
  .prod-cost-head:hover,.prod-cost-head.open{background:rgba(43,94,163,.12)}
  .prod-cost-title{flex:1;font-size:12px;font-weight:800;color:var(--text)}
  .prod-cost-hint{font-size:10.5px;color:var(--muted)}
  .prod-cost-arrow{font-size:10px;color:var(--accent);transition:transform .2s}
  .prod-cost-arrow.open{transform:rotate(90deg)}
  .prod-cost-detail{display:none;border-top:1px solid var(--border)}
  .prod-cost-detail.open{display:block}
  .prod-cost-quick{border-top:1px solid var(--border);background:var(--bg)}
  .prod-cost-detail .table-wrap,.prod-cost-quick .table-wrap{border:0;border-radius:0}
  .prod-cost-quick .prod-add-row input,.prod-cost-quick .prod-add-row select,.prod-cost-quick .prod-add-row .btn{vertical-align:middle}
  @media(max-width:600px){
    .prod-cost-head{align-items:center;padding:11px 12px}
    .prod-cost-hint{display:none}
    .prod-cost-quick .prod-sub{display:block;margin:0 0 6px}
    .prod-cost-quick tr.prod-add-row input[type="number"],.prod-cost-quick tr.prod-add-row input[type="text"],.prod-cost-quick tr.prod-add-row select,.prod-cost-quick .prod-add-row .btn{box-sizing:border-box;width:calc(50% - 4px);min-width:0;margin:0 4px 6px 0}
  }
  /* 핀(고정) 열은 자체 불투명 배경이 있어 행 호버색이 안 먹음 → 스티키 셀도 호버색 강제(불투명 대체) */
  :root{--stk-hover:#1b1c27;}
  [data-theme="light"]{--stk-hover:#f3f3fe;}
  tbody tr:hover td[style*="position:sticky"]{background:var(--stk-hover)!important;}
  .cli-cell{overflow-wrap:break-word;word-break:break-word;}
  .act-btn{background:rgba(255,255,255,.06);border:none;color:var(--muted);font-size:12px;padding:5px 11px;border-radius:6px;cursor:pointer;font-family:inherit;transition:.12s;}
  .act-btn:hover{background:rgba(43,94,163,.15);color:var(--accent);}
  .act-btn.edit{background:rgba(43,94,163,.16);color:var(--accent);} .act-btn.edit:hover{background:rgba(43,94,163,.26);color:var(--accent);}
  .act-btn.form{background:rgba(34,211,238,.16);color:var(--accent2);} .act-btn.form:hover{background:rgba(34,211,238,.26);color:var(--accent2);}
  .act-btn.del{background:rgba(239,68,68,.16);color:var(--danger);} .act-btn.del:hover{background:rgba(239,68,68,.26);color:var(--danger);}
  [data-theme="light"] .act-btn{background:rgba(0,0,0,.05);}
  .row-actions{display:flex;gap:5px;justify-content:center;}
  tr.cli-add-row td{padding:0;border-bottom:none;}
  .inline-add-trigger{display:flex;align-items:center;gap:8px;padding:12px 14px;color:var(--accent);font-size:13px;font-weight:600;cursor:pointer;}
  .inline-add-trigger:hover{background:rgba(43,94,163,.09);}
  /* 드릴다운 트리 스타일(펼침 토글 원형뱃지 + 자식행 트리라인) — 출하지시/작업지시/매출/재고유통기한별 공용 */
  .tree-toggle{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;border:1.5px solid var(--accent);color:var(--accent);font-size:9px;line-height:1;background:transparent;flex:0 0 auto;vertical-align:middle;}
  .tree-drill-row{position:relative;padding-left:22px!important;}
  .tree-drill-row::before{content:'';position:absolute;left:8px;top:-1px;width:1px;background:var(--border);height:calc(50% + 2px);}
  .tree-drill-row::after{content:'';position:absolute;left:8px;top:calc(50% + 1px);width:11px;height:1px;background:var(--border);}
  .tree-drill-row:not(.tree-drill-last)::before{height:calc(100% + 2px);}
  /* 재고 조회 드릴다운 수량 6열: 기본 균등폭(약 148px) 대신 절반인 74px 고정 */
  #master-tbody .ship-drill .invexp-drill-qty{width:74px;min-width:74px;padding-left:6px;padding-right:6px;}
  tr.editing td,tr.cli-erow td{padding:3px 5px;}
  tr.editing td{background:rgba(43,94,163,.09)!important;}
  tr.cli-erow td{background:rgba(43,94,163,.04);}
  .cell-input{width:100%;padding:9px 10px;border:1px solid var(--border);border-radius:7px;background:var(--surface);color:var(--text);font-size:12.5px;font-family:inherit;}
  .cell-input:focus{outline:none;box-shadow:0 0 0 2px rgba(43,94,163,.22);}
  input[type="number"]{appearance:textfield;-moz-appearance:textfield;}
  input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0;}
  .inline-actions{display:flex;gap:5px;justify-content:center;}
  .inline-actions button{padding:6px 11px;border-radius:7px;border:none;font-size:11px;font-weight:700;cursor:pointer;font-family:inherit;}
  .inline-actions .ia-save{background:var(--accent);color:#fff;}
  .inline-actions .ia-cancel{background:rgba(255,255,255,.1);color:var(--muted);}
  [data-theme="light"] .inline-actions .ia-cancel{background:rgba(0,0,0,.06);}
  .col-picker{position:relative;}
  .sf-lb{display:block;font-size:11px;color:var(--muted);margin-bottom:4px;font-weight:600;}
  /* 항목 선택 창 = 기준값 × 1.5 (대표 지시 2026-07-30 · 가로·세로 1.5배). 배율 변경 시 아래 6줄만 조정 */
  .col-menu{display:none;position:absolute;right:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--border);border-radius:15px;box-shadow:0 12px 40px rgba(0,0,0,.4);padding:11px;z-index:var(--z-menu);min-width:261px;max-height:480px;overflow:auto;max-width:min(94vw,1000px);}
  .col-menu.open{display:block;}
  .col-menu.cols2.open{display:grid;grid-auto-flow:column;grid-template-rows:repeat(5,auto);gap:0 6px;min-width:auto;}
  .col-menu label{display:flex;align-items:center;gap:12px;padding:9px 12px;font-size:18px;color:var(--text);border-radius:10px;cursor:pointer;white-space:nowrap;}
  .col-menu label input[type="checkbox"]{width:21px;height:21px;flex:0 0 auto;cursor:pointer;}
  .col-menu label .col-pin{cursor:pointer;margin-left:auto;font-size:21px;line-height:1;}
  .col-menu label:hover{background:rgba(43,94,163,.1);}
  /* 정적 목업표 조회 모던화(중앙정렬·hover, DB없음→스타일만) */
  table.tbl-view{width:100%;border-collapse:collapse;}
  table.tbl-view th,table.tbl-view td{text-align:center;vertical-align:middle;padding:10px 12px;border-bottom:1px solid var(--border);font-size:13px;color:var(--text);}
  table.tbl-view th{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;}
  table.tbl-view tbody tr:hover td{background:rgba(43,94,163,.05);}
  /* 생산실적 어코디언 스타일 — L1(카테고리) L2(품목) L3(LOT) */
  .wo-perf-acc{margin-bottom:8px;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--surface)}
  .wo-l1{display:flex;align-items:center;gap:10px;padding:13px 16px;cursor:pointer;user-select:none;transition:background .15s;background:var(--surface)}
  .wo-l1:hover{background:rgba(43,94,163,.08)}
  .wo-l1.open{background:rgba(43,94,163,.12)}
  .wo-l1-icon{font-size:16px;width:24px;text-align:center;flex-shrink:0}
  .wo-l1-name{font-size:13px;font-weight:700;color:var(--text);flex:1}
  .wo-l1-rate{display:flex;align-items:center;gap:10px}
  .wo-bar{flex:1;height:6px;background:rgba(43,94,163,.1);border-radius:3px;min-width:80px;max-width:120px;overflow:hidden}
  .wo-bar-fill{height:100%;border-radius:3px;transition:width .3s}
  .wo-bar-ok{background:#059669}.wo-bar-warn{background:#d97706}.wo-bar-danger{background:#dc2626}.wo-bar-over{background:#7c3aed}
  .wo-pn{display:flex;gap:16px;min-width:140px}
  .wo-pn-item{text-align:right;min-width:60px;font-size:12px}
  .wo-pn-l{font-size:9px;color:var(--muted);text-transform:uppercase;font-weight:600}
  .wo-pn-v{font-size:13px;font-weight:700}
  .wo-rate-badge{font-size:11px;padding:3px 10px;border-radius:8px;font-weight:700;min-width:50px;text-align:center;flex-shrink:0}
  .wo-rate-ok{background:#064e3b;color:#6ee7b7}.wo-rate-warn{background:#422006;color:#fcd34d}.wo-rate-danger{background:#7f1d1d;color:#fca5a5}.wo-rate-over{background:#3b0764;color:#d8b4fe}.wo-rate-na{background:rgba(43,94,163,.1);color:var(--muted)}
  .wo-l1-arrow{font-size:10px;color:var(--muted);transition:transform .2s;width:14px;flex-shrink:0}
  .wo-l1-arrow.open{transform:rotate(90deg)}
  .wo-l2-wrap{display:none;background:rgba(43,94,163,.04)}
  .wo-l2-wrap.open{display:block}
  .wo-l2-hdr{display:flex;gap:8px;padding:7px 16px 7px 42px;font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);background:rgba(43,94,163,.06)}
  .wo-l2{display:flex;align-items:center;gap:8px;padding:10px 16px 10px 42px;cursor:pointer;border-bottom:1px solid var(--border);transition:background .12s}
  .wo-l2:last-of-type{border-bottom:none}
  .wo-l2:hover{background:rgba(43,94,163,.08)}
  .wo-l2.open{background:rgba(43,94,163,.1)}
  .wo-l2-arrow{font-size:9px;color:var(--muted);transition:transform .2s;width:12px;flex-shrink:0}
  .wo-l2-arrow.open{transform:rotate(90deg);color:var(--accent)}
  .wo-l2-name{font-size:12px;color:var(--text);flex:1;font-weight:600}
  .wo-l2-nums{display:flex;gap:12px;min-width:180px}
  .wo-l2n{text-align:right;min-width:60px;font-size:11px}
  .wo-l2n-l{font-size:8px;color:var(--muted);text-transform:uppercase;font-weight:600}
  .wo-l2n-v{font-size:12px;font-weight:700}
  .wo-l3-wrap{display:none;background:rgba(0,0,0,.1)}
  .wo-l3-wrap.open{display:block}
  .wo-l3-hdr{display:flex;gap:8px;padding:6px 16px 6px 60px;font-size:8px;color:var(--muted);text-transform:uppercase;border-bottom:1px solid var(--border);font-weight:600}
  .wo-l3-row{display:flex;align-items:center;gap:8px;padding:8px 16px 8px 60px;border-bottom:1px solid var(--border);font-size:11px}
  .wo-l3-row:last-child{border-bottom:none}
  .wo-lot-code{font-family:monospace;color:var(--accent);min-width:110px;font-size:11px}
  .wo-l3v{text-align:right;min-width:60px;color:var(--muted);font-size:11px}
  .wo-l3v.actual{color:var(--accent2);font-weight:700}
  /* 완제품 LOT는 헤더·행을 같은 grid로 고정 → 열 기준선 일치 */
  .wo-product-l3-grid{display:grid;grid-template-columns:64px minmax(180px,1.5fr) repeat(4,minmax(110px,1fr));gap:0;width:100%;text-align:center;}
  .wo-l3-hdr.wo-product-l3-grid{font-size:11px;}
  .wo-product-l3-grid .wo-lot-code,.wo-product-l3-grid .wo-l3v{min-width:0;text-align:center;}
  .wo-product-l3-grid.wo-l3-row{cursor:pointer;}
  .wo-product-l3-grid.wo-l3-row:hover{background:rgba(43,94,163,.08);}
  /* 생산계획(작업지시) 대시보드 — KPI카드 대신 월별 상태별 막대그래프 + 상태 비중 도넛(2026-08-12 디자인 피드백) */
  .wo-month-chart{display:flex;align-items:flex-end;gap:6px;height:170px;padding:4px 2px 0}
  .wo-month-col{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;justify-content:flex-end;min-width:0;cursor:pointer;padding:3px 2px;border-radius:6px;transition:all .15s}
  .wo-month-col:hover{background:rgba(43,94,163,.06)}
  .wo-month-col.is-selected{background:rgba(43,94,163,.1);outline:1.5px solid var(--accent2);outline-offset:1px}
  .wo-month-total{font-size:10px;font-weight:700;color:var(--text);margin-bottom:3px;font-variant-numeric:tabular-nums;line-height:1}
  .wo-month-bar{width:100%;max-width:28px;display:flex;flex-direction:column-reverse;border-radius:4px 4px 0 0;overflow:hidden;background:var(--border)}
  .wo-month-seg{width:100%;flex-basis:0;transition:filter .12s;cursor:pointer}
  .wo-month-seg:hover{filter:brightness(1.15)}
  .wo-month-lbl{margin-top:5px;font-size:10.5px;color:var(--muted);font-weight:600;white-space:nowrap}
  .wo-chart-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}
  .wo-chart-legend-item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text)}
  .wo-chart-legend-sw{width:10px;height:10px;border-radius:3px;flex-shrink:0}
  .wo-pie-wrap{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
  .wo-pie-center-total{font-size:22px;font-weight:800;fill:var(--text)}
  .wo-pie-center-lbl{font-size:10px;fill:var(--muted);font-weight:600}
  .wo-pie-legend{display:flex;flex-direction:column;gap:10px;flex:1;min-width:140px}
  .wo-pie-legend-row{display:flex;align-items:center;gap:8px;font-size:12.5px}
  .wo-pie-legend-sw{width:11px;height:11px;border-radius:3px;flex-shrink:0}
  .wo-pie-legend-name{color:var(--text);font-weight:600;min-width:44px}
  .wo-pie-legend-val{margin-left:auto;color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}
  /* BOM 폭포수 어코디언 — L1 제품합계 → L2 카테고리소계 → L3 기존 재료행 */
  .bom-waterfall-summary{display:flex;align-items:center;gap:14px;padding:15px 18px;margin-bottom:8px;border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:11px;background:var(--surface);cursor:pointer;user-select:none;transition:background .15s}
  .bom-waterfall-summary:hover,.bom-waterfall-summary.open{background:rgba(43,94,163,.09)}
  .bom-waterfall-title{font-size:14px;font-weight:800;color:var(--text);flex:1}
  .bom-waterfall-values{display:flex;gap:22px;align-items:center}
  .bom-waterfall-metric{text-align:right;min-width:110px}
  .bom-waterfall-label{display:block;font-size:10px;color:var(--muted);margin-bottom:2px}
  .bom-waterfall-value{font-size:15px;font-weight:800;color:var(--accent2)}
  .bom-waterfall-arrow{font-size:11px;color:var(--accent);transition:transform .2s}
  .bom-waterfall-arrow.open{transform:rotate(90deg)}
  .bom-category-row{cursor:pointer;background:rgba(43,94,163,.04)}
  .bom-category-row:hover td,.bom-category-row.open td{background:rgba(43,94,163,.1)!important}
  .bom-category-row td:first-child{border-left:3px solid var(--accent)}
  .bom-category-name{text-align:left!important;font-weight:800!important;padding-left:24px!important}
  .bom-category-arrow{display:inline-block;margin-right:9px;font-size:10px;color:var(--accent);transition:transform .2s}
  .bom-category-arrow.open{transform:rotate(90deg)}
  .bom-ingredient-row{display:none}
  .bom-ingredient-row.open{display:table-row}
  .bom-ingredient-row td:first-child{border-left:3px solid var(--success)}
  /* 재고 현황 폭포수 어코디언 — L1 총계 → L2 상태별 소계 → L3 기존 SKU 행 */
  .inv-waterfall-summary{display:flex;align-items:center;gap:14px;padding:15px 18px;margin-bottom:8px;border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:11px;background:var(--surface);cursor:pointer;user-select:none;transition:background .15s}
  .inv-waterfall-summary:hover,.inv-waterfall-summary.open{background:rgba(43,94,163,.09)}
  .inv-waterfall-title{flex:1;font-size:14px;font-weight:800;color:var(--text)}
  .inv-waterfall-values{display:flex;align-items:center;gap:22px}
  .inv-waterfall-metric{min-width:110px;text-align:right}
  .inv-waterfall-label{display:block;margin-bottom:2px;font-size:10px;color:var(--muted)}
  .inv-waterfall-value{font-size:15px;font-weight:800;color:var(--accent2)}
  .inv-waterfall-arrow{flex:0 0 auto;font-size:11px;color:var(--accent);transition:transform .2s}
  .inv-waterfall-arrow.open{transform:rotate(90deg)}
  .inv-status-list{display:none}
  .inv-status-list.open{display:block}
  .inv-status-row{cursor:pointer;background:rgba(43,94,163,.04)}
  .inv-status-row:hover td,.inv-status-row.open td{background:rgba(43,94,163,.1)!important}
  .inv-status-row td:first-child{border-left:3px solid var(--accent)}
  .inv-status-name{text-align:left!important;font-weight:800!important;padding-left:24px!important}
  .inv-status-arrow{display:inline-block;margin-right:9px;font-size:10px;color:var(--accent);transition:transform .2s}
  .inv-status-arrow.open{transform:rotate(90deg)}
  .inv-sku-row{display:none}
  .inv-sku-row.open{display:table-row}
  .inv-sku-row td:first-child{border-left:3px solid var(--success)}
  @media(max-width:600px){
    .bom-waterfall-summary{align-items:flex-start;padding:13px 14px}
    .bom-waterfall-values{gap:10px;flex-direction:column;align-items:flex-end}
    .bom-waterfall-metric{min-width:100px}
    .bom-category-name{padding-left:14px!important}
    .inv-waterfall-summary{align-items:flex-start;padding:13px 14px}
    .inv-waterfall-values{flex-direction:column;align-items:flex-end;gap:10px}
    .inv-waterfall-metric{min-width:100px}
    .inv-status-name{padding-left:14px!important}
  }
  /* CCP 일지 폭포수 어코디언 — L1 전체총계 → L2 CCP포인트 소계 → L3 기존 점검행 */
  .ccp-waterfall-summary{display:flex;align-items:center;gap:14px;padding:15px 18px;margin-bottom:8px;border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:11px;background:var(--surface);cursor:pointer;user-select:none;transition:background .15s}
  .ccp-waterfall-summary:hover,.ccp-waterfall-summary.open{background:rgba(43,94,163,.09)}
  .ccp-waterfall-title{font-size:14px;font-weight:800;color:var(--text);flex:1}
  .ccp-waterfall-values{display:flex;align-items:center;gap:22px}
  .ccp-waterfall-metric{text-align:right;min-width:84px}
  .ccp-waterfall-label{display:block;margin-bottom:2px;font-size:10px;color:var(--muted)}
  .ccp-waterfall-value{font-size:15px;font-weight:800;color:var(--accent2)}
  .ccp-waterfall-value.fail{color:var(--danger)}
  .ccp-waterfall-arrow,.ccp-point-arrow{display:inline-block;font-size:10px;color:var(--accent);transition:transform .2s}
  .ccp-waterfall-arrow.open,.ccp-point-arrow.open{transform:rotate(90deg)}
  .ccp-point-row{cursor:pointer;background:rgba(43,94,163,.04)}
  .ccp-point-row:hover td,.ccp-point-row.open td{background:rgba(43,94,163,.1)!important}
  .ccp-point-row td:first-child{border-left:3px solid var(--accent)}
  .ccp-point-name{text-align:left!important;font-weight:800!important;padding-left:24px!important}
  .ccp-point-arrow{margin-right:9px}
  .ccp-record-row{display:none}
  .ccp-record-row.open{display:table-row}
  .ccp-record-row td:first-child{border-left:3px solid var(--success)}
  /* 근태 현황 폭포수 어코디언 — L1 기간총계 → L2 직원소계 → L3 기존 일자행 */
  .att-waterfall-summary{display:flex;align-items:center;gap:14px;padding:15px 18px;margin-bottom:10px;border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:11px;background:var(--surface);cursor:pointer;user-select:none;transition:background .15s}
  .att-waterfall-summary:hover,.att-waterfall-summary.open{background:rgba(43,94,163,.09)}
  .att-waterfall-title{flex:1;min-width:150px;font-size:14px;font-weight:800;color:var(--text)}
  .att-waterfall-period{display:block;margin-top:3px;font-size:10px;font-weight:600;color:var(--muted)}
  .att-waterfall-values{display:flex;align-items:center;gap:22px}
  .att-waterfall-metric{min-width:96px;text-align:right}
  .att-waterfall-label{display:block;margin-bottom:2px;font-size:10px;color:var(--muted)}
  .att-waterfall-value{font-size:15px;font-weight:800;color:var(--accent2)}
  .att-waterfall-arrow,.att-employee-arrow{display:inline-block;flex:0 0 auto;font-size:10px;color:var(--accent);transition:transform .2s}
  .att-waterfall-arrow.open,.att-employee-arrow.open{transform:rotate(90deg)}
  .att-waterfall-list.is-collapsed .att-employee-row,.att-waterfall-list.is-collapsed .att-detail-row{display:none}
  .att-waterfall-list.is-collapsed .att-detail-row.editing{display:table-row}
  .att-employee-row{cursor:pointer;background:rgba(43,94,163,.04)}
  .att-employee-row:hover td,.att-employee-row.open td{background:rgba(43,94,163,.1)!important}
  .att-employee-row td:first-child{border-left:3px solid var(--accent)}
  .att-employee-content{display:flex;align-items:center;gap:16px;min-height:24px;text-align:left}
  .att-employee-name{flex:1;font-weight:800}
  .att-employee-arrow{margin-right:9px}
  .att-employee-meta{margin-left:7px;font-size:10px;font-weight:600;color:var(--muted)}
  .att-employee-metrics{display:flex;align-items:center;justify-content:flex-end;gap:20px}
  .att-employee-metric{font-size:11px;color:var(--muted);white-space:nowrap}
  .att-employee-metric strong{margin-left:5px;font-size:12px;color:var(--text)}
  .att-detail-row{display:none}
  .att-detail-row.open,.att-detail-row.editing{display:table-row}
  .att-detail-row td:first-child{border-left:3px solid var(--success)}
  @media(max-width:600px){
    .ccp-waterfall-summary{align-items:flex-start;gap:10px;padding:13px 14px}
    .ccp-waterfall-values{flex-direction:column;align-items:flex-end;gap:7px}
    .ccp-waterfall-metric{min-width:94px}
    .ccp-point-name{padding-left:14px!important}
    #ccp-point-list table{min-width:760px}
    .att-waterfall-summary{align-items:flex-start;gap:10px;padding:13px 14px}
    .att-waterfall-title{min-width:118px}
    .att-waterfall-values{flex-direction:column;align-items:flex-end;gap:7px}
    .att-waterfall-metric{min-width:92px}
    .att-employee-content{gap:10px}
    .att-employee-metrics{gap:12px}
    #al2-table{min-width:760px}
  }
  /* 발주서 관리 폭포수 어코디언 — L1 전체총계 → L2 상태별 소계 → L3 기존 발주서 행 */
  .po-waterfall-summary{display:flex;align-items:center;gap:14px;padding:15px 18px;margin-bottom:8px;border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:11px;background:var(--surface);cursor:pointer;user-select:none;transition:background .15s}
  .po-waterfall-summary:hover,.po-waterfall-summary.open{background:rgba(43,94,163,.09)}
  .po-waterfall-title{flex:1;font-size:14px;font-weight:800;color:var(--text)}
  .po-waterfall-values{display:flex;align-items:center;gap:22px}
  .po-waterfall-metric{min-width:96px;text-align:right}
  .po-waterfall-label{display:block;margin-bottom:2px;font-size:10px;color:var(--muted)}
  .po-waterfall-value{font-size:15px;font-weight:800;color:var(--accent2)}
  .po-waterfall-arrow,.po-status-arrow{display:inline-block;flex:0 0 auto;font-size:10px;color:var(--accent);transition:transform .2s}
  .po-waterfall-arrow.open,.po-status-arrow.open{transform:rotate(90deg)}
  .po-status-list{display:none}
  .po-status-list.open{display:block}
  .po-status-row{cursor:pointer;background:rgba(43,94,163,.04)}
  .po-status-row:hover td,.po-status-row.open td{background:rgba(43,94,163,.1)!important}
  .po-status-row td:first-child{border-left:3px solid var(--accent)}
  .po-status-name{text-align:left!important;font-weight:800!important;padding-left:24px!important}
  .po-status-arrow{margin-right:9px}
  .po-order-row{display:none}
  .po-order-row.open{display:table-row}
  .po-order-row td:first-child{border-left:3px solid var(--success)}
  @media(max-width:600px){
    .po-waterfall-summary{align-items:flex-start;gap:10px;padding:13px 14px}
    .po-waterfall-values{flex-direction:column;align-items:flex-end;gap:7px}
    .po-waterfall-metric{min-width:94px}
    .po-status-name{padding-left:14px!important}
    .po-status-list table{min-width:840px}
  }
