/* tvls-catalog.css — Danh Mục, Cài Đặt & Responsive Styles */
        /* ======================== TAB 3: DANH MỤC & LỚP ======================== */
        .management-grid {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 16px;
        }

        @media (max-width: 1024px) {
            .management-grid {
                grid-template-columns: 1fr;
            }
        }

        .table-custom {
            width: 100%;
            border-collapse: collapse;
            font-size: 13px;
        }

        .table-custom th {
            background: #f8fafc;
            padding: 9px 10px;
            text-align: left;
            font-weight: 700;
            color: #475569;
            border-bottom: 1px solid var(--border-color);
            font-size: 12px;
        }

        .table-custom td {
            padding: 7px 10px;
            border-bottom: 1px solid var(--border-color);
            vertical-align: middle;
        }

        .search-box {
            width: 100%;
            padding: 8px 12px;
            border-radius: 8px;
            border: 1px solid var(--border-color);
            font-size: 13px;
            outline: none;
            margin-bottom: 6px;
        }

        .search-box:focus {
            border-color: var(--primary);
            box-shadow: 0 0 0 3px rgba(31, 78, 121, 0.15);
        }

        .add-subject-bar {
            display: flex;
            gap: 6px;
            align-items: center;
            margin-bottom: 6px;
            background: #f8fafc;
            padding: 8px 10px;
            border-radius: 8px;
            border: 1px solid var(--border-color);
            flex-wrap: wrap;
        }

        .color-picker-group {
            display: flex;
            align-items: center;
            gap: 4px;
            font-size: 12px;
            font-weight: 700;
            color: #475569;
        }

        .color-input-mini {
            width: 30px;
            height: 28px;
            padding: 1px;
            border: 1px solid #cbd5e1;
            border-radius: 5px;
            cursor: pointer;
            background: transparent;
        }

        .subject-pill-preview {
            display: inline-block;
            padding: 3px 10px;
            border-radius: 6px;
            font-family: var(--font-title);
            font-weight: 700;
            font-size: 12px;
            text-align: center;
        }

        .backup-card {
            background: linear-gradient(135deg, rgba(248, 250, 252, 0.95), rgba(237, 242, 247, 0.95));
            border: 1.5px solid #cbd5e1;
            border-radius: 12px;
            padding: 16px;
            margin-top: 14px;
        }

        /* MODAL DIALOGS */
        .modal-overlay {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background: rgba(15, 23, 42, 0.6);
            backdrop-filter: blur(4px);
            display: none;
            align-items: center;
            justify-content: center;
            z-index: 1000;
            padding: 16px;
        }

        .modal-overlay.active {
            display: flex;
        }

        .modal-content {
            background: #ffffff;
            border-radius: 16px;
            max-width: 480px;
            width: 100%;
            box-shadow: 0 20px 40px rgba(0,0,0,0.25);
            overflow: hidden;
            animation: modalSlide 0.2s ease-out;
        }

        @keyframes modalSlide {
            from { transform: scale(0.95); opacity: 0; }
            to { transform: scale(1); opacity: 1; }
        }

        .modal-header {
            padding: 14px 18px;
            background: #f8fafc;
            border-bottom: 1px solid var(--border-color);
            display: flex;
            align-items: center;
            justify-content: space-between;
        }

        .modal-header h3 {
            font-family: var(--font-title);
            font-size: 15px;
            font-weight: 800;
            color: #1e293b;
        }

        .modal-body {
            padding: 16px 18px;
        }

        .modal-footer {
            padding: 12px 18px;
            background: #f8fafc;
            border-top: 1px solid var(--border-color);
            display: flex;
            justify-content: flex-end;
            gap: 8px;
        }

        .form-group {
            margin-bottom: 6px;
        }

        .form-group label {
            display: block;
            font-size: 12.5px;
            font-weight: 700;
            color: #334155;
            margin-bottom: 5px;
        }

        .form-control {
            width: 100%;
            padding: 7px 10px;
            border-radius: 7px;
            border: 1px solid var(--border-color);
            font-size: 13px;
            outline: none;
        }
        .form-control:focus {
            border-color: var(--primary);
            box-shadow: 0 0 0 3px rgba(31, 78, 121, 0.15);
        }

        /* TOAST NOTIFICATION */
        #toast {
            position: fixed;
            bottom: 20px;
            right: 20px;
            background: #1e293b;
            color: #ffffff;
            padding: 10px 18px;
            border-radius: 9px;
            font-size: 13px;
            font-weight: 700;
            box-shadow: 0 10px 25px rgba(0,0,0,0.2);
            display: none;
            z-index: 9999;
            align-items: center;
            gap: 8px;
            animation: slideToast 0.3s cubic-bezier(0.16, 1, 0.3, 1);
        }

        @keyframes slideToast {
            from { transform: translateY(20px); opacity: 0; }
            to { transform: translateY(0); opacity: 1; }
        }

        /* PRINT FORMAT */
        @media print {
            @page {
                size: A4 landscape;
                margin: 6mm 8mm;
            }

            body {
                background: #ffffff !important;
                color: #000000 !important;
                font-family: Arial, Helvetica, sans-serif !important;
                height: auto !important;
                overflow: visible !important;
            }

            /* Ẩn các thanh công cụ, nút bấm */
            .app-header, .app-sidebar, .app-topbar, .app-top-header, .mobile-only-header, .seating-controls, .btn, .nav-tabs, #toast, .modal-overlay, 
            .search-box, .add-subject-bar, .backup-card, .unassigned-tray,
            .card > div > div > button, input[type="color"] {
                display: none !important;
            }

            .app-layout {
                display: block !important;
                width: 100% !important;
                height: auto !important;
                overflow: visible !important;
            }

            .main-container {
                display: block !important;
                padding: 0 !important;
                margin: 0 !important;
                width: 100% !important;
                max-width: 100% !important;
                height: auto !important;
                overflow: visible !important;
            }

            .card {
                border: none !important;
                box-shadow: none !important;
                padding: 0 !important;
                background: transparent !important;
                backdrop-filter: none !important;
            }

            /* CHẾ ĐỘ IN TKB (CHUẨN 2 BẢNG A4: BẢNG LỚN Ở TRÊN & BẢNG RÚT GỌN Ở DƯỚI) */
            body.mode-print-tkb .app-layout,
            body.mode-print-tkb .main-container,
            body.mode-print-tkb .app-sidebar,
            body.mode-print-tkb .app-topbar,
            body.mode-print-tkb #tab-tkb,
            body.mode-print-tkb #tab-seating,
            body.mode-print-tkb #tab-grade,
            body.mode-print-tkb #tab-mgmt {
                display: none !important;
            }

            body.mode-print-tkb #print-section {
                display: flex !important;
                flex-direction: column !important;
                align-items: center !important;
                width: 100% !important;
            }

            .excel-paper-frame {
                width: 100% !important;
                max-width: 960px !important;
                display: flex !important;
                flex-direction: column !important;
                gap: 16px !important;
            }

            /* HỘP BẢNG 1 (TRÊN): BẢNG CHI TIẾT CÓ KHUNG VIỀN ĐEN BẢO VỆ */
            .box-table-top {
                border: 2px solid #000000;
                padding: 10px;
                background: #fff;
            }

            /* HỘP BẢNG 2 (DƯỚI): BẢNG RÚT GỌN CÓ KHUNG VIỀN ĐEN BẢO VỆ */
            .box-table-bottom {
                border: 2px solid #000000;
                padding: 10px;
                background: #fff;
                display: flex;
                flex-direction: column;
                align-items: flex-end; /* Căn phải để các cột Thứ 2-6 thẳng hàng với bảng trên */
            }

            .tbl-main {
                width: 100%;
                border-collapse: collapse;
                text-align: center;
                font-size: 11pt;
                color: #000000 !important;
            }

            .tbl-main th, .tbl-main td {
                border: 1px solid #000000 !important;
                padding: 4.5px 3px;
                height: 24px;
                color: #000000 !important;
            }

            .tbl-main th {
                background-color: #d9d9d9 !important;
                -webkit-print-color-adjust: exact;
                print-color-adjust: exact;
                font-weight: bold;
                font-size: 11pt;
                color: #000000 !important;
            }

            .cell-gray {
                background-color: #d9d9d9 !important;
                -webkit-print-color-adjust: exact;
                print-color-adjust: exact;
            }

            .italic-note {
                font-style: italic;
                color: #000000 !important;
            }

            .bold-note {
                font-weight: bold;
                font-style: italic;
                color: #000000 !important;
            }

            /* BẢNG 2 RÚT GỌN DƯỚI */
            .tbl-compact {
                width: 88%; /* Khớp đúng vị trí từ cột Tiết đến Thứ 6 */
                border-collapse: collapse;
                text-align: center;
                font-size: 11pt;
                color: #000000 !important;
            }

            .tbl-compact th, .tbl-compact td {
                border: 1px solid #000000 !important;
                padding: 4px 3px;
                height: 23px;
                color: #000000 !important;
            }

            .tbl-compact th {
                background-color: #d9d9d9 !important;
                -webkit-print-color-adjust: exact;
                print-color-adjust: exact;
                font-weight: bold;
                font-size: 11pt;
                color: #000000 !important;
            }

            /* CHẾ ĐỘ IN SƠ ĐỒ CHỖ NGỒI (BUNG RỘNG CÂN ĐỐI TẬN DỤNG TỐI ĐA KHỔ GIẤY A4 NẰM NGANG) */
            body.mode-print-seating #tab-tkb,
            body.mode-print-seating #tab-mgmt,
            body.mode-print-seating #tab-grade,
            body.mode-print-seating .app-top-header,
            body.mode-print-seating .mobile-only-header,
            body.mode-print-seating #print-section {
                display: none !important;
            }
            body.mode-print-seating {
                display: flex !important;
                flex-direction: column !important;
                align-items: center !important;
                justify-content: center !important;
                min-height: 100vh !important;
                height: 100vh !important;
                box-sizing: border-box !important;
                margin: 0 !important;
                padding: 0 !important;
                background: #ffffff !important;
            }
            body.mode-print-seating .app-layout {
                display: flex !important;
                flex-direction: column !important;
                justify-content: center !important;
                align-items: center !important;
                width: 100% !important;
                height: 100% !important;
                margin: 0 auto !important;
                padding: 0 !important;
            }
            body.mode-print-seating .content-area-wrap {
                display: flex !important;
                flex-direction: column !important;
                justify-content: center !important;
                align-items: center !important;
                width: 100% !important;
                height: 100% !important;
                overflow: visible !important;
                margin: 0 !important;
                padding: 0 !important;
            }
            body.mode-print-seating .main-container {
                display: flex !important;
                flex-direction: column !important;
                align-items: center !important;
                justify-content: center !important;
                width: 100% !important;
                margin: 0 auto !important;
                padding: 0 !important;
            }
            body.mode-print-seating #tab-seating {
                display: flex !important;
                flex-direction: column !important;
                align-items: center !important;
                justify-content: center !important;
                width: 100% !important;
                max-width: 285mm !important; /* Bung tràn tối đa chiều ngang tờ giấy A4 ngang */
                margin: 0 auto !important;
                padding: 0 !important;
            }
            body.mode-print-seating #tab-seating .card {
                padding: 0 !important;
                margin: 0 auto !important;
                width: 100% !important;
                border: none !important;
                background: transparent !important;
                display: flex !important;
                flex-direction: column !important;
                align-items: center !important;
                justify-content: center !important;
            }
            body.mode-print-seating .classroom-wrapper {
                border: none !important;
                box-shadow: none !important;
                padding: 0 !important;
                margin: 0 auto !important;
                background: transparent !important;
                width: 100% !important;
                max-width: 100% !important;
                box-sizing: border-box !important;
                display: flex !important;
                flex-direction: column !important;
                align-items: center !important;
                gap: 14px !important;
            }
            body.mode-print-seating .print-title-page {
                display: block !important;
                text-align: center;
                margin-top: 0 !important;
                margin-bottom: 12px !important;
            }
            body.mode-print-seating .print-title-page h2 {
                font-size: 21pt !important;
                font-weight: 900 !important;
                text-transform: uppercase;
                color: #000 !important;
                margin: 0 0 2px 0 !important;
                letter-spacing: 1px;
            }
            body.mode-print-seating .print-title-page p {
                font-size: 11pt !important;
                font-weight: 600;
                color: #333 !important;
                margin: 0 !important;
            }
            /* Bục giảng bung vừa vặn thẳng hàng 4 dãy */
            body.mode-print-seating .podium-area {
                display: grid !important;
                grid-template-columns: 1fr 2.2fr 1fr !important;
                gap: 16px !important;
                margin-top: 6px !important;
                margin-bottom: 0 !important;
                padding-bottom: 0 !important;
                border-bottom: none !important;
                width: 100% !important;
                box-sizing: border-box !important;
            }
            body.mode-print-seating .podium-box {
                height: 48px !important;
                min-height: 48px !important;
                font-size: 13pt !important;
                border-radius: 8px !important;
                display: flex !important;
                align-items: center !important;
                justify-content: center !important;
                max-width: none !important;
                min-width: 0 !important;
                width: 100% !important;
                padding: 0 !important;
                box-sizing: border-box !important;
            }
            body.mode-print-seating .box-board {
                background: #f1f5f9 !important;
                color: #000 !important;
                border: 2px solid #000 !important;
                font-weight: 800 !important;
                letter-spacing: 8px !important;
            }
            body.mode-print-seating .box-teacher,
            body.mode-print-seating .box-door {
                border: 2px solid #000 !important;
                color: #000 !important;
                background: #ffffff !important;
                font-weight: 700 !important;
            }
            /* Khung hàng ghế: giãn đều, 4 dãy bàn đôi gọn gàng trong chiều ngang trang in */
            body.mode-print-seating .rows-container {
                display: flex !important;
                flex-direction: column !important;
                gap: 14px !important;
                width: 100% !important;
            }
            body.mode-print-seating .seating-row {
                background: transparent !important;
                border: none !important;
                box-shadow: none !important;
                padding: 0 !important;
                display: grid !important;
                grid-template-columns: repeat(4, 1fr) !important;
                align-items: center !important;
                gap: 16px !important;
                width: 100% !important;
                box-sizing: border-box !important;
            }
            body.mode-print-seating .double-desk {
                border: none !important;
                background: transparent !important;
                box-shadow: none !important;
                padding: 0 !important;
                gap: 6px !important;
                display: grid !important;
                grid-template-columns: 1fr 1fr !important;
                width: 100% !important;
                box-sizing: border-box !important;
            }
            body.mode-print-seating .double-desk::before {
                display: none !important;
            }
            body.mode-print-seating .aisle-spacer {
                display: none !important;
            }
            body.mode-print-seating .aisle-dot {
                background: #94a3b8 !important;
                width: 4px !important;
                height: 4px !important;
            }
            /* Ô học sinh: Tăng chiều cao lên 90px, bo góc sắc nét, viền 1.5px sang trọng */
            body.mode-print-seating .seat-card,
            body.mode-print-seating .seat-card.card-nam,
            body.mode-print-seating .seat-card.card-nu,
            body.mode-print-seating .seat-card.empty {
                border: 1.5px solid #000000 !important;
                background: #ffffff !important;
                box-shadow: none !important;
                border-radius: 8px !important;
                height: 90px !important;
                min-height: 90px !important;
                width: 100% !important;
                padding: 6px 8px !important;
                display: flex !important;
                flex-direction: column !important;
                justify-content: center !important;
                align-items: center !important;
                box-sizing: border-box !important;
            }
            body.mode-print-seating .seat-top-row {
                margin: 0 !important;
                width: 100% !important;
                display: flex !important;
                justify-content: center !important;
                align-items: center !important;
            }
            body.mode-print-seating .seat-name {
                font-size: 14.5pt !important;
                font-weight: 800 !important;
                color: #000000 !important;
                text-align: center !important;
                white-space: normal !important;
                word-break: break-word !important;
                overflow-wrap: break-word !important;
                line-height: 1.25 !important;
                letter-spacing: -0.2px !important;
            }
            /* Ẩn toàn bộ nút bấm, điểm cộng, controls khi in */
            body.mode-print-seating .seat-bottom-row,
            body.mode-print-seating .seat-speak-controls,
            body.mode-print-seating .btn-speak-minus,
            body.mode-print-seating .btn-speak-plus,
            body.mode-print-seating .seat-speak-count,
            body.mode-print-seating .seat-speak-badge-wrap,
            body.mode-print-seating .seat-star-btn,
            body.mode-print-seating .stt-badge {
                display: none !important;
            }

            /* CHẾ ĐỘ IN BẢNG ĐIỂM VĂN */
            body.mode-print-grade #tab-tkb,
            body.mode-print-grade #tab-seating,
            body.mode-print-grade #tab-mgmt {
                display: none !important;
            }
            body.mode-print-grade #tab-grade {
                display: block !important;
            }
            body.mode-print-grade #table-grade-list th {
                background: #f1f5f9 !important;
                border: 1.5px solid #000 !important;
                color: #000 !important;
            }
            body.mode-print-grade #table-grade-list td {
                border: 1px solid #000 !important;
                color: #000 !important;
            }
            /* In bảng điểm: giữ nguyên cột điểm cộng, ẩn các nút bấm +/- khi in */
            @media print {
                #table-grade-list td button {
                    display: none !important;
                }
                #table-grade-list input {
                    border: none !important;
                    background: transparent !important;
                }
            }
            body.mode-print-grade div[style*="max-height:520px"] {
                max-height: none !important;
                overflow: visible !important;
            }

            /* CHẾ ĐỘ IN DANH SÁCH LỚP */
            body.mode-print-students #tab-tkb,
            body.mode-print-students #tab-seating,
            body.mode-print-students .management-grid > div:last-child {
                display: none !important;
            }
            body.mode-print-students #tab-mgmt {
                display: block !important;
            }
            body.mode-print-students .management-grid {
                grid-template-columns: 1fr !important;
            }
            body.mode-print-students .table-custom th {
                border: 1.5px solid #000 !important;
                background: #f1f5f9 !important;
                color: #000 !important;
            }
            body.mode-print-students .table-custom td {
                border: 1px solid #000 !important;
                color: #000 !important;
                padding: 5px 8px !important;
            }
            body.mode-print-students .table-custom td:last-child,
            body.mode-print-students .table-custom th:last-child {
                display: none !important; /* ẩn cột thao tác sửa/xóa */
            }
            body.mode-print-students div[style*="max-height:500px"] {
                max-height: none !important;
                overflow: visible !important;
                border: none !important;
            }
        }
