
.oms-v8-brand{
    display:flex;
    align-items:center;
    gap:.75rem;
    text-decoration:none;
    min-width:0;
}
.oms-v8-brand-mark,.oms-v8-mobile-logo{
    width:38px;height:38px;min-width:38px;
    border-radius:.65rem;
    background:#009ef7;color:#fff;
    display:flex;align-items:center;justify-content:center;
    font-weight:800;text-decoration:none;
}
.oms-v8-brand-copy{display:flex;flex-direction:column;line-height:1.1;white-space:nowrap}
.oms-v8-brand-title{font-size:.95rem;font-weight:800;color:#fff}
.oms-v8-brand-sub{font-size:.68rem;color:#8f9bb3;margin-top:.25rem}
body[data-kt-app-sidebar-minimize="on"] .oms-v8-brand-copy{display:none}
body[data-kt-app-sidebar-minimize="on"] .oms-v8-brand{justify-content:center}
.oms-v8-mobile-logo{width:30px;height:30px;min-width:30px;font-size:.75rem}
.oms-upload-drop{
    border:2px dashed var(--bs-gray-300);
    border-radius:.85rem;
    padding:3rem 1.5rem;
    text-align:center;
    background:var(--bs-gray-100);
    transition:.15s ease;
}
.oms-upload-drop.is-drag{border-color:#009ef7;background:#f1faff}
.oms-master-table{max-height:calc(100vh - 310px)}
.oms-modal{
    position:fixed;inset:0;z-index:1090;display:none;
    align-items:center;justify-content:center;padding:1.5rem;
    background:rgba(0,0,0,.45);
}
.oms-modal.open{display:flex}
.oms-modal-panel{
    width:min(1180px,96vw);max-height:94vh;overflow:auto;
    background:var(--bs-body-bg);border-radius:.85rem;
    box-shadow:0 1rem 3rem rgba(0,0,0,.2);
}


/* v3.1 business-page polish */
.oms-upload-list{
    max-height:420px;
    overflow:auto;
}

.oms-master-table{
    max-height:calc(100vh - 335px);
    overflow:auto;
}

.oms-master-table thead{
    position:sticky;
    top:0;
    z-index:2;
    background:var(--bs-body-bg);
}

.oms-master-table .symbol img{
    object-fit:cover;
}

.oms-modal{
    backdrop-filter:blur(2px);
}

.oms-modal-panel{
    border:1px solid var(--bs-gray-300);
}

@media (max-width: 991.98px){
    .oms-master-table{
        max-height:none;
    }
}


/* v3.2 auth + admin */
.oms-auth-visual{
    background:
        radial-gradient(circle at 20% 20%, rgba(0,158,247,.55), transparent 34%),
        radial-gradient(circle at 78% 70%, rgba(114,57,234,.48), transparent 38%),
        linear-gradient(145deg,#111827 0%,#172033 52%,#0f172a 100%);
}

.oms-auth-logo-mark{
    width:68px;
    height:68px;
    margin:0 auto;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius:18px;
    background:#009ef7;
    color:#fff;
    font-weight:900;
    font-size:1.4rem;
    box-shadow:0 12px 30px rgba(0,158,247,.25);
}

.oms-auth-art{
    position:relative;
}

.oms-auth-art::before,
.oms-auth-art::after{
    content:"";
    position:absolute;
    border:1px solid rgba(255,255,255,.08);
    border-radius:28px;
    transform:rotate(-12deg);
}

.oms-auth-art::before{
    width:240px;
    height:150px;
    left:18%;
    bottom:18%;
}

.oms-auth-art::after{
    width:170px;
    height:220px;
    right:12%;
    bottom:10%;
    transform:rotate(11deg);
}

@media(max-width:1199.98px){
    .oms-auth-visual{
        width:100%!important;
        min-height:290px;
    }
}


/* v3.4.1: current language label in user dropdown */
#kt_app_header .menu-badge .badge{
    white-space:nowrap;
}


/* v3.4.2 — current language visibility fix */
#kt_app_header .menu-link > .menu-title{
    min-width:0;
}
#kt_app_header .menu-link > .menu-badge{
    flex:0 0 auto;
    margin-left:auto;
    max-width:150px;
}
#kt_app_header .menu-link > .menu-badge .badge{
    display:inline-flex;
    align-items:center;
    white-space:nowrap;
    overflow:visible;
}


/* v3.5 — Metronic theme-mode + language badge */
.theme-light-show{display:inline-block}
.theme-dark-show{display:none}
[data-bs-theme="dark"] .theme-light-show{display:none}
[data-bs-theme="dark"] .theme-dark-show{display:inline-block}

[data-bs-theme="dark"] body,
[data-bs-theme="dark"] .app-main{
    background-color:var(--bs-app-bg-color, #0f1014);
}

#kt_app_header .menu-badge{
    flex-shrink:0;
}

/* Accessible shell controls: preserve Metronic visuals on semantic buttons. */
.oms-menu-button{
    width:100%;
    border:0;
    background:transparent;
    text-align:left;
    font:inherit;
}

#kt_app_sidebar .menu-link,
#kt_app_header button,
#kt_app_sidebar_mobile_toggle{
    min-height:44px;
}

.oms-menu-button:focus-visible,
#kt_app_sidebar_mobile_toggle:focus-visible,
#kt_app_sidebar_toggle:focus-visible,
#kt_app_header button:focus-visible{
    outline:2px solid var(--bs-primary);
    outline-offset:2px;
}


/* v4.0 Packing demo */
.packing-code-badge{font-weight:900;letter-spacing:.04em}
#productInput:focus,#cartonInput:focus{border-color:var(--bs-primary);box-shadow:0 0 0 .25rem rgba(0,158,247,.1)}

/* v5.0 five-step workflow */
.oms-stepper a{white-space:nowrap}.oms-stepper .opacity-50{pointer-events:none}

/* 모바일: 헤더 액션 버튼과 표 헤더가 글자 단위로 세로 꺾이는 것 방지 */
#kt_app_toolbar_container .btn{white-space:nowrap}
#kt_app_content .table thead th{white-space:nowrap}

/* v5.1 — CTN/PLT 단위 배지 공통 스타일 (연파랑/CTN, 진파랑/PLT). 페이지별
   인라인 색상 복제 대신 이 두 클래스로 통일한다. 값은 badge-light-primary /
   badge-primary와 동일한 테마 변수를 써서 다크 모드를 자동으로 따른다. */
.badge-unit-ctn{background-color:var(--bs-primary-light);color:var(--bs-primary)}
.badge-unit-plt{background-color:var(--bs-primary);color:var(--bs-primary-inverse)}
/* 스캔 카톤 수 배지처럼 동적으로 완료 상태(success)가 겹쳐도 badge-unit-ctn
   클래스 자체는 유지된 채 색만 success로 덮어써야 한다(요구사항: 의미
   클래스가 사라지면 안 됨). 클래스 2개 조합이라 단독 badge-unit-ctn보다
   우선순위가 항상 높다. */
.badge-unit-ctn.badge-light-success{background-color:var(--bs-success-light);color:var(--bs-success)}
/* v5.2 — 카톤 높이(mm) 배지: 그룹/CTN 색상 배지와 겹치지 않는 neutral outline.
   컨테이너 구성/연결 팔레트에서 300mm/500mm 같은 실측 높이 구분값을 표시할 때 쓴다. */
.badge-unit-height{background-color:var(--bs-gray-100);color:var(--bs-gray-700);border:1px solid var(--bs-gray-300)}
