html, body {
    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
    transition: background-color 0.3s, color 0.3s;
    overflow: hidden; /* 스크롤은 .main-area 내부에서 처리 */
}

/* ���� CSS ����: ����Ʈ (�⺻��) ���� */
:root,
[data-theme="light"] {
    --bg-main: #f8fafc;
    --bg-surface: #ffffff;
    --bg-sidebar: #0f172a;
    --bg-sidebar-end: #1e1b4b;
    --bg-input: #ffffff;
    --border-color: #e5e7eb;
    --border-color-light: #f1f3f5;
    --text-primary: #1e293b;
    --text-secondary: #64748b;
    --text-muted: #94a3b8;
    --code-text: #0f4c81;
    --amount-text: #d4521d;
    --selected-row-bg: #eef2ff;
    --selected-row-border: #c7d2fe;
    --btn-shadow: 0 10px 20px rgba(37, 99, 235, 0.16), inset 0 1px 0 rgba(255,255,255,0.24);
    --btn-shadow-hover: 0 14px 26px rgba(37, 99, 235, 0.22), inset 0 1px 0 rgba(255,255,255,0.3);
    --btn-primary-grad: linear-gradient(135deg, #6d7df0 0%, #7c4dcb 100%);
    --btn-success-grad: linear-gradient(135deg, #16a34a 0%, #0f766e 100%);
    --btn-info-grad: linear-gradient(135deg, #2563eb 0%, #0891b2 100%);
    --btn-danger-grad: linear-gradient(135deg, #ef4444 0%, #be123c 100%);
    --btn-neutral-grad: linear-gradient(135deg, #475569 0%, #334155 100%);
    --shadow-sm: rgba(0,0,0,0.05);
    --hover-bg: #f8fafc;
    --accent: #667eea;
    --accent-soft: rgba(99,102,241,0.08);
}

/* ���� CSS ����: ��ũ ���� */
[data-theme="dark"] {
    --bg-main: #0f172a;
    --bg-surface: #1e293b;
    --bg-sidebar: #020617;
    --bg-sidebar-end: #0f0e2a;
    --bg-input: #1e293b;
    --border-color: #334155;
    --border-color-light: #2d3a4d;
    --text-primary: #f1f5f9;
    --text-secondary: #cbd5e1;
    --text-muted: #94a3b8;
    --code-text: #93c5fd;
    --amount-text: #fb923c;
    --selected-row-bg: rgba(129, 140, 248, 0.18);
    --selected-row-border: rgba(129, 140, 248, 0.45);
    --btn-shadow: 0 12px 24px rgba(0, 0, 0, 0.28), inset 0 1px 0 rgba(255,255,255,0.16);
    --btn-shadow-hover: 0 16px 30px rgba(0, 0, 0, 0.34), inset 0 1px 0 rgba(255,255,255,0.22);
    --btn-primary-grad: linear-gradient(135deg, #6978f0 0%, #8b5cf6 100%);
    --btn-success-grad: linear-gradient(135deg, #22c55e 0%, #0f766e 100%);
    --btn-info-grad: linear-gradient(135deg, #3b82f6 0%, #06b6d4 100%);
    --btn-danger-grad: linear-gradient(135deg, #f43f5e 0%, #dc2626 100%);
    --btn-neutral-grad: linear-gradient(135deg, #475569 0%, #1e293b 100%);
    --shadow-sm: rgba(0,0,0,0.3);
    --hover-bg: rgba(255,255,255,0.04);
    --accent: #818cf8;
    --accent-soft: rgba(129,140,248,0.12);
}

a, .btn-link { color: var(--accent); }

.btn-primary {
    color: #fff;
    background-color: #1b6ec2;
    border-color: #1861ac;
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
    box-shadow: 0 0 0 0.1rem var(--bg-surface), 0 0 0 0.25rem var(--accent);
}

.form-select,
.filter-select,
select.form-control {
    min-height: 38px;
    line-height: 1.35;
    vertical-align: middle;
}

.content { padding-top: 0; }
h1:focus { outline: none; }

/* ���� ��ũ���: �� ��� ���� */
[data-theme="dark"] .form-control,
[data-theme="dark"] .form-select {
    background-color: var(--bg-input);
    border-color: var(--border-color);
    color: var(--text-primary);
}

[data-theme="dark"] .form-control:focus,
[data-theme="dark"] .form-select:focus {
    background-color: var(--bg-input);
    color: var(--text-primary);
    border-color: var(--accent);
    box-shadow: 0 0 0 0.2rem rgba(129,140,248,0.2);
}

/* �α���/ȸ�� ���̾ƿ� ���δ� ��ũ��� ���� */
[data-theme="dark"] .login-layout .form-control {
    background: #ffffff;
    border-color: #d6deea;
    color: #0f172a;
}
[data-theme="dark"] .login-layout .form-control:focus {
    background: #ffffff;
    color: #0f172a;
    border-color: #2563eb;
    box-shadow: 0 0 0 5px rgba(37, 99, 235, 0.12);
}
[data-theme="dark"] .login-layout .form-control::placeholder {
    color: #94a3b8;
}

[data-theme="dark"] .form-control[readonly] {
    background-color: var(--bg-main);
    opacity: 0.8;
}

[data-theme="dark"] .form-control::placeholder { color: var(--text-muted); }
[data-theme="dark"] .form-check-input { background-color: var(--bg-input); border-color: var(--border-color); }
[data-theme="dark"] .form-check-input:checked { background-color: var(--accent); border-color: var(--accent); }

/* ���� ��ũ���: ���̺� ���� */
[data-theme="dark"] table { color: var(--text-primary); }
[data-theme="dark"] .mgmt-table-wrap,
[data-theme="dark"] .code-table-wrap { background: var(--bg-surface); border-color: var(--border-color); }
[data-theme="dark"] .mgmt-table thead,
[data-theme="dark"] .code-table thead { background: var(--bg-main); border-bottom-color: var(--border-color); }
[data-theme="dark"] .mgmt-table th,
[data-theme="dark"] .code-table th {
    background: var(--bg-main) !important;
    color: var(--text-muted) !important;
    border-color: var(--border-color) !important;
}
[data-theme="dark"] .mgmt-table td,
[data-theme="dark"] .code-table td { border-bottom-color: var(--border-color); }
[data-theme="dark"] .mgmt-table tbody tr:hover,
[data-theme="dark"] .code-table tbody tr:hover { background: var(--hover-bg); }
[data-theme="dark"] .mgmt-table tbody tr:hover td,
[data-theme="dark"] .code-table tbody tr:hover td { background: var(--hover-bg); }
[data-theme="dark"] .mgmt-table tfoot,
[data-theme="dark"] .mgmt-table tfoot tr,
[data-theme="dark"] .mgmt-table tfoot td,
[data-theme="dark"] .code-table tfoot,
[data-theme="dark"] .code-table tfoot tr,
[data-theme="dark"] .code-table tfoot td {
    background: var(--bg-main) !important;
    color: var(--text-primary) !important;
    border-color: var(--border-color) !important;
}
[data-theme="dark"] .code-text { color: var(--code-text) !important; }
[data-theme="dark"] .price-cell { color: var(--amount-text) !important; }
[data-theme="dark"] .quote-group-row,
[data-theme="dark"] .quote-group-row td {
    background: var(--bg-main) !important;
    color: var(--text-primary) !important;
    border-color: var(--border-color) !important;
}
[data-theme="dark"] .mgmt-table tr.row-selected,
[data-theme="dark"] .code-table tr.row-selected,
[data-theme="dark"] .resizable-table tr.row-selected,
[data-theme="dark"] .mgmt-table tr.row-selected > td,
[data-theme="dark"] .code-table tr.row-selected > td,
[data-theme="dark"] .resizable-table tr.row-selected > td {
    background: var(--selected-row-bg) !important;
    color: var(--text-primary) !important;
    border-color: var(--selected-row-border) !important;
}
[data-theme="dark"] .mgmt-table tr.row-selected:hover > td,
[data-theme="dark"] .code-table tr.row-selected:hover > td,
[data-theme="dark"] .resizable-table tr.row-selected:hover > td {
    background: rgba(129, 140, 248, 0.24) !important;
}
[data-theme="dark"] .mgmt-table tr.row-selected .text-muted,
[data-theme="dark"] .code-table tr.row-selected .text-muted,
[data-theme="dark"] .resizable-table tr.row-selected .text-muted {
    color: var(--text-secondary) !important;
}
[data-theme="dark"] .detail-expand-row,
[data-theme="dark"] .detail-expand-row > td {
    background: var(--bg-main) !important;
    color: var(--text-primary) !important;
    border-color: var(--border-color) !important;
}
[data-theme="dark"] .sub-table {
    background: var(--bg-surface) !important;
    color: var(--text-primary) !important;
}
[data-theme="dark"] .sub-table th {
    background: var(--bg-main) !important;
    color: var(--text-muted) !important;
    border-color: var(--border-color) !important;
}
[data-theme="dark"] .sub-table td {
    background: var(--bg-surface) !important;
    color: var(--text-primary) !important;
    border-color: var(--border-color-light) !important;
}

/* ���� ��ũ���: ������, ���, �ؽ�Ʈ ���� */
[data-theme="dark"] .mgmt-page { color: var(--text-primary); }
[data-theme="dark"] .mgmt-page h4,
[data-theme="dark"] .mgmt-page h5,
[data-theme="dark"] .mgmt-page h6,
[data-theme="dark"] .panel-title,
[data-theme="dark"] .modal-head h5 { color: var(--text-primary); }
[data-theme="dark"] .text-muted { color: var(--text-muted) !important; }
[data-theme="dark"] .field-item label { color: var(--text-muted); }
[data-theme="dark"] .fw-semibold { color: var(--text-primary); }

/* ���� ��ũ���: �г�, ī�� ���� */
[data-theme="dark"] .menu-tree-panel,
[data-theme="dark"] .menu-edit-panel,
[data-theme="dark"] .role-list-panel,
[data-theme="dark"] .role-card,
[data-theme="dark"] .perm-layout .menu-tree-panel {
    background: var(--bg-surface);
    border-color: var(--border-color);
}
[data-theme="dark"] .panel-title { border-bottom-color: var(--border-color); }
[data-theme="dark"] .role-list-item { color: var(--text-secondary); border-bottom-color: var(--border-color); }
[data-theme="dark"] .role-list-item:hover { background: var(--hover-bg); }
[data-theme="dark"] .role-list-item.active { background: var(--accent-soft); color: var(--accent); }
[data-theme="dark"] .role-card-desc { color: var(--text-muted); }
[data-theme="dark"] .role-card-meta { color: var(--text-muted); }

/* Ʈ�� �� */
[data-theme="dark"] .tree-row { color: var(--text-secondary); }
[data-theme="dark"] .tree-row:hover { background: var(--hover-bg); }
[data-theme="dark"] .tree-row.active { background: var(--accent-soft); color: var(--accent); }
[data-theme="dark"] .tree-check { color: var(--text-secondary); }
[data-theme="dark"] .tree-check:hover { background: var(--hover-bg); }

/* 빈 데이터 */
[data-theme="dark"] .empty-state { color: var(--text-muted); }
[data-theme="dark"] .empty-wrap { color: var(--text-muted); }
[data-theme="dark"] .edit-body { color: var(--text-primary); }

/* ===== 공통 버튼 품질 보정 ===== */
.btn-add,
.btn-pane-add,
.btn-detail-action,
.btn-modal-save,
.btn-do-print,
.btn-do-pdf,
.btn-excel,
.btn-print,
.btn-delete-multi {
    border: 0 !important;
    border-radius: 8px !important;
    color: #ffffff !important;
    font-weight: 700 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 6px !important;
    box-shadow: var(--btn-shadow) !important;
    text-shadow: 0 1px 1px rgba(15, 23, 42, 0.18) !important;
    transition: transform 0.16s ease, box-shadow 0.16s ease, filter 0.16s ease, opacity 0.16s ease !important;
}

.btn-add,
.btn-pane-add,
.btn-detail-action,
.btn-modal-save {
    background: var(--btn-primary-grad) !important;
}

.btn-excel,
.btn-detail-action.btn-excel {
    background: var(--btn-success-grad) !important;
}

.btn-print,
.btn-do-print,
.btn-detail-action.btn-print {
    background: var(--btn-info-grad) !important;
}

.btn-delete-multi,
.btn-do-pdf,
.btn-danger-save {
    background: var(--btn-danger-grad) !important;
}

.btn-add:hover:not(:disabled),
.btn-pane-add:hover:not(:disabled),
.btn-detail-action:hover:not(:disabled),
.btn-modal-save:hover:not(:disabled),
.btn-do-print:hover:not(:disabled),
.btn-do-pdf:hover:not(:disabled),
.btn-excel:hover:not(:disabled),
.btn-print:hover:not(:disabled),
.btn-delete-multi:hover:not(:disabled) {
    transform: translateY(-1px) !important;
    box-shadow: var(--btn-shadow-hover) !important;
    filter: brightness(1.04) saturate(1.04) !important;
    opacity: 1 !important;
}

.btn-add:active:not(:disabled),
.btn-pane-add:active:not(:disabled),
.btn-detail-action:active:not(:disabled),
.btn-modal-save:active:not(:disabled),
.btn-do-print:active:not(:disabled),
.btn-do-pdf:active:not(:disabled),
.btn-excel:active:not(:disabled),
.btn-print:active:not(:disabled),
.btn-delete-multi:active:not(:disabled) {
    transform: translateY(0) !important;
    filter: brightness(0.98) !important;
}

.btn-add:disabled,
.btn-pane-add:disabled,
.btn-detail-action:disabled,
.btn-modal-save:disabled,
.btn-do-print:disabled,
.btn-do-pdf:disabled,
.btn-excel:disabled,
.btn-print:disabled,
.btn-delete-multi:disabled {
    cursor: not-allowed !important;
    opacity: 0.52 !important;
    box-shadow: none !important;
}

.btn-modal-cancel {
    background: linear-gradient(135deg, var(--bg-surface) 0%, var(--bg-main) 100%) !important;
    border: 1px solid var(--border-color) !important;
    border-radius: 8px !important;
    color: var(--text-secondary) !important;
    font-weight: 700 !important;
    box-shadow: 0 8px 18px rgba(15, 23, 42, 0.08) !important;
    transition: transform 0.16s ease, box-shadow 0.16s ease, border-color 0.16s ease, color 0.16s ease !important;
}

.btn-modal-cancel:hover:not(:disabled) {
    transform: translateY(-1px) !important;
    border-color: var(--accent) !important;
    color: var(--text-primary) !important;
    box-shadow: 0 12px 24px rgba(15, 23, 42, 0.12) !important;
}

.btn-action {
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.08) 0%, rgba(255, 255, 255, 0.02) 100%) !important;
    border: 1px solid var(--border-color) !important;
    border-radius: 7px !important;
    color: var(--code-text) !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), 0 6px 14px rgba(15, 23, 42, 0.12) !important;
    transition: transform 0.16s ease, box-shadow 0.16s ease, background 0.16s ease, color 0.16s ease, border-color 0.16s ease !important;
}

.btn-action.btn-warn,
.btn-action.btn-danger {
    color: #f97316 !important;
}

.btn-action.btn-ok {
    color: #22c55e !important;
}

.btn-action:hover:not(:disabled) {
    background: var(--btn-primary-grad) !important;
    border-color: transparent !important;
    color: #ffffff !important;
    transform: translateY(-1px) !important;
    box-shadow: var(--btn-shadow-hover) !important;
}

.btn-action.btn-detail:hover:not(:disabled),
.btn-action.btn-edit:hover:not(:disabled),
.btn-action.btn-reset:hover:not(:disabled) {
    background: var(--btn-info-grad) !important;
}

.btn-action.btn-ok:hover:not(:disabled) {
    background: var(--btn-success-grad) !important;
}

.btn-action.btn-warn:hover:not(:disabled),
.btn-action.btn-danger:hover:not(:disabled) {
    background: var(--btn-danger-grad) !important;
}

.btn-action:active:not(:disabled) {
    transform: translateY(0) !important;
}

.btn-action:disabled {
    cursor: not-allowed !important;
    opacity: 0.46 !important;
    box-shadow: none !important;
}

.btn-close-print {
    background: transparent !important;
    border: 1px solid rgba(255, 255, 255, 0.35) !important;
    color: #ffffff !important;
    box-shadow: none !important;
    text-shadow: none !important;
}

.btn-close-print:hover:not(:disabled) {
    background: rgba(255, 255, 255, 0.1) !important;
    border-color: rgba(255, 255, 255, 0.6) !important;
    color: #ffffff !important;
    transform: translateY(-1px) !important;
}

[data-theme="dark"] .btn-modal-cancel {
    background: linear-gradient(135deg, rgba(30, 41, 59, 0.98) 0%, rgba(15, 23, 42, 0.98) 100%) !important;
    box-shadow: 0 10px 22px rgba(0, 0, 0, 0.24) !important;
}

[data-theme="dark"] .btn-action {
    background: linear-gradient(135deg, rgba(30, 41, 59, 0.94) 0%, rgba(15, 23, 42, 0.92) 100%) !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), 0 8px 18px rgba(0, 0, 0, 0.22) !important;
}

/* ���� */
[data-theme="dark"] .group-badge { background: var(--accent-soft); color: var(--accent); }
[data-theme="dark"] .sort-tag { background: var(--bg-main); color: var(--text-muted); }

/* ���� ��ũ���: ��� ���� */
[data-theme="dark"] .modal-overlay { background: rgba(0,0,0,0.65); }
[data-theme="dark"] .modal-panel { background: var(--bg-surface); border-color: var(--border-color); }
[data-theme="dark"] .modal-head { border-bottom-color: var(--border-color); }
[data-theme="dark"] .modal-foot { border-top-color: var(--border-color); }
[data-theme="dark"] .btn-modal-cancel { background: var(--bg-surface); color: var(--text-secondary); border-color: var(--border-color); }
[data-theme="dark"] .btn-modal-cancel:hover { background: var(--hover-bg); }

/* ===== 모바일 카드 테이블 (전역 공통) ===== */
@media (max-width: 600px) {

    /* 테이블 래퍼: 가로 스크롤 해제 */
    .mgmt-table-wrap { overflow-x: visible !important; }

    /* 헤더 숨김 */
    .mgmt-table thead { display: none; }

    /* 각 행 → 카드 */
    .mgmt-table tbody tr {
        display: block;
        border: 1px solid var(--border-color);
        border-radius: 12px;
        margin-bottom: 10px;
        background: var(--bg-surface);
        overflow: hidden;
    }
    .mgmt-table tbody .row-disabled { opacity: 0.55; }

    /* 각 셀 → 라벨:값 행 */
    .mgmt-table td {
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 8px 14px;
        border-bottom: 1px solid var(--border-color-light);
        font-size: 12.5px;
        min-height: 36px;
        border-radius: 0;
    }
    .mgmt-table td:last-child { border-bottom: none; }

    /* data-label → 왼쪽 라벨 */
    .mgmt-table td[data-label]::before {
        content: attr(data-label);
        font-size: 10.5px;
        font-weight: 700;
        color: var(--text-muted);
        text-transform: uppercase;
        letter-spacing: 0.4px;
        flex-shrink: 0;
        margin-right: 10px;
        min-width: 56px;
    }

    /* No 컬럼 숨김 */
    .mgmt-table td.col-no { display: none; }

    /* 액션 버튼 열: 라벨 없이 우측 정렬 */
    .mgmt-table td.col-action {
        justify-content: flex-end;
        padding: 10px 14px;
        background: var(--bg-main);
    }
}

/* ���� ��ũ���: �˻�, ���� ���� */
[data-theme="dark"] .search-input,
[data-theme="dark"] .filter-select {
    background: var(--bg-input);
    border-color: var(--border-color);
    color: var(--text-primary);
}

/* ���� ��ũ���: �׼� ��ư ���� */
[data-theme="dark"] .btn-action { background: var(--bg-surface); border-color: var(--border-color); }
[data-theme="dark"] .btn-edit { background: var(--bg-surface); border-color: var(--border-color); color: var(--text-secondary); }
[data-theme="dark"] .btn-edit:hover { background: var(--accent); color: #fff; border-color: var(--accent); }
[data-theme="dark"] .btn-edit-sm { background: var(--bg-surface); border-color: var(--border-color); }
[data-theme="dark"] .btn-check-all { background: var(--bg-main); border-color: var(--border-color); color: var(--text-secondary); }

/* ���� ��ũ���: ��� ���� */
[data-theme="dark"] .header { background: var(--bg-surface); border-bottom-color: var(--border-color); }
[data-theme="dark"] .time-box { background: var(--bg-main); border-color: var(--border-color); color: var(--text-secondary); }
[data-theme="dark"] .profile-name { color: var(--text-primary); }
[data-theme="dark"] .profile-arrow { color: var(--text-muted); }
[data-theme="dark"] .profile-trigger:hover { background: var(--hover-bg); }
[data-theme="dark"] .profile-menu { background: var(--bg-surface); border-color: var(--border-color); }
[data-theme="dark"] .profile-info { border-bottom-color: var(--border-color); }
[data-theme="dark"] .profile-info .name { color: var(--text-primary); }
[data-theme="dark"] .profile-info .sub-text { color: var(--text-muted); }
[data-theme="dark"] .menu-item { background: var(--bg-surface); color: var(--text-primary); }
[data-theme="dark"] .menu-item:hover { background: var(--hover-bg); }
[data-theme="dark"] .logo-button:hover { background: var(--hover-bg); }
[data-theme="dark"] .theme-toggle { background: var(--bg-main); border-color: var(--border-color); color: var(--text-secondary); }

/* ���� ��ũ���: �ǹ� ���� */
[data-theme="dark"] .tab-bar { background: var(--bg-main); border-bottom-color: var(--border-color); }
[data-theme="dark"] .tab-item { color: var(--text-muted); }
[data-theme="dark"] .tab-item:hover { color: var(--text-primary); background: rgba(255,255,255,0.04); }
[data-theme="dark"] .tab-item.active {
    color: var(--accent);
    background: var(--bg-surface);
    border-color: var(--border-color);
    box-shadow: 0 -2px 8px rgba(0,0,0,0.15);
}
[data-theme="dark"] .tab-item.active::after { background: var(--bg-surface); }

/* ���� ��ũ���: ���м� ���� ���� */
[data-theme="dark"] hr { border-color: var(--border-color); }
[data-theme="dark"] .detail-section { border-bottom-color: var(--border-color); }
[data-theme="dark"] .field-grid { border-color: var(--border-color); }
[data-theme="dark"] .detail-grid { border-color: var(--border-color); }
[data-theme="dark"] .role-checks { border-color: var(--border-color); }
[data-theme="dark"] .form-group { border-color: var(--border-color); }
[data-theme="dark"] .panel-footer { border-top-color: var(--border-color); }
[data-theme="dark"] .panel-title-bar { border-bottom-color: var(--border-color); }
[data-theme="dark"] .role-card { border-color: var(--border-color); }
[data-theme="dark"] .role-card-actions { border-top-color: var(--border-color); }
[data-theme="dark"] .calendar-grid { border-color: var(--border-color); }

/* ===== 인쇄 미디어 ===== */
@media print {
    /* 배경색 인쇄 강제 — 테이블 헤더·배지 등 모든 배경색 출력 */
    * {
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
        color-adjust: exact !important;
    }

    .sidebar, .nav-menu, .tab-bar-wrap, .header-root,
    .chat-panel, .chat-fab, .header-actions,
    .btn-add, .btn-excel, .btn-print, .btn-add-bom,
    .btn-action, .action-btns, .modal-overlay,
    .mgmt-toast, .loading-wrap {
        display: none !important;
    }
    .mgmt-page { padding: 10px !important; }
    .mgmt-table { font-size: 11px !important; }
    body, .mgmt-page, .mgmt-table-wrap {
        background: #fff !important; color: #000 !important;
    }
    .page { display: block !important; }
    .main-area { margin: 0 !important; padding: 0 !important; }
}
[data-theme="dark"] .calendar-weekday { border-bottom-color: var(--border-color); background: var(--bg-main); }
[data-theme="dark"] .calendar-day { border-color: var(--border-color); background: var(--bg-surface); }
[data-theme="dark"] .calendar-day.muted { background: var(--bg-main); }
[data-theme="dark"] .dashboard-table thead th { border-bottom-color: var(--border-color); }
[data-theme="dark"] .dashboard-table tbody td { border-bottom-color: var(--border-color); }

/* ���� ��ũ���: ���̵�� ���� */
[data-theme="dark"] .nav-wrapper {
    background: linear-gradient(180deg, var(--bg-sidebar) 0%, var(--bg-sidebar-end) 55%, #000 100%) !important;
}
[data-theme="dark"] .sidebar { background-color: var(--bg-sidebar); border-right-color: var(--border-color); }

/* ���� ��ũ���: main-area ���� */
[data-theme="dark"] .main-area { background-color: var(--bg-main); }
[data-theme="dark"] .content { background-color: var(--bg-main); color: var(--text-primary); }

/* ���� ��ũ���: ������ ������ ���� */
[data-theme="dark"] .profile-page { color: var(--text-primary); }
[data-theme="dark"] .profile-page h4,
[data-theme="dark"] .profile-page h6 { color: var(--text-primary); }

/* ���� ��ũ���: �佺Ʈ ���� */
[data-theme="dark"] .mgmt-toast.toast-success { background: #0d3320; color: #4ade80; border-color: #166534; }
[data-theme="dark"] .mgmt-toast.toast-error { background: #3b1318; color: #f87171; border-color: #7f1d1d; }

/* ���� ��Ÿ ��ƿ ���� */
.valid.modified:not([type=checkbox]) { outline: 1px solid #26b050; }
.invalid { outline: 1px solid #e50000; }
.validation-message { color: #e50000; }

.blazor-error-boundary {
    background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

.blazor-error-boundary::after { content: "An error has occurred."; }

.darker-border-checkbox.form-check-input { border-color: #929292; }

/* ═══════════════════════════════════════════════════
   접근 거부 (RouteGuard) 스타일
   ═══════════════════════════════════════════════════ */
.access-denied-wrap {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    padding: 40px 20px;
    text-align: center;
}

.access-denied-icon {
    width: 96px;
    height: 96px;
    border-radius: 50%;
    background: #fef2f2;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 24px;
}

.access-denied-icon i {
    font-size: 48px;
    color: #ef4444;
}

.access-denied-title {
    font-size: 24px;
    font-weight: 700;
    color: var(--text-primary, #111827);
    margin: 0 0 12px;
}

.access-denied-desc {
    font-size: 15px;
    color: var(--text-muted, #6b7280);
    line-height: 1.7;
    margin: 0 0 16px;
}

.access-denied-path {
    background: var(--bg-surface, #f3f4f6);
    border: 1px solid var(--border-color, #e5e7eb);
    border-radius: 8px;
    padding: 8px 20px;
}

.access-denied-path code {
    font-size: 13px;
    color: var(--text-muted, #6b7280);
    font-family: monospace;
}

/* 다크 테마 */
[data-theme="dark"] .access-denied-icon { background: #2d1b1b; }
[data-theme="dark"] .access-denied-icon i { color: #f87171; }
[data-theme="dark"] .access-denied-path { background: var(--bg-surface); border-color: var(--border-color); }

/* ═══════════════════════════════════════════════════
   헤더 메뉴 검색
   ═══════════════════════════════════════════════════ */
.menu-search-wrap {
    position: relative;
    width: 320px;
}

.menu-search-box {
    display: flex;
    align-items: center;
    background: var(--bg-surface, #f3f4f6);
    border: 1.5px solid var(--border-color, #e5e7eb);
    border-radius: 10px;
    padding: 0 12px;
    gap: 8px;
    transition: border-color 0.2s, box-shadow 0.2s;
}

.menu-search-box:focus-within {
    border-color: var(--color-primary, #6366f1);
    box-shadow: 0 0 0 3px rgba(99,102,241,0.15);
    background: var(--bg-card, #fff);
}

.menu-search-icon {
    color: var(--text-muted, #9ca3af);
    font-size: 14px;
    flex-shrink: 0;
}

.menu-search-input {
    flex: 1;
    border: none;
    background: transparent;
    outline: none;
    font-size: 13.5px;
    color: var(--text-primary, #111827);
    padding: 9px 0;
    min-width: 0;
}

.menu-search-input::placeholder { color: var(--text-muted, #9ca3af); }

.menu-search-clear {
    border: none;
    background: none;
    padding: 2px 4px;
    cursor: pointer;
    color: var(--text-muted, #9ca3af);
    display: flex;
    align-items: center;
    font-size: 12px;
    border-radius: 4px;
    flex-shrink: 0;
}
.menu-search-clear:hover { color: var(--text-primary, #111827); background: var(--bg-hover, #e5e7eb); }

.menu-search-dropdown {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    right: 0;
    background: var(--bg-card, #fff);
    border: 1.5px solid var(--border-color, #e5e7eb);
    border-radius: 12px;
    box-shadow: 0 8px 24px rgba(0,0,0,0.12);
    z-index: 9999;
    overflow: hidden;
    max-height: 400px;
    overflow-y: auto;
}

.menu-search-item {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 10px 14px;
    border: none;
    background: none;
    cursor: pointer;
    text-align: left;
    transition: background 0.15s;
}
.menu-search-item:hover { background: var(--bg-hover, #f3f4f6); }

.menu-search-item-icon {
    font-size: 15px;
    color: var(--color-primary, #6366f1);
    width: 20px;
    flex-shrink: 0;
}

.menu-search-item-info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 1px;
}

.menu-search-item-name {
    font-size: 13.5px;
    font-weight: 500;
    color: var(--text-primary, #111827);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.menu-search-item-path {
    font-size: 11.5px;
    color: var(--text-muted, #9ca3af);
}

.menu-search-item-enter {
    font-size: 12px;
    color: var(--text-muted, #d1d5db);
    flex-shrink: 0;
}
.menu-search-item:hover .menu-search-item-enter { color: var(--color-primary, #6366f1); }

.menu-search-empty {
    padding: 18px;
    text-align: center;
    color: var(--text-muted, #9ca3af);
    font-size: 13px;
}

/* 다크 테마 */
[data-theme="dark"] .menu-search-box { background: var(--bg-surface); border-color: var(--border-color); }
[data-theme="dark"] .menu-search-box:focus-within { background: var(--bg-card); }
[data-theme="dark"] .menu-search-dropdown { background: var(--bg-card); border-color: var(--border-color); box-shadow: 0 8px 24px rgba(0,0,0,0.4); }
[data-theme="dark"] .menu-search-item:hover { background: var(--bg-hover); }
[data-theme="dark"] .menu-search-item-name { color: var(--text-primary); }

/* Keep row action tooltips from being clipped by rounded table wrappers. */
.mgmt-table-wrap:has(.btn-action[title]:hover),
.summary-table-wrap:has(.btn-action[title]:hover),
.detail-panel:has(.btn-action[title]:hover),
.bom-right:has(.btn-action[title]:hover) {
    overflow: visible !important;
}

.mgmt-table-wrap:has(.btn-action[title]:hover) .table-scroll-container {
    overflow: visible !important;
}

.action-tooltip {
    position: fixed;
    left: 0;
    top: 0;
    display: none;
    max-width: 220px;
    padding: 4px 10px;
    border-radius: 5px;
    background: rgba(20, 20, 20, 0.92);
    color: #fff;
    font-size: 11px;
    font-weight: 400;
    line-height: 1.35;
    letter-spacing: 0;
    white-space: nowrap;
    pointer-events: none;
    z-index: 2147483647;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.24);
}

.action-tooltip.is-visible {
    display: block;
}

.action-tooltip-arrow {
    position: absolute;
    width: 0;
    height: 0;
    transform: translateX(-50%);
    border: 4px solid transparent;
}

.action-tooltip[data-placement="top"] .action-tooltip-arrow {
    top: 100%;
    border-top-color: rgba(20, 20, 20, 0.92);
}

.action-tooltip[data-placement="bottom"] .action-tooltip-arrow {
    bottom: 100%;
    border-bottom-color: rgba(20, 20, 20, 0.92);
}