.print-title-page {
            display: none;
        }
    
        /* KHAY HỌC SINH CHƯA XẾP CHỖ */
        .unassigned-tray {
            margin-top: 14px;
            background: rgba(255, 255, 255, 0.95);
            border: 2px dashed #94a3b8;
            border-radius: 12px;
            padding: 10px 14px;
            box-shadow: 0 2px 8px rgba(0,0,0,0.06);
        }

        .unassigned-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 8px;
            font-size: 12.5px;
            font-weight: 800;
            color: #1e293b;
        }

        .unassigned-cards-wrap {
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
            max-height: 140px;
            overflow-y: auto;
            padding: 4px;
            background: #f8fafc;
            border-radius: 8px;
            border: 1px solid #e2e8f0;
        }

        .unassigned-card {
            display: inline-flex;
            align-items: center;
            gap: 5px;
            padding: 4px 8px;
            border-radius: 6px;
            border: 1.5px solid transparent;
            font-size: 11.5px;
            font-weight: 700;
            cursor: pointer;
            user-select: none;
            transition: all 0.15s ease;
        }

        .unassigned-card:hover {
            transform: translateY(-2px);
            box-shadow: 0 3px 6px rgba(0,0,0,0.1);
            border-color: #6366f1;
        }

        .unassigned-card.selected {
            border-color: #1f4e79 !important;
            background: #e0e7ff !important;
            box-shadow: 0 0 0 3px rgba(31, 78, 121, 0.3) !important;
        }

        .plan-select-group {
            display: flex;
            align-items: center;
            gap: 6px;
            flex-wrap: wrap;
        }

        .seating-plan-select {
            height: 32px;
            padding: 2px 8px;
            border-radius: 6px;
            border: 1.5px solid var(--border-card);
            font-family: var(--font-title);
            font-weight: 700;
            font-size: 12.5px;
            color: #1e293b;
            background: #fff;
            outline: none;
            cursor: pointer;
            max-width: 240px;
        }

    
        /* THẺ ĐIỂM CỘNG & PHÁT BIỂU TRÊN GHẾ */
        .seat-grade-badge {
            position: absolute;
            bottom: 2px;
            left: 4px;
            display: flex;
            align-items: center;
            gap: 3px;
            font-size: 10px;
            font-weight: 800;
            background: #fef08a;
            color: #854d0e;
            padding: 1px 4px;
            border-radius: 4px;
            border: 1px solid #fde047;
            pointer-events: none;
            line-height: 1.1;
        }

        .seat-plus-btn {
            position: absolute;
            bottom: 2px;
            right: 3px;
            width: 18px;
            height: 18px;
            border-radius: 4px;
            background: #1f4e79;
            color: #ffffff;
            border: none;
            font-weight: 900;
            font-size: 12px;
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            transition: all 0.12s ease;
            box-shadow: 0 1px 3px rgba(31, 78, 121, 0.3);
            z-index: 5;
        }

        .seat-plus-btn:hover {
            background: #2e75b6;
            transform: scale(1.15);
        }

        .seat-edit-grade-btn {
            position: absolute;
            top: 2px;
            left: 3px;
            background: none;
            border: none;
            cursor: pointer;
            font-size: 10px;
            opacity: 0.7;
            z-index: 5;
            padding: 1px 3px;
            border-radius: 3px;
        }
        .seat-edit-grade-btn:hover {
            opacity: 1;
            background: rgba(0,0,0,0.06);
        }

            #print-section {
            display: none;
        }

        
        
        /* ======================== RESPONSIVE CHO MÀN HÌNH DI ĐỘNG & TABLET ======================== */
        @media (max-width: 768px) {
            body {
                overflow: hidden !important;
                background-attachment: fixed !important;
            }

            /* MAIN CONTAINER */
            .main-container {
                flex: 1 !important;
                height: calc(100vh - 84px) !important;
                height: calc(100dvh - 84px) !important;
                overflow-y: auto !important;
                overflow-x: hidden !important;
                padding: 6px 4px 20px !important;
                box-sizing: border-box !important;
                -webkit-overflow-scrolling: touch !important;
            }

            .card {
                padding: 6px 8px !important;
                border-radius: 12px !important;
                overflow-x: auto !important;
                -webkit-overflow-scrolling: touch !important;
            }

            /* BẢO ĐẢM SƠ ĐỒ CHỖ NGỒI VÀ BỤC GIẢNG NẰM TRÊN MẶT PHẲNG 680px, VUỐT NGANG MƯỢT MÀ, KHÔNG CO MÉO */
            .classroom-wrapper {
                overflow-x: visible !important;
                padding: 6px 4px !important;
                width: max-content !important;
                min-width: 680px !important;
                box-sizing: border-box !important;
            }

            .podium-area {
                width: 100% !important;
                min-width: 680px !important;
            }

            .rows-container {
                width: 100% !important;
                min-width: 680px !important;
            }

            .seating-row {
                display: grid !important;
                grid-template-columns: 1fr 22px 1fr 22px 1fr 22px 1fr !important;
                gap: 4px !important;
                width: 100% !important;
                min-width: 680px !important;
                box-sizing: border-box !important;
            }

            .double-desk {
                display: grid !important;
                grid-template-columns: 1fr 1fr !important;
                gap: 3px !important;
                box-sizing: border-box !important;
            }

            .seat-card {
                height: 68px !important;
                min-height: 68px !important;
                box-sizing: border-box !important;
            }

            .tkb-table-wrap {
                overflow-x: auto !important;
                -webkit-overflow-scrolling: touch !important;
                border-radius: 10px !important;
            }

            .tkb-table {
                min-width: 620px !important;
            }

            .tkb-header {
                flex-direction: column !important;
                align-items: flex-start !important;
                gap: 6px !important;
            }

            .seating-controls {
                flex-wrap: wrap !important;
                gap: 6px !important;
                min-width: 680px !important;
            }
        }
