/* /Components/Layout/BrandMark.razor.rz.scp.css */
/* 사업장 표시 — 자리별 크기. 글자 모양은 예전 고정 표시(RefModel · 기준모델)와 같게 둔다.
   09-07 에서 고른 글꼴 · 크기는 BrandMark 가 style 로 --bm-tf · --bm-sf (글꼴) · --bm-ts · --bm-ss (왼쪽 위 기준 배율) 를 넘긴다. */
.bm[b-f1nbldjjog] { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; min-width: 0; max-width: 100%; }
.bm-logo[b-f1nbldjjog] { display: block; max-width: 100%; height: auto; object-fit: contain; }
.bm-title[b-f1nbldjjog] { color: var(--mes-accent); font-weight: 700; font-family: var(--bm-tf, Calibri, Arial, sans-serif); letter-spacing: .6px; line-height: 1;
            white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.bm-sub[b-f1nbldjjog] { color: #E8EDF3; font-family: var(--bm-sf, inherit); line-height: 1.15; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }

/* 왼쪽 위 (사이드바 225px · 높이 170px) */
/* 아래 14px 에 관리자용 버전 줄이 겹치므로 그만큼 띄운다. 로고 + 글자면 로고를 낮춰 170px 안에 넣는다. */
.bm-side[b-f1nbldjjog] { width: 100%; padding: 0 14px 18px; }
.bm-side .bm-logo[b-f1nbldjjog] { max-width: 190px; max-height: 100px; }
.bm-side.bm-both[b-f1nbldjjog] { gap: 5px; }
.bm-side.bm-both .bm-logo[b-f1nbldjjog] { max-height: 54px; }
.bm-side .bm-title[b-f1nbldjjog] { font-size: calc(28px * var(--bm-ts, 1)); }
.bm-side .bm-sub[b-f1nbldjjog] { font-size: calc(18px * var(--bm-ss, 1)); }

/* 로그인 · 비밀번호 변경 */
.bm-login[b-f1nbldjjog] { gap: 10px; }
.bm-login .bm-logo[b-f1nbldjjog] { max-width: 280px; max-height: 110px; }
.bm-login.bm-both .bm-logo[b-f1nbldjjog] { max-height: 80px; }
.bm-login .bm-title[b-f1nbldjjog] { font-size: calc(44px * var(--bm-ts, 1)); letter-spacing: 1.2px; }
.bm-login .bm-sub[b-f1nbldjjog] { font-size: calc(22px * var(--bm-ss, 1)); font-weight: 400; }

/* 시작화면 머리 (MesHeader) */
.bm-header[b-f1nbldjjog] { align-items: flex-start; gap: 4px; }
.bm-header .bm-logo[b-f1nbldjjog] { max-width: 200px; max-height: 56px; }
.bm-header.bm-both .bm-logo[b-f1nbldjjog] { max-height: 36px; }
.bm-header .bm-title[b-f1nbldjjog] { font-size: calc(28px * var(--bm-ts, 1)); }
.bm-header .bm-sub[b-f1nbldjjog] { font-size: calc(17px * var(--bm-ss, 1)); }

/* 모바일 상단 바 — 한 줄 */
.bm-mobile[b-f1nbldjjog] { flex-direction: row; align-items: center; gap: 6px; }
.bm-mobile .bm-logo[b-f1nbldjjog] { max-height: 24px; max-width: 120px; }
.bm-mobile .bm-title[b-f1nbldjjog] { font-size: calc(16px * var(--bm-ts, 1)); color: #fff; font-family: var(--bm-tf, inherit); letter-spacing: .02em; }
.bm-mobile .bm-sub[b-f1nbldjjog] { font-size: calc(12px * var(--bm-ss, 1)); color: var(--mes-teal); }

@media (max-width: 480px) {
    .bm-login .bm-title[b-f1nbldjjog] { font-size: calc(36px * var(--bm-ts, 1)); }
    .bm-login .bm-sub[b-f1nbldjjog] { font-size: calc(19px * var(--bm-ss, 1)); }
    .bm-login .bm-logo[b-f1nbldjjog] { max-width: 220px; max-height: 90px; }
}
/* /Components/Layout/ConfirmDialog.razor.rz.scp.css */
/* 확인 메시지박스. 패널 헤더(#38424F)·CRUD 버튼 색을 그대로 써서 화면과 결이 맞게 한다. */
.mbox-backdrop[b-4uyc503twm] {
    position: fixed; inset: 0; z-index: 1000;
    background: rgba(16, 24, 32, .45);
    display: flex; align-items: center; justify-content: center;
    outline: none;
}

.mbox[b-4uyc503twm] {
    width: 420px; max-width: calc(100vw - 32px);
    background: #fff; border: 1px solid #6E7A86;
    box-shadow: 0 12px 32px rgba(0, 0, 0, .28);
    color: #000; font-size: 15px;
}

.mbox-head[b-4uyc503twm] {
    height: 42px; padding: 0 14px;
    background: var(--mes-panel-head); color: #fff;
    display: flex; align-items: center; font-size: 17px; font-weight: 700;
}

.mbox-body[b-4uyc503twm] {
    padding: 22px 18px 18px;
    line-height: 1.6; white-space: pre-line; word-break: keep-all;
}

.mbox-foot[b-4uyc503twm] {
    display: flex; justify-content: flex-end; gap: 8px;
    padding: 0 14px 14px;
}

.mbox-btn[b-4uyc503twm] {
    min-width: 96px; height: 38px; border: 0; color: #fff;
    font-size: 15px; font-weight: 700; cursor: pointer;
}
.mbox-btn.yes[b-4uyc503twm] { background: var(--mes-edit); }
.mbox-btn.no[b-4uyc503twm]  { background: #7A8590; }
.mbox-btn:hover[b-4uyc503twm] { filter: brightness(1.08); }
.mbox-btn:focus-visible[b-4uyc503twm] { outline: 3px solid #26A69A; outline-offset: 2px; }

/* 알림(삭제 불가 등)은 제목 띠를 붉게 해 확인 상자와 구분한다. */
.mbox-head.alert[b-4uyc503twm] { background: var(--mes-delete); }

/* 본인 확인 비밀번호 칸 (위험한 동작 · Reauth) */
.mbox-pw-row[b-4uyc503twm] { padding: 0 18px 16px; display: grid; gap: 6px; }
.mbox-pw-row label[b-4uyc503twm] { font-size: 13px; color: #5F6B74; font-weight: 700; }
.mbox-pw[b-4uyc503twm] {
    height: 34px; padding: 3px 9px; font-size: 15px; outline: none;
    border: 1px solid #9AA6B1; border-radius: 2px;
}
.mbox-pw:focus[b-4uyc503twm] { border-color: var(--mes-teal); box-shadow: 0 0 0 2px rgba(58,213,191,.2); }
/* /Components/Layout/MesHeader.razor.rz.scp.css */
/* html/00_전체화면목록.html 의 .header 이식. */
.header[b-f5b2lnh8l6] {
    position: relative;
    height: 92px;
    display: flex;
    align-items: center;
    gap: 22px;
    padding: 0 34px;
    background: var(--mes-navy);
    color: #fff;
    border-bottom: 4px solid var(--mes-accent);
}
.brand[b-f5b2lnh8l6] { min-width: 230px; }
.meta[b-f5b2lnh8l6] { margin-left: auto; text-align: right; font-size: 13px; color: #cbd5df; line-height: 1.7; }

.userbar[b-f5b2lnh8l6] {
    position: absolute; right: 24px; bottom: 8px;
    display: flex; align-items: center; gap: 10px;
    font-size: 12.5px; color: #C9D3DB;
}
.userbar b[b-f5b2lnh8l6] { color: #fff; font-weight: 600; }
.userbar .lv[b-f5b2lnh8l6] {
    background: var(--mes-grid-head); color: #fff;
    padding: 2px 8px; border-radius: 2px; font-size: 11.5px;
}
.userbar form[b-f5b2lnh8l6] { margin: 0; display: flex; }
.userbar .sess[b-f5b2lnh8l6] { color: #fff; font-weight: 600; white-space: nowrap; }
.userbar button[b-f5b2lnh8l6] {
    background: none; border: 1px solid rgba(255,255,255,.25); color: #E8EDF3;
    font-family: inherit; font-size: 11.5px; padding: 3px 10px;
    border-radius: 2px; cursor: pointer;
}
.userbar button:hover[b-f5b2lnh8l6] { background: rgba(255,255,255,.1); }

@media (max-width: 720px) {
    .header[b-f5b2lnh8l6] { height: auto; padding: 20px; display: block; }
    .meta[b-f5b2lnh8l6] { margin: 10px 0 0; text-align: left; }
}
/* /Components/Layout/MesLayout.razor.rz.scp.css */
/* html/01_기준정보/01_거래처코드_v7기준.html 의 MainForm 셸 이식. */
/* 셸은 뷰포트에 정확히 맞춘다. 문서 자체는 스크롤하지 않고,
   내용이 넘치는 그리드·폼은 각자의 패널 안에서 스크롤한다.
   업무화면 원본은 1920x1080 기준이라 그보다 작은 창에서는 여백이 줄어든다.

   1280x800 은 바닥값이다. 그 아래로는 버튼·카드가 잘리기 시작하므로
   레이아웃을 뭉개는 대신 문서를 스크롤시킨다. (1920x1080 모니터에서는 걸리지 않는다) */
.app-shell[b-vfbr0ysxnp] {
    width: 100%; min-width: 1280px;
    height: 100vh; min-height: 800px;
    display: flex; overflow: hidden;
    background: var(--mes-page); color: #000;
}

/* ===== 사이드바 : MainForm.panelMainLeft 225px ===== */
.sidebar[b-vfbr0ysxnp] {
    width: 225px; flex: 0 0 225px; height: 100%;
    background: var(--mes-navy); color: #fff;
    display: flex; flex-direction: column; overflow: hidden;
}
.app-shell.collapsed .sidebar[b-vfbr0ysxnp] { display: none; }

.brand-link[b-vfbr0ysxnp] { display: block; text-decoration: none; color: inherit; }
.brand[b-vfbr0ysxnp] {
    height: 170px; flex: 0 0 170px;
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px;
    border-bottom: 2px solid rgba(255,255,255,.035);
}
/* 로고 · 제목 · 부제목은 BrandMark.razor.css (side) — 자리만 여기서 잡는다. */
/* 프로그램 버전(관리자 로그인 때만). 로고·사업장명 자리는 그대로 두려고 로고 영역 맨 아래에 겹쳐 둔다. */
.brand[b-vfbr0ysxnp] { position: relative; }
.brand-version[b-vfbr0ysxnp] {
    position: absolute; left: 0; right: 0; bottom: 14px; text-align: center;
    color: #8FA3B8; font-size: 12px; line-height: 1; letter-spacing: .2px; white-space: nowrap;
}

.nav[b-vfbr0ysxnp] { flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; scrollbar-width: thin; }

.nav-main[b-vfbr0ysxnp] {
    height: 50px; display: flex; align-items: center; gap: 10px; padding: 0 10px;
    background: var(--mes-navy); color: var(--mes-menu-text);
    font-size: 16px; font-weight: 700; cursor: pointer; user-select: none;
}
.nav-main.active[b-vfbr0ysxnp] { background: var(--mes-menu-active); color: #fff; }
.nav-main:hover[b-vfbr0ysxnp] { color: #fff; }
.nav-main:focus-visible[b-vfbr0ysxnp] { outline: 2px solid #1ABC9C; outline-offset: -2px; }
.nav-dot[b-vfbr0ysxnp] { width: 10px; height: 10px; flex: 0 0 10px; border-radius: 50%; background: #1ABC9C; }
.nav-caret[b-vfbr0ysxnp] { margin-left: auto; font-size: 11px; opacity: .55; transition: transform .12s ease; }
.nav-main.open .nav-caret[b-vfbr0ysxnp] { transform: rotate(90deg); opacity: .9; }

.nav-group[b-vfbr0ysxnp] { display: none; }
.nav-group.open[b-vfbr0ysxnp] { display: block; }

.nav-sub[b-vfbr0ysxnp] {
    height: 40px; display: flex; align-items: center; padding: 0 10px 0 50px;
    background: var(--mes-submenu); color: #fff;
    font-size: 14.67px; text-decoration: none; user-select: none;
    border-top: 3px solid var(--mes-navy); border-bottom: 3px solid var(--mes-navy);
}
.nav-sub.active[b-vfbr0ysxnp] { background: var(--mes-submenu-active); color: var(--mes-teal); }
.nav-sub:focus-visible[b-vfbr0ysxnp] { outline: 2px solid #1ABC9C; outline-offset: -2px; }

.pager[b-vfbr0ysxnp] {
    flex: 0 0 34px; height: 34px; display: flex; align-items: stretch;
    border-top: 1px solid rgba(255,255,255,.06); background: rgba(0,0,0,.18);
}
.pager a[b-vfbr0ysxnp], .pager span[b-vfbr0ysxnp] {
    flex: 1 1 0; display: flex; align-items: center; justify-content: center; gap: 5px;
    font-size: 11.5px; color: #9FB0C2; text-decoration: none;
}
.pager a:hover[b-vfbr0ysxnp] { color: #fff; background: rgba(255,255,255,.06); }
.pager span[b-vfbr0ysxnp] { opacity: .3; }
.pager a + a[b-vfbr0ysxnp], .pager a + span[b-vfbr0ysxnp], .pager span + a[b-vfbr0ysxnp] { border-left: 1px solid rgba(255,255,255,.06); }

.sidebar-footer[b-vfbr0ysxnp] {
    height: 70px; flex: 0 0 70px;
    border-top: 1px solid rgba(255,255,255,.03);
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px;
}
.footer-line[b-vfbr0ysxnp] {
    width: 70px; height: 1px;
    background: linear-gradient(90deg, rgba(255,255,255,0), #AAB6BB, rgba(255,255,255,0));
}
.footer-runsys[b-vfbr0ysxnp] {
    font: 800 22px/1 Arial, Helvetica, sans-serif; letter-spacing: -.5px;
    background: linear-gradient(180deg,#FFFFFF 0%,#E9EEF0 18%,#C2CCD0 42%,#9AA6AC 60%,#DFE6E8 78%,#AAB6BB 100%);
    background-clip: text; -webkit-background-clip: text; color: transparent;
}

/* ===== 본문 : 상단바 48px + page-body ===== */
.main[b-vfbr0ysxnp] { flex: 1 1 auto; min-width: 0; height: 100%; overflow: hidden; background: var(--mes-page); }

.topbar[b-vfbr0ysxnp] {
    height: 48px; width: 100%; background: var(--mes-navy); color: #fff;
    display: flex; align-items: center; overflow: hidden;
}
.hamburger[b-vfbr0ysxnp] {
    width: 52px; height: 48px; flex: 0 0 52px; border: 0; background: transparent; padding: 0;
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
    cursor: pointer;
}
.hamburger span[b-vfbr0ysxnp] { display: block; width: 22px; height: 3px; background: #fff; }

.route-title[b-vfbr0ysxnp] {
    height: 48px; flex: 1 1 auto; min-width: 0;
    display: flex; align-items: center; padding: 0 8px;
    font-size: 18.67px; font-weight: 700; white-space: nowrap;
}

.user-panel[b-vfbr0ysxnp] { height: 48px; flex: 0 0 auto; display: flex; align-items: center; }
.session[b-vfbr0ysxnp] {
    height: 34px; display: flex; align-items: center; justify-content: flex-end;
    padding-right: 6px; font-size: 15px; font-weight: 700; white-space: nowrap;
}
.user-badge[b-vfbr0ysxnp] {
    height: 34px; margin: 0 3px; padding: 0 10px;
    display: inline-flex; align-items: center; gap: 8px;
    background: transparent; border: 1px solid #646464; color: #fff; text-decoration: none;
    font-size: 15px; font-weight: 700; white-space: nowrap; cursor: pointer;
}
.user-badge:hover[b-vfbr0ysxnp] { border-color: var(--mes-teal); }
.user-badge:focus-visible[b-vfbr0ysxnp] { outline: 2px solid var(--mes-teal); outline-offset: 1px; }
/* "비밀번호" 안내는 글자가 아니라 장식으로 붙인다 — 이름 칸의 글자(봇이 권한 레벨을 읽는 곳)는 그대로 둔다. */
.user-badge[b-vfbr0ysxnp]::after { content: "비밀번호"; font-size: 11.5px; font-weight: 400; color: #9FB0C2; border-left: 1px solid #646464; padding-left: 8px; }
.logout[b-vfbr0ysxnp] {
    width: 84px; height: 34px; margin-right: 6px; padding: 0;
    background: transparent; border: 1px solid var(--mes-logout); color: var(--mes-logout);
    font-size: 13.33px; cursor: pointer;
}

/* 뷰포트가 아니라 셸 높이를 기준으로 잡는다. */
.page-body[b-vfbr0ysxnp] { width: 100%; height: calc(100% - 48px); padding: 2px; background: var(--mes-page); overflow: hidden; }

/* ===== 설비 연결 색 띠 (게이트웨이를 쓰는 서버만) =====
   정상 파랑 · 장비 일부 문제 주황 · 게이트웨이 끊김 빨강. 문제일 때만 2초마다 깜빡이고, 마우스를 대면 내용, 누르면 모니터링 화면. */
.main[b-vfbr0ysxnp] { position: relative; }
.main.with-bar .page-body[b-vfbr0ysxnp] { height: calc(100% - 56px); }
.conn-bar[b-vfbr0ysxnp] { position: relative; z-index: 40; height: 8px; width: 100%; }
.conn-bar.ok[b-vfbr0ysxnp] { background: #1E6FD9; }
.conn-bar.warn[b-vfbr0ysxnp] { background: #F08C00; cursor: pointer; animation: conn-blink-warn-b-vfbr0ysxnp 2s ease-in-out infinite; }
.conn-bar.error[b-vfbr0ysxnp] { background: #E03131; cursor: pointer; animation: conn-blink-error-b-vfbr0ysxnp 2s ease-in-out infinite; }
/* 띠의 바탕색만 바꾼다 (opacity 로 깜빡이면 안의 툴팁까지 깜빡인다) */
@keyframes conn-blink-warn-b-vfbr0ysxnp { 0%, 100% { background: #F08C00; } 50% { background: #FBE2BF; } }
@keyframes conn-blink-error-b-vfbr0ysxnp { 0%, 100% { background: #E03131; } 50% { background: #F8C9C9; } }
@media (prefers-reduced-motion: reduce) { .conn-bar.warn[b-vfbr0ysxnp], .conn-bar.error[b-vfbr0ysxnp] { animation: none; } }

.conn-tip[b-vfbr0ysxnp] {
    display: none; position: absolute; left: 60px; top: 10px; z-index: 50;
    min-width: 360px; max-width: 620px; padding: 10px 14px;
    background: #fff; color: #1B242B; border: 1px solid #9AA5AD; box-shadow: 0 6px 18px rgba(0,0,0,.25);
    font-size: 13.5px; line-height: 1.55; cursor: pointer;
}
.conn-bar:hover .conn-tip[b-vfbr0ysxnp] { display: block; }
.conn-tip-head[b-vfbr0ysxnp] { font-weight: 700; margin-bottom: 4px; }
.conn-tip-head span[b-vfbr0ysxnp] { margin-left: 8px; font-weight: 400; font-size: 12px; color: #65747F; }
.conn-tip-row[b-vfbr0ysxnp] { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: #8A5300; }
.conn-tip-row.error[b-vfbr0ysxnp] { color: #B42318; font-weight: 600; }
.conn-tip-foot[b-vfbr0ysxnp] { margin-top: 6px; padding-top: 6px; border-top: 1px solid #E3E8EB; font-size: 12px; color: #65747F; }

/* 로그아웃은 폼 POST 라 form 이 감싸지만, 레이아웃 상자를 만들지 않게 해서
   .logout 이 .user-panel 의 flex 항목으로 그대로 남게 한다. */
.logout-form[b-vfbr0ysxnp] { display: contents; }
/* /Components/Layout/ViewSwitch.razor.rz.scp.css */
.view-switch[b-exo68lt86v] { display: inline-block; margin: 0 8px 0 0; }
.view-switch button[b-exo68lt86v] {
    background: none; border: 0; padding: 4px 2px; font: inherit; font-size: 12px;
    color: #3AD5BF; cursor: pointer; text-decoration: underline;
}
/* /Components/Pages/CaseErectorDefectHistory.razor.rz.scp.css */
/* 05-05 제함기 불량이력관리 고유 값. 공통 골격은 wwwroot/quality-screen.css 참조. */
.rows-3[b-hwv934ouqq] { grid-template-rows: 106px 94px minmax(0, 1fr); }

.c-num[b-hwv934ouqq] { width: 105px; } .c-small[b-hwv934ouqq] { width: 90px; }

.d-date[b-hwv934ouqq] { width: 105px; } .d-eq[b-hwv934ouqq] { width: 105px; } .d-box[b-hwv934ouqq] { width: 125px; }
.d-order[b-hwv934ouqq] { width: 125px; } .d-partner[b-hwv934ouqq] { width: 105px; } .d-name[b-hwv934ouqq] { width: 105px; }
.d-small[b-hwv934ouqq] { width: 95px; }
/* /Components/Pages/ChangePassword.razor.rz.scp.css */
/* 비밀번호 변경 — 로그인 화면(Login.razor.css)과 같은 모양. 색상 토큰과 리셋은 wwwroot/app.css 참조. */
.login-page[b-m6nxc75gls] {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}

.login[b-m6nxc75gls] { width: 380px; max-width: 100%; }

.brand[b-m6nxc75gls] { text-align: center; margin-bottom: 34px; user-select: none; }
/* 로고 · 제목 크기는 BrandMark.razor.css (login) */
.brand-site[b-m6nxc75gls] { margin-top: 10px; font-size: 22px; color: #E8EDF3; font-weight: 400; }
.brand-sys[b-m6nxc75gls] { margin-top: 8px; font-size: 12.5px; color: #6E7E93; }

.panel[b-m6nxc75gls] { background: #161F33; border: 1px solid rgba(255,255,255,.07); }
.panel-head[b-m6nxc75gls] {
    height: 42px; display: flex; align-items: center; padding: 0 16px;
    background: var(--mes-panel-head); font-size: 14px; font-weight: 700; color: #fff;
}
.panel-body[b-m6nxc75gls] { padding: 22px 20px 24px; }

.field[b-m6nxc75gls] { margin-bottom: 14px; }
.field label[b-m6nxc75gls] { display: block; font-size: 12.5px; color: #9FB0C2; margin-bottom: 6px; }
.field input[b-m6nxc75gls], .field select[b-m6nxc75gls] {
    width: 100%; height: 38px; padding: 0 11px; font-size: 14px;
    background: #0B1220; color: #E8EDF3; border: 1px solid #2A3549; border-radius: 2px;
    font-family: inherit; outline: none;
}
.field input:focus[b-m6nxc75gls], .field select:focus[b-m6nxc75gls] {
    border-color: var(--mes-teal);
    box-shadow: 0 0 0 2px rgba(58,213,191,.18);
}
.field input[b-m6nxc75gls]::placeholder { color: #4E5C72; }

.err[b-m6nxc75gls] { margin: -6px 0 12px; font-size: 12.5px; color: #F09595; }

.btn-login[b-m6nxc75gls] {
    width: 100%; height: 44px; border: 0; border-radius: 2px; cursor: pointer;
    background: var(--mes-grid-head); color: #fff; font-size: 15px; font-weight: 700;
    font-family: inherit; letter-spacing: .5px;
}
.btn-login:hover[b-m6nxc75gls] { background: #2F5771; }
.btn-login:focus-visible[b-m6nxc75gls] { outline: 2px solid var(--mes-teal); outline-offset: 2px; }

/* 휴대폰 (≤ 480px): 여백을 줄이고, 입력칸 글자를 16px 이상으로 두어 iOS 가 확대하지 않게 하며, 손가락으로 누르기 쉬운 높이로 맞춘다. */
@media (max-width: 480px) {
    .login-page[b-m6nxc75gls] { padding: 16px 12px; align-items: flex-start; }
    .brand[b-m6nxc75gls] { margin: 18px 0 22px; }
    .brand-site[b-m6nxc75gls] { font-size: 19px; }
    .panel-body[b-m6nxc75gls] { padding: 18px 16px 20px; }
    .field input[b-m6nxc75gls], .field select[b-m6nxc75gls] { height: 46px; font-size: 16px; }
    .btn-login[b-m6nxc75gls] { height: 48px; font-size: 16px; }
}

.rule[b-m6nxc75gls] { margin: 4px 0 16px; font-size: 12px; color: #8FA3B8; line-height: 1.6; }
.links[b-m6nxc75gls] { margin-top: 14px; text-align: center; }
.link[b-m6nxc75gls] { background: none; border: 0; color: #9FB0C2; font: inherit; font-size: 13px; cursor: pointer; text-decoration: underline; }
.link:hover[b-m6nxc75gls] { color: #E8EDF3; }
.foot[b-m6nxc75gls] { margin-top: 26px; text-align: center; font-size: 12px; color: #4A5768; letter-spacing: .4px; }
.foot b[b-m6nxc75gls] { color: #7A8899; font-family: Calibri, Arial, sans-serif; font-size: 14px; }
.mode-note[b-m6nxc75gls] { margin: 0 0 14px; padding: 8px 10px; font-size: 12.5px; color: #9FD8E8; background: rgba(46,163,199,.12); border: 1px solid rgba(46,163,199,.35); border-radius: 2px; line-height: 1.6; }
/* /Components/Pages/CodeManagement.razor.rz.scp.css */
/* 09-08 기준 코드 관리 고유 좌표. 공통 골격은 wwwroot/mes-screen.css 참조. */
.q1l[b-5qn8c461xo] { left: 30px; }   .q1[b-5qn8c461xo] { left: 80px; width: 140px; }
.q2l[b-5qn8c461xo] { left: 250px; }  .q2[b-5qn8c461xo] { left: 300px; width: 180px; }

.data-table[b-5qn8c461xo] { min-width: 900px; width: 900px; }

.c-code[b-5qn8c461xo] { width: 100px; } .c-name[b-5qn8c461xo] { width: 150px; } .c-order[b-5qn8c461xo] { width: 70px; } .c-count[b-5qn8c461xo] { width: 90px; }
.c-use[b-5qn8c461xo] { width: 90px; } .c-desc[b-5qn8c461xo] { width: 160px; } .c-updateusr[b-5qn8c461xo] { width: 90px; } .c-updated[b-5qn8c461xo] { width: 150px; }

/* 상세 폼 : 좌표는 42px 헤더 기준 */
.l-code[b-5qn8c461xo] { top: 14px; } .f-code[b-5qn8c461xo] { top: 14px; }
.l-name[b-5qn8c461xo] { top: 56px; } .f-name[b-5qn8c461xo] { top: 56px; }
.l-order[b-5qn8c461xo] { top: 98px; } .f-order[b-5qn8c461xo] { top: 98px; }
.l-desc[b-5qn8c461xo] { top: 140px; } .f-desc[b-5qn8c461xo] { top: 140px; }
.l-use[b-5qn8c461xo] { top: 182px; } .f-use[b-5qn8c461xo] { left: 110px; top: 182px; gap: 17px; }
.l-count[b-5qn8c461xo] { top: 224px; } .f-count[b-5qn8c461xo] { top: 224px; }
.code-hint[b-5qn8c461xo] { position: absolute; left: 116px; right: 20px; top: 266px; color: #5A6467; font-size: 12px; line-height: 1.5; }
.f-error[b-5qn8c461xo] { top: 360px; }
/* /Components/Pages/ConnectionMonitor.razor.rz.scp.css */
/* 09-02 설비 연결 모니터링 고유 값. 공통 골격은 wwwroot/equipment-screen.css 참조. */
.conn-page[b-2jtcy5ka89] { grid-template-rows: 106px 94px minmax(0, 1fr); }
.conn-work[b-2jtcy5ka89] { grid-template-columns: minmax(0, 1fr) 440px; }
.conn-right[b-2jtcy5ka89] { grid-template-rows: minmax(0, 45%) minmax(0, 1fr); }

.mono[b-2jtcy5ka89] { font-family: Consolas, "D2Coding", monospace; }
.panel-head .read-at[b-2jtcy5ka89] { margin-left: 10px; font-size: 12px; font-weight: 600; opacity: .8; }
.panel-head .load-error[b-2jtcy5ka89] { margin-left: 10px; font-size: 13px; font-weight: 700; color: #FFD2CE; }
.panel-head .head-alert[b-2jtcy5ka89] { margin-left: 14px; font-size: 12.5px; font-weight: 700; color: #FFE082; white-space: nowrap; }
.panel-head .count[b-2jtcy5ka89] { margin-left: 4px; padding: 0 8px; border-radius: 10px; background: #fff; color: #1F3A4A; font-size: 13px; }
.search-fields .auto[b-2jtcy5ka89] { display: inline-flex; align-items: center; gap: 6px; margin-left: 12px; font-size: 13px; color: #374151; }
.search-fields .auto input[b-2jtcy5ka89] { width: 14px; height: 14px; }
.sum .value[b-2jtcy5ka89] { font-size: 24px; }

.conn .c-gw[b-2jtcy5ka89] { width: 180px; } .conn .c-eqp[b-2jtcy5ka89] { width: 180px; } .conn .c-lv[b-2jtcy5ka89] { width: 140px; }
.conn .c-state[b-2jtcy5ka89] { width: 90px; } .conn .c-last[b-2jtcy5ka89] { width: 110px; }
.conn tbody tr[b-2jtcy5ka89] { cursor: default; }
.conn tbody tr.gw-row td[b-2jtcy5ka89] { background: #EEF3F6; font-weight: 700; border-top: 2px solid #B9C7D0; }
.conn tbody tr.dev-row td:first-child[b-2jtcy5ka89] { padding-left: 18px; }
.badge[b-2jtcy5ka89] { min-width: 80px; height: 24px; }

.list[b-2jtcy5ka89] { padding: 6px 8px; }
.empty-note[b-2jtcy5ka89] { color: #777; font-size: 14px; padding: 12px 6px; }
.warn-item[b-2jtcy5ka89] { display: grid; gap: 2px; padding: 7px 10px; margin-bottom: 6px; border-left: 4px solid #C9A227; background: #FFF8DE; font-size: 13px; }
.warn-item b[b-2jtcy5ka89] { font-size: 13.5px; }
.warn-item span[b-2jtcy5ka89] { color: #444; white-space: normal; }
.warn-item.danger[b-2jtcy5ka89] { border-left-color: #C94949; background: #FCE9E8; }
.warn-item.info[b-2jtcy5ka89] { border-left-color: #5B8DB8; background: #EEF4FA; }

.events .c-at[b-2jtcy5ka89] { width: 80px; } .events .c-g[b-2jtcy5ka89] { width: 90px; } .events .c-ty[b-2jtcy5ka89] { width: 90px; }
.events tbody tr[b-2jtcy5ka89] { cursor: default; }
/* /Components/Pages/DefectByProcess.razor.rz.scp.css */
/* 05-01 공정별 불량현황 고유 값. 공통 골격은 wwwroot/quality-screen.css 참조. */
.rows-2[b-4awv1tqvhh] { grid-template-rows: 106px minmax(0, 1fr); }

.c-rate[b-4awv1tqvhh] { width: 105px; } .c-qty[b-4awv1tqvhh] { width: 110px; }

.d-date[b-4awv1tqvhh] { width: 110px; } .d-order[b-4awv1tqvhh] { width: 135px; } .d-partner[b-4awv1tqvhh] { width: 115px; }
.d-item[b-4awv1tqvhh] { width: 130px; } .d-code[b-4awv1tqvhh] { width: 95px; } .d-name[b-4awv1tqvhh] { width: 135px; }
.d-qty[b-4awv1tqvhh] { width: 95px; } .d-sev[b-4awv1tqvhh] { width: 85px; }
/* /Components/Pages/DefectCode.razor.rz.scp.css */
/* 01-04 불량코드 고유 좌표. 공통 골격은 wwwroot/mes-screen.css 참조. */
.q1l[b-2dsbgo9056] { left: 30px; }
.q1[b-2dsbgo9056] { left: 107px; width: 180px; }

.data-table[b-2dsbgo9056] { min-width: 1340px; width: 1340px; }

.c-code[b-2dsbgo9056] { width: 90px; } .c-name[b-2dsbgo9056] { width: 110px; } .c-desc[b-2dsbgo9056] { width: 170px; }
.c-order[b-2dsbgo9056] { width: 80px; } .c-all[b-2dsbgo9056] { width: 125px; } .c-proc[b-2dsbgo9056] { width: 110px; }
.c-use[b-2dsbgo9056] { width: 90px; } .c-createusr[b-2dsbgo9056] { width: 80px; } .c-created[b-2dsbgo9056] { width: 150px; }
.c-updateusr[b-2dsbgo9056] { width: 100px; } .c-updated[b-2dsbgo9056] { width: 150px; }

/* 상세 폼 : 좌표는 42px 헤더 기준 */
.l-code[b-2dsbgo9056] { top: 14px; } .f-code[b-2dsbgo9056] { top: 14px; }
.l-name[b-2dsbgo9056] { top: 56px; } .f-name[b-2dsbgo9056] { top: 56px; }
.l-desc[b-2dsbgo9056] { top: 98px; } .f-desc[b-2dsbgo9056] { top: 98px; }
.l-order[b-2dsbgo9056] { top: 140px; } .f-order[b-2dsbgo9056] { top: 140px; }
.l-proc[b-2dsbgo9056] { top: 188px; }
.proc-radios[b-2dsbgo9056] { position: absolute; left: 116px; top: 184px; font-size: 14.67px; line-height: 32px; }
.proc-radios input[b-2dsbgo9056] { accent-color: #0B78D0; }
/* 「적용공정」 라디오 오른쪽 — 예전에는 라디오 줄(216~248px) 위에 겹쳐 꺼진 선택칸이 라디오 클릭을 가로챘다 */
.proc-select[b-2dsbgo9056] { position: absolute; left: 212px; top: 219px; width: 165px; height: 27px; border: 1px solid #b7b7b7; font-size: 14.67px; }
.t-proc[b-2dsbgo9056] { top: 219px; } /* 「필수」 는 공정 선택 칸 옆 — 「전체 공정」 이면 공정 칸이 꺼져 검사하지 않는다 */
.l-use[b-2dsbgo9056] { top: 274px; } .f-use[b-2dsbgo9056] { left: 110px; top: 274px; gap: 17px; }
.f-error[b-2dsbgo9056] { top: 312px; }
/* /Components/Pages/DefectInfo.razor.rz.scp.css */
/* 03-04 불량정보관리. html/03_생산관리/04_불량정보관리_v7스타일.html 이식. 좌 38.5% / 우 61.5% (분할선으로 조절). */
.defect-page[b-gfaqc2pcji] { position: relative; width: 100%; height: 100%; overflow: hidden; }

.panel-head[b-gfaqc2pcji] {
    height: 42px; background: var(--mes-panel-head); color: #fff;
    display: flex; align-items: center; padding-left: 5px; font-size: 18px; font-weight: 700;
}
.head-icon[b-gfaqc2pcji] { width: 28px; height: 42px; display: flex; align-items: center; justify-content: center; color: var(--mes-orange); }
.head-icon svg[b-gfaqc2pcji] { width: 20px; height: 20px; }
.selected-order[b-gfaqc2pcji] { margin-left: auto; margin-right: 12px; color: #00AEEF; font-size: 15px; font-weight: 700; }

.search-section[b-gfaqc2pcji] { position: absolute; left: 0; right: 0; top: 0; height: 106px; background: #fff; overflow: hidden; }
.search-fields[b-gfaqc2pcji] {
    position: absolute; left: 0; right: 0; top: 42px; height: 64px; background: #fff;
    display: flex; align-items: center; gap: 20px; padding: 0 154px 0 20px;
}
.search-group[b-gfaqc2pcji] { display: flex; align-items: center; gap: 7px; white-space: nowrap; }
.search-group label[b-gfaqc2pcji] { font-size: 15.5px; }
.search-input[b-gfaqc2pcji] {
    height: 31px; padding: 2px 7px; background: #fff; outline: none; font-size: 15px;
    border-style: solid; border-width: 1px;
    border-color: #ECECEC #E6E6E6 #838383 #ECECEC;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.96);
}
.search-input.date[b-gfaqc2pcji] { width: 145px; }
.search-input.normal[b-gfaqc2pcji] { width: 180px; }
.search-btn[b-gfaqc2pcji] {
    position: absolute; right: 7px; top: 7px; width: 140px; height: 49px;
    border: 0; background: var(--mes-new); color: #fff;
    display: flex; align-items: center; justify-content: center; gap: 13px;
    font-size: 16px; font-weight: 700; cursor: pointer;
}
.search-btn svg[b-gfaqc2pcji] { width: 24px; height: 24px; }

.content[b-gfaqc2pcji] {
    position: absolute; left: 0; right: 0; top: 112px; bottom: 0;
    display: grid; grid-template-columns: minmax(0, 1fr) 7px var(--right-w, 61.5%); gap: 0; min-height: 0;
}
/* 분할선(Layout/PaneSplitter) — 가운데 7px 이 예전 3px 틈을 대신한다. split-pane.js 가 --right-w 만 바꾼다. */
.content[b-gfaqc2pcji]  .splitter { position: relative; cursor: col-resize; touch-action: none; background: transparent; }
.content[b-gfaqc2pcji]  .splitter::before { content: ""; position: absolute; top: 0; bottom: 0; left: 2px; right: 2px; background: #C3CCD3; }
.content[b-gfaqc2pcji]  .splitter:hover::before, .content[b-gfaqc2pcji]  .splitter.dragging::before { background: var(--mes-orange); }
.panel[b-gfaqc2pcji] { background: #fff; border: 1px solid #858585; position: relative; overflow: hidden; }
.left-panel[b-gfaqc2pcji] { min-width: 0; }

.table-wrap[b-gfaqc2pcji] { position: absolute; left: 0; right: 0; top: 42px; bottom: 0; overflow: auto; background: #fff; }
.data-table[b-gfaqc2pcji] { border-collapse: collapse; table-layout: fixed; width: 100%; background: #fff; font-size: 13.33px; }
.data-table th[b-gfaqc2pcji] {
    position: sticky; top: 0; z-index: 2; height: 38px; padding: 0 8px;
    background: var(--mes-grid-head); color: #fff; font-weight: 700; text-align: left;
    white-space: nowrap; border-bottom: 1px solid var(--mes-grid-line);
}
.data-table td[b-gfaqc2pcji] {
    height: 32px; padding: 3px 8px; background: #fff; color: #000;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    border-bottom: 1px solid var(--mes-grid-line);
}
.data-table tbody tr[b-gfaqc2pcji] { cursor: pointer; }
.data-table tbody tr:hover td[b-gfaqc2pcji] { background: #E8F4F2; }
.data-table tbody tr.selected td[b-gfaqc2pcji], .data-table tbody tr.selected:hover td[b-gfaqc2pcji] { background: var(--mes-grid-selected); }
.data-table .empty[b-gfaqc2pcji] { text-align: center; color: #777; padding: 26px; cursor: default; }
.center[b-gfaqc2pcji] { text-align: center; }
.num[b-gfaqc2pcji] { text-align: right; }
.red-num[b-gfaqc2pcji] { color: #C82929; font-weight: 700; }

.c-no[b-gfaqc2pcji] { width: 148px; } .c-partner[b-gfaqc2pcji] { width: 120px; } .c-item[b-gfaqc2pcji] { width: 130px; }
.c-qty[b-gfaqc2pcji] { width: 105px; } .c-def[b-gfaqc2pcji] { width: 105px; } .c-ordered[b-gfaqc2pcji] { width: 112px; } .c-due[b-gfaqc2pcji] { width: 112px; }

/* ===== 우측 ===== */
.right-stack[b-gfaqc2pcji] { display: flex; flex-direction: column; gap: 3px; min-width: 0; min-height: 0; }
.reg-panel[b-gfaqc2pcji] { flex: 0 0 280px; }
.defect-list-panel[b-gfaqc2pcji] { flex: 1 1 auto; min-height: 190px; }

.reg-body[b-gfaqc2pcji] { position: absolute; left: 14px; right: 14px; top: 54px; bottom: 12px; }
.reg-grid[b-gfaqc2pcji] {
    display: grid; grid-template-columns: 105px minmax(160px,1fr) 95px minmax(180px,1.2fr);
    column-gap: 10px; row-gap: 12px; align-items: center;
}
.reg-label[b-gfaqc2pcji] { text-align: right; font-size: 14px; white-space: nowrap; }
.required[b-gfaqc2pcji]::after { content: " *"; color: #E24C4C; }
.input[b-gfaqc2pcji] {
    height: 31px; padding: 3px 7px; background: #fff; font-size: 14px; outline: none;
    border-style: solid; border-width: 1px;
    border-color: #ECECEC #E6E6E6 #838383 #ECECEC;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.96);
}
.input.read[b-gfaqc2pcji] { background: #E7E7E7; border: 1px solid #C6C6C6; box-shadow: none; }
.qty-block[b-gfaqc2pcji] { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.qty-input-wrap[b-gfaqc2pcji] { display: grid; grid-template-columns: minmax(80px,1fr) 48px; gap: 5px; }
.qty-guide[b-gfaqc2pcji] { font-size: 11.5px; color: #777; line-height: 15px; white-space: nowrap; }
.unit-box[b-gfaqc2pcji] { height: 31px; background: #E7E7E7; border: 1px solid #C6C6C6; display: flex; align-items: center; justify-content: center; font-size: 13px; color: #555; }
.note-label[b-gfaqc2pcji] { grid-column: 1; grid-row: 2; }
.note-input[b-gfaqc2pcji] { grid-column: 2 / 5; grid-row: 2; width: 100%; }

.reg-message[b-gfaqc2pcji] { margin-top: 14px; font-size: 13px; color: #1B6B5C; }
.reg-message.error[b-gfaqc2pcji] { color: #BD3737; }

.button-row[b-gfaqc2pcji] { position: absolute; right: 0; bottom: 0; display: flex; gap: 6px; }
.crud[b-gfaqc2pcji] { height: 39px; border: 0; color: #fff; font-size: 14px; font-weight: 700; padding: 0 17px; cursor: pointer; }
.crud:disabled[b-gfaqc2pcji] { opacity: .42; cursor: not-allowed; }
.new[b-gfaqc2pcji] { background: var(--mes-new); }
.add[b-gfaqc2pcji] { background: var(--mes-add); }
.edit[b-gfaqc2pcji] { background: var(--mes-edit); }
.delete[b-gfaqc2pcji] { background: var(--mes-delete); }

.defect-list-panel .table-wrap[b-gfaqc2pcji] { bottom: 34px; }
.defect-table[b-gfaqc2pcji] { font-size: 13px; }
.defect-table th[b-gfaqc2pcji] { height: 36px; }
.defect-table td[b-gfaqc2pcji] { height: 31px; }
.d-name[b-gfaqc2pcji] { width: 130px; } .d-proc[b-gfaqc2pcji] { width: 100px; } .d-qty[b-gfaqc2pcji] { width: 95px; }
.d-oper[b-gfaqc2pcji] { width: 96px; }
.d-date[b-gfaqc2pcji] { width: 115px; } .d-user[b-gfaqc2pcji] { width: 90px; }

/* 지금 등록창에 열려 있는 공정의 행 — 다른 공정의 불량과 구분한다. */
.defect-table .cur-oper[b-gfaqc2pcji] { font-weight: 700; color: #1B5E20; }

.list-footer[b-gfaqc2pcji] {
    position: absolute; left: 0; right: 0; bottom: 0; height: 34px;
    border-top: 1px solid #C8C8C8; background: #FAFAFA;
    display: flex; align-items: center; justify-content: flex-end; padding: 0 14px;
    font-size: 13.5px; font-weight: 700;
}
.list-footer strong[b-gfaqc2pcji] { font-size: 18px; color: #C82929; margin-left: 5px; }
.list-footer .unit[b-gfaqc2pcji] { margin-left: 3px; font-weight: 400; }
/* /Components/Pages/DeliveryResult.razor.rz.scp.css */
/* 04-02 납품결과등록. html/04_납품관리/02_납품결과등록_v7스타일.html 이식. 좌 47% / 우 53%. */
.delivery-screen[b-vy5mbdfcis] { width: 100%; height: 100%; display: grid; grid-template-columns: 47% 53%; gap: 3px; min-height: 0; }

.panel[b-vy5mbdfcis] { background: #fff; border: 1px solid #858585; position: relative; overflow: hidden; }
.panel-head[b-vy5mbdfcis] {
    height: 42px; background: var(--mes-panel-head); color: #fff;
    display: flex; align-items: center; padding-left: 5px; font-size: 18px; font-weight: 700;
}
.panel-head.sky[b-vy5mbdfcis] { background: #87CEEB; color: #001B2C; }
.panel-head.deep[b-vy5mbdfcis], .panel-head.tax-head[b-vy5mbdfcis] { background: #0B3C6B; }
.head-icon[b-vy5mbdfcis] { width: 28px; height: 42px; display: flex; align-items: center; justify-content: center; color: var(--mes-orange); }
.head-icon svg[b-vy5mbdfcis] { width: 20px; height: 20px; }

/* ===== 좌 : 납품 일정 ===== */
.schedule[b-vy5mbdfcis] { min-height: 0; }
.weekbar[b-vy5mbdfcis] {
    position: absolute; left: 0; right: 0; top: 42px; height: 62px;
    display: grid; grid-template-columns: 46px 112px 46px 1fr 90px; align-items: center; gap: 6px;
    padding: 6px; background: #fff; border-bottom: 1px solid #A9A9A9;
}
.arrow[b-vy5mbdfcis] { height: 36px; border: 1px solid #66798D; background: #B8CCE3; font-size: 16px; font-weight: 700; cursor: pointer; }
.week-label[b-vy5mbdfcis] { height: 36px; border: 1px solid #66798D; background: #DCE8F5; display: flex; align-items: center; justify-content: center; font-weight: 700; }
.week-range[b-vy5mbdfcis] { font-size: 21px; font-weight: 700; text-align: center; letter-spacing: .3px; }
.today-btn[b-vy5mbdfcis] { height: 36px; border: 1px solid #7F8C8D; background: #F4F4F4; font-size: 14px; cursor: pointer; }

.schedule-table-wrap[b-vy5mbdfcis] { position: absolute; left: 0; right: 0; top: 104px; bottom: 0; overflow: auto; }
.tbl[b-vy5mbdfcis] { border-collapse: collapse; table-layout: fixed; width: 100%; min-width: 670px; font-size: 15px; }
.tbl th[b-vy5mbdfcis] {
    position: sticky; top: 0; z-index: 2; height: 42px; background: var(--mes-grid-head); color: #fff;
    font-weight: 700; border-right: 1px solid #527087; border-bottom: 1px solid #D4D4D4;
    padding: 0 5px; white-space: nowrap; text-align: left;
}
.tbl td[b-vy5mbdfcis] {
    height: 42px; padding: 3px 5px; border-right: 1px solid #C8C8C8; border-bottom: 1px solid #D5D5D5;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.tbl tbody tr[b-vy5mbdfcis] { cursor: pointer; }
.tbl tbody tr:hover td[b-vy5mbdfcis] { background: #E8F4F2; }
.tbl tbody tr.selected td[b-vy5mbdfcis] { background: var(--mes-grid-selected); }
.tbl tbody tr.no-order td[b-vy5mbdfcis] { color: #777; background: #F3F3F3; cursor: default; }
.center[b-vy5mbdfcis] { text-align: center; }
.right[b-vy5mbdfcis] { text-align: right; }

.w-due[b-vy5mbdfcis] { width: 122px; } .w-partner[b-vy5mbdfcis] { width: 98px; } .w-item[b-vy5mbdfcis] { width: 102px; }
.w-qty[b-vy5mbdfcis] { width: 55px; } .w-last[b-vy5mbdfcis] { width: 98px; } .w-state[b-vy5mbdfcis] { width: 80px; }

.due-date[b-vy5mbdfcis] { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; font-size: 16px; font-weight: 700; }
.weekday[b-vy5mbdfcis] { font-weight: 700; }
.weekday.sat[b-vy5mbdfcis] { color: #007DEB; }
.weekday.sun[b-vy5mbdfcis] { color: #F22; }
.weekday.weekday-normal[b-vy5mbdfcis] { color: #333; }

.state[b-vy5mbdfcis] {
    width: 76px; height: 27px; display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid rgba(0,0,0,.15); font-size: 13.5px; font-weight: 700; line-height: 1; white-space: nowrap;
}
.state.done[b-vy5mbdfcis] { background: #3CB371; color: #fff; }
.state.partial[b-vy5mbdfcis] { background: #008B8B; color: #fff; }
.state.wait[b-vy5mbdfcis] { background: #7A7A7A; color: #fff; }
.state.late[b-vy5mbdfcis] { background: #C94949; color: #fff; }

/* ===== 우 ===== */
.right-area[b-vy5mbdfcis] { display: grid; grid-template-rows: 180px minmax(0,1fr) minmax(0,1fr); gap: 3px; min-height: 0; overflow: hidden; }
.delivery-row[b-vy5mbdfcis], .bottom-row[b-vy5mbdfcis] { display: grid; grid-template-columns: 1fr 1fr; gap: 3px; min-height: 0; overflow: hidden; }
.delivery-row > .panel[b-vy5mbdfcis], .bottom-row > .panel[b-vy5mbdfcis] { height: 100%; min-height: 0; }
.order-info.empty-pick[b-vy5mbdfcis] { display: flex; align-items: center; justify-content: center; color: #777; font-size: 15px; }

.order-grid[b-vy5mbdfcis] {
    position: absolute; left: 12px; right: 12px; top: 50px; bottom: 7px; display: grid;
    grid-template-columns: 72px minmax(120px,1.2fr) 70px minmax(110px,1fr) 76px minmax(100px,.9fr);
    grid-template-rows: 29px 29px 48px; gap: 6px 8px; align-items: center;
}
.label[b-vy5mbdfcis] { text-align: right; font-size: 14.5px; white-space: nowrap; }
.field[b-vy5mbdfcis] {
    height: 31px; padding: 4px 7px; background: #E7E7E7; border: 1px solid #C6C6C6;
    font-size: 14.5px; display: flex; align-items: center;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.field.strong[b-vy5mbdfcis] { font-weight: 700; }
.message-field[b-vy5mbdfcis] { grid-column: 4 / 7; height: 29px; }

.summary-strip[b-vy5mbdfcis] { grid-column: 1 / 7; display: grid; grid-template-columns: repeat(3, 150px); justify-content: center; gap: 10px; height: 48px; }
.summary-box[b-vy5mbdfcis] { height: 48px; border: 1px solid #C6C6C6; background: #fff; display: grid; grid-template-rows: 20px 1fr; }
.summary-box .st[b-vy5mbdfcis] { background: #008B8B; color: #fff; display: flex; align-items: center; justify-content: center; font-size: 13.5px; font-weight: 700; }
.summary-box .sv[b-vy5mbdfcis] { display: flex; align-items: center; justify-content: center; font-size: 20px; font-weight: 700; color: #008B8B; }
.summary-box.late .st[b-vy5mbdfcis] { background: #C94949; }
.summary-box.late .sv[b-vy5mbdfcis] { color: #C94949; }

.form-body[b-vy5mbdfcis], .complete-body[b-vy5mbdfcis], .tax-body[b-vy5mbdfcis] { position: absolute; left: 11px; right: 11px; top: 50px; bottom: 9px; }
.form-grid[b-vy5mbdfcis] { display: grid; grid-template-columns: 76px minmax(88px,1fr) 76px minmax(88px,1fr); gap: 6px 7px; align-items: center; }
.input[b-vy5mbdfcis] {
    height: 31px; padding: 3px 7px; background: #fff; font-size: 14.5px; outline: none;
    border-style: solid; border-width: 1px;
    border-color: #ECECEC #E6E6E6 #838383 #ECECEC;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.96);
}
.input.read[b-vy5mbdfcis] { background: #E7E7E7; border: 1px solid #C6C6C6; box-shadow: none; }
.textarea[b-vy5mbdfcis] { height: 46px; resize: none; }
.note-span[b-vy5mbdfcis] { grid-column: 2 / 5; }
.helper[b-vy5mbdfcis] { font-size: 11.5px; color: #777; line-height: 14px; }
.form-helper[b-vy5mbdfcis] { margin-top: 4px; margin-left: 83px; }
.complete-helper[b-vy5mbdfcis] { margin-top: 6px; margin-left: 91px; }
.message[b-vy5mbdfcis] { margin-top: 6px; margin-left: 83px; color: #1B6B5C; }
.message.error[b-vy5mbdfcis] { color: #BD3737; }

.split-action[b-vy5mbdfcis] { position: absolute; left: 0; bottom: 0; }
.split-btn[b-vy5mbdfcis] { width: 92px; height: 38px; border: 0; background: var(--mes-new); color: #fff; font-size: 15px; font-weight: 700; cursor: pointer; }
.form-actions[b-vy5mbdfcis] { position: absolute; right: 0; bottom: 0; display: flex; gap: 6px; }
.crud[b-vy5mbdfcis] { width: 78px; height: 38px; border: 0; color: #fff; font-size: 15px; font-weight: 700; cursor: pointer; }
.add[b-vy5mbdfcis] { background: var(--mes-add); }
.delete[b-vy5mbdfcis] { background: var(--mes-delete); }
.crud:disabled[b-vy5mbdfcis], .small-btn:disabled[b-vy5mbdfcis], .big-action:disabled[b-vy5mbdfcis] {
    background: #AEB4BA; color: #F4F5F6; border: 1px solid #8D949A; cursor: not-allowed;
}

.history-panel[b-vy5mbdfcis] { min-width: 0; overflow: hidden; }
.history-panel .table-wrap[b-vy5mbdfcis] { position: absolute; left: 0; right: 0; top: 42px; bottom: 32px; overflow: auto; }
.history-panel .tbl[b-vy5mbdfcis] { font-size: 13.5px; min-width: 0; }
.history-panel .tbl th[b-vy5mbdfcis] { height: 34px; }
.history-panel .tbl td[b-vy5mbdfcis] { height: 30px; }
.h-seq[b-vy5mbdfcis] { width: 48px; } .h-date[b-vy5mbdfcis] { width: 100px; } .h-qty[b-vy5mbdfcis] { width: 70px; } .h-user[b-vy5mbdfcis] { width: 78px; }
.history-panel .footer[b-vy5mbdfcis] {
    position: absolute; left: 0; right: 0; bottom: 0; height: 32px;
    border-top: 1px solid #C8C8C8; background: #FAFAFA;
    display: flex; align-items: center; padding: 0 8px; font-size: 13px;
}
.history-panel .footer strong[b-vy5mbdfcis] { margin-left: auto; }

.complete-grid[b-vy5mbdfcis] { display: grid; grid-template-columns: 82px minmax(120px,1fr); gap: 9px; align-items: center; }
.complete-actions[b-vy5mbdfcis] { position: absolute; right: 0; bottom: 0; display: flex; gap: 6px; }
.big-action[b-vy5mbdfcis] { width: 108px; height: 41px; border: 0; color: #fff; font-size: 15px; font-weight: 700; background: #0B63A0; cursor: pointer; }
.big-action.cancel[b-vy5mbdfcis] { background: var(--mes-delete); }

.tax-panel[b-vy5mbdfcis] { background: #FFF9E8; }
.tax-check[b-vy5mbdfcis] { display: flex; align-items: center; gap: 7px; font-size: 14.5px; margin-bottom: 8px; }
.tax-grid[b-vy5mbdfcis] { display: grid; grid-template-columns: 70px minmax(90px,1fr); gap: 7px 8px; align-items: center; }
.tax-grid .input[b-vy5mbdfcis] { width: 100%; }
.tax-helper[b-vy5mbdfcis] { font-size: 11.5px; color: #777; line-height: 14px; margin-top: 5px; margin-left: 78px; }
.tax-actions[b-vy5mbdfcis] { position: absolute; right: 0; bottom: 0; display: flex; gap: 6px; }
.small-btn[b-vy5mbdfcis] { width: 68px; height: 34px; border: 0; color: #fff; font-size: 14px; font-weight: 700; cursor: pointer; }
.small-btn.save[b-vy5mbdfcis] { background: var(--mes-new); }
.small-btn.remove[b-vy5mbdfcis] { background: var(--mes-delete); }
/* /Components/Pages/DeliveryStatus.razor.rz.scp.css */
/* 04-01 납품진행목록. html/04_납품관리/01_납품진행목록_v7스타일.html 이식. */
.delivery-status-page[b-slwl34elll] { position: relative; width: 100%; height: 100%; overflow: hidden; }

.panel-head[b-slwl34elll] {
    height: 42px; background: var(--mes-panel-head); color: #fff;
    display: flex; align-items: center; padding-left: 5px; font-size: 18px; font-weight: 700;
}
.head-icon[b-slwl34elll] { width: 28px; height: 42px; display: flex; align-items: center; justify-content: center; color: var(--mes-orange); }
.head-icon svg[b-slwl34elll] { width: 20px; height: 20px; }
.count[b-slwl34elll] { margin-left: auto; padding-right: 12px; font-size: 13px; font-weight: 500; color: #dce4e9; }

.search-section[b-slwl34elll] { position: absolute; left: 0; right: 0; top: 0; height: 106px; background: #fff; overflow: hidden; }
.search-fields[b-slwl34elll] {
    position: absolute; left: 0; right: 0; top: 42px; height: 64px; background: #fff;
    display: flex; align-items: center; gap: 20px; padding: 0 154px 0 20px;
}
.search-group[b-slwl34elll] { display: flex; align-items: center; gap: 7px; white-space: nowrap; }
.search-group label[b-slwl34elll] { font-size: 15.5px; }
.search-input[b-slwl34elll] { height: 31px; padding: 2px 7px; border: 1px solid #D4D4D4; background: #fff; outline: none; font-size: 15px; }
.search-input.date[b-slwl34elll] { width: 145px; }
.search-input.normal[b-slwl34elll] { width: 180px; }
.search-btn[b-slwl34elll] {
    position: absolute; right: 7px; top: 7px; width: 140px; height: 49px;
    border: 0; background: var(--mes-new); color: #fff;
    display: flex; align-items: center; justify-content: center; gap: 13px;
    font-size: 16px; font-weight: 700; cursor: pointer;
}
.search-btn svg[b-slwl34elll] { width: 24px; height: 24px; }

.list-panel[b-slwl34elll] {
    position: absolute; left: 0; right: 0; top: 112px; bottom: 0;
    background: #fff; border: 1px solid #8A8A8A; overflow: hidden;
}
.table-wrap[b-slwl34elll] { position: absolute; left: 0; right: 0; top: 42px; bottom: 0; overflow: auto; background: #fff; }
.data-table[b-slwl34elll] { border-collapse: collapse; table-layout: fixed; min-width: 1570px; width: 100%; background: #fff; font-size: 13.33px; }
.data-table th[b-slwl34elll] {
    position: sticky; top: 0; z-index: 2; height: 38px; padding: 0 8px;
    background: var(--mes-grid-head); color: #fff; font-weight: 700; text-align: left;
    white-space: nowrap; border-bottom: 1px solid var(--mes-grid-line);
}
.data-table td[b-slwl34elll] {
    height: 31px; padding: 3px 8px; background: #fff; color: #000;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    border-bottom: 1px solid var(--mes-grid-line);
}
.data-table tbody tr[b-slwl34elll] { cursor: pointer; }
.data-table tbody tr:hover td[b-slwl34elll] { background: #E8F4F2; }
.data-table tbody tr.selected td[b-slwl34elll], .data-table tbody tr.selected:hover td[b-slwl34elll] { background: var(--mes-grid-selected); }
.data-table .empty[b-slwl34elll] { text-align: center; color: #777; padding: 26px; cursor: default; }
.center[b-slwl34elll] { text-align: center; }
.right[b-slwl34elll] { text-align: right; }
.remain[b-slwl34elll] { color: #C82929; font-weight: 700; }

.c-no[b-slwl34elll] { width: 150px; } .c-partner[b-slwl34elll] { width: 120px; } .c-item[b-slwl34elll] { width: 140px; }
.c-target[b-slwl34elll] { width: 100px; } .c-delivered[b-slwl34elll] { width: 95px; } .c-remain[b-slwl34elll] { width: 95px; }
.c-ordered[b-slwl34elll] { width: 110px; } .c-due[b-slwl34elll] { width: 110px; } .c-prod[b-slwl34elll] { width: 100px; }
.c-state[b-slwl34elll] { width: 105px; } .c-duestate[b-slwl34elll] { width: 100px; } .c-last[b-slwl34elll] { width: 115px; }
.c-tax[b-slwl34elll] { width: 105px; } .c-note[b-slwl34elll] { width: 190px; }

.status[b-slwl34elll] {
    width: 82px; height: 25px; display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid #C7CDD1; font-size: 12.5px; line-height: 1; white-space: nowrap;
}
.status.done[b-slwl34elll] { background: #3CB371; border-color: rgba(0,0,0,.15); color: #fff; font-weight: 700; }
.status.partial[b-slwl34elll] { background: #008B8B; border-color: rgba(0,0,0,.15); color: #fff; font-weight: 700; }
.status.wait[b-slwl34elll] { background: #7A7A7A; border-color: rgba(0,0,0,.15); color: #fff; font-weight: 700; }
.status.late[b-slwl34elll] { background: #C94949; border-color: rgba(0,0,0,.15); color: #fff; font-weight: 700; }
.status.ready[b-slwl34elll] { background: #DCEAF7; border-color: #9BBEDB; color: #2A628C; font-weight: 700; }

/* 조회 실패 표시 */
.panel-head .load-error[b-slwl34elll] { margin-left: 10px; font-size: 13px; font-weight: 700; color: #FFD2CE; }
/* /Components/Pages/EquipmentAlarmHistory.razor.rz.scp.css */
/* 06-03 설비별 알람이력 관리 고유 값. 공통 골격은 wwwroot/equipment-screen.css 참조. */
.rows-3[b-anmx1z5sw6] { grid-template-rows: 106px 94px minmax(0, 1fr); }

.c-time[b-anmx1z5sw6] { width: 155px; } .c-code[b-anmx1z5sw6] { width: 105px; } .c-name[b-anmx1z5sw6] { width: 140px; }
.c-type[b-anmx1z5sw6] { width: 110px; } .c-proc[b-anmx1z5sw6] { width: 100px; }
.c-dur[b-anmx1z5sw6] { width: 100px; } .c-cnt[b-anmx1z5sw6] { width: 130px; } .c-state[b-anmx1z5sw6] { width: 110px; }

.panel-head .load-error[b-anmx1z5sw6] { margin-left: 10px; font-size: 13px; font-weight: 700; color: #FFD2CE; }
.tbl .c-alarm[b-anmx1z5sw6] { width: 92px; }
/* /Components/Pages/EquipmentCode.razor.rz.scp.css */
/* 01-05 설비코드 고유 좌표. 공통 골격은 wwwroot/mes-screen.css 참조. */
.q1l[b-3uxtnwtjck] { left: 30px; }   .q1[b-3uxtnwtjck] { left: 107px; width: 180px; }
.q2l[b-3uxtnwtjck] { left: 317px; }  .q2[b-3uxtnwtjck] { left: 410px; width: 180px; }

.data-table[b-3uxtnwtjck] { min-width: 900px; width: 900px; font-size: 13.33px; }
.data-table th[b-3uxtnwtjck], .data-table td[b-3uxtnwtjck] { font-size: 13.33px; }
.data-table th[b-3uxtnwtjck] { height: 38px; }

.c-code[b-3uxtnwtjck] { width: 110px; } .c-name[b-3uxtnwtjck] { width: 220px; } .c-type[b-3uxtnwtjck] { width: 180px; }
.c-maker[b-3uxtnwtjck] { width: 220px; } .c-use[b-3uxtnwtjck] { width: 100px; }

/* 상세 폼 : 거래처코드 v7 의 38~45px 세로 리듬을 그대로 사용 */
.l-code[b-3uxtnwtjck] { top: 14px; } .f-code[b-3uxtnwtjck] { top: 14px; }
.l-name[b-3uxtnwtjck] { top: 52px; } .f-name[b-3uxtnwtjck] { top: 52px; }
.l-type[b-3uxtnwtjck] { top: 93px; } .f-type[b-3uxtnwtjck] { top: 93px; }
.l-model[b-3uxtnwtjck] { top: 135px; } .f-model[b-3uxtnwtjck] { top: 135px; }
.l-maker[b-3uxtnwtjck] { top: 176px; } .f-maker[b-3uxtnwtjck] { top: 176px; }
.l-date[b-3uxtnwtjck] { top: 221px; } .f-date[b-3uxtnwtjck] { top: 221px; }
.l-monitor[b-3uxtnwtjck] { top: 267px; line-height: 22px; }
.monitor-box[b-3uxtnwtjck] { position: absolute; left: 116px; top: 263px; width: 261px; height: 112px; color: #000; font-size: 14px; }
.monitor-grid[b-3uxtnwtjck] {
    display: grid; grid-template-columns: 1fr 1fr; grid-auto-rows: 28px;
    column-gap: 12px; row-gap: 2px; align-items: center;
}
.monitor-grid label[b-3uxtnwtjck] { display: flex; align-items: center; gap: 5px; white-space: nowrap; font-size: 14px; }
.monitor-grid input[b-3uxtnwtjck] { accent-color: #0B78D0; }
.l-use[b-3uxtnwtjck] { top: 399px; } .f-use[b-3uxtnwtjck] { left: 110px; top: 399px; gap: 17px; }

/* 오류 상자 */
.key-area[b-3uxtnwtjck] { position: absolute; left: 116px; right: 16px; top: 437px; bottom: 58px; overflow-y: auto; font-size: 12px; }
.key-area .key-error[b-3uxtnwtjck] { position: static; left: auto; right: auto; margin-bottom: 4px; }

/* /Components/Pages/EquipmentConsumable.razor.rz.scp.css */
/* 06-05 설비별 소모품 관리 고유 값. 공통 골격은 wwwroot/equipment-screen.css 참조. */
.rows-2[b-fmi6ma1siz] { grid-template-rows: 106px minmax(0, 1fr); }
.cols-main-431[b-fmi6ma1siz] { grid-template-columns: minmax(0, 1fr) 431px; }
.rows-main-235[b-fmi6ma1siz] { display: grid; grid-template-rows: minmax(0, 1fr) 235px; gap: 3px; min-height: 0; }

.c-code[b-fmi6ma1siz] { width: 100px; } .c-name[b-fmi6ma1siz] { width: 130px; } .c-type[b-fmi6ma1siz] { width: 105px; }
.c-part[b-fmi6ma1siz] { width: 130px; } .c-basis[b-fmi6ma1siz] { width: 120px; } .c-num[b-fmi6ma1siz] { width: 105px; }
.c-gauge[b-fmi6ma1siz] { width: 180px; } .c-state[b-fmi6ma1siz] { width: 105px; }

.h-date[b-fmi6ma1siz] { width: 120px; } .h-num[b-fmi6ma1siz] { width: 130px; }

.panel-head .load-error[b-fmi6ma1siz] { margin-left: 10px; font-size: 13px; font-weight: 700; color: #FFD2CE; }
.form-row .field-note[b-fmi6ma1siz] { grid-column: 2; margin-top: 4px; font-size: 12px; color: #6B7280; }
/* /Components/Pages/EquipmentMonitor.razor.rz.scp.css */
/* 06-01 설비별 구동현황 모니터링 고유 값. 공통 골격은 wwwroot/equipment-screen.css 참조. */
.rows-3[b-fn9te7uiv5] { grid-template-rows: 106px 94px minmax(0, 1fr); }

.c-code[b-fn9te7uiv5] { width: 100px; } .c-name[b-fn9te7uiv5] { width: 150px; } .c-type[b-fn9te7uiv5] { width: 110px; } .c-proc[b-fn9te7uiv5] { width: 100px; }
.c-state[b-fn9te7uiv5] { width: 96px; } .c-run[b-fn9te7uiv5] { width: 120px; } .c-rate[b-fn9te7uiv5] { width: 96px; } .c-qty[b-fn9te7uiv5] { width: 110px; }
.c-alarm[b-fn9te7uiv5] { width: 64px; } .c-last[b-fn9te7uiv5] { width: 160px; } .c-comm[b-fn9te7uiv5] { width: 140px; }

.panel-head .load-error[b-fn9te7uiv5] { margin-left: 10px; font-size: 13px; font-weight: 700; color: #FFD2CE; }

.badge.faded[b-fn9te7uiv5] { opacity: .5; }
.search-fields .auto[b-fn9te7uiv5] { display: inline-flex; align-items: center; gap: 6px; margin-left: 12px; font-size: 13px; color: #374151; }
.search-fields .auto input[b-fn9te7uiv5] { width: 14px; height: 14px; }
.panel-head .read-at[b-fn9te7uiv5] { margin-left: 10px; font-size: 12px; font-weight: 600; opacity: .8; }
/* 근무 시간대 밖 가동 (U-1 B) */
.over[b-fn9te7uiv5] { display: block; font-size: 11.5px; font-weight: 700; color: #8A5A00; }
/* /Components/Pages/EquipmentUptime.razor.rz.scp.css */
/* 06-02 설비별 가동시간관리 고유 값. 공통 골격은 wwwroot/equipment-screen.css 참조. */
.rows-3[b-yvtcp5h126] { grid-template-rows: 106px 94px minmax(0, 1fr); }
.cols-56-44[b-yvtcp5h126] { grid-template-columns: 56% 44%; }
.rows-205[b-yvtcp5h126] { grid-template-rows: 205px minmax(0, 1fr); }

.c-date[b-yvtcp5h126] { width: 100px; } .c-code[b-yvtcp5h126] { width: 88px; } .c-name[b-yvtcp5h126] { width: 120px; } .c-type[b-yvtcp5h126] { width: 96px; }
.c-min[b-yvtcp5h126] { width: 96px; } .c-rate[b-yvtcp5h126] { width: 78px; }

.panel-head .load-error[b-yvtcp5h126] { margin-left: 10px; font-size: 13px; font-weight: 700; color: #FFD2CE; }

/* 일자별 가동/정지 차트의 범례 — 막대와 겹치지 않게 패널 제목줄(계획 N분 기준 왼쪽)에 둔다. */
.panel-head .head-legend[b-yvtcp5h126] { margin-left: auto; display: flex; align-items: center; gap: 14px; font-size: 12px; font-weight: 700; color: #fff; white-space: nowrap; }
.panel-head .head-legend span[b-yvtcp5h126] { display: flex; align-items: center; }
.panel-head .head-legend i[b-yvtcp5h126] { display: inline-block; width: 17px; height: 10px; margin-right: 5px; }
.panel-head .head-legend i.run[b-yvtcp5h126] { background: #26A69A; }
.panel-head .head-legend i.stop[b-yvtcp5h126] { background: #C7CDD1; }
.panel-head .head-legend + .head-note[b-yvtcp5h126] { margin-left: 16px; }

/* 막대 위의 % 글자가 제목줄에 붙어 보이지 않게 차트를 아래로 내린다 (공용 값 top:58px → 이 화면만 74px). */
.equipment-page .chart-area[b-yvtcp5h126] { top: 74px; }
/* 근무 시간대 밖 가동 (U-1 B) */
.over[b-yvtcp5h126] { color: #8A5A00; }
.equipment-page .sum.run .value[b-yvtcp5h126] { flex-direction: column; gap: 2px; }
.equipment-page .sum .over[b-yvtcp5h126] { font-size: 12px; font-weight: 700; }
/* /Components/Pages/GatewayManagement.razor.rz.scp.css */
/* 09-01 게이트웨이 · KEY 관리 고유 값. 공통 골격은 wwwroot/equipment-screen.css 참조. */
.gw-page[b-da1bktdb44] { grid-template-rows: 106px minmax(190px, 38%) minmax(0, 1fr); }
.gw-work[b-da1bktdb44] { grid-template-columns: 420px minmax(0, 1fr); }

.mono[b-da1bktdb44] { font-family: Consolas, "D2Coding", monospace; }

.panel-head .read-at[b-da1bktdb44] { margin-left: 10px; font-size: 12px; font-weight: 600; opacity: .8; }
.panel-head .load-error[b-da1bktdb44] { margin-left: 10px; font-size: 13px; font-weight: 700; color: #FFD2CE; }
.panel-head .head-alert[b-da1bktdb44] { margin-left: 14px; font-size: 12.5px; font-weight: 700; color: #FFE082; white-space: nowrap; }
.panel-head .head-note code[b-da1bktdb44] { color: #fff; font-size: 12px; }
.search-fields .auto[b-da1bktdb44] { display: inline-flex; align-items: center; gap: 6px; margin-left: 12px; font-size: 13px; color: #374151; }
.search-fields .auto input[b-da1bktdb44] { width: 14px; height: 14px; }

/* 목록 */
.gw-list .c-id[b-da1bktdb44] { width: 120px; } .gw-list .c-nm[b-da1bktdb44] { width: 140px; } .gw-list .c-loc[b-da1bktdb44] { width: 120px; }
.gw-list .c-use[b-da1bktdb44] { width: 56px; } .gw-list .c-conn[b-da1bktdb44] { width: 104px; } .gw-list .c-since[b-da1bktdb44] { width: 96px; }
.gw-list .c-dev[b-da1bktdb44] { width: 86px; } .gw-list .c-link[b-da1bktdb44] { width: 86px; } .gw-list .c-ver[b-da1bktdb44] { width: 60px; }
.gw-list .c-fw[b-da1bktdb44] { width: 90px; } .gw-list .c-skew[b-da1bktdb44] { width: 86px; } .gw-list .c-reply[b-da1bktdb44] { width: 72px; } .gw-list .c-last[b-da1bktdb44] { width: 104px; }
.tbl tbody tr.unused td[b-da1bktdb44] { color: #8A8A8A; }

/* 게이트웨이 정보 */
.form-body .form-row[b-da1bktdb44] { grid-template-columns: 112px 1fr; margin-bottom: 7px; }
.form-body .field[b-da1bktdb44] { background: #F3F5F6; }
.form-body .check[b-da1bktdb44] { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; }
.buttons .crud.wide[b-da1bktdb44] { width: 110px; }
.empty-note[b-da1bktdb44] { position: absolute; left: 16px; right: 16px; top: 60px; color: #777; font-size: 14px; }
.badge[b-da1bktdb44] { min-width: 64px; height: 24px; }

/* 탭 */
.panel-head .tabs[b-da1bktdb44] { margin-left: auto; display: flex; gap: 4px; }
.panel-head .tabs button[b-da1bktdb44] {
    height: 28px; padding: 0 12px; border: 1px solid #6F8796; background: transparent; color: #DCE4E9;
    font-size: 13px; font-weight: 700; cursor: pointer;
}
.panel-head .tabs button.on[b-da1bktdb44] { background: #fff; color: #1F3A4A; }

/* KEY 목록 */
.grid-wrap.with-foot[b-da1bktdb44] { bottom: 52px; }
.key-list .c-key[b-da1bktdb44] { width: 180px; } .key-list .c-st[b-da1bktdb44] { width: 110px; } .key-list .c-act[b-da1bktdb44] { width: 150px; }
.key-list tbody tr[b-da1bktdb44] { cursor: default; }
.key-list tbody tr.unassigned td[b-da1bktdb44] { background: #FFFBEA; }
.eqp-pick[b-da1bktdb44] { width: 100%; max-width: 360px; height: 28px; border: 1px solid #C9C9C9; font-size: 13px; }
.mini[b-da1bktdb44] {
    height: 28px; padding: 0 10px; margin-right: 4px; border: 1px solid #9AA5AD; background: #fff;
    font-size: 13px; font-weight: 700; cursor: pointer;
}
.mini.go[b-da1bktdb44] { background: var(--mes-new); border-color: var(--mes-new); color: #fff; }
.mini:disabled[b-da1bktdb44] { opacity: .45; cursor: not-allowed; }
.tag[b-da1bktdb44] {
    display: inline-block; margin-left: 6px; padding: 0 6px; height: 20px; line-height: 18px;
    font-size: 11.5px; font-weight: 700; border: 1px solid #C9A227; background: #FFF4CC; color: #8A6500;
}
.tag.danger[b-da1bktdb44] { border-color: #C94949; background: #FBE0DF; color: #A72D28; }

.key-foot[b-da1bktdb44] {
    position: absolute; left: 0; right: 0; bottom: 0; height: 52px; padding: 0 10px;
    display: flex; align-items: center; gap: 8px; border-top: 1px solid #D5DBDF; background: #F7F9FA;
    white-space: nowrap; overflow-x: auto;
}
.key-foot .foot-label[b-da1bktdb44] { font-size: 13px; font-weight: 700; color: #1F3A4A; }
.key-foot .key-input[b-da1bktdb44] { width: 150px; height: 28px; padding: 2px 6px; border: 1px solid #C9C9C9; font-size: 13px; }
.key-foot .eqp-pick[b-da1bktdb44] { width: 260px; }
.key-foot .gw-pick[b-da1bktdb44] { width: 170px; height: 28px; border: 1px solid #C9C9C9; font-size: 13px; }
.key-foot .foot-message[b-da1bktdb44] { font-size: 12.5px; color: #1B6B5C; white-space: normal; line-height: 1.3; }
.key-foot .foot-message.error[b-da1bktdb44] { color: #BD3737; }

/* 최근 메시지 */
.recent-wrap[b-da1bktdb44] { padding: 0; }
.issues[b-da1bktdb44] { padding: 8px 10px; border-bottom: 1px solid #DEDEDE; font-size: 13px; line-height: 1.9; }
.issues b[b-da1bktdb44] { margin-right: 6px; }
.recent .c-at[b-da1bktdb44] { width: 80px; } .recent .c-topic[b-da1bktdb44] { width: 200px; } .recent .c-res[b-da1bktdb44] { width: 260px; }
.recent tbody tr[b-da1bktdb44] { cursor: default; }
.recent tbody tr.dropped td[b-da1bktdb44] { background: #FFF1F0; }
/* /Components/Pages/History.razor.rz.scp.css */
/* 09-03 접속 · 작업 이력 고유 값. 공통 골격은 wwwroot/equipment-screen.css 참조. */
.hist-page[b-kk670jwdt8] { grid-template-rows: 106px 94px minmax(0, 1fr); }

.panel-head .tabs[b-kk670jwdt8] { display: inline-flex; gap: 4px; margin-left: 16px; }
.panel-head .tab[b-kk670jwdt8] { height: 26px; padding: 0 14px; border: 1px solid rgba(255,255,255,.45); border-radius: 3px; background: transparent; color: #fff; font-size: 13px; font-weight: 700; cursor: pointer; }
.panel-head .tab.on[b-kk670jwdt8] { background: #fff; color: #1F3A4A; }
.panel-head .tab:focus-visible[b-kk670jwdt8] { outline: 2px solid #FFE082; outline-offset: 1px; }
.panel-head .count[b-kk670jwdt8] { margin-left: 6px; padding: 0 8px; border-radius: 10px; background: #fff; color: #1F3A4A; font-size: 13px; }
.panel-head .head-alert[b-kk670jwdt8] { margin-left: 14px; font-size: 12.5px; font-weight: 700; color: #FFE082; white-space: nowrap; }
.panel-head .load-error[b-kk670jwdt8] { margin-left: 10px; font-size: 13px; font-weight: 700; color: #FFD2CE; }

.search-fields .auto[b-kk670jwdt8] { display: inline-flex; align-items: center; gap: 6px; margin-left: 12px; font-size: 13px; color: #374151; }
.search-fields .auto input[b-kk670jwdt8] { width: 14px; height: 14px; }
.search-fields .pick.wide[b-kk670jwdt8] { width: 220px; }

.hist .c-at[b-kk670jwdt8] { width: 158px; } .hist .c-id[b-kk670jwdt8] { width: 110px; } .hist .c-nm[b-kk670jwdt8] { width: 110px; } .hist .c-res[b-kk670jwdt8] { width: 120px; }
.hist .c-ip[b-kk670jwdt8] { width: 130px; } .hist .c-end[b-kk670jwdt8] { width: 116px; } .hist .c-min[b-kk670jwdt8] { width: 96px; } .hist .c-agent[b-kk670jwdt8] { width: 110px; }
.hist .c-scr[b-kk670jwdt8] { width: 190px; } .hist .c-act[b-kk670jwdt8] { width: 120px; }
.hist tbody tr[b-kk670jwdt8] { cursor: default; }
.hist td.info[b-kk670jwdt8] { max-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mono[b-kk670jwdt8] { font-family: Consolas, "D2Coding", monospace; font-size: 13px; }

.pill[b-kk670jwdt8] { display: inline-block; min-width: 64px; padding: 1px 8px; border-radius: 10px; font-size: 12px; font-weight: 700; border: 1px solid; }
.pill.ok[b-kk670jwdt8] { color: #1A6E42; border-color: #9FD3B5; background: #EAF7EF; }
.pill.bad[b-kk670jwdt8] { color: #B03030; border-color: #EBB0B0; background: #FDECEC; }
.pill.live[b-kk670jwdt8] { color: #1E5FA8; border-color: #A9C8EC; background: #EAF2FC; }
.pill.warn[b-kk670jwdt8] { color: #8A5A00; border-color: #E9CB8F; background: #FFF5E0; }
.pill.none[b-kk670jwdt8] { color: #5A6670; border-color: #C4CCD2; background: #EEF1F4; }
/* /Components/Pages/ItemCode.razor.rz.scp.css */
/* 01-02 품목코드 고유 좌표. 공통 골격은 wwwroot/mes-screen.css 참조. */
.q1l[b-tt4au668sb] { left: 30px; }   .q1[b-tt4au668sb] { left: 107px; width: 180px; }
.q2l[b-tt4au668sb] { left: 325px; }  .q2[b-tt4au668sb] { left: 389px; width: 180px; }
.q3l[b-tt4au668sb] { left: 612px; }  .q3[b-tt4au668sb] { left: 684px; width: 180px; }
.q4l[b-tt4au668sb] { left: 897px; }  .q4[b-tt4au668sb] { left: 985px; width: 180px; }

.data-table[b-tt4au668sb] { min-width: 1750px; width: 1750px; }

.c-code[b-tt4au668sb] { width: 90px; } .c-name[b-tt4au668sb] { width: 120px; } .c-unit[b-tt4au668sb] { width: 60px; }
.c-partner[b-tt4au668sb] { width: 100px; } .c-partnerno[b-tt4au668sb] { width: 130px; }
.c-ex1[b-tt4au668sb] { width: 125px; } .c-ex2[b-tt4au668sb] { width: 125px; }
.c-price[b-tt4au668sb] { width: 90px; } .c-order[b-tt4au668sb] { width: 90px; } .c-proc[b-tt4au668sb] { width: 80px; } .c-desc[b-tt4au668sb] { width: 100px; }
.c-use[b-tt4au668sb] { width: 80px; } .c-created[b-tt4au668sb] { width: 145px; } .c-createusr[b-tt4au668sb] { width: 80px; }
.c-updated[b-tt4au668sb] { width: 145px; } .c-updateusr[b-tt4au668sb] { width: 80px; }

/* 상세 폼 : 좌표는 42px 헤더 기준 */
.l-code[b-tt4au668sb] { top: 14px; } .f-code[b-tt4au668sb] { top: 14px; }
.l-name[b-tt4au668sb] { top: 52px; } .f-name[b-tt4au668sb] { top: 52px; }
.l-unit[b-tt4au668sb] { top: 93px; } .f-unit[b-tt4au668sb] { left: 116px; top: 93px; gap: 12px; }
.l-partner[b-tt4au668sb] { top: 134px; } .f-partner[b-tt4au668sb] { left: 116px; top: 134px; gap: 8px; }
.partner-select[b-tt4au668sb] { height: 27px; width: 193px; border: 1px solid #9CAAB6; background: #D6E4F0; font-size: 14.67px; }
.l-partnerno[b-tt4au668sb] { top: 176px; } .f-partnerno[b-tt4au668sb] { top: 176px; }
.l-partnername[b-tt4au668sb] { top: 218px; } .f-partnername[b-tt4au668sb] { top: 218px; }
.l-ex1[b-tt4au668sb] { top: 260px; } .f-ex1[b-tt4au668sb] { top: 260px; }
.l-ex2[b-tt4au668sb] { top: 302px; } .f-ex2[b-tt4au668sb] { top: 302px; }
.l-price[b-tt4au668sb] { top: 344px; } .f-price[b-tt4au668sb] { top: 344px; }
.l-order[b-tt4au668sb] { top: 386px; } .f-order[b-tt4au668sb] { top: 386px; }
.l-desc[b-tt4au668sb] { top: 432px; } .f-desc[b-tt4au668sb] { top: 432px; height: 56px; }
/* 공정 (v0.4.0) — 비고를 낮추고 그 아래. 공정이 많으면 상자 안에서 스크롤 */
.l-proc[b-tt4au668sb] { top: 500px; }
.proc-box[b-tt4au668sb] { position: absolute; left: 116px; top: 500px; width: 261px; max-height: 118px; overflow-y: auto;
            display: grid; grid-template-columns: 1fr 1fr; gap: 2px 8px; padding: 4px 6px;
            border: 1px solid #D4D4D4; border-bottom-color: #838383; background: #fff; font-size: 13.5px; }
.proc-box label[b-tt4au668sb] { display: flex; align-items: center; gap: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.proc-box input[b-tt4au668sb] { accent-color: #0B78D0; flex: none; }
.proc-box .proc-off[b-tt4au668sb] { color: #8A8A8A; text-decoration: line-through; }
.proc-hint[b-tt4au668sb] { grid-column: 1 / -1; color: #5A6467; font-size: 11.5px; line-height: 1.35; border-top: 1px dashed #D4D4D4; padding-top: 3px; white-space: normal; }
.l-use[b-tt4au668sb] { top: 628px; } .f-use[b-tt4au668sb] { left: 110px; top: 628px; gap: 17px; }
.f-error[b-tt4au668sb] { top: 664px; }
/* /Components/Pages/KpiDashboard.razor.rz.scp.css */
/* 07-01 KPI현황. html/07_KPI/01_KPI현황_v7스타일.html 이식.
   조회조건 106px / KPI 카드 154px / 본문(좌 60% : 차트+집계, 우 40% : 상세). */
/* KPI 카드줄을 154px→100px 로 줄여 아래 표에 높이를 넘긴다.
   월별 집계는 12개월이 스크롤 없이 다 보여야 한다. */
.kpi-page[b-2laazodfr2] { height: 100%; display: grid; grid-template-rows: 106px 100px minmax(0, 1fr); gap: 3px; }

.panel[b-2laazodfr2] { background: #fff; border: 1px solid #858585; position: relative; overflow: hidden; }
.panel-head[b-2laazodfr2] {
    height: 42px; background: var(--mes-panel-head); color: #fff;
    display: flex; align-items: center; gap: 8px; padding: 0 8px; font-size: 18px; font-weight: 700;
}
.panel-head .icon[b-2laazodfr2] { color: var(--mes-orange); }

.search-fields[b-2laazodfr2] {
    position: absolute; left: 0; right: 0; top: 42px; height: 64px;
    display: flex; align-items: center; gap: 10px; padding: 0 12px;
}
.search-fields label[b-2laazodfr2] { font-size: 15.5px; white-space: nowrap; }
.year[b-2laazodfr2], .month[b-2laazodfr2] {
    height: 31px; padding: 2px 7px; border: 1px solid #D4D4D4;
    background: #fff; outline: none; font-size: 15px;
}
.year[b-2laazodfr2] { width: 115px; text-align: center; font-weight: 700; }
.month[b-2laazodfr2] { width: 105px; }
.search-btn[b-2laazodfr2] {
    margin-left: auto; width: 92px; height: 38px; border: 0;
    background: var(--mes-new); color: #fff; font-size: 15px; font-weight: 700; cursor: pointer;
}

/* ===== KPI 카드 ===== */
.kpi-wrap[b-2laazodfr2] { height: 100%; display: grid; grid-template-columns: 1fr 1fr; gap: 3px; padding: 3px; }
.kpi-card[b-2laazodfr2] {
    border: 1px solid #8C8C8C; background: #fff;
    display: grid; grid-template-columns: 210px 1fr 210px; min-width: 0; cursor: pointer;
}
.kpi-card:hover[b-2laazodfr2] { outline: 2px solid #8CCFC6; outline-offset: -2px; }
.kpi-card.selected[b-2laazodfr2] { outline: 3px solid #26A69A; outline-offset: -3px; }
.kpi-title[b-2laazodfr2] {
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    background: #F2F2F2; border-right: 1px solid #D0D0D0; font-size: 18px; font-weight: 800; gap: 5px;
}
.kpi-title small[b-2laazodfr2] { font-size: 12px; font-weight: 400; color: #666; }
.kpi-value[b-2laazodfr2] {
    display: flex; align-items: center; justify-content: center;
    font-size: 36px; font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1;
}
.kpi-side[b-2laazodfr2] {
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    border-left: 1px solid #E0E0E0; background: #FAFAFA; gap: 5px;
}
.lab[b-2laazodfr2] { font-size: 12.5px; color: #666; }
.compare[b-2laazodfr2] { font-size: 17px; font-weight: 800; }
.kpi-card.output .kpi-value[b-2laazodfr2], .kpi-card.output .compare[b-2laazodfr2] { color: #1E88E5; }
.kpi-card.defect .kpi-value[b-2laazodfr2], .kpi-card.defect .compare[b-2laazodfr2] { color: #C94949; }

/* ===== 본문 ===== */
.work[b-2laazodfr2] { display: grid; grid-template-columns: 60% 40%; gap: 3px; min-height: 0; }
/* 차트 30% / 월별 집계 70%. 집계표가 12행(헤더 38 + 12×31 = 410px)을 담아야 한다. */
.left[b-2laazodfr2] { display: grid; grid-template-rows: 30% 70%; gap: 3px; min-height: 0; }
.chart-title[b-2laazodfr2] { margin-left: 12px; font-size: 14px; font-weight: 700; color: #FFE082; white-space: nowrap; }
.chart-legend[b-2laazodfr2] { margin-left: auto; margin-right: 8px; font-size: 12px; color: #DCE4E9; white-space: nowrap; }
.sort-guide[b-2laazodfr2] { margin-left: auto; margin-right: 8px; font-size: 12px; color: #DCE4E9; white-space: nowrap; }

.chart-box[b-2laazodfr2] {
    position: absolute; left: 34px; right: 22px; top: 58px; bottom: 34px;
    border-left: 1px solid #777; border-bottom: 1px solid #777; padding: 12px 8px 0 14px;
}
.bars[b-2laazodfr2] { height: 100%; display: flex; align-items: flex-end; justify-content: space-around; gap: 8px; }
.bar-col[b-2laazodfr2] { flex: 1; max-width: 65px; height: 100%; display: flex; align-items: flex-end; justify-content: center; position: relative; cursor: pointer; }
.bar[b-2laazodfr2] { width: 32px; min-height: 4px; background: #1E88E5; position: relative; }
.bar.defect[b-2laazodfr2] { background: #C94949; }
.bar.on[b-2laazodfr2] { outline: 2px solid #26A69A; outline-offset: 1px; }
.bar-value[b-2laazodfr2] { position: absolute; top: -21px; left: -26px; right: -26px; text-align: center; font-size: 11px; font-weight: 800; white-space: nowrap; }
.bar-label[b-2laazodfr2] { position: absolute; bottom: -22px; left: -10px; right: -10px; text-align: center; font-size: 11.5px; font-weight: 700; white-space: nowrap; }

.grid-wrap[b-2laazodfr2] { position: absolute; left: 0; right: 0; top: 42px; bottom: 0; overflow: auto; scrollbar-gutter: stable; }
.tbl[b-2laazodfr2] { border-collapse: collapse; table-layout: fixed; width: 100%; font-size: 14.5px; }
.tbl th[b-2laazodfr2] {
    position: sticky; top: 0; z-index: 2; height: 38px; background: var(--mes-grid-head); color: #fff;
    font-weight: 700; text-align: left; padding: 0 6px; white-space: nowrap;
    border-right: 1px solid #527087;
}
.tbl th.sortable[b-2laazodfr2] { cursor: pointer; user-select: none; }
.tbl th.sortable:hover[b-2laazodfr2] { background: #31576D; }
.tbl th .sort-icon[b-2laazodfr2] { margin-left: 5px; color: #B7C6D0; font-size: 11px; }
.tbl th.active .sort-icon[b-2laazodfr2] { color: #fff; font-size: 12px; font-weight: 800; }
.tbl td[b-2laazodfr2] {
    height: 31px; border-right: 1px solid #D1D1D1; border-bottom: 1px solid #DEDEDE;
    padding: 4px 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.tbl tbody tr[b-2laazodfr2] { cursor: pointer; }
.tbl tbody tr:hover td[b-2laazodfr2] { background: #E8F4F2; }
.tbl tbody tr.selected td[b-2laazodfr2] { background: var(--mes-grid-selected); }
.tbl tbody tr.no-row td[b-2laazodfr2] { color: #777; background: #F3F3F3; cursor: default; }
.center[b-2laazodfr2] { text-align: center; }
.number[b-2laazodfr2] { text-align: right; }
.c-month[b-2laazodfr2] { width: 80px; }

/* ===== 우측 상세 ===== */
.detail[b-2laazodfr2] {
    position: absolute; left: 0; right: 0; top: 42px; bottom: 0; padding: 12px;
    display: grid; grid-template-rows: auto repeat(4, 1fr); gap: 8px;
}
.detail-title[b-2laazodfr2] { font-size: 17px; font-weight: 800; color: #222; padding: 2px 2px 8px; border-bottom: 1px solid #C7C7C7; }
.detail-row[b-2laazodfr2] {
    display: grid; grid-template-columns: 150px 1fr 145px; align-items: center;
    border: 1px solid #C5C5C5; background: #FAFAFA; min-height: 52px;
}
.detail-row .lab[b-2laazodfr2] {
    height: 100%; display: flex; align-items: center; padding-left: 12px;
    background: #F0F0F0; font-size: 14.5px; font-weight: 700; color: #222;
}
.detail-row .val[b-2laazodfr2] { padding-left: 16px; font-size: 23px; font-weight: 800; font-variant-numeric: tabular-nums; }
.detail-row .desc[b-2laazodfr2] { font-size: 12px; color: #666; text-align: right; padding-right: 12px; }
.detail-row.output .val[b-2laazodfr2] { color: #1E88E5; }
.detail-row.defect .val[b-2laazodfr2] { color: #C94949; }
.detail-row.base .val[b-2laazodfr2] { color: #37474F; font-size: 19px; }
/* /Components/Pages/Login.razor.rz.scp.css */
/* html/00_로그인.html 시안 이식. 색상 토큰과 리셋은 wwwroot/app.css 참조. */
.login-page[b-jqy94anzqh] {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}

.login[b-jqy94anzqh] { width: 380px; max-width: 100%; }

.brand[b-jqy94anzqh] { text-align: center; margin-bottom: 34px; user-select: none; }
/* 로고 · 제목 · 부제목 크기는 BrandMark.razor.css (login) */
.brand-sys[b-jqy94anzqh] { margin-top: 8px; font-size: 12.5px; color: #6E7E93; }

.panel[b-jqy94anzqh] { background: #161F33; border: 1px solid rgba(255,255,255,.07); }
.panel-head[b-jqy94anzqh] {
    height: 42px; display: flex; align-items: center; padding: 0 16px;
    background: var(--mes-panel-head); font-size: 14px; font-weight: 700; color: #fff;
}
.panel-body[b-jqy94anzqh] { padding: 22px 20px 24px; }

.field[b-jqy94anzqh] { margin-bottom: 14px; }
.field label[b-jqy94anzqh] { display: block; font-size: 12.5px; color: #9FB0C2; margin-bottom: 6px; }
.field input[b-jqy94anzqh], .field select[b-jqy94anzqh] {
    width: 100%; height: 38px; padding: 0 11px; font-size: 14px;
    background: #0B1220; color: #E8EDF3; border: 1px solid #2A3549; border-radius: 2px;
    font-family: inherit; outline: none;
}
.field input:focus[b-jqy94anzqh], .field select:focus[b-jqy94anzqh] {
    border-color: var(--mes-teal);
    box-shadow: 0 0 0 2px rgba(58,213,191,.18);
}
.field input[b-jqy94anzqh]::placeholder { color: #4E5C72; }

.err[b-jqy94anzqh] { margin: -6px 0 12px; font-size: 12.5px; color: #F09595; }

.remember[b-jqy94anzqh] {
    display: flex; align-items: center; gap: 7px;
    margin: 16px 0 18px; font-size: 12.5px; color: #9FB0C2;
}
.remember input[b-jqy94anzqh] { width: 14px; height: 14px; accent-color: var(--mes-teal); }

.btn-login[b-jqy94anzqh] {
    width: 100%; height: 44px; border: 0; border-radius: 2px; cursor: pointer;
    background: var(--mes-grid-head); color: #fff; font-size: 15px; font-weight: 700;
    font-family: inherit; letter-spacing: .5px;
}
.btn-login:hover[b-jqy94anzqh] { background: #2F5771; }
.btn-login:focus-visible[b-jqy94anzqh] { outline: 2px solid var(--mes-teal); outline-offset: 2px; }

.demo[b-jqy94anzqh] { margin-top: 14px; padding-top: 12px; border-top: 1px solid rgba(255,255,255,.06); }
.demo-t[b-jqy94anzqh] { font-size: 11.5px; color: #5E6D82; margin-bottom: 8px; }
.demo-list[b-jqy94anzqh] { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.demo-list button[b-jqy94anzqh] {
    background: #0B1220; border: 1px solid #2A3549; color: #9FB0C2; font-family: inherit;
    font-size: 11.5px; padding: 7px 8px; cursor: pointer; border-radius: 2px;
    text-align: left; line-height: 1.5;
}
.demo-list button:hover[b-jqy94anzqh] { border-color: #3AD5BF; color: #E8EDF3; }
.demo-list b[b-jqy94anzqh] { display: block; color: #E8EDF3; font-size: 12px; font-weight: 600; }

.note[b-jqy94anzqh] {
    margin-top: 16px; padding-top: 14px; border-top: 1px solid rgba(255,255,255,.06);
    font-size: 11.5px; color: #5E6D82; line-height: 1.85;
}

.foot[b-jqy94anzqh] { margin-top: 26px; text-align: center; font-size: 12px; color: #4A5768; letter-spacing: .4px; }
.foot b[b-jqy94anzqh] { color: #7A8899; font-family: Calibri, Arial, sans-serif; font-size: 14px; }

.mode-note[b-jqy94anzqh] { margin: 0 0 12px; padding: 8px 10px; font-size: 12.5px; color: #9FD8E8; background: rgba(46,163,199,.12); border: 1px solid rgba(46,163,199,.35); border-radius: 2px; }
.mode-note a[b-jqy94anzqh] { color: var(--mes-teal); margin-left: 6px; white-space: nowrap; }

/* 휴대폰 (≤ 480px): 여백을 줄이고, 입력칸 글자를 16px 이상으로 두어 iOS 가 확대하지 않게 하며, 손가락으로 누르기 쉬운 높이로 맞춘다. */
@media (max-width: 480px) {
    .login-page[b-jqy94anzqh] { padding: 16px 12px; align-items: flex-start; }
    .brand[b-jqy94anzqh] { margin: 18px 0 22px; }
    .panel-body[b-jqy94anzqh] { padding: 18px 16px 20px; }
    .field input[b-jqy94anzqh], .field select[b-jqy94anzqh] { height: 46px; font-size: 16px; }
    .btn-login[b-jqy94anzqh] { height: 48px; font-size: 16px; }
    .remember[b-jqy94anzqh] { padding: 6px 0; }
    .demo-list a[b-jqy94anzqh] { padding: 8px 10px; }
}
/* /Components/Pages/MenuConfig.razor.rz.scp.css */
/* 09-06 메뉴 구성 고유 값. 공통 골격은 wwwroot/equipment-screen.css 참조. */
.menu-page[b-foe7fsqndg] { grid-template-columns: minmax(0, 1fr) 300px; grid-template-rows: minmax(0, 1fr); }
.menu-page > .panel[b-foe7fsqndg] { display: flex; flex-direction: column; }

.guide[b-foe7fsqndg] { margin: 8px 10px 0; padding: 8px 12px; border-left: 4px solid #5B3FB0; background: #EFEAFB; font-size: 12.5px; line-height: 1.6; }
.grid-wrap.with-head[b-foe7fsqndg] { position: relative; top: auto; left: auto; right: auto; bottom: auto; flex: 1; min-height: 0; margin-top: 6px; }

.menu-tbl .c-kind[b-foe7fsqndg] { width: 64px; } .menu-tbl .c-code[b-foe7fsqndg] { width: 80px; } .menu-tbl .c-where[b-foe7fsqndg] { width: 260px; } .menu-tbl .c-show[b-foe7fsqndg] { width: 140px; }
.menu-tbl tbody tr[b-foe7fsqndg] { cursor: default; }
.menu-tbl tr.cat-row td[b-foe7fsqndg] { background: #F1F4F6; font-weight: 700; border-top: 2px solid #C9D2D8; }
.menu-tbl tr:not(.cat-row) td:nth-child(2)[b-foe7fsqndg] { padding-left: 22px; }
.menu-tbl tr.moved td[b-foe7fsqndg] { background: #FAF8FE; }
.menu-tbl tr.dim td[b-foe7fsqndg] { color: #9AA4AB; }
.menu-tbl tr.changed td:first-child[b-foe7fsqndg] { box-shadow: inset 4px 0 0 #F5A623; }
.menu-tbl tr.flash td[b-foe7fsqndg] { animation: flash-b-foe7fsqndg 1.2s ease; }
@keyframes flash-b-foe7fsqndg { 0% { background: #FFF1C9; } 100% { background: transparent; } }
@media (prefers-reduced-motion: reduce) { .menu-tbl tr.flash td[b-foe7fsqndg] { animation: none; } }

.mono[b-foe7fsqndg] { font-family: Consolas, "D2Coding", monospace; }
.why[b-foe7fsqndg] { font-size: 12px; color: #66737D; font-weight: 400; }
.tag[b-foe7fsqndg] { display: inline-block; font-size: 11.5px; font-weight: 700; padding: 0 7px; border: 1px solid; border-radius: 3px; margin-left: 6px; }
.tag.pair[b-foe7fsqndg] { color: #5B3FB0; border-color: #B9A8EC; background: #EFEAFB; }
.tag.lock[b-foe7fsqndg] { color: #5A6670; border-color: #C4CCD2; background: #EEF1F4; }
.lock[b-foe7fsqndg] { color: #5A6670; font-weight: 700; font-size: 13px; }

.loc[b-foe7fsqndg] { display: inline-flex; gap: 4px; }
.loc label[b-foe7fsqndg] { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border: 1px solid #C9D0D5; border-radius: 3px; cursor: pointer; font-size: 12.5px; }
.loc label.on[b-foe7fsqndg] { border-color: #5B3FB0; background: #EFEAFB; color: #5B3FB0; font-weight: 700; }
.loc input[b-foe7fsqndg] { margin: 0; accent-color: #5B3FB0; }

.sw[b-foe7fsqndg] { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; user-select: none; }
.sw .t[b-foe7fsqndg] { width: 42px; height: 22px; border-radius: 11px; background: #C9D0D5; position: relative; transition: background .15s; }
.sw .t[b-foe7fsqndg]::after { content: ""; position: absolute; left: 2px; top: 2px; width: 18px; height: 18px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.3); transition: left .15s; }
.sw.on .t[b-foe7fsqndg] { background: #1FA59A; }
.sw.on .t[b-foe7fsqndg]::after { left: 22px; }
.sw .l[b-foe7fsqndg] { font-weight: 700; font-size: 13px; color: #8A6500; }
.sw.on .l[b-foe7fsqndg] { color: #1A6E42; }
.sw:focus-visible[b-foe7fsqndg] { outline: 2px solid #1E88E5; outline-offset: 2px; }

.menu-foot[b-foe7fsqndg] { border-top: 1px solid #D1D7DB; padding: 8px 12px; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; background: #F7F9FA; }
.menu-foot .menu-sum[b-foe7fsqndg] { font-size: 13px; color: #66737D; margin-right: auto; }
.menu-foot .menu-sum b[b-foe7fsqndg] { color: #1B242B; }
.menu-foot .crud[b-foe7fsqndg] { width: auto; padding: 0 16px; }
.menu-foot .crud.gray[b-foe7fsqndg] { background: #7A8790; }
.menu-foot .foot-msg[b-foe7fsqndg] { width: 100%; font-size: 12.5px; color: #1B6B5C; min-height: 16px; }
.menu-foot .foot-msg.error[b-foe7fsqndg] { color: #BD3737; }

.preview[b-foe7fsqndg] { flex: 1; overflow: auto; background: var(--mes-navy, #162232); padding: 6px 0; }
.pv-cat[b-foe7fsqndg] { padding: 9px 14px; color: #E7EEF4; font-weight: 700; font-size: 13.5px; display: flex; align-items: center; gap: 8px; }
.pv-cat[b-foe7fsqndg]::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: #36C6B8; }
.pv-sub[b-foe7fsqndg] { padding: 5px 14px 5px 36px; color: #C9D3DB; font-size: 12.5px; display: flex; gap: 6px; align-items: center; }
.pv-sub .k[b-foe7fsqndg] { font-family: Consolas, monospace; font-size: 11px; color: #7F93A6; }
.pv-sub.moved[b-foe7fsqndg] { color: #D9CCFF; }
.menu-legend[b-foe7fsqndg] { padding: 8px 12px; font-size: 12px; color: #66737D; border-top: 1px solid #D1D7DB; line-height: 1.7; }
.menu-legend i[b-foe7fsqndg] { display: inline-block; width: 10px; height: 10px; border-radius: 2px; background: #D9CCFF; margin-right: 4px; vertical-align: -1px; }
/* /Components/Pages/OntimeRate.razor.rz.scp.css */
/* 04-04 납기준수율현황. html/04_납품관리/04_납기준수율현황_v7스타일.html 이식.
   조회조건 106px / 차트 39% / 상세목록 나머지. */
.ontime-page[b-0eon7spwsn] { height: 100%; display: grid; grid-template-rows: 106px 39% minmax(0, 1fr); gap: 3px; }

.panel[b-0eon7spwsn] { background: #fff; border: 1px solid #858585; position: relative; overflow: hidden; }
.panel-head[b-0eon7spwsn] {
    height: 42px; background: var(--mes-panel-head); color: #fff;
    display: flex; align-items: center; padding-left: 5px; gap: 4px; font-size: 18px; font-weight: 700;
}
.head-icon[b-0eon7spwsn] { width: 28px; height: 42px; display: flex; align-items: center; justify-content: center; color: var(--mes-orange); }
.head-icon svg[b-0eon7spwsn] { width: 20px; height: 20px; }
.count[b-0eon7spwsn] { margin-left: auto; padding-right: 12px; font-size: 13px; font-weight: 500; color: #dce4e9; }

.search-fields[b-0eon7spwsn] {
    position: absolute; left: 0; right: 0; top: 42px; bottom: 0;
    display: flex; align-items: center; gap: 12px; padding: 0 20px;
}
.search-fields label[b-0eon7spwsn] { font-size: 15.5px; white-space: nowrap; }
.input[b-0eon7spwsn] {
    height: 31px; padding: 2px 7px; border: 1px solid #D4D4D4;
    background: #fff; outline: none; font-size: 15px;
}
.input.year[b-0eon7spwsn] { width: 110px; }
.input.customer[b-0eon7spwsn] { width: 180px; }
.search-btn[b-0eon7spwsn] {
    height: 32px; width: 120px; border: 0; background: var(--mes-new); color: #fff;
    font-size: 15px; font-weight: 700; cursor: pointer;
}
.total[b-0eon7spwsn] { margin-left: auto; padding-right: 8px; font-size: 14px; color: #37474F; }
.total strong[b-0eon7spwsn] { font-size: 19px; color: #0B63A0; }

/* ===== 차트 ===== */
.chart-panel[b-0eon7spwsn] { min-height: 0; }
.chart-area[b-0eon7spwsn] { position: absolute; left: 0; right: 0; top: 42px; bottom: 0; padding: 12px 24px 14px 54px; }
.legend[b-0eon7spwsn] { position: absolute; right: 25px; top: 10px; display: flex; gap: 20px; font-size: 13px; font-weight: 700; }
.legend span[b-0eon7spwsn] { display: flex; align-items: center; gap: 6px; }
.sw[b-0eon7spwsn] { width: 19px; height: 10px; display: inline-block; }
.sw.ok[b-0eon7spwsn] { background: #3CB371; }
.sw.bad[b-0eon7spwsn] { background: #C94949; }

.y-label[b-0eon7spwsn] { position: absolute; left: 12px; top: 50%; transform: rotate(-90deg) translateY(-50%); transform-origin: center; font-size: 13px; }
.axis-ticks[b-0eon7spwsn] {
    position: absolute; left: 18px; top: 46px; bottom: 46px; width: 32px;
    display: flex; flex-direction: column; justify-content: space-between;
    font-size: 11.5px; color: #666; text-align: right;
}

.chart-body[b-0eon7spwsn] { position: absolute; left: 54px; right: 24px; top: 46px; bottom: 46px; border-left: 1px solid #777; border-bottom: 1px solid #777; }
.months[b-0eon7spwsn] { position: absolute; inset: 0; display: grid; grid-template-columns: repeat(12, 1fr); align-items: end; padding: 0 6px; }
.month[b-0eon7spwsn] {
    height: 100%; position: relative; display: flex; justify-content: center; align-items: flex-end; gap: 4px;
    cursor: pointer; border-left: 1px solid transparent; border-right: 1px solid transparent;
}
.month:hover[b-0eon7spwsn] { background: rgba(38,166,154,.06); }
.month.on[b-0eon7spwsn] { background: rgba(38,166,154,.14); border-color: #26A69A; }
.bar[b-0eon7spwsn] { width: 16px; min-height: 0; }
.bar.ok[b-0eon7spwsn] { background: #3CB371; }
.bar.bad[b-0eon7spwsn] { background: #C94949; }
.mlabel[b-0eon7spwsn] { position: absolute; bottom: -24px; left: 0; right: 0; text-align: center; font-size: 12px; }

/* ===== 상세 목록 ===== */
.grid-wrap[b-0eon7spwsn] { position: absolute; left: 0; right: 0; top: 42px; bottom: 0; overflow: auto; }
.tbl[b-0eon7spwsn] { border-collapse: collapse; table-layout: fixed; width: 100%; min-width: 1070px; font-size: 13.33px; }
.tbl th[b-0eon7spwsn] {
    position: sticky; top: 0; z-index: 2; height: 38px; background: var(--mes-grid-head); color: #fff;
    font-weight: 700; text-align: left; padding: 0 8px; white-space: nowrap;
    border-bottom: 1px solid var(--mes-grid-line);
}
.tbl td[b-0eon7spwsn] {
    height: 31px; padding: 3px 8px; border-bottom: 1px solid var(--mes-grid-line);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.tbl tbody tr:hover td[b-0eon7spwsn] { background: #E8F4F2; }
.tbl tbody tr.no-order td[b-0eon7spwsn] { color: #777; background: #F3F3F3; }
.center[b-0eon7spwsn] { text-align: center; }
.right[b-0eon7spwsn] { text-align: right; }

.c-no[b-0eon7spwsn] { width: 135px; } .c-partner[b-0eon7spwsn] { width: 105px; } .c-item[b-0eon7spwsn] { width: 110px; }
.c-qty[b-0eon7spwsn] { width: 100px; } .c-date[b-0eon7spwsn] { width: 110px; } .c-status[b-0eon7spwsn] { width: 100px; }

.state[b-0eon7spwsn] {
    width: 66px; height: 24px; display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid rgba(0,0,0,.15); font-size: 12.5px; font-weight: 700; white-space: nowrap;
}
.state.done[b-0eon7spwsn] { background: #3CB371; color: #fff; }
.state.late[b-0eon7spwsn] { background: #C94949; color: #fff; }
.state.wait[b-0eon7spwsn] { background: #7A7A7A; color: #fff; }
.state.ready[b-0eon7spwsn] { background: #DCEAF7; border-color: #9BBEDB; color: #2A628C; }
/* /Components/Pages/OrderList.razor.rz.scp.css */
/* 02-01 수주목록 고유 좌표. 공통 골격은 wwwroot/mes-screen.css 참조. */
.screen-page[b-weuh7edr7b] {
    /* 상세 패널이 없는 전체폭 목록 화면. */
    --list-right: 3px;
}

.date-box[b-weuh7edr7b], .search-box[b-weuh7edr7b] {
    position: absolute; top: 16px; height: 31px; padding: 2px 7px;
    border: 1px solid #B9B9B9; background: #fff; outline: none; color: #000; font-size: 15px;
}
.date-box:focus[b-weuh7edr7b], .search-box:focus[b-weuh7edr7b] { outline: 1px solid #86B7FE; outline-offset: -1px; }

.l-date[b-weuh7edr7b] { left: 20px; }
.d-from[b-weuh7edr7b] { left: 93px; width: 225px; }
.d-to[b-weuh7edr7b] { left: 326px; width: 225px; }
.l-partner[b-weuh7edr7b] { left: 591px; } .s-partner[b-weuh7edr7b] { left: 657px; width: 180px; }
.l-item[b-weuh7edr7b] { left: 867px; } .s-item[b-weuh7edr7b] { left: 930px; width: 275px; }
.search-btn[b-weuh7edr7b] { width: 180px; }

.list-head .count[b-weuh7edr7b] { margin-left: auto; padding-right: 12px; font-size: 13px; font-weight: 500; color: #dce4e9; }
.list-head .hint[b-weuh7edr7b] { padding-right: 12px; font-size: 12px; color: #dce4e9; }
.list-head .hint.error[b-weuh7edr7b] { color: #FFB4B4; font-weight: 600; }

.table-wrap[b-weuh7edr7b] { top: 42px; }

.data-table[b-weuh7edr7b] { min-width: 1800px; width: 1800px; font-size: 13px; }
.data-table th[b-weuh7edr7b], .data-table td[b-weuh7edr7b] { font-size: 13px; }
.data-table .money[b-weuh7edr7b] { text-align: right; }
.ok[b-weuh7edr7b] { color: #008000; font-weight: 700; font-size: 17px; }
.no[b-weuh7edr7b] { color: #D21E1E; font-size: 16px; }

.c-no[b-weuh7edr7b] { width: 120px; } .c-partner[b-weuh7edr7b] { width: 85px; } .c-item[b-weuh7edr7b] { width: 90px; }
.c-qty[b-weuh7edr7b] { width: 55px; } .c-price[b-weuh7edr7b] { width: 70px; } .c-amount[b-weuh7edr7b] { width: 80px; }
.c-note[b-weuh7edr7b] { width: 70px; } .c-ordered[b-weuh7edr7b] { width: 105px; } .c-due[b-weuh7edr7b] { width: 105px; }
.c-prod[b-weuh7edr7b] { width: 105px; } .c-proddone[b-weuh7edr7b] { width: 105px; } .c-deliv[b-weuh7edr7b] { width: 105px; }
.c-delivon[b-weuh7edr7b] { width: 95px; } .c-closed[b-weuh7edr7b] { width: 100px; }
.c-created[b-weuh7edr7b] { width: 140px; } .c-createusr[b-weuh7edr7b] { width: 80px; }
.c-updated[b-weuh7edr7b] { width: 140px; } .c-updateusr[b-weuh7edr7b] { width: 80px; }
/* /Components/Pages/OrderRegister.razor.rz.scp.css */
/* 02-02 수주등록. html/02_수주관리/02_수주등록_v7스타일.html 이식.
   좌(달력) 50.5% · 중(수주정보) 25.7% · 우(코드리스트) 23.8% 3분할. */
.reg-page[b-9qak50ot2m] { position: relative; width: 100%; height: 100%; overflow: hidden; background: #fff; }
.reg-grid[b-9qak50ot2m] {
    position: absolute; inset: 0;
    display: grid; grid-template-columns: 50.5% 25.7% 23.8%; gap: 4px; background: #ECEFF1;
}
.reg-panel[b-9qak50ot2m] { position: relative; background: #fff; border: 1px solid #8A8A8A; overflow: hidden; }
.reg-panel > .panel-head[b-9qak50ot2m] { position: absolute; left: 0; right: 0; top: 0; height: 42px; }

/* ===== 달력 ===== */
.calendar-body[b-9qak50ot2m] { position: absolute; left: 0; right: 0; top: 42px; bottom: 0; background: #fff; padding: 0 3px 4px; }
.calendar-toolbar[b-9qak50ot2m] { height: 66px; background: #D9D9D9; border-bottom: 1px solid #8A8A8A; position: relative; }
/* 달 제목(.cal-month)이 툴바 전체 폭을 덮는 absolute 라, 버튼 묶음을 그 위로 올려 둔다. */
.cal-nav[b-9qak50ot2m] { position: absolute; left: 9px; top: 13px; height: 42px; display: flex; gap: 6px; z-index: 2; }
.cal-nav button[b-9qak50ot2m] {
    width: 38px; height: 42px; border: 1px solid #6F8091; background: #5C9ACA;
    color: #fff; font-size: 24px; font-weight: 700; cursor: pointer;
}
.cal-nav .today[b-9qak50ot2m] { width: 125px; font-size: 13px; }
/* 달 제목은 툴바 전체 너비를 덮는 absolute 라 그대로 두면 ◀ ▶ 오늘 버튼의 클릭을 가로챈다.
   글자만 보이면 되므로 마우스 이벤트를 통과시킨다 (02-03 .month-title 과 같은 처리). */
.cal-month[b-9qak50ot2m] { position: absolute; left: 0; right: 0; top: 12px; text-align: center; font-size: 28px; font-weight: 700; pointer-events: none; }
.cal-legend[b-9qak50ot2m] { position: absolute; right: 12px; top: 11px; font-size: 13px; }
.legend-row[b-9qak50ot2m] { display: flex; align-items: center; gap: 6px; margin-top: 7px; }
.legend-chip[b-9qak50ot2m] { border: 1px solid #808080; background: #fff; padding: 3px 7px; }
.legend-chip.delivery[b-9qak50ot2m] { border-color: #3976A6; }

.week-row[b-9qak50ot2m] { height: 34px; display: grid; grid-template-columns: repeat(7, 1fr); }
.week-row div[b-9qak50ot2m] {
    background: #CFCFCF; border-right: 1px solid #9E9E9E; border-bottom: 1px solid #9E9E9E;
    display: flex; align-items: center; justify-content: center; font-size: 16px; font-weight: 700;
}
.week-row .sun[b-9qak50ot2m] { color: red; }
.week-row .sat[b-9qak50ot2m] { color: blue; }

.cal-grid[b-9qak50ot2m] { height: calc(100% - 100px); display: grid; grid-template-columns: repeat(7, 1fr); grid-template-rows: repeat(6, 1fr); }
.day[b-9qak50ot2m] {
    position: relative; border-right: 1px solid #AFAFAF; border-bottom: 1px solid #AFAFAF;
    background: #fff; padding: 7px 8px; font-size: 15px; font-weight: 700; cursor: pointer;
}
.day.dim[b-9qak50ot2m] { background: #D0D0D0; cursor: default; }
.day.selected[b-9qak50ot2m] { background: #FFFEE0; }
.day.sun[b-9qak50ot2m] { color: red; }
.day.sat[b-9qak50ot2m] { color: blue; }
.dot[b-9qak50ot2m] { position: absolute; bottom: 7px; width: 9px; height: 9px; border: 1px solid #808080; }
.dot.order[b-9qak50ot2m] { left: 8px; background: #fff; }
.dot.due[b-9qak50ot2m] { left: 21px; background: #CFE4F5; border-color: #3976A6; }

/* ===== 수주 정보 ===== */
.order-info-body[b-9qak50ot2m] {
    position: absolute; left: 0; right: 0; top: 42px; bottom: 0;
    padding: 12px 12px 74px; background: #fff; overflow: auto;
}
.reg-row[b-9qak50ot2m] { display: grid; grid-template-columns: 96px 1fr; gap: 8px; align-items: center; margin-bottom: 11px; }
.reg-row > label[b-9qak50ot2m] { text-align: right; font-size: 15px; }
.reg-input[b-9qak50ot2m], .reg-textarea[b-9qak50ot2m] {
    width: 100%; font-size: 15px; background: #fff;
    border-style: solid; border-width: 1px;
    border-color: #ECECEC #E6E6E6 #838383 #ECECEC;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.96);
}
.reg-input[b-9qak50ot2m] { height: 29px; padding: 1px 6px; }
.reg-textarea[b-9qak50ot2m] { height: 84px; resize: none; padding: 5px; }
.lookup[b-9qak50ot2m] { background: #87CEEB; cursor: pointer; }
.disabled-field[b-9qak50ot2m] { background: #EEEEEE; color: #A7A7A7; }

/* 진행상태. 값이 길어 한 줄 입력칸에서는 뒤가 잘린다. 줄바꿈되는 칸으로 둔다. */
.reg-state[b-9qak50ot2m] {
    min-height: 29px; padding: 5px 7px; border: 1px solid #C9D0D6; background: #F4F6F8;
    color: #37474F; font-size: 13px; line-height: 18px; word-break: keep-all;
}

.subbox[b-9qak50ot2m] { border: 1px solid #808080; margin-top: 13px; }
.subbox-title[b-9qak50ot2m] { height: 31px; background: #AFEEEE; display: flex; align-items: center; padding: 0 7px; font-size: 14px; font-weight: 700; }
.subbox-title input[b-9qak50ot2m] { margin-right: 7px; }
.subbox-body[b-9qak50ot2m] { padding: 11px 12px 13px; }
.subbox .reg-row[b-9qak50ot2m] { grid-template-columns: 120px 1fr; margin-bottom: 10px; }
.subbox .reg-textarea[b-9qak50ot2m] { height: 68px; }
.stack-row[b-9qak50ot2m] { display: block; margin-bottom: 0; }
.stack-row > label[b-9qak50ot2m] { display: block; text-align: left; margin: 0 0 7px; font-size: 15px; line-height: 20px; }

.reg-message[b-9qak50ot2m] { margin-top: 12px; font-size: 13px; color: #1B6B5C; }
.reg-message.error[b-9qak50ot2m] { color: #BD3737; }

/* 패널 맨 아래 고정. 스크롤되는 본문이 버튼 사이로 비치지 않게 불투명한 바로 둔다.
   .order-info-body 의 padding-bottom(74px) 이 이 자리를 비워 둔다. */
.reg-crud[b-9qak50ot2m] {
    position: absolute; left: 0; right: 0; bottom: 0; height: 64px;
    display: flex; align-items: center; gap: 6px; padding: 0 10px;
    background: #fff; border-top: 1px solid #E0E0E0;
}
.reg-crud button[b-9qak50ot2m] { width: 97px; height: 44px; border: 0; color: #fff; font-size: 16px; font-weight: 700; cursor: pointer; }
.reg-crud button:disabled[b-9qak50ot2m] { opacity: .42; cursor: not-allowed; }
.reg-crud .new[b-9qak50ot2m] { background: var(--mes-new); }
.reg-crud .add[b-9qak50ot2m] { background: var(--mes-add); }
.reg-crud .mod[b-9qak50ot2m] { background: var(--mes-edit); }
.reg-crud .del[b-9qak50ot2m] { background: var(--mes-delete); }
/* "수주종료" · "종료취소" 는 다른 버튼(두 글자)보다 길어 16px 로는 두 줄로 접힌다.
   버튼 폭은 그대로 두고 이 버튼 글자만 줄여 한 줄에 담는다. */
.reg-crud .fin[b-9qak50ot2m] { background: #5C6B7A; width: 105px; font-size: 13px; padding: 0 4px; white-space: nowrap; }


/* ===== 코드 리스트 ===== */
.code-head[b-9qak50ot2m] {
    height: 48px; background: #87CEEB; border-bottom: 1px solid #73AAC9;
    padding: 0 13px; display: flex; align-items: center; font-size: 18px; font-weight: 700;
}
.code-body[b-9qak50ot2m] { position: absolute; left: 0; right: 0; top: 48px; bottom: 0; padding: 14px 12px; background: #fff; }
.code-title[b-9qak50ot2m] { font-size: 16px; margin-bottom: 9px; }
.code-search[b-9qak50ot2m] { display: flex; gap: 8px; align-items: center; }
.code-search label[b-9qak50ot2m] { font-size: 15px; }
.code-search input[b-9qak50ot2m] { height: 31px; flex: 1; border: 1px solid #B9B9B9; padding: 2px 7px; }
.code-search button[b-9qak50ot2m] { width: 78px; height: 31px; border: 0; background: #26A69A; color: #fff; font-size: 14px; cursor: pointer; }
.code-scroll[b-9qak50ot2m] { position: absolute; left: 12px; right: 12px; top: 114px; bottom: 13px; border: 1px solid #DDD; overflow: auto; background: #fff; }
.code-table[b-9qak50ot2m] { width: 100%; border-collapse: collapse; table-layout: fixed; }
.code-table th[b-9qak50ot2m] {
    position: sticky; top: 0; height: 38px; background: #264558; color: #fff;
    text-align: left; padding: 0 8px; font-size: 13px; font-weight: 700;
}
.code-table td[b-9qak50ot2m] { height: 28px; border-bottom: 1px solid #E0E0E0; padding: 0 8px; font-size: 13px; }
.code-table tbody tr[b-9qak50ot2m] { cursor: pointer; }
.code-table tbody tr:hover td[b-9qak50ot2m] { background: #E8F4F2; }
.code-table .w1[b-9qak50ot2m] { width: 90px; }
.code-table .w2[b-9qak50ot2m] { width: 110px; }
.code-table .w3[b-9qak50ot2m] { width: 118px; }
.code-table tbody tr.selected td[b-9qak50ot2m] { background: var(--mes-grid-selected); }

.code-table .right[b-9qak50ot2m] { text-align: right; }
/* /Components/Pages/OrderSchedule.razor.rz.scp.css */
/* 02-03 수주일정현황. html/02_수주관리/03_수주일정현황_v7스타일.html 이식. 좌우 2분할. */
.schedule-page[b-usbu9wxnxx] { position: relative; width: 100%; height: 100%; overflow: hidden; background: var(--mes-page); }

/* ===== 상단 요약 4칸 ===== */
.schedule-summary[b-usbu9wxnxx] {
    position: absolute; left: 0; right: 0; top: 0; height: 64px;
    background: #fff; border: 1px solid #8A8A8A;
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; padding: 6px 8px;
}
.summary-item[b-usbu9wxnxx] {
    height: 50px; background: #fff; border: 1px solid #C9CED2;
    display: grid; grid-template-columns: 1fr auto; align-items: center; padding: 0 14px;
}
.summary-label[b-usbu9wxnxx] { font-size: 13.5px; color: #4E555A; }
.summary-value[b-usbu9wxnxx] { font-size: 23px; font-weight: 700; min-width: 46px; text-align: right; }
.summary-all .summary-value[b-usbu9wxnxx] { color: #264558; }
.summary-done .summary-value[b-usbu9wxnxx] { color: #267D71; }
.summary-plan .summary-value[b-usbu9wxnxx] { color: #D68B00; }
.summary-delay .summary-value[b-usbu9wxnxx] { color: #D84B48; }
.summary-error[b-usbu9wxnxx] { color: #BD3737; font-size: 13px; padding: 0 12px; }


.schedule-columns[b-usbu9wxnxx] {
    position: absolute; left: 0; right: 0; top: 70px; bottom: 0;
    display: grid; grid-template-columns: 1fr 1fr; gap: 6px; overflow: hidden;
}
.schedule-panel[b-usbu9wxnxx], .detail-panel-order[b-usbu9wxnxx] {
    position: relative; min-width: 0; background: #fff; border: 1px solid #8A8A8A; overflow: hidden;
}
.schedule-panel > .panel-head[b-usbu9wxnxx], .detail-panel-order > .panel-head[b-usbu9wxnxx] { position: absolute; left: 0; right: 0; top: 0; height: 42px; }

/* ===== 달력 툴바 ===== */
.schedule-toolbar[b-usbu9wxnxx] {
    position: absolute; left: 0; right: 0; top: 42px; height: 58px;
    background: #fff; border-bottom: 1px solid #BFC5CA;
    display: flex; align-items: center; padding: 0 10px;
}
.month-nav[b-usbu9wxnxx] { display: flex; align-items: center; gap: 5px; }
.month-nav button[b-usbu9wxnxx] {
    height: 32px; border: 1px solid #6F8091; background: #5C9ACA; color: #fff;
    font-size: 12.5px; font-weight: 700; padding: 0 10px; cursor: pointer;
}
.month-nav button.arrow[b-usbu9wxnxx] { width: 34px; padding: 0; font-size: 17px; }
.month-title[b-usbu9wxnxx] { position: absolute; left: 145px; right: 145px; text-align: center; font-size: 21px; font-weight: 700; pointer-events: none; }
.basis-box[b-usbu9wxnxx] { margin-left: auto; display: flex; align-items: center; gap: 6px; font-size: 12.5px; }
.basis-label[b-usbu9wxnxx] { color: #505050; }
.basis-box label[b-usbu9wxnxx] {
    height: 29px; display: flex; align-items: center; gap: 4px; padding: 0 7px;
    border: 1px solid #8A8A8A; background: #fff; cursor: pointer; white-space: nowrap;
}
.basis-box label.active[b-usbu9wxnxx] { border-color: #2B70A5; background: #E7F2FA; color: #125681; font-weight: 700; }
.basis-box input[b-usbu9wxnxx] { accent-color: #0B78D0; }

/* ===== 달력 ===== */
.calendar-zone[b-usbu9wxnxx] { position: absolute; left: 0; right: 0; top: 100px; bottom: 0; background: #fff; padding: 0 6px 6px; }
.week-row[b-usbu9wxnxx] { height: 34px; display: grid; grid-template-columns: repeat(7, 1fr); }
.week-row div[b-usbu9wxnxx] {
    background: #264558; color: #fff; border-right: 1px solid #566D7B;
    display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700;
}
.week-row .sun[b-usbu9wxnxx] { color: #FFB8B8; }
.week-row .sat[b-usbu9wxnxx] { color: #A9C9FF; }

.cal-grid[b-usbu9wxnxx] {
    height: calc(100% - 34px); display: grid;
    grid-template-columns: repeat(7, 1fr); grid-template-rows: repeat(6, 1fr);
    border-left: 1px solid #C5C5C5; border-top: 1px solid #C5C5C5;
}
.day[b-usbu9wxnxx] {
    position: relative; border-right: 1px solid #C5C5C5; border-bottom: 1px solid #C5C5C5;
    background: #fff; padding: 4px 5px; min-height: 0; overflow: hidden; cursor: pointer;
}
.day.dim[b-usbu9wxnxx] { background: #ECECEC; cursor: default; }
.day.today[b-usbu9wxnxx] { background: #FFFDE4; }
.day.selected[b-usbu9wxnxx] { outline: 2px solid #26A69A; outline-offset: -2px; background: #F5FFFC; }
.day-no[b-usbu9wxnxx] { font-size: 12.5px; font-weight: 700; color: #333; line-height: 17px; }
.day.sun .day-no[b-usbu9wxnxx] { color: #E84545; }
.day.sat .day-no[b-usbu9wxnxx] { color: #226ED3; }
.day-events[b-usbu9wxnxx] { margin-top: 2px; display: flex; flex-direction: column; gap: 2px; }
.event[b-usbu9wxnxx] {
    height: 18px; display: flex; align-items: center; justify-content: space-between;
    padding: 0 5px; font-size: 10.5px; white-space: nowrap;
    border-left: 4px solid #607D8B; background: #EEF1F3; color: #30363A;
}
.event .count[b-usbu9wxnxx] { font-weight: 700; }
.event.plan[b-usbu9wxnxx] { border-left-color: #D99A20; background: #FFF6DE; }
.event.done[b-usbu9wxnxx] { border-left-color: #2B8A78; background: #E8F7F3; }
.event.delay[b-usbu9wxnxx] { border-left-color: #E45552; background: #FFE9E8; color: #B22E2B; }
.event.soon[b-usbu9wxnxx] { border-left-color: #F0A020; background: #FFF1D2; color: #9B6500; }

/* ===== 우측 상세 ===== */
.detail-table-wrap[b-usbu9wxnxx] { position: absolute; left: 0; right: 0; top: 42px; bottom: 0; overflow: auto; background: #fff; }
/* 칸 너비 합 + 비고 140px 보다 좁아지면 비고가 0 이 되어 사라진다 → 그보다 좁으면 가로로 스크롤한다. */
.order-detail-table[b-usbu9wxnxx] { width: 100%; min-width: 900px; border-collapse: collapse; table-layout: fixed; }
.order-detail-table th[b-usbu9wxnxx] {
    position: sticky; top: 0; z-index: 2; height: 38px; background: #264558; color: #fff;
    text-align: left; padding: 0 5px; font-size: 11.5px; font-weight: 700;
    border-right: 1px solid #3B596B; white-space: nowrap;
}
.order-detail-table td[b-usbu9wxnxx] {
    height: 29px; padding: 2px 5px; border-bottom: 1px solid #E0E0E0;
    font-size: 11.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.order-detail-table tbody tr[b-usbu9wxnxx] { cursor: pointer; }
.order-detail-table tbody tr:hover td[b-usbu9wxnxx] { background: #E8F4F2; }
.order-detail-table tr.selected td[b-usbu9wxnxx] { background: #B6DCD8; }
.order-detail-table .empty[b-usbu9wxnxx] { text-align: center; color: #777; padding: 24px; cursor: default; }

.c-no[b-usbu9wxnxx] { width: 128px; } .c-partner[b-usbu9wxnxx] { width: 86px; } .c-item[b-usbu9wxnxx] { width: 90px; }
.c-qty[b-usbu9wxnxx] { width: 62px; } .c-ordered[b-usbu9wxnxx] { width: 86px; } .c-due[b-usbu9wxnxx] { width: 86px; }
.c-prod[b-usbu9wxnxx] { width: 70px; } .c-deliv[b-usbu9wxnxx] { width: 70px; } .c-dday[b-usbu9wxnxx] { width: 72px; }

.center[b-usbu9wxnxx] { text-align: center; }
.right[b-usbu9wxnxx] { text-align: right; }
.status[b-usbu9wxnxx] {
    display: inline-block; min-width: 44px; text-align: center; padding: 1px 4px;
    border: 1px solid #BFC5CA; background: #F5F5F5; font-size: 10.5px;
}
.status.prod-wait[b-usbu9wxnxx] { color: #666; }
.status.prod-run[b-usbu9wxnxx] { color: #11699A; background: #E9F4FA; border-color: #9DC6DC; }
.status.done[b-usbu9wxnxx] { color: #24715F; background: #E8F7F3; border-color: #9FD4C7; }
.status.del-wait[b-usbu9wxnxx] { color: #A36B00; background: #FFF6DE; border-color: #E8C77C; }
.status.delay[b-usbu9wxnxx] { color: #B22E2B; background: #FFE9E8; border-color: #E4A09D; }
.dday[b-usbu9wxnxx] { font-weight: 700; }
.dday.soon[b-usbu9wxnxx] { color: #D27D00; }
.dday.delay[b-usbu9wxnxx] { color: #D43B38; }
.dday.ok[b-usbu9wxnxx] { color: #2B785E; }
/* /Components/Pages/PackerDefectHistory.razor.rz.scp.css */
/* 05-04 자동포앙기 불량이력관리 고유 값. 공통 골격은 wwwroot/quality-screen.css 참조. */
.rows-3[b-0kbds1xymw] { grid-template-rows: 106px 94px minmax(0, 1fr); }

.c-code[b-0kbds1xymw] { width: 92px; } .c-num[b-0kbds1xymw] { width: 105px; } .c-small[b-0kbds1xymw] { width: 90px; }

.d-date[b-0kbds1xymw] { width: 105px; } .d-eq[b-0kbds1xymw] { width: 120px; } .d-order[b-0kbds1xymw] { width: 130px; }
.d-partner[b-0kbds1xymw] { width: 110px; } .d-item[b-0kbds1xymw] { width: 120px; } .d-name[b-0kbds1xymw] { width: 110px; }
.d-small[b-0kbds1xymw] { width: 95px; }
/* /Components/Pages/PackerOutput.razor.rz.scp.css */
/* 06-04 자동포앙기 생산량 관리 고유 값. 공통 골격은 wwwroot/equipment-screen.css 참조. */
.rows-3[b-8zh8o8rqg9] { grid-template-rows: 106px 94px minmax(0, 1fr); }

.c-date[b-8zh8o8rqg9] { width: 130px; } .c-code[b-8zh8o8rqg9] { width: 115px; } .c-name[b-8zh8o8rqg9] { width: 165px; }
.c-item[b-8zh8o8rqg9] { width: 160px; } .c-qty[b-8zh8o8rqg9] { width: 130px; } .c-cum[b-8zh8o8rqg9] { width: 140px; }
.c-last[b-8zh8o8rqg9] { width: 180px; } .c-state[b-8zh8o8rqg9] { width: 120px; }

.panel-head .load-error[b-8zh8o8rqg9] { margin-left: 10px; font-size: 13px; font-weight: 700; color: #FFD2CE; }
/* /Components/Pages/PartnerCode.razor.rz.scp.css */
/* 01-01 거래처코드 고유 좌표. 공통 골격은 wwwroot/mes-screen.css 참조. */
.lbl-name[b-zz5vjbmunq] { left: 30px; }
.lbl-bizno[b-zz5vjbmunq] { left: 317px; }
.lbl-address[b-zz5vjbmunq] { left: 622px; }
.search-name[b-zz5vjbmunq] { left: 107px; width: 180px; }
.search-bizno[b-zz5vjbmunq] { left: 410px; width: 180px; }
.search-address[b-zz5vjbmunq] { left: 667px; width: 360px; }

.data-table[b-zz5vjbmunq] { min-width: 1900px; width: 1900px; }

/* Designer.cs 컬럼 폭 */
.c-code[b-zz5vjbmunq] { width: 100px; } .c-name[b-zz5vjbmunq] { width: 200px; } .c-ceo[b-zz5vjbmunq] { width: 100px; }
.c-bizno[b-zz5vjbmunq] { width: 150px; } .c-tel[b-zz5vjbmunq] { width: 150px; } .c-address[b-zz5vjbmunq] { width: 200px; }
.c-person[b-zz5vjbmunq] { width: 100px; } .c-cell[b-zz5vjbmunq] { width: 150px; } .c-email[b-zz5vjbmunq] { width: 200px; }
.c-desc[b-zz5vjbmunq] { width: 200px; } .c-use[b-zz5vjbmunq] { width: 100px; } .c-created[b-zz5vjbmunq] { width: 100px; }
.c-createusr[b-zz5vjbmunq] { width: 100px; } .c-updated[b-zz5vjbmunq] { width: 100px; } .c-updateusr[b-zz5vjbmunq] { width: 100px; }

/* 상세 폼 : 좌표는 42px 헤더 기준 */
.l-code[b-zz5vjbmunq] { top: 14px; } .f-code[b-zz5vjbmunq] { top: 14px; }
.l-name[b-zz5vjbmunq] { top: 52px; } .f-name[b-zz5vjbmunq] { top: 52px; }
.l-ceo[b-zz5vjbmunq] { top: 93px; } .f-ceo[b-zz5vjbmunq] { top: 93px; }
.l-type[b-zz5vjbmunq] { top: 135px; } .f-type[b-zz5vjbmunq] { left: 120px; top: 135px; gap: 11px; }
.l-bizno[b-zz5vjbmunq] { top: 176px; } .f-bizno[b-zz5vjbmunq] { top: 176px; }
.l-tel[b-zz5vjbmunq] { top: 221px; } .f-tel[b-zz5vjbmunq] { top: 221px; }
.l-address[b-zz5vjbmunq] { top: 267px; } .f-address[b-zz5vjbmunq] { top: 267px; }
.l-person[b-zz5vjbmunq] { top: 364px; } .f-person[b-zz5vjbmunq] { top: 364px; }
.l-cell[b-zz5vjbmunq] { top: 408px; } .f-cell[b-zz5vjbmunq] { top: 408px; }
.l-email[b-zz5vjbmunq] { top: 452px; } .f-email[b-zz5vjbmunq] { top: 452px; }
.l-desc[b-zz5vjbmunq] { top: 494px; } .f-desc[b-zz5vjbmunq] { top: 494px; }
.l-use[b-zz5vjbmunq] { top: 591px; } .f-use[b-zz5vjbmunq] { left: 110px; top: 591px; gap: 17px; }
.f-error[b-zz5vjbmunq] { top: 626px; }
/* /Components/Pages/ProcessCode.razor.rz.scp.css */
/* 01-03 공정코드 고유 좌표. 공통 골격은 wwwroot/mes-screen.css 참조. */
.screen-page[b-3buot0npan] {
    /* 상세 패널이 559px 로 더 넓다. 목록 오른쪽 여백(--list-right)은 .work-area.split 이 이 값에서 계산한다. */
    --detail-width: 559px;
    /* 입력칸이 380px 에서 끝나므로 「필수」 · 「선택」 표시는 그 오른쪽 */
    --req-left: 386px;
}

.q1l[b-3buot0npan] { left: 30px; }
.q1[b-3buot0npan] { left: 107px; width: 180px; }

.data-table[b-3buot0npan] { min-width: 1320px; width: 1320px; }

.c-code[b-3buot0npan] { width: 90px; } .c-name[b-3buot0npan] { width: 100px; } .c-order[b-3buot0npan] { width: 90px; }
.c-class[b-3buot0npan] { width: 125px; } .c-defect[b-3buot0npan] { width: 105px; } .c-std[b-3buot0npan] { width: 110px; }
.c-stdnote[b-3buot0npan] { width: 170px; } .c-use[b-3buot0npan] { width: 90px; }
.c-createusr[b-3buot0npan] { width: 90px; } .c-created[b-3buot0npan] { width: 150px; }
.c-updateusr[b-3buot0npan] { width: 90px; } .c-updated[b-3buot0npan] { width: 150px; }

/* 상세 폼 : 세로로 셋으로 나눈다. 위쪽 고정 좌표 블록(260px) → 작업표준 상자(남는 높이 전부) → 바닥 블록(사용여부·오류·버튼).
   좌우 여백은 30px 로 같다(사용자 요청). 라벨은 105px 오른쪽 정렬이라 가장 긴 '작업표준서'가 30px 께서 시작한다. */
.detail-form[b-3buot0npan] { display: flex; flex-direction: column; }
.form-top[b-3buot0npan] { position: relative; flex: 0 0 260px; }
.form-bottom[b-3buot0npan] { flex: 0 0 auto; padding: 10px 0 18px; }

.detail-label[b-3buot0npan] { left: 0; width: 105px; }
.detail-input[b-3buot0npan], .code-label[b-3buot0npan] { left: 120px; width: 260px; }

.l-code[b-3buot0npan] { top: 16px; } .f-code[b-3buot0npan] { top: 16px; }
.l-name[b-3buot0npan] { top: 56px; } .f-name[b-3buot0npan] { top: 56px; }
.l-order[b-3buot0npan] { top: 96px; } .f-order[b-3buot0npan] { top: 96px; }
.l-class[b-3buot0npan] { top: 140px; } .f-class[b-3buot0npan] { left: 119px; top: 140px; gap: 28px; }
.l-defect[b-3buot0npan] { top: 182px; } .f-defect[b-3buot0npan] { left: 119px; top: 182px; gap: 26px; }
.l-std[b-3buot0npan] { top: 226px; }

/* '작업표준 이미지 등록하기' 는 숨긴 파일 입력(.std-file)을 여는 label 이다. */
.std-btn[b-3buot0npan] {
    position: absolute; right: 30px; top: 226px; height: 31px; padding: 0 14px;
    display: flex; align-items: center;
    border: 0; background: #5D9EA0; color: #fff; font-size: 14px; cursor: pointer;
}
[b-3buot0npan] .std-file { display: none; }   /* InputFile 은 자식 컴포넌트라 ::deep 이 있어야 스코프 CSS 가 닿는다 */
.std-box[b-3buot0npan] {
    flex: 1 1 auto; min-height: 110px; margin: 0 30px;
    border: 1px solid #8A8A8A; display: flex; flex-direction: column;
}
.std-cap[b-3buot0npan] { flex: 0 0 32px; background: #98C097; display: flex; align-items: center; padding-left: 12px; font-size: 15px; }
.std-img[b-3buot0npan] {
    flex: 1 1 auto; min-height: 48px; margin: 10px; border: 1px solid #8A8A8A; overflow: hidden;
    display: flex; align-items: center; justify-content: center;
    color: #B4C1C4; font: 700 56px Arial;
}
.std-note[b-3buot0npan] { flex: 0 0 auto; display: flex; align-items: center; gap: 10px; padding: 0 10px 10px; }
.std-note input[b-3buot0npan] { height: 26px; flex: 1; border: 1px solid #cfcfcf; }
.std-file-name[b-3buot0npan] {
    margin-left: auto; margin-right: 8px; max-width: 60%;
    font-size: 12px; color: #1F3D1F; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.std-remove[b-3buot0npan] {
    flex: 0 0 22px; width: 22px; height: 22px; margin-right: 8px; padding: 0; border: 0;
    background: var(--mes-delete); color: #fff; font-size: 12px; line-height: 22px; cursor: pointer;
}
.std-remove:disabled[b-3buot0npan] { opacity: .42; cursor: not-allowed; }
.std-btn.disabled[b-3buot0npan] { opacity: .42; cursor: not-allowed; pointer-events: none; }
.std-img img[b-3buot0npan] { display: block; max-width: 100%; max-height: 100%; object-fit: contain; }

/* 바닥 블록 : 사용여부 행 8px 아래에 버튼. 오류문구는 있을 때만 그 사이에 끼어든다.
   공통 CSS 의 절대좌표(.crud left/bottom, .validation-summary left/right)를 흐름 배치로 되돌린다. */
.use-row[b-3buot0npan] { position: relative; height: 27px; }
.f-use[b-3buot0npan] { left: 118px; top: 0; gap: 17px; }
.f-error[b-3buot0npan] { position: static; margin: 6px 20px 0 120px; }
.crud[b-3buot0npan] { position: static; margin: 8px 0 0 30px; }
/* /Components/Pages/ProductionResult.razor.rz.scp.css */
/* 03-03 생산실적등록. html/03_생산관리/03_생산실적등록_v7스타일.html 이식. 좌 31.5% / 우 68.5%. */
.result-page[b-b2ccuwytiw] { width: 100%; height: 100%; display: grid; grid-template-columns: 31.5% 68.5%; gap: 3px; }

.panel[b-b2ccuwytiw] { background: #fff; border: 1px solid #858585; position: relative; overflow: hidden; }
.panel-head[b-b2ccuwytiw] {
    height: 42px; background: var(--mes-panel-head); color: #fff;
    display: flex; align-items: center; padding-left: 5px; font-size: 18px; font-weight: 700;
}
.head-icon[b-b2ccuwytiw] { width: 28px; height: 42px; display: flex; align-items: center; justify-content: center; color: var(--mes-orange); }
.head-icon svg[b-b2ccuwytiw] { width: 20px; height: 20px; }

/* ===== 좌 : 작업 일정 ===== */
.left[b-b2ccuwytiw] { display: flex; flex-direction: column; min-width: 0; }
.schedule-toolbar[b-b2ccuwytiw] { height: 54px; display: flex; align-items: center; padding: 0 13px; gap: 7px; border-bottom: 1px solid #A0A0A0; }
.week-btn[b-b2ccuwytiw] { height: 31px; min-width: 48px; border: 1px solid #696969; background: #718092; color: #fff; font-weight: 700; cursor: pointer; }
.week-num[b-b2ccuwytiw] { height: 31px; min-width: 82px; border: 1px solid #696969; background: #777; color: #fff; font-weight: 700; cursor: pointer; }
.base-radio[b-b2ccuwytiw] { margin-left: auto; display: flex; gap: 10px; font-size: 13.5px; }
.base-radio label[b-b2ccuwytiw] { display: flex; align-items: center; gap: 3px; white-space: nowrap; cursor: pointer; }
.base-radio input[b-b2ccuwytiw] { accent-color: #0B78D0; }

.schedule-table[b-b2ccuwytiw] { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: 15px; }
.schedule-table th[b-b2ccuwytiw] { height: 40px; background: #4358BB; color: #fff; font-size: 16px; font-weight: 400; border-right: 1px solid #8790C4; }
.schedule-table td[b-b2ccuwytiw] { height: 42px; border-bottom: 1px solid #C4C4C4; border-right: 1px solid #C4C4C4; padding: 4px 7px; }
.schedule-table tbody tr[b-b2ccuwytiw] { cursor: pointer; }
.schedule-table tbody tr:hover td[b-b2ccuwytiw] { background: #E5F3F1; }
.schedule-table tr.selected td[b-b2ccuwytiw] { background: #CBD3F0; }
.schedule-table tr.other td[b-b2ccuwytiw] { background: #D9E4E8; cursor: default; }
.dow[b-b2ccuwytiw] { width: 64px; text-align: center; font-size: 17px; }
.date[b-b2ccuwytiw] { width: 120px; }
.donecol[b-b2ccuwytiw] { width: 70px; text-align: center; }
.sat[b-b2ccuwytiw] { color: #007DEB; }
.sun[b-b2ccuwytiw] { color: #F22; }

/* ===== 우 ===== */
.right[b-b2ccuwytiw] { display: flex; flex-direction: column; gap: 3px; min-width: 0; min-height: 0; overflow: hidden; }
.order-panel[b-b2ccuwytiw], .process-panel[b-b2ccuwytiw], .bottom-panel[b-b2ccuwytiw] { background: #fff; border: 1px solid #858585; position: relative; overflow: hidden; }
.order-panel[b-b2ccuwytiw] { flex: 0 0 184px; }
.order-panel.empty-pick[b-b2ccuwytiw] { display: flex; align-items: center; justify-content: center; color: #777; font-size: 15px; }
.order-panel > .panel-head[b-b2ccuwytiw] { position: absolute; left: 0; right: 0; top: 0; }
.order-no[b-b2ccuwytiw] { margin-left: auto; margin-right: 12px; color: #00AEEF; font-size: 17px; font-weight: 700; }
.order-grid[b-b2ccuwytiw] {
    position: absolute; left: 10px; right: 10px; top: 49px; bottom: 7px;
    display: grid; grid-template-columns: 84px 1fr 78px 1.1fr 78px 150px;
    grid-template-rows: 28px 28px 48px; column-gap: 8px; row-gap: 6px; align-items: center;
}
.olabel[b-b2ccuwytiw] { text-align: right; font-size: 14px; white-space: nowrap; }
.field[b-b2ccuwytiw] {
    height: 28px; padding: 3px 6px; background: #E7E7E7; border: 1px solid #C6C6C6;
    color: #111; font-size: 14px; display: flex; align-items: center; overflow: hidden;
}
.note[b-b2ccuwytiw] { height: 48px; align-items: flex-start; padding-top: 6px; }
.row2[b-b2ccuwytiw] { grid-row: 2; }
.extra-pair[b-b2ccuwytiw] { grid-row: 2; display: grid; grid-template-columns: 1fr 1fr; gap: 6px; height: 28px; }
.extra-pair .field[b-b2ccuwytiw] { min-width: 0; }
.note-row[b-b2ccuwytiw] {
    grid-column: 1 / 7; grid-row: 3; display: grid;
    grid-template-columns: 84px minmax(0,1fr) 128px minmax(0,1fr); column-gap: 8px; align-items: start;
}
.note-row .olabel[b-b2ccuwytiw] { padding-top: 4px; line-height: 20px; }
.note-row .field[b-b2ccuwytiw] { width: 100%; }

.process-zone[b-b2ccuwytiw] { flex: 0 0 auto; display: grid; grid-template-columns: minmax(0,1fr) 140px; gap: 3px; align-items: start; }
.process-panel > .panel-head[b-b2ccuwytiw] { position: relative; }
.process-body[b-b2ccuwytiw] {
    display: grid; grid-template-columns: repeat(6, minmax(118px, 1fr)); grid-auto-rows: 136px;
    gap: 8px; align-items: start; align-content: start;
    min-width: 0; max-height: 280px; overflow-y: auto; overflow-x: hidden; padding: 10px;
}
.proc-card[b-b2ccuwytiw] {
    width: 100%; min-width: 118px; height: 136px; border: 8px solid #26A69A; background: #fff;
    display: grid; grid-template-rows: 42px 40px 1fr;
}
.proc-card.done[b-b2ccuwytiw] { border-color: #4B2E83; }
.proc-card .pname[b-b2ccuwytiw] { background: #4358BB; color: #fff; display: flex; align-items: center; justify-content: center; font-size: 18px; }
.proc-card .pdate[b-b2ccuwytiw] { display: flex; align-items: center; justify-content: center; font-size: 15px; }
.proc-card .pstate[b-b2ccuwytiw] { display: flex; align-items: center; justify-content: center; color: #fff; background: #006C61; font-size: 14px; }
.proc-card.done .pstate[b-b2ccuwytiw] { background: #1B0752; }

.progress-panel[b-b2ccuwytiw] { height: 198px; border: 1px solid #858585; background: #fff; display: flex; flex-direction: column; overflow: hidden; }
.progress-panel .panel-head[b-b2ccuwytiw] { flex: 0 0 42px; justify-content: center; padding-left: 0; font-size: 15px; }
.progress-content[b-b2ccuwytiw] { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; }
.progress-content .num[b-b2ccuwytiw] { font-size: 34px; font-weight: 700; line-height: 1; }
.defect-view[b-b2ccuwytiw] { width: 124px; height: 36px; border: 1px solid #9B3434; background: #FF888A; color: #fff; font-size: 13px; font-weight: 700; cursor: pointer; }

/* ===== 하단 2분할 ===== */
.bottom-panel[b-b2ccuwytiw] { flex: 1 1 auto; min-height: 485px; display: grid; grid-template-columns: 1fr 1fr; gap: 3px; border: 0; background: transparent; }
.result-box[b-b2ccuwytiw], .complete-box[b-b2ccuwytiw] {
    border: 1px solid #858585; background: #fff; position: relative; overflow: hidden;
    display: flex; flex-direction: column; min-height: 0;
}
.sub-head[b-b2ccuwytiw] { height: 42px; flex: 0 0 42px; display: flex; align-items: center; padding: 0 12px; font-size: 18px; font-weight: 700; }
.result-box .sub-head[b-b2ccuwytiw] { background: #87CEEB; }
.complete-box .sub-head[b-b2ccuwytiw] { background: #0B3C6B; color: #fff; }

.form-area[b-b2ccuwytiw], .complete-form[b-b2ccuwytiw] { height: 252px; flex: 0 0 252px; padding: 13px 18px 0; }
.form-row[b-b2ccuwytiw] { display: grid; grid-template-columns: 105px 1fr; gap: 10px; align-items: center; margin-bottom: 9px; }
.form-row > label[b-b2ccuwytiw] { text-align: right; font-size: 14.5px; }
.input[b-b2ccuwytiw] {
    height: 29px; background: #fff; padding: 3px 7px; font-size: 14px;
    border-style: solid; border-width: 1px;
    border-color: #ECECEC #E6E6E6 #838383 #ECECEC;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.96);
}
.input.read[b-b2ccuwytiw] { background: #E7E7E7; color: #666; border: 1px solid #C9C9C9; box-shadow: none; }
.inline[b-b2ccuwytiw] { display: flex; gap: 8px; align-items: center; }
.std-btn[b-b2ccuwytiw] { height: 29px; width: 138px; border: 0; background: #5D9EA0; color: #fff; cursor: pointer; }

.qty-grid[b-b2ccuwytiw] { display: grid; grid-template-columns: 1fr 1fr 96px; gap: 9px; margin-top: 22px; }
.qty-box[b-b2ccuwytiw], .stat[b-b2ccuwytiw], .defect-btn[b-b2ccuwytiw] { height: 72px; }
.qty-box[b-b2ccuwytiw], .stat[b-b2ccuwytiw] { border: 1px solid #D2D2D2; }
.qty-box .qh[b-b2ccuwytiw], .stat .sh[b-b2ccuwytiw] { height: 28px; color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; }
.qty-box.good .qh[b-b2ccuwytiw], .stat.good .sh[b-b2ccuwytiw] { background: #078B86; }
.qty-box.bad .qh[b-b2ccuwytiw] { background: #FF430C; }
.stat.bad .sh[b-b2ccuwytiw] { background: #ED4A1B; }
.stat.rate .sh[b-b2ccuwytiw] { background: #2B73D2; }
.qty-box .qv[b-b2ccuwytiw], .stat .sv[b-b2ccuwytiw] { height: 42px; display: flex; align-items: center; justify-content: center; font-size: 25px; background: #fff; }
.stat .sv[b-b2ccuwytiw] { font-weight: 700; }
.qty-box.bad .qv[b-b2ccuwytiw], .stat.bad .sv[b-b2ccuwytiw] { background: #E4E4E4; }
.defect-btn[b-b2ccuwytiw] { border: 1px solid #9B3434; background: #FF7C80; color: #7A0000; font-weight: 700; font-size: 16px; cursor: pointer; }

/* margin-top: auto — 세로 flex 인 박스에서 버튼 줄을 바닥으로 민다.
   위쪽 폼이 고정 높이라 이게 없으면 아래에 빈 공간이 그대로 남는다. */
.action-row[b-b2ccuwytiw], .complete-actions[b-b2ccuwytiw] {
    margin: 12px 18px 18px; margin-top: auto;
    display: grid; gap: 7px;
}
.action-row[b-b2ccuwytiw] { grid-template-columns: 1fr 120px 85px; }
.complete-actions[b-b2ccuwytiw] { grid-template-columns: 1fr 140px; }
.action-row button[b-b2ccuwytiw], .complete-actions button[b-b2ccuwytiw] { height: 48px; border: 1px solid #505050; font-size: 16px; font-weight: 700; cursor: pointer; }
.action-row button:disabled[b-b2ccuwytiw], .complete-actions button:disabled[b-b2ccuwytiw] { opacity: .42; cursor: not-allowed; }
.complete-proc[b-b2ccuwytiw], .prod-complete[b-b2ccuwytiw] { background: #0067A0; color: #fff; }
.skip-proc[b-b2ccuwytiw] { background: #888; color: #222; }
.delete-proc[b-b2ccuwytiw] { background: #777; color: #222; }
.cancel[b-b2ccuwytiw] { background: #E56D72; color: #4E0000; }

.complete-grid[b-b2ccuwytiw] { display: grid; grid-template-columns: 110px 1fr; gap: 9px 10px; align-items: center; }
.complete-grid label[b-b2ccuwytiw] { text-align: right; font-size: 14.5px; }
.stats[b-b2ccuwytiw] { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 9px; margin-top: 18px; }

.notice-bar[b-b2ccuwytiw] { flex: 0 0 auto; padding: 8px 12px; background: #fff; border: 1px solid #C8CDD1; font-size: 13px; color: #1B6B5C; }

/* ===== 3-C 에서 추가 ===== */
/* 공정 카드를 눌러 고른다. 상태별 색과 선택 테두리. */
.proc-card[b-b2ccuwytiw] { cursor: pointer; }
.proc-card.skip[b-b2ccuwytiw] { border-color: #8A8A8A; }
.proc-card.skip .pstate[b-b2ccuwytiw] { background: #6E7A86; }
.proc-card.picked[b-b2ccuwytiw] { outline: 3px solid var(--mes-orange); outline-offset: -3px; }
.panel-head .head-hint[b-b2ccuwytiw] { margin-left: auto; padding-right: 10px; font-size: 12px; font-weight: 400; color: #C9D3DC; }

/* 작업표준 이미지 미리보기 */
/* 작업표준서 창 — 원본 PC앱의 별도 창(1536×832)에 맞춘 크기. 화면이 작으면 화면에 맞춘다. */
.std-modal[b-b2ccuwytiw] {
    position: fixed; inset: 0; z-index: 60; background: rgba(0, 0, 0, .55);
    display: flex; align-items: center; justify-content: center; padding: 20px;
}
.std-window[b-b2ccuwytiw] {
    width: min(1536px, 94vw); height: min(832px, 90vh);
    background: #fff; border: 1px solid #5A5A5A; box-shadow: 0 10px 40px rgba(0, 0, 0, .45);
    display: flex; flex-direction: column; overflow: hidden;
}
.std-foot[b-b2ccuwytiw] { flex: 0 0 26px; display: flex; align-items: center; justify-content: center;
            background: #F4F6F8; border-top: 1px solid #DDE1E6; font-size: 12px; color: #6B7280; }
.std-bar[b-b2ccuwytiw] {
    flex: 0 0 38px; display: flex; align-items: center; justify-content: space-between;
    padding: 0 10px; background: #EEF3F6; border-bottom: 1px solid #C9C9C9;
    font-size: 13.5px; font-weight: 700; color: #24405A;
}
.std-close[b-b2ccuwytiw] { height: 24px; padding: 0 10px; border: 1px solid #9AA7B1; background: #fff; cursor: pointer; font-size: 12.5px; }
.std-canvas[b-b2ccuwytiw] {
    flex: 1 1 auto; min-height: 0; overflow: auto; background: #FAFAFA;
    display: flex; align-items: center; justify-content: center; padding: 8px;
}
.std-canvas img[b-b2ccuwytiw] { max-width: 100%; max-height: 100%; object-fit: contain; }

/* 3-E 에서 연결할 영역 안내 */
.stage-note[b-b2ccuwytiw] { padding: 6px 10px 0; font-size: 12px; color: #7A828A; }
.notice-bar.error[b-b2ccuwytiw] { color: #BD3737; }

/* 공정이 11개라 카드가 두 줄이 된다. 카드를 낮춰 아래 '공정 실적 등록' 버튼이 화면에 남게 한다. */
.proc-card[b-b2ccuwytiw] { height: 84px; min-width: 104px; border-width: 4px; grid-template-rows: 32px 22px 1fr; }
.proc-card .pname[b-b2ccuwytiw] { font-size: 15px; }
.proc-card .pdate[b-b2ccuwytiw] { font-size: 13px; }
.proc-card .pstate[b-b2ccuwytiw] { font-size: 12.5px; }
.process-body[b-b2ccuwytiw] { grid-template-columns: repeat(6, minmax(104px, 1fr)); grid-auto-rows: 84px; gap: 6px; max-height: 186px; padding: 8px; }
.progress-panel[b-b2ccuwytiw] { height: 228px; }
.order-panel[b-b2ccuwytiw] { flex: 0 0 168px; }

/* 입력란이 7줄로 늘어 폼이 커졌다. 줄 간격과 높이를 줄이고 작업자2·3 은 한 줄에 둔다. */
.form-area[b-b2ccuwytiw], .complete-form[b-b2ccuwytiw] { height: 280px; flex: 0 0 280px; }
.form-row[b-b2ccuwytiw] { margin-bottom: 5px; }
.input[b-b2ccuwytiw], .std-btn[b-b2ccuwytiw] { height: 26px; }
.form-row.pair .inline input[b-b2ccuwytiw] { flex: 1; min-width: 0; }
.qty-grid[b-b2ccuwytiw] { margin-top: 12px; }
.qty-box[b-b2ccuwytiw], .stat[b-b2ccuwytiw], .defect-btn[b-b2ccuwytiw] { height: 64px; }
.qty-box .qv[b-b2ccuwytiw], .stat .sv[b-b2ccuwytiw] { height: 36px; font-size: 22px; }
.stats[b-b2ccuwytiw] { margin-top: 12px; }
.bottom-panel[b-b2ccuwytiw] { min-height: 400px; }

/* 화면이 낮으면 오른쪽 열을 스크롤해서라도 버튼에 닿게 한다. */
.right[b-b2ccuwytiw] { overflow-y: auto; }

/* 완료 열 : ✓ 생산완료 확정 · ◐ 전 공정 완료(확정 전) */
.donecol.fin[b-b2ccuwytiw] { color: #1B0752; font-weight: 700; }
.donecol.allstep[b-b2ccuwytiw] { color: var(--mes-orange); font-weight: 700; font-size: 17px; }
/* /Components/Pages/ProductionStatus.razor.rz.scp.css */
/* 03-02 생산진행목록. html/03_생산관리/02_생산진행목록_v7스타일.html 이식. */
.production-status-page[b-88ies074bm] { position: relative; width: 100%; height: 100%; overflow: hidden; }

.panel-head[b-88ies074bm] {
    height: 42px; background: var(--mes-panel-head); color: #fff;
    display: flex; align-items: center; padding-left: 5px; font-size: 18px; font-weight: 700;
}
.head-icon[b-88ies074bm] { width: 28px; height: 42px; display: flex; align-items: center; justify-content: center; color: var(--mes-orange); }
.head-icon svg[b-88ies074bm] { width: 20px; height: 20px; }

.search-section[b-88ies074bm] { position: absolute; left: 0; right: 0; top: 0; height: 106px; background: #fff; overflow: hidden; }
.search-fields[b-88ies074bm] {
    position: absolute; left: 0; right: 0; top: 42px; height: 64px; background: #fff;
    display: flex; align-items: center; gap: 20px; padding: 0 154px 0 20px;
}
.search-group[b-88ies074bm] { display: flex; align-items: center; gap: 7px; white-space: nowrap; }
.search-group label[b-88ies074bm] { font-size: 15.5px; }
.search-input[b-88ies074bm] { height: 31px; padding: 2px 7px; border: 1px solid #D4D4D4; background: #fff; outline: none; font-size: 15px; }
.search-input.date[b-88ies074bm] { width: 145px; }
.search-input.normal[b-88ies074bm] { width: 180px; }
.search-btn[b-88ies074bm] {
    position: absolute; right: 7px; top: 7px; width: 140px; height: 49px;
    border: 0; background: var(--mes-new); color: #fff;
    display: flex; align-items: center; justify-content: center; gap: 13px;
    font-size: 16px; font-weight: 700; cursor: pointer;
}
.search-btn svg[b-88ies074bm] { width: 24px; height: 24px; }

.list-panel[b-88ies074bm] {
    position: absolute; left: 0; right: 0; top: 112px; bottom: 0;
    background: #fff; border: 1px solid #8A8A8A; overflow: hidden;
}
.table-wrap[b-88ies074bm] { position: absolute; left: 0; right: 0; top: 42px; bottom: 0; overflow: auto; background: #fff; }
.data-table[b-88ies074bm] { border-collapse: collapse; table-layout: fixed; min-width: 1500px; width: 100%; background: #fff; font-size: 13.33px; }
.data-table th[b-88ies074bm] {
    position: sticky; top: 0; z-index: 2; height: 38px; padding: 0 8px;
    background: var(--mes-grid-head); color: #fff; font-weight: 700; text-align: left;
    white-space: nowrap; border-bottom: 1px solid var(--mes-grid-line);
}
.data-table td[b-88ies074bm] {
    height: 31px; padding: 3px 8px; background: #fff; color: #000;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    border-bottom: 1px solid var(--mes-grid-line);
}
.data-table tbody tr[b-88ies074bm] { cursor: pointer; }
.data-table tbody tr:hover td[b-88ies074bm] { background: #E8F4F2; }
.data-table tbody tr.selected td[b-88ies074bm], .data-table tbody tr.selected:hover td[b-88ies074bm] { background: var(--mes-grid-selected); }
.data-table .empty[b-88ies074bm] { text-align: center; color: #777; padding: 26px; cursor: default; }
.center[b-88ies074bm] { text-align: center; }
.right[b-88ies074bm] { text-align: right; }

.c-no[b-88ies074bm] { width: 150px; } .c-partner[b-88ies074bm] { width: 120px; } .c-item[b-88ies074bm] { width: 140px; }
.c-qty[b-88ies074bm] { width: 100px; } .c-ordered[b-88ies074bm] { width: 112px; } .c-due[b-88ies074bm] { width: 112px; }
.c-proc[b-88ies074bm] { width: 120px; } .c-rate[b-88ies074bm] { width: 135px; } .c-state[b-88ies074bm] { width: 100px; }
.c-done[b-88ies074bm] { width: 95px; } .c-def[b-88ies074bm] { width: 90px; } .c-last[b-88ies074bm] { width: 140px; } .c-note[b-88ies074bm] { width: 170px; }

.progress[b-88ies074bm] { height: 17px; background: #EEF1F3; border: 1px solid #CCD2D6; position: relative; }
.progress i[b-88ies074bm] { display: block; height: 100%; background: #26A69A; }
.progress span[b-88ies074bm] { position: absolute; left: 0; right: 0; top: -1px; text-align: center; font-size: 11px; line-height: 16px; }

.status[b-88ies074bm] { display: inline-block; min-width: 52px; padding: 3px 7px; text-align: center; border: 1px solid #C6CCD1; font-size: 12px; }
.status.plan[b-88ies074bm] { background: #EEF1F4; }
.status.run[b-88ies074bm] { background: #D7F0EC; border-color: #8FCFC6; }
.status.done[b-88ies074bm] { background: #DFF0D8; border-color: #A5C79A; }
.status.warn[b-88ies074bm] { background: #FCEFD5; border-color: #E6BE73; }
.status.late[b-88ies074bm] { background: #FBE0DF; border-color: #E3A19E; color: #B22924; font-weight: 700; }
/* /Components/Pages/RoleManagement.razor.rz.scp.css */
/* 08-02 권한관리. html/08_시스템/02_권한관리_원본동일_v7스타일.html 이식.
   조회조건 106px + 본문(목록 / 우측 431px : 상세 273px + 기능리스트 + 버튼 63px). */
.sys-page[b-bnfroi8lo3] { height: 100%; display: grid; grid-template-rows: 106px minmax(0, 1fr); gap: 3px; }

.panel[b-bnfroi8lo3] { background: #fff; border: 1px solid #858585; position: relative; overflow: hidden; }
.panel-head[b-bnfroi8lo3] {
    height: 42px; background: var(--mes-panel-head); color: #fff;
    display: flex; align-items: center; gap: 8px; padding: 0 8px; font-size: 18px; font-weight: 700;
}
.panel-head .icon[b-bnfroi8lo3] { color: var(--mes-orange); }
.count[b-bnfroi8lo3] { margin-left: auto; font-size: 13px; font-weight: 500; color: #dce4e9; }

.search-fields[b-bnfroi8lo3] {
    position: absolute; left: 0; right: 0; top: 42px; height: 64px;
    display: flex; align-items: center; gap: 10px; padding: 0 16px;
}
.search-fields label[b-bnfroi8lo3] { font-size: 15.5px; white-space: nowrap; }
.search-fields input[b-bnfroi8lo3], .search-fields select[b-bnfroi8lo3] {
    height: 31px; padding: 2px 7px; border: 1px solid #D4D4D4; background: #fff; outline: none; font-size: 15px;
}
.authid[b-bnfroi8lo3], .authname[b-bnfroi8lo3] { width: 170px; }
.use-search[b-bnfroi8lo3] { width: 130px; }
.search-btn[b-bnfroi8lo3] {
    margin-left: 8px; height: 32px; width: 130px; border: 0;
    background: var(--mes-new); color: #fff; font-size: 15px; font-weight: 700; cursor: pointer;
}

/* 우측 폭은 --right-w 로 잡는다. split-pane.js 가 드래그 중에 이 값만 바꾼다.
   가운데 7px 이 분할선이고, 예전의 3px gap 자리를 대신한다. */
.work[b-bnfroi8lo3] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 7px var(--right-w, 431px);
    gap: 0; min-height: 0;
}

.splitter[b-bnfroi8lo3] { position: relative; cursor: col-resize; touch-action: none; background: transparent; }
.splitter[b-bnfroi8lo3]::before {
    content: ""; position: absolute; top: 0; bottom: 0; left: 2px; right: 2px;
    background: #C3CCD3;
}
.splitter:hover[b-bnfroi8lo3]::before, .splitter.dragging[b-bnfroi8lo3]::before { background: var(--mes-orange); }

/* overscroll-behavior-x : 그리드 끝까지 스크롤해도 문서 전체가 따라 움직이지 않는다.
   좌우 이동은 이 영역 안에서만 일어난다. */
.grid-wrap[b-bnfroi8lo3] {
    position: absolute; left: 0; right: 0; top: 42px; bottom: 0;
    overflow: auto; scrollbar-gutter: stable; overscroll-behavior-x: contain;
}
.tbl[b-bnfroi8lo3] { border-collapse: collapse; table-layout: fixed; width: max-content; min-width: 100%; font-size: 14px; }
.tbl th[b-bnfroi8lo3] {
    position: sticky; top: 0; z-index: 2; height: 38px; background: var(--mes-grid-head); color: #fff;
    font-weight: 700; text-align: left; padding: 0 7px; white-space: nowrap;
    border-right: 1px solid #527087; border-bottom: 1px solid var(--mes-grid-line);
}
.tbl td[b-bnfroi8lo3] {
    height: 37px; border-right: 1px solid #D1D1D1; border-bottom: 1px solid #E0E0E0;
    padding: 4px 7px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.tbl tbody tr[b-bnfroi8lo3] { cursor: pointer; }
.tbl tbody tr:hover td[b-bnfroi8lo3] { background: #E8F4F2; }
.tbl tbody tr.selected td[b-bnfroi8lo3] { background: var(--mes-grid-selected); }
.tbl tbody tr.no-row td[b-bnfroi8lo3] { color: #777; background: #F3F3F3; cursor: default; }
.center[b-bnfroi8lo3] { text-align: center; }

.w130[b-bnfroi8lo3] { width: 130px; } .w160[b-bnfroi8lo3] { width: 160px; } .w180[b-bnfroi8lo3] { width: 180px; }

/* ===== 우측 : 상세 273px / 기능 리스트 / 버튼 63px =====
   상세 정보와 기능 리스트를 각각 테두리 있는 별도 상자로 둔다.
   버튼은 흐름에서 빼내 패널 맨 아래에 고정한다. 안내 문구가 떠도 밀리지 않는다. */
.auth-right[b-bnfroi8lo3] {
    background: var(--mes-page); position: relative;
    display: grid; grid-template-rows: 273px minmax(0, 1fr) auto;
    gap: 3px; padding-bottom: 63px;
    min-height: 0; overflow: hidden;
}
.auth-detail[b-bnfroi8lo3] { position: relative; background: #fff; border: 1px solid #858585; overflow: hidden; }
.form-body[b-bnfroi8lo3] { position: absolute; left: 0; right: 0; top: 42px; bottom: 0; overflow: auto; background: #fff; padding-top: 10px; }
.form-row[b-bnfroi8lo3] { min-height: 41px; display: grid; grid-template-columns: 121px 1fr; align-items: center; padding-right: 14px; }
.form-row > label[b-bnfroi8lo3] { text-align: right; padding-right: 12px; font-size: 14.5px; }
.form-row input[type="text"][b-bnfroi8lo3], .form-row input:not([type])[b-bnfroi8lo3] {
    height: 29px; padding: 3px 7px; background: #fff; font-size: 14.5px; outline: none;
    border-style: solid; border-width: 1px;
    border-color: #ECECEC #E6E6E6 #838383 #ECECEC;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.96);
}
.form-row input:disabled[b-bnfroi8lo3] { background: #E7E7E7; color: #666; }
.form-row input[type="checkbox"][b-bnfroi8lo3] { width: 16px; height: 16px; accent-color: #0B78D0; }
.sys-row[b-bnfroi8lo3] { border-top: 1px dashed #DDD; margin-top: 6px; padding-top: 6px; }

.func-panel[b-bnfroi8lo3] { position: relative; overflow: hidden; background: #fff; border: 1px solid #858585; }
.func-head[b-bnfroi8lo3] { margin: 0; }
.func-panel .grid-wrap[b-bnfroi8lo3] { top: 42px; }
.func-tbl[b-bnfroi8lo3] { border-collapse: collapse; table-layout: fixed; width: 100%; font-size: 14px; }
.func-tbl th[b-bnfroi8lo3] {
    position: sticky; top: 0; z-index: 2; height: 34px; background: var(--mes-grid-head); color: #fff;
    font-weight: 700; text-align: left; padding: 0 6px; white-space: nowrap;
}
.func-tbl td[b-bnfroi8lo3] {
    height: 37px; border-right: 1px solid #D1D1D1; border-bottom: 1px solid #E0E0E0;
    padding: 3px 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.func-tbl select[b-bnfroi8lo3] { width: 100%; height: 27px; border: 1px solid #888; background: #fff; font-size: 13.5px; }
.f-menu[b-bnfroi8lo3] { width: 100px; } .f-name[b-bnfroi8lo3] { width: 165px; } .f-level[b-bnfroi8lo3] { width: 130px; }

.form-message[b-bnfroi8lo3] { margin-bottom: 3px; padding: 5px 10px; font-size: 12.5px; color: #1B6B5C; background: #fff; border: 1px solid #858585; }
.form-message.error[b-bnfroi8lo3] { color: #BD3737; }

/* 패널 맨 아래 고정. .auth-right 의 padding-bottom(63px) 이 이 자리를 비워 둔다. */
.auth-buttons[b-bnfroi8lo3] {
    position: absolute; left: 0; right: 0; bottom: 0; height: 63px;
    display: flex; align-items: center; gap: 6px; padding-left: 10px;
    background: #fff; border: 1px solid #858585;
}
.crud[b-bnfroi8lo3] { width: 97px; height: 44px; border: 0; color: #fff; font-size: 15px; font-weight: 800; cursor: pointer; }
.crud:disabled[b-bnfroi8lo3] { opacity: .42; cursor: not-allowed; }
.new[b-bnfroi8lo3] { background: var(--mes-new); }
.add[b-bnfroi8lo3] { background: var(--mes-add); }
.edit[b-bnfroi8lo3] { background: var(--mes-edit); }
.del[b-bnfroi8lo3] { background: var(--mes-delete); }
.sys-note[b-bnfroi8lo3] { margin: 4px 14px 0 121px; font-size: 12.5px; color: #6B4E00; }
/* /Components/Pages/ScreenList.razor.rz.scp.css */
/* 로그인 직후 시작 화면. 권한이 있는 카테고리를 4x2 · 3x2 같은 격자로 화면 가운데에 모아 보여 준다.
   색상 토큰과 리셋은 wwwroot/app.css 참조. */
.list-page[b-wieqt4xd9h] {
    min-height: 100vh;
    display: flex; flex-direction: column;
    background: var(--mes-page);
    color: #20252b;
}

.wrap[b-wieqt4xd9h] { flex: 1; display: flex; flex-direction: column; padding: 18px; min-height: 0; }

/* 헤더와 아래 문구 사이의 남은 공간에서 박스 묶음을 가로 · 세로 가운데에 둔다. */
.stage[b-wieqt4xd9h] { flex: 1; display: flex; align-items: center; justify-content: center; }

/* 한 줄에 --cols 개. 박스 하나는 최대 300px 이고, 줄에 남는 박스가 적으면 그 줄도 가운데로 모인다.
   묶음의 가로 폭은 (박스 수 x 300px + 간격)을 넘지 않는다. */
.cards[b-wieqt4xd9h] {
    width: 100%;
    max-width: calc(var(--cols, 4) * 300px + (var(--cols, 4) - 1) * 14px);
    display: flex; flex-wrap: wrap; justify-content: center; gap: 14px;
}

.card[b-wieqt4xd9h] {
    flex: 0 1 calc((100% - (var(--cols, 4) - 1) * 14px) / var(--cols, 4));
    max-width: 300px; min-width: 0;
    aspect-ratio: 1 / 0.95;
    display: flex; flex-direction: column; justify-content: center; gap: 12px;
    padding: 20px 26px;
    background: #fff; border: 1px solid var(--mes-line);
    color: inherit; text-decoration: none;
    transition: border-color .12s, box-shadow .12s;
}
.card:hover[b-wieqt4xd9h], .card:focus-visible[b-wieqt4xd9h] {
    border-color: #008B8B; box-shadow: 0 0 0 2px #008B8B; outline: none;
}

.num[b-wieqt4xd9h] {
    display: inline-flex; width: 38px; height: 38px;
    align-items: center; justify-content: center;
    background: #FFA500; color: #222; font-size: 16px; font-weight: 800;
}
.name[b-wieqt4xd9h] { font-size: clamp(18px, 1.8vw, 26px); font-weight: 800; color: #163b4d; }
/* 설명이 한 줄이든 두 줄이든 번호와 제목 위치가 박스마다 같도록 두 줄 높이를 항상 잡는다. */
.desc[b-wieqt4xd9h] { font-size: clamp(12.5px, 1vw, 15px); color: #70777d; line-height: 1.6; min-height: 3.2em; }

.footer[b-wieqt4xd9h] { padding: 14px 0 0; text-align: center; color: #687580; font-size: 12px; }

@media (max-width: 720px) {
    .cards[b-wieqt4xd9h] { flex-direction: column; flex-wrap: nowrap; align-items: center; max-width: 420px; }
    .card[b-wieqt4xd9h] { flex: 0 0 auto; width: 100%; aspect-ratio: auto; min-height: 120px; }
}
/* /Components/Pages/ScreenPlaceholder.razor.rz.scp.css */
.placeholder[b-fa7yuyfneb] {
    height: 100%; background: #fff; border: 1px solid #8A8A8A;
    padding: 40px; overflow: auto;
}
.code[b-fa7yuyfneb] { margin: 0 0 6px; font-size: 13px; color: #70777d; }
.name[b-fa7yuyfneb] { margin: 0 0 6px; font-size: 22px; font-weight: 800; color: #163b4d; }
.desc[b-fa7yuyfneb] { margin: 0 0 22px; font-size: 14px; color: #70777d; }
.msg[b-fa7yuyfneb] { margin: 0; font-size: 14px; }
.msg.deny[b-fa7yuyfneb] { color: #A32020; }
.msg.deny b[b-fa7yuyfneb] { color: #A32020; }
/* /Components/Pages/SiteBrand.razor.rz.scp.css */
/* 09-07 사업장 표시 고유 값. 공통 골격은 wwwroot/equipment-screen.css, 아래쪽 버튼 줄은 09-06 메뉴 구성과 같은 모양. */
.brand-page[b-y0jxrbc5t7] { grid-template-columns: minmax(0, 1fr) 340px; grid-template-rows: minmax(0, 1fr); }
.brand-page > .panel[b-y0jxrbc5t7] { display: flex; flex-direction: column; }

.guide[b-y0jxrbc5t7] { margin: 8px 10px 0; padding: 8px 12px; border-left: 4px solid #5B3FB0; background: #EFEAFB; font-size: 12.5px; line-height: 1.6; }

.brand-form[b-y0jxrbc5t7] { flex: 1; min-height: 0; overflow: auto; padding: 14px 18px; display: flex; flex-direction: column; gap: 14px; }
.brand-form .row[b-y0jxrbc5t7] { display: grid; grid-template-columns: 90px minmax(0, 360px) minmax(0, 1fr); align-items: center; gap: 10px; }
.brand-form .k[b-y0jxrbc5t7] { font-weight: 700; font-size: 14px; text-align: right; color: #1B242B; }
.brand-form input[type=text][b-y0jxrbc5t7] { height: 34px; padding: 0 10px; border: 1px solid #A9B3BA; border-radius: 2px; font-size: 14.5px; }
.brand-form input[type=text]:focus[b-y0jxrbc5t7] { outline: 2px solid #1E88E5; outline-offset: -1px; }
.brand-form .hint[b-y0jxrbc5t7] { font-size: 12px; color: #66737D; line-height: 1.6; }

.look[b-y0jxrbc5t7] { display: inline-flex; align-items: center; gap: 10px; }
.look select[b-y0jxrbc5t7] { height: 34px; min-width: 130px; padding: 0 6px; border: 1px solid #A9B3BA; border-radius: 2px; font-size: 14px; background: #fff; }
.look select:focus-visible[b-y0jxrbc5t7], .look input:focus-visible[b-y0jxrbc5t7] { outline: 2px solid #1E88E5; outline-offset: 1px; }
.look input[type=range][b-y0jxrbc5t7] { flex: 1; min-width: 120px; accent-color: #5B3FB0; }
.look .px[b-y0jxrbc5t7] { width: 44px; text-align: right; font-variant-numeric: tabular-nums; font-size: 13.5px; }
.hint .link[b-y0jxrbc5t7] { margin-left: 6px; padding: 0; border: 0; background: none; color: #5B3FB0; font-size: 12px; text-decoration: underline; cursor: pointer; }

.modes[b-y0jxrbc5t7] { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.modes label[b-y0jxrbc5t7] { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; border: 1px solid #C9D0D5; border-radius: 3px; cursor: pointer; font-size: 13px; }
.modes label.on[b-y0jxrbc5t7] { border-color: #5B3FB0; background: #EFEAFB; color: #5B3FB0; font-weight: 700; }
.modes input[b-y0jxrbc5t7] { margin: 0; accent-color: #5B3FB0; }

.brand-form .logo-row[b-y0jxrbc5t7] { align-items: start; }
.logo-box[b-y0jxrbc5t7] { grid-column: 2 / 4; display: flex; gap: 14px; align-items: flex-start; flex-wrap: wrap; }
.logo-thumb[b-y0jxrbc5t7] { width: 220px; height: 110px; flex: 0 0 auto; display: flex; align-items: center; justify-content: center;
              background: var(--mes-navy); border: 1px solid #858585; padding: 8px; }
.logo-thumb img[b-y0jxrbc5t7] { max-width: 100%; max-height: 100%; object-fit: contain; }
.logo-thumb .none[b-y0jxrbc5t7] { color: #7F93A6; font-size: 12.5px; }
.logo-ctl[b-y0jxrbc5t7] { display: flex; flex-direction: column; gap: 6px; align-items: flex-start; min-width: 0; }
.logo-ctl .crud[b-y0jxrbc5t7] { width: auto; height: 34px; padding: 0 14px; }
.logo-ctl .crud.gray[b-y0jxrbc5t7] { background: #7A8790; }
.file-btn[b-y0jxrbc5t7] { display: inline-flex; align-items: center; background: var(--mes-new); position: relative; overflow: hidden; }
.file-btn:focus-within[b-y0jxrbc5t7] { outline: 2px solid #1E88E5; outline-offset: 2px; }
.file-btn[b-y0jxrbc5t7]  input[type=file] { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.logo-state[b-y0jxrbc5t7] { font-size: 12.5px; color: #1B6B5C; min-height: 16px; }

.menu-foot[b-y0jxrbc5t7] { border-top: 1px solid #D1D7DB; padding: 8px 12px; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; background: #F7F9FA; }
.menu-foot .menu-sum[b-y0jxrbc5t7] { font-size: 13px; color: #66737D; margin-right: auto; }
.menu-foot .menu-sum b[b-y0jxrbc5t7] { color: #1B242B; }
.menu-foot .crud[b-y0jxrbc5t7] { width: auto; padding: 0 16px; }
.menu-foot .crud.gray[b-y0jxrbc5t7] { background: #7A8790; }
.menu-foot .foot-msg[b-y0jxrbc5t7] { width: 100%; font-size: 12.5px; color: #1B6B5C; min-height: 16px; }
.menu-foot .foot-msg.error[b-y0jxrbc5t7] { color: #BD3737; }

/* 미리보기 — 실제 자리와 같은 크기 · 바탕 */
.pv-wrap[b-y0jxrbc5t7] { flex: 1; min-height: 0; overflow: auto; padding: 10px 12px 14px; display: flex; flex-direction: column; gap: 6px; background: #EEF1F4; }
.pv-label[b-y0jxrbc5t7] { font-size: 12px; font-weight: 700; color: #4A5862; margin-top: 6px; }
.pv-side[b-y0jxrbc5t7] { width: 225px; height: 170px; flex: 0 0 auto; background: var(--mes-navy); display: flex; align-items: center; justify-content: center; overflow: hidden; }
.pv-login[b-y0jxrbc5t7] { background: #0B1220; padding: 22px 10px; display: flex; flex-direction: column; align-items: center; overflow: hidden; }
.pv-sys[b-y0jxrbc5t7] { margin-top: 8px; font-size: 12.5px; color: #6E7E93; }
.pv-mobile[b-y0jxrbc5t7] { background: var(--mes-navy); height: 44px; padding: 0 12px; display: flex; align-items: center; overflow: hidden; }
.pv-tab[b-y0jxrbc5t7] { display: flex; }
.pv-tab span[b-y0jxrbc5t7] { max-width: 240px; padding: 6px 12px; background: #fff; border: 1px solid #C9D0D5; border-bottom: 0; border-radius: 6px 6px 0 0;
               font-size: 12.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* /Components/Pages/SplitDelivery.razor.rz.scp.css */
/* 04-03 추가/분할 납품관리. html/04_납품관리/03_추가_분할납품관리_v7스타일.html 이식.
   조회조건 88px + 본문(좌 55% / 우 45%). */
.split-page[b-8u33aed4xo] { height: 100%; display: grid; grid-template-rows: 88px 1fr; gap: 3px; }

.panel[b-8u33aed4xo] { background: #fff; border: 1px solid #858585; position: relative; overflow: hidden; }
.panel-head[b-8u33aed4xo] {
    height: 42px; background: var(--mes-panel-head); color: #fff;
    display: flex; align-items: center; padding-left: 5px; font-size: 18px; font-weight: 700;
}
.head-icon[b-8u33aed4xo] { width: 28px; height: 42px; display: flex; align-items: center; justify-content: center; color: var(--mes-orange); }
.head-icon svg[b-8u33aed4xo] { width: 20px; height: 20px; }
.count[b-8u33aed4xo] { margin-left: auto; padding-right: 12px; font-size: 13px; font-weight: 500; color: #dce4e9; }

.search .search-fields[b-8u33aed4xo] {
    position: absolute; left: 0; right: 0; top: 42px; bottom: 0;
    display: flex; align-items: center; gap: 10px; padding: 0 154px 0 20px;
}
.search-fields label[b-8u33aed4xo] { font-size: 15.5px; white-space: nowrap; }
.search .input[b-8u33aed4xo] { height: 31px; padding: 2px 7px; border: 1px solid #D4D4D4; background: #fff; outline: none; font-size: 15px; box-shadow: none; }
.search .input.date[b-8u33aed4xo] { width: 145px; }
.search .input.normal[b-8u33aed4xo] { width: 170px; }
.search-btn[b-8u33aed4xo] {
    position: absolute; right: 7px; top: 7px; width: 140px; height: 32px;
    border: 0; background: var(--mes-new); color: #fff; font-size: 15px; font-weight: 700; cursor: pointer;
}

.work[b-8u33aed4xo] { display: grid; grid-template-columns: 55% 45%; gap: 3px; min-height: 0; }
.left[b-8u33aed4xo] { min-width: 0; }
.grid-wrap[b-8u33aed4xo] { position: absolute; left: 0; right: 0; top: 42px; bottom: 0; overflow: auto; }

.tbl[b-8u33aed4xo] { border-collapse: collapse; table-layout: fixed; width: 100%; min-width: 698px; font-size: 13.5px; }
.tbl th[b-8u33aed4xo] {
    position: sticky; top: 0; z-index: 2; height: 38px; background: var(--mes-grid-head); color: #fff;
    font-weight: 700; text-align: left; padding: 0 6px; white-space: nowrap;
    border-bottom: 1px solid var(--mes-grid-line);
}
.tbl td[b-8u33aed4xo] {
    height: 32px; padding: 3px 6px; border-bottom: 1px solid var(--mes-grid-line);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.tbl tbody tr[b-8u33aed4xo] { cursor: pointer; }
.tbl tbody tr:hover td[b-8u33aed4xo] { background: #E8F4F2; }
.tbl tbody tr.selected td[b-8u33aed4xo] { background: var(--mes-grid-selected); }
.tbl tbody tr.no-order td[b-8u33aed4xo] { color: #777; background: #F3F3F3; cursor: default; }
.center[b-8u33aed4xo] { text-align: center; }
.right[b-8u33aed4xo] { text-align: right; }
.remain[b-8u33aed4xo] { color: #C82929; font-weight: 700; }

.c-no[b-8u33aed4xo] { width: 112px; } .c-partner[b-8u33aed4xo] { width: 78px; } .c-item[b-8u33aed4xo] { width: 84px; }
.c-due[b-8u33aed4xo] { width: 105px; } .c-qty[b-8u33aed4xo] { width: 52px; } .c-last[b-8u33aed4xo] { width: 92px; } .c-state[b-8u33aed4xo] { width: 71px; }

.state[b-8u33aed4xo] {
    width: 66px; height: 24px; display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid rgba(0,0,0,.15); font-size: 12.5px; font-weight: 700; white-space: nowrap;
}
.state.done[b-8u33aed4xo] { background: #3CB371; color: #fff; }
.state.partial[b-8u33aed4xo] { background: #008B8B; color: #fff; }
.state.wait[b-8u33aed4xo] { background: #7A7A7A; color: #fff; }
.state.late[b-8u33aed4xo] { background: #C94949; color: #fff; }

/* ===== 우측 3단 : 24 / 32 / 44 ===== */
.rightcol[b-8u33aed4xo] { display: grid; grid-template-rows: 24fr 32fr 44fr; gap: 3px; min-height: 0; overflow: hidden; }
.empty-pick[b-8u33aed4xo] { display: flex; align-items: center; justify-content: center; color: #777; font-size: 15px; }

.info-grid[b-8u33aed4xo] {
    position: absolute; left: 12px; right: 12px; top: 52px; bottom: 9px; display: grid;
    grid-template-columns: 76px minmax(110px,1fr) 76px minmax(110px,1fr);
    grid-template-rows: 31px 31px 48px; gap: 7px 8px; align-items: center;
}
.lab[b-8u33aed4xo] { text-align: right; font-size: 14px; white-space: nowrap; }
.field[b-8u33aed4xo] {
    height: 31px; padding: 4px 7px; background: #E7E7E7; border: 1px solid #C6C6C6;
    font-size: 14px; display: flex; align-items: center;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.summary[b-8u33aed4xo] { grid-column: 1 / 5; display: grid; grid-template-columns: repeat(3, minmax(118px, 1fr)); gap: 8px; height: 48px; }
.sum[b-8u33aed4xo] { height: 48px; border: 1px solid #C6C6C6; display: grid; grid-template-rows: 20px 1fr; background: #fff; }
.sum .t[b-8u33aed4xo] { background: #008B8B; color: #fff; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; }
.sum .v[b-8u33aed4xo] { display: flex; align-items: center; justify-content: center; font-size: 20px; font-weight: 700; color: #008B8B; }
.sum.late .t[b-8u33aed4xo] { background: #C94949; }
.sum.late .v[b-8u33aed4xo] { color: #C94949; }

.reg-body[b-8u33aed4xo] { position: absolute; left: 12px; right: 12px; top: 50px; bottom: 9px; }
.reg-grid[b-8u33aed4xo] { display: grid; grid-template-columns: 78px minmax(100px,1fr) 78px minmax(100px,1fr); gap: 8px; align-items: center; }
.input[b-8u33aed4xo] {
    height: 31px; padding: 3px 7px; background: #fff; font-size: 14px; outline: none;
    border-style: solid; border-width: 1px;
    border-color: #ECECEC #E6E6E6 #838383 #ECECEC;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.96);
}
.input.read[b-8u33aed4xo] { background: #E7E7E7; border: 1px solid #C6C6C6; box-shadow: none; }
.note[b-8u33aed4xo] { grid-column: 2 / 5; height: 44px; resize: none; }
.comment[b-8u33aed4xo] { font-size: 11.5px; color: #777; line-height: 15px; margin-top: 6px; margin-left: 86px; }
.comment.message[b-8u33aed4xo] { color: #1B6B5C; }
.comment.message.error[b-8u33aed4xo] { color: #BD3737; }
.actions[b-8u33aed4xo] { position: absolute; right: 0; bottom: 0; display: flex; gap: 6px; }
.btn[b-8u33aed4xo] { width: 78px; height: 36px; border: 0; color: #fff; font-size: 15px; font-weight: 700; cursor: pointer; }
.btn.register[b-8u33aed4xo] { background: var(--mes-add); }
.btn.delete[b-8u33aed4xo] { background: var(--mes-delete); }
.btn:disabled[b-8u33aed4xo] { background: #AEB4BA; color: #F4F5F6; border: 1px solid #8D949A; cursor: not-allowed; }

.hist-wrap[b-8u33aed4xo] { position: absolute; left: 0; right: 0; top: 42px; bottom: 32px; overflow: auto; }
.hist-wrap .tbl[b-8u33aed4xo] { min-width: 0; }
.h-seq[b-8u33aed4xo] { width: 58px; } .h-date[b-8u33aed4xo] { width: 110px; } .h-qty[b-8u33aed4xo] { width: 90px; } .h-user[b-8u33aed4xo] { width: 95px; }
.hist-foot[b-8u33aed4xo] {
    position: absolute; left: 0; right: 0; bottom: 0; height: 32px;
    border-top: 1px solid #C8C8C8; background: #FAFAFA;
    display: flex; align-items: center; padding: 0 10px; font-size: 13px;
}
.hist-foot strong[b-8u33aed4xo] { margin-left: auto; }
/* /Components/Pages/UserManagement.razor.rz.scp.css */
/* 08-01 사용자관리. html/08_시스템/01_사용자관리_원본동일_v7스타일.html 이식.
   조회조건 106px + 본문(목록 / 상세 431px). */
.sys-page[b-rjv3e0d2bl] { height: 100%; display: grid; grid-template-rows: 106px minmax(0, 1fr); gap: 3px; }

.panel[b-rjv3e0d2bl] { background: #fff; border: 1px solid #858585; position: relative; overflow: hidden; }
.panel-head[b-rjv3e0d2bl] {
    height: 42px; background: var(--mes-panel-head); color: #fff;
    display: flex; align-items: center; gap: 8px; padding: 0 8px; font-size: 18px; font-weight: 700;
}
.panel-head .icon[b-rjv3e0d2bl] { color: var(--mes-orange); }
.count[b-rjv3e0d2bl] { margin-left: auto; font-size: 13px; font-weight: 500; color: #dce4e9; }

.search-fields[b-rjv3e0d2bl] {
    position: absolute; left: 0; right: 0; top: 42px; height: 64px;
    display: flex; align-items: center; gap: 10px; padding: 0 16px;
}
.search-fields label[b-rjv3e0d2bl] { font-size: 15.5px; white-space: nowrap; }
.search-fields input[b-rjv3e0d2bl], .search-fields select[b-rjv3e0d2bl] {
    height: 31px; padding: 2px 7px; border: 1px solid #D4D4D4; background: #fff; outline: none; font-size: 15px;
}
.uid[b-rjv3e0d2bl], .uname[b-rjv3e0d2bl] { width: 170px; }
.use-search[b-rjv3e0d2bl] { width: 130px; }
.search-btn[b-rjv3e0d2bl] {
    margin-left: 8px; height: 32px; width: 130px; border: 0;
    background: var(--mes-new); color: #fff; font-size: 15px; font-weight: 700; cursor: pointer;
}

/* 우측 폭은 --right-w 로 잡는다. split-pane.js 가 드래그 중에 이 값만 바꾼다.
   가운데 7px 이 분할선이고, 예전의 3px gap 자리를 대신한다. */
.work[b-rjv3e0d2bl] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 7px var(--right-w, 431px);
    gap: 0; min-height: 0;
}

.splitter[b-rjv3e0d2bl] { position: relative; cursor: col-resize; touch-action: none; background: transparent; }
.splitter[b-rjv3e0d2bl]::before {
    content: ""; position: absolute; top: 0; bottom: 0; left: 2px; right: 2px;
    background: #C3CCD3;
}
.splitter:hover[b-rjv3e0d2bl]::before, .splitter.dragging[b-rjv3e0d2bl]::before { background: var(--mes-orange); }

/* overscroll-behavior-x : 그리드 끝까지 스크롤해도 문서 전체가 따라 움직이지 않는다.
   좌우 이동은 이 영역 안에서만 일어난다. */
.grid-wrap[b-rjv3e0d2bl] {
    position: absolute; left: 0; right: 0; top: 42px; bottom: 0;
    overflow: auto; scrollbar-gutter: stable; overscroll-behavior-x: contain;
}
.tbl[b-rjv3e0d2bl] { border-collapse: collapse; table-layout: fixed; width: max-content; min-width: 100%; font-size: 14px; }
.tbl th[b-rjv3e0d2bl] {
    position: sticky; top: 0; z-index: 2; height: 38px; background: var(--mes-grid-head); color: #fff;
    font-weight: 700; text-align: left; padding: 0 7px; white-space: nowrap;
    border-right: 1px solid #527087; border-bottom: 1px solid var(--mes-grid-line);
}
.tbl td[b-rjv3e0d2bl] {
    height: 37px; border-right: 1px solid #D1D1D1; border-bottom: 1px solid #E0E0E0;
    padding: 4px 7px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.tbl tbody tr[b-rjv3e0d2bl] { cursor: pointer; }
.tbl tbody tr:hover td[b-rjv3e0d2bl] { background: #E8F4F2; }
.tbl tbody tr.selected td[b-rjv3e0d2bl] { background: var(--mes-grid-selected); }
.tbl tbody tr.no-row td[b-rjv3e0d2bl] { color: #777; background: #F3F3F3; cursor: default; }
.center[b-rjv3e0d2bl] { text-align: center; }

.w130[b-rjv3e0d2bl] { width: 130px; } .w160[b-rjv3e0d2bl] { width: 160px; } .w180[b-rjv3e0d2bl] { width: 180px; }

/* ===== 상세 정보 ===== */
.form-body[b-rjv3e0d2bl] { position: absolute; left: 0; right: 0; top: 42px; bottom: 63px; overflow: auto; background: #fff; padding-top: 10px; }
.form-row[b-rjv3e0d2bl] { min-height: 41px; display: grid; grid-template-columns: 121px 1fr; align-items: center; padding-right: 14px; }
.form-row > label[b-rjv3e0d2bl] { text-align: right; padding-right: 12px; font-size: 14.5px; }
.form-row input[type="text"][b-rjv3e0d2bl], .form-row input[type="password"][b-rjv3e0d2bl], .form-row input:not([type])[b-rjv3e0d2bl], .form-row select[b-rjv3e0d2bl] {
    height: 29px; padding: 3px 7px; background: #fff; font-size: 14.5px; outline: none;
    border-style: solid; border-width: 1px;
    border-color: #ECECEC #E6E6E6 #838383 #ECECEC;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.96);
}
.form-row input:disabled[b-rjv3e0d2bl] { background: #E7E7E7; color: #666; }
.form-row input[type="checkbox"][b-rjv3e0d2bl] { width: 16px; height: 16px; accent-color: #0B78D0; }
.sys-row[b-rjv3e0d2bl] { border-top: 1px dashed #DDD; margin-top: 6px; padding-top: 6px; }

.form-message[b-rjv3e0d2bl] { margin: 10px 14px 0 121px; font-size: 12.5px; color: #1B6B5C; }
.form-message.error[b-rjv3e0d2bl] { color: #BD3737; }

.buttons[b-rjv3e0d2bl] {
    position: absolute; left: 0; right: 0; bottom: 0; height: 63px;
    display: flex; align-items: center; gap: 6px; padding-left: 10px;
    background: #fff; border-top: 1px solid #ddd;
}
.crud[b-rjv3e0d2bl] { width: 97px; height: 44px; border: 0; color: #fff; font-size: 15px; font-weight: 800; cursor: pointer; }
.crud:disabled[b-rjv3e0d2bl] { opacity: .42; cursor: not-allowed; }
.new[b-rjv3e0d2bl] { background: var(--mes-new); }
.add[b-rjv3e0d2bl] { background: var(--mes-add); }
.edit[b-rjv3e0d2bl] { background: var(--mes-edit); }
.del[b-rjv3e0d2bl] { background: var(--mes-delete); }

/* 권한 다중 선택 (계획 D1). 한 줄에 다 안 들어가면 줄을 바꾼다. */
.role-picks[b-rjv3e0d2bl] { display: flex; flex-wrap: wrap; gap: 4px 14px; align-items: center; min-height: 27px; }
.role-pick[b-rjv3e0d2bl] { display: flex; align-items: center; gap: 4px; white-space: nowrap; }

/* 비밀번호 규칙 안내 · 첫 로그인 변경 · 로그인 잠금 (계정권한_분리_설계 8 · 9장) */
.hint-row[b-rjv3e0d2bl] { min-height: 22px; margin-top: -6px; }
.pw-rule[b-rjv3e0d2bl] { font-size: 12.5px; color: #5F6B74; }
.inline[b-rjv3e0d2bl] { display: flex; align-items: center; gap: 6px; font-size: 13.5px; }
.lock-note[b-rjv3e0d2bl] { font-size: 13.5px; color: #BD3737; font-weight: 700; }
.form-row:has(.unlock)[b-rjv3e0d2bl] { grid-template-columns: 121px 1fr auto; }
.unlock[b-rjv3e0d2bl] { height: 29px; padding: 0 12px; border: 1px solid #BD3737; background: #fff; color: #BD3737; font-weight: 700; cursor: pointer; }
.unlock:disabled[b-rjv3e0d2bl] { opacity: .42; cursor: not-allowed; }
.tbl td.locked[b-rjv3e0d2bl] { color: #BD3737; font-weight: 700; }
/* /Components/Pages/WorkSchedule.razor.rz.scp.css */
/* 03-01 생산작업일정. html/03_생산관리/01_생산작업일정_v7스타일.html 이식. */
.work-schedule-page[b-f9f2adheek] { position: relative; width: 100%; height: 100%; overflow: hidden; }

/* ===== 조회조건 (flex 배치) ===== */
.search-section[b-f9f2adheek] { position: absolute; left: 0; right: 0; top: 0; height: 106px; background: #fff; overflow: hidden; }
.search-fields[b-f9f2adheek] {
    position: absolute; left: 0; right: 0; top: 42px; height: 64px; background: #fff;
    display: flex; align-items: center; gap: 14px; padding: 0 154px 0 20px;
}
.search-group[b-f9f2adheek] { display: flex; align-items: center; gap: 7px; white-space: nowrap; }
.search-group label[b-f9f2adheek] { font-size: 15.5px; }
.search-input[b-f9f2adheek], .search-select[b-f9f2adheek] {
    height: 31px; padding: 2px 7px; border: 1px solid #D4D4D4;
    background: #fff; outline: none; font-size: 15px;
}
.search-input.date[b-f9f2adheek] { width: 145px; }
.search-input.normal[b-f9f2adheek] { width: 160px; }
.search-select[b-f9f2adheek] { width: 125px; }
.search-btn[b-f9f2adheek] {
    position: absolute; right: 7px; top: 7px; width: 140px; height: 49px;
    border: 0; background: var(--mes-new); color: #fff;
    display: flex; align-items: center; justify-content: center; gap: 13px;
    font-size: 16px; font-weight: 700; cursor: pointer;
}
.search-btn svg[b-f9f2adheek] { width: 24px; height: 24px; }

/* ===== 주간 요약 ===== */
.summary-wrap[b-f9f2adheek] { position: absolute; left: 0; right: 0; top: 112px; height: 78px; background: #fff; border: 1px solid #C8CED4; }
.summary-head[b-f9f2adheek] {
    height: 34px; background: var(--mes-panel-head); color: #fff;
    display: flex; align-items: center; padding: 0 10px; font-size: 15px;
}
.week-tools[b-f9f2adheek] { display: flex; align-items: center; gap: 5px; margin-left: 8px; }
.week-btn[b-f9f2adheek] { height: 25px; min-width: 29px; border: 1px solid #7E8B98; background: #EEF1F4; color: #273445; font-weight: 700; cursor: pointer; }
.today-btn[b-f9f2adheek] { height: 25px; padding: 0 12px; border: 0; background: #4D88B6; color: #fff; font-weight: 700; cursor: pointer; }
.week-label[b-f9f2adheek] { font-weight: 700; font-size: 15px; margin: 0 8px; }
.basis[b-f9f2adheek] { display: flex; align-items: center; gap: 12px; font-size: 13px; margin-left: 10px; }
.basis label[b-f9f2adheek] { display: flex; align-items: center; gap: 4px; cursor: pointer; }
.basis input[b-f9f2adheek] { accent-color: #0B78D0; }

.summary-body[b-f9f2adheek] { height: 43px; display: flex; align-items: center; }
.sum-item[b-f9f2adheek] {
    height: 43px; min-width: 150px; padding: 5px 22px; border-right: 1px solid #E1E4E7;
    display: flex; align-items: center; gap: 10px;
}
.sum-item b[b-f9f2adheek] { font-size: 22px; }
.sum-item span[b-f9f2adheek] { font-size: 13px; color: #58616A; }
.sum-item.run b[b-f9f2adheek] { color: #168E83; }
.sum-item.done b[b-f9f2adheek] { color: #388E3C; }
.sum-item.warn b[b-f9f2adheek] { color: #E58C00; }
.sum-item.late b[b-f9f2adheek] { color: #D94841; }

/* ===== 목록 ===== */
.list-panel[b-f9f2adheek] {
    position: absolute; left: 0; right: 0; top: 196px; bottom: 0;
    background: #fff; border: 1px solid #8A8A8A; overflow: hidden;
}
.list-panel > .panel-head[b-f9f2adheek] { height: 42px; }
.panel-head[b-f9f2adheek] {
    height: 42px; background: var(--mes-panel-head); color: #fff;
    display: flex; align-items: center; padding-left: 5px; font-size: 18px; font-weight: 700;
}
.head-icon[b-f9f2adheek] { width: 28px; height: 42px; display: flex; align-items: center; justify-content: center; color: var(--mes-orange); }
.head-icon svg[b-f9f2adheek] { width: 20px; height: 20px; }

.table-wrap[b-f9f2adheek] { position: absolute; left: 0; right: 0; top: 42px; bottom: 0; overflow: auto; background: #fff; }
.data-table[b-f9f2adheek] { border-collapse: collapse; table-layout: fixed; min-width: 1410px; width: 100%; background: #fff; font-size: 13.33px; }
.data-table th[b-f9f2adheek] {
    position: sticky; top: 0; z-index: 2; height: 38px; padding: 0 8px;
    background: var(--mes-grid-head); color: #fff; font-weight: 700; text-align: left;
    white-space: nowrap; border-bottom: 1px solid var(--mes-grid-line);
}
.data-table td[b-f9f2adheek] {
    height: 31px; padding: 3px 8px; background: #fff; color: #000;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    border-bottom: 1px solid var(--mes-grid-line);
}
.data-table tbody tr[b-f9f2adheek] { cursor: pointer; }
.data-table tbody tr:hover td[b-f9f2adheek] { background: #E8F4F2; }
.data-table tbody tr.selected td[b-f9f2adheek], .data-table tbody tr.selected:hover td[b-f9f2adheek] { background: var(--mes-grid-selected); }
.data-table .empty[b-f9f2adheek] { text-align: center; color: #777; padding: 26px; cursor: default; }
.center[b-f9f2adheek] { text-align: center; }
.right[b-f9f2adheek] { text-align: right; }

.c-day[b-f9f2adheek] { width: 90px; } .c-no[b-f9f2adheek] { width: 145px; } .c-partner[b-f9f2adheek] { width: 120px; } .c-item[b-f9f2adheek] { width: 150px; }
.c-qty[b-f9f2adheek] { width: 95px; } .c-due[b-f9f2adheek] { width: 95px; } .c-proc[b-f9f2adheek] { width: 95px; } .c-rate[b-f9f2adheek] { width: 125px; }
.c-done[b-f9f2adheek] { width: 90px; } .c-def[b-f9f2adheek] { width: 80px; } .c-state[b-f9f2adheek] { width: 90px; } .c-note[b-f9f2adheek] { width: 160px; }

.progress[b-f9f2adheek] { height: 16px; background: #EEF1F3; border: 1px solid #CCD2D6; position: relative; }
.progress i[b-f9f2adheek] { display: block; height: 100%; background: #26A69A; }
.progress span[b-f9f2adheek] { position: absolute; left: 0; right: 0; top: -1px; text-align: center; font-size: 11px; line-height: 15px; color: #102027; }

.status[b-f9f2adheek] { display: inline-block; min-width: 48px; text-align: center; padding: 3px 7px; border: 1px solid #C6CCD1; font-size: 12px; }
.status.plan[b-f9f2adheek] { background: #EEF1F4; }
.status.run[b-f9f2adheek] { background: #D7F0EC; border-color: #8FCFC6; }
.status.done[b-f9f2adheek] { background: #DFF0D8; border-color: #A5C79A; }
.status.warn[b-f9f2adheek] { background: #FCEFD5; border-color: #E6BE73; }
.status.late[b-f9f2adheek] { background: #FBE0DF; border-color: #E3A19E; color: #B22924; font-weight: 700; }
/* /Components/Pages/XrayDefectHistory.razor.rz.scp.css */
/* 05-03 X-ray 불량이력관리 고유 값. 공통 골격은 wwwroot/quality-screen.css 참조. */
.rows-3[b-opnnf6pexm] { grid-template-rows: 106px 94px minmax(0, 1fr); }

.c-code[b-opnnf6pexm] { width: 92px; } .c-num[b-opnnf6pexm] { width: 105px; } .c-small[b-opnnf6pexm] { width: 90px; }

.d-time[b-opnnf6pexm] { width: 145px; } .d-eq[b-opnnf6pexm] { width: 115px; } .d-order[b-opnnf6pexm] { width: 135px; }
.d-partner[b-opnnf6pexm] { width: 115px; } .d-item[b-opnnf6pexm] { width: 130px; }
.d-num[b-opnnf6pexm] { width: 100px; } .d-small[b-opnnf6pexm] { width: 90px; } .d-judge[b-opnnf6pexm] { width: 85px; }
/* /Components/Pages/YieldByProduct.razor.rz.scp.css */
/* 05-02 제품별 수율현황 고유 값. 공통 골격은 wwwroot/quality-screen.css 참조. */
.rows-2[b-mjili1rcmt] { grid-template-rows: 106px minmax(0, 1fr); }

.c-code[b-mjili1rcmt] { width: 95px; } .c-num[b-mjili1rcmt] { width: 105px; } .c-small[b-mjili1rcmt] { width: 92px; }

.d-date[b-mjili1rcmt] { width: 105px; } .d-order[b-mjili1rcmt] { width: 135px; } .d-partner[b-mjili1rcmt] { width: 120px; }
.d-num[b-mjili1rcmt] { width: 115px; } .d-small[b-mjili1rcmt] { width: 100px; }
