.ctudl-library {
    margin: 2rem 0;
    color: #23384d;
    font: inherit;
    font-family: var(--thm-font, inherit);
    min-width: 0;
}
.ctudl-library *, .ctudl-library *::before, .ctudl-library *::after { box-sizing: border-box; }
.ctudl-library .ctudl-heading { margin: 0; padding: 0 0 24px; }
.ctudl-library .ctudl-heading h2 { margin: 0; color: var(--thm-black, #123f63); font-size: clamp(24px, 3vw, 40px); font-weight: 500; line-height: 1.2; }
.ctudl-library .ctudl-heading .sub-title { padding-top: 8px; }
.ctudl-library .ctudl-heading .sub-title p { margin: 0; color: #486174; font-size: 16px; line-height: 1.6; }
.ctudl-library .ctudl-controls { display: flex; flex-wrap: wrap; gap: 14px; align-items: end; padding: 22px 26px; background: #fff; border: 1px solid #d8e2ea; }
.ctudl-library label { display: flex; flex: 1 1 140px; flex-direction: column; gap: 6px; margin: 0; font-size: 14px; }
.ctudl-library label:has(input[type=search]) { flex-basis: 280px; }
.ctudl-library input, .ctudl-library select, .ctudl-library button { font: inherit; min-width: 0; max-width: 100%; height: 48px; padding: 0 12px; border: 1px solid #aebfcb; border-radius: 0; background: #fff; color: #183852; }
.ctudl-library button { background: #0b72b8; border-color: #0b72b8; color: #fff; cursor: pointer; }
.ctudl-library .ctudl-table-scroll, .ctudl-library .ctudl-mobile { margin: 18px 0; background: #fff; border: 1px solid #d8e2ea; }
.ctudl-library .ctudl-table-scroll { overflow-x: auto; }
.ctudl-library table { width: 100%; min-width: 760px; border-collapse: collapse; margin: 0; }
.ctudl-library th, .ctudl-library td { padding: 16px 18px; text-align: left; vertical-align: middle; border: 0; border-bottom: 1px solid #e1e8ed; font-size: 14px; }
.ctudl-library th { background: #103e63; color: #fff; font-weight: 700; font-size: 13px; }
.ctudl-library tbody tr:hover { background: #f1f7fb; }
.ctudl-library tbody tr:last-child td { border-bottom: 0; }
.ctudl-library a { color: #075b95; }
.ctudl-library .ctudl-download { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; white-space: nowrap; font-size: 13px; font-weight: 600; text-decoration: none; }
.ctudl-library .ctudl-pdf-icon { display: block; flex: 0 0 24px; width: 24px; height: 28px; overflow: visible; }
.ctudl-library .ctudl-mobile { display: none; }
.ctudl-library .ctudl-pdf-download { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; text-decoration: none; }
.ctudl-library .ctudl-pdf-download:hover { color: #063e68; background: #edf5fb; }
.ctudl-library nav { display: flex; justify-content: center; gap: 6px; flex-wrap: wrap; margin-top: 26px; }
.ctudl-library .page-numbers { display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; min-width: 38px; height: 38px; padding: 0 8px; border: 1px solid #c4d2dc; border-radius: 0; text-decoration: none; }
.ctudl-library .current { background: #0b72b8; border-color: #0b72b8; color: #fff; }
.ctudl-library :focus-visible { outline: 2px solid #0b72b8; outline-offset: 2px; }
.ctudl-library .screen-reader-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
@media (max-width: 767px) {
    .ctudl-library .ctudl-controls { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); padding: 16px; gap: 12px; }
    .ctudl-library label:has(input[type=search]) { grid-column: 1 / -1; }
    .ctudl-library input, .ctudl-library select { width: 100%; }
    .ctudl-library .ctudl-controls button { grid-column: 1 / -1; }
    .ctudl-library .ctudl-desktop { display: none; }
    .ctudl-library .ctudl-mobile { display: block; }
    .ctudl-library .ctudl-mobile table { width: 100%; min-width: 0; table-layout: fixed; }
    .ctudl-library .ctudl-mobile .ctudl-code-col { width: 24%; }
    .ctudl-library .ctudl-mobile .ctudl-pdf-col { width: 52px; }
    .ctudl-library .ctudl-mobile th { padding: 13px 10px; }
    .ctudl-library .ctudl-mobile td { padding: 14px 10px; overflow-wrap: anywhere; }
    .ctudl-library .ctudl-mobile td:last-child { padding: 4px; text-align: center; }
    .ctudl-library .ctudl-course-code { color: #0b4f7e; font-weight: 700; }
    .ctudl-library .ctudl-document-title { color: #213f56; font-weight: 600; }
}

.ctudl-library .ctudl-plan-table{overflow-x:auto}.ctudl-library .ctudl-plan-table table{min-width:620px}

.ctudl-library .ctudl-mobile .ctudl-document-title small{display:block;font-size:12px;font-weight:400;margin-top:5px}

.ctudl-library .ctudl-mobile-plan .ctudl-code-col{width:92px}.ctudl-library .ctudl-mobile-plan .ctudl-course-code{white-space:nowrap;font-size:13px}
.ctudl-library th{font-size:16px;text-align:center;line-height:1.5}
.ctudl-library .ctudl-pdf-icon{width:30px;height:36px;flex-basis:30px;filter:drop-shadow(0 1px 1px #18385212)}
.ctudl-library .ctudl-accordion{border:0;margin:0}
.ctudl-library .ctudl-toggle{display:flex;align-items:center;justify-content:center;gap:20px;cursor:pointer;list-style:none;background:#f9f5f3;padding:20px;border:0;transition:background .2s,box-shadow .2s;color:var(--thm-black,#123f63)}
.ctudl-library .ctudl-toggle::-webkit-details-marker{display:none}
.ctudl-library .ctudl-toggle .ctudl-heading{padding:0;text-align:center;margin:0}
.ctudl-library .ctudl-toggle h2{font-size:20px;font-weight:700;line-height:30px;margin:0;color:inherit}
.ctudl-library .ctudl-subtitle{font-size:15px;line-height:1.5;margin:6px 0 0;color:#486174;font-weight:400}
.ctudl-library .ctudl-chevron{flex:none;transition:transform .2s;color:#929292}
.ctudl-library details[open]>.ctudl-toggle{background:#fff;box-shadow:0 0 40px #0000001a;color:var(--thm-base,#0b72b8)}
.ctudl-library details[open]>.ctudl-toggle .ctudl-chevron{transform:rotate(90deg);color:inherit}
.ctudl-library .ctudl-body{padding-top:20px}
.ctudl-library .ctudl-search{position:relative;display:flex;align-items:center;width:100%;max-width:none;border:1px solid #d8e2ea;border-radius:6px;background:#fff;margin:0 0 18px;box-shadow:0 2px 8px #123f6305}
.ctudl-library .ctudl-search>svg{position:absolute;left:16px;pointer-events:none;color:#52718a}
.ctudl-library .ctudl-live-search{border:0;border-radius:6px;width:100%;max-width:none;height:48px;padding:0 40px 0 48px;background:transparent;font-size:15px}
.ctudl-library[aria-busy=true] .ctudl-results{opacity:.55}
.ctudl-library .ctudl-search-status{color:#9b3030;font-size:14px}
.ctudl-library .ctudl-page-size{display:inline-flex!important;align-items:center;width:auto!important;margin:0 0 14px;padding:7px 10px;border:1px solid #d8e2ea;border-radius:6px;background:#f8fbfd;font-size:14px}.ctudl-library .ctudl-page-size label{display:flex;align-items:center;gap:7px;margin:0;white-space:nowrap}.ctudl-library .ctudl-page-size select.ctudl-per-page{width:auto!important;min-width:64px;height:32px;margin:0;padding:0 26px 0 9px;border:1px solid #b9cfdf;border-radius:4px;background:#fff;font-size:14px}
.ctudl-library .ctudl-result-count{font-size:14px;color:#607487}
@media(max-width:767px){.ctudl-library .ctudl-mobile th{font-size:15px;text-align:center}.ctudl-library .ctudl-toggle{padding:16px;gap:12px}.ctudl-library .ctudl-toggle h2{font-size:18px;line-height:1.5}.ctudl-library .ctudl-mobile .ctudl-pdf-col{width:56px}}
@media(max-width:767px){.ctudl-library nav .page-numbers{width:38px;padding:0}.ctudl-library nav .page-numbers.prev,.ctudl-library nav .page-numbers.next{font-size:0}.ctudl-library nav .page-numbers.prev::before,.ctudl-library nav .page-numbers.next::before{font-size:22px;line-height:1}.ctudl-library nav .page-numbers.prev::before{content:'‹'}.ctudl-library nav .page-numbers.next::before{content:'›'}}
@media(prefers-reduced-motion:reduce){.ctudl-library .ctudl-toggle,.ctudl-library .ctudl-chevron{transition:none}}

.ctudl-library .ctudl-toggle-title{display:flex;align-items:center;justify-content:center;gap:20px}.ctudl-library .ctudl-subtitle{display:block}

.ctudl-library td.ctudl-file-action{text-align:center}
/* Căn giữa tiêu đề các cột thư viện, đặc biệt với bảng Lịch tuần. */
.ctudl-library table thead th,
.ctudl-library table th {
  text-align: center;
  vertical-align: middle;
}

.ctudl-library table td.ctudl-week-cell{text-align:center;vertical-align:middle}
.ctudl-pdf-modal{position:fixed;inset:0;z-index:999999;background:rgba(8,25,42,.78);display:flex;align-items:center;justify-content:center;padding:2vh 2vw}.ctudl-pdf-modal[hidden]{display:none}.ctudl-pdf-modal__box{position:relative;width:min(1440px,96vw);height:min(94vh,1000px);background:#fff;border-radius:8px;box-shadow:0 18px 70px rgba(0,0,0,.35);overflow:hidden}.ctudl-pdf-modal__frame{display:block;width:100%;height:100%;border:0}.ctudl-pdf-modal__close{position:absolute;right:10px;top:10px;z-index:2;width:38px;height:38px;border:0;border-radius:5px;background:#c8323e;color:#fff;font-size:28px;line-height:1;cursor:pointer}.ctudl-pdf-modal__close:hover{background:#a5222d}@media(max-width:600px){.ctudl-pdf-modal{padding:0}.ctudl-pdf-modal__box{width:100vw;height:100dvh;border-radius:0}.ctudl-pdf-modal__close{right:10px;top:10px}.ctudl-library .ctudl-mobile-weekly th{padding:11px 4px;font-size:12px}.ctudl-library .ctudl-mobile-weekly td{padding:10px 4px;font-size:11px;text-align:center;white-space:nowrap}.ctudl-library .ctudl-mobile-weekly .ctudl-pdf-download{width:38px;height:38px}.ctudl-library .ctudl-mobile-weekly .ctudl-pdf-icon{width:24px;height:29px}}
body.ctudl-pdf-open{overflow:hidden}
.ctudl-library tr.ctudl-file-row{cursor:pointer;transition:background-color .18s ease}.ctudl-library tr.ctudl-file-row:hover{background:#edf7fd}.ctudl-library tr.ctudl-file-row:focus{outline:2px solid #1f5ca9;outline-offset:-2px}
