:root{--brand:#0f9d8f;--brand-600:#0c8a7e;--brand-700:#0a7065;--brand-soft:#e6f6f4;--brand-ink:#0a7065;--bg:#f7f8fa;--panel:#ffffff;--sidebar:#1d2330;--ink:#1f2430;--ink-2:#3a4150;--muted:#6b7280;--line:#e6e8ee;--line-2:#eef0f4;--hover:#f4f6f9;--r:10px;--r-sm:7px;--sh:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.08);--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif;--green:#0f7a4f;--green-s:#e6f6ee;--green-ink:#0f7a4f;--green-line:#9fd8bd;--amber:#c98a12;--amber-s:#fdf4e3;--amber-ink:#8a5d00;--amber-line:#e6cf9a;--red:#c53a34;--red-s:#fdeceb;--red-ink:#b5322d;--red-line:#e3a9a4;--blue:#2f7ee0;--blue-s:#e8f1fc;--blue-ink:#235fb0;--blue-line:#d3e0fb;--purple:#7b68ee;--purple-s:#eeebff;--purple-ink:#5b46c9;--purple-line:#dcd2fb;--gray:#6b7280;--gray-s:#eef0f3;--gray-ink:#5a6270;--gray-line:#cfd6e0;--faint:#67707f;--sidebar-2:#252c3d;--accent:#7b68ee;--r-lg:14px;--sh-lg:0 12px 32px rgba(16,24,40,.16);--sidebar-ink:#c7cdda;--sidebar-hover:#2a3144;--on-brand:#ffffff}*,:after,:before{box-sizing:border-box}body,html{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font:14px/1.5 var(--font);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}ul[role=list]{list-style:none;margin:0;padding:0}:focus-visible{outline:2px solid var(--brand-ink);outline-offset:2px;border-radius:var(--r-sm)}[data-skip-link]{position:absolute;top:-48px;left:8px;z-index:100;background:var(--brand-ink);color:var(--on-brand);padding:10px 16px;border-radius:var(--r-sm);font-size:13px;font-weight:600;transition:top .15s ease-in-out}[data-skip-link]:focus-visible{top:8px}div[data-flag-row]{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:13px}div[data-flag-row] [data-flag-class]{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-flag-figure]{color:var(--muted)}[data-flag-link]{color:var(--brand-ink);white-space:nowrap;font-size:13px}[data-alerts]{background:var(--panel);border-bottom:1px solid var(--line);padding:12px 20px;gap:12px}[data-alert],[data-alerts]{display:flex;flex-direction:column}[data-alert]{gap:2px}[data-alert]>h3{margin:0 0 4px;font-size:13px;font-weight:600;color:var(--ink)}[data-alerts-error]{display:flex;align-items:center;gap:8px}[data-alerts-error],[data-alerts-loading]{padding:10px 20px;background:var(--panel);border-bottom:1px solid var(--line);font-size:13px;color:var(--muted)}[data-shell]{display:grid;grid-template-columns:240px 1fr;height:100vh;overflow:hidden}[data-shell]>nav{background:var(--sidebar);flex-direction:column;min-height:0;overflow-y:auto;padding:12px 8px}[data-shell]>nav,[data-shell]>nav a{color:var(--sidebar-ink);display:flex}[data-shell]>nav a{align-items:center;gap:8px;padding:8px 10px;border-radius:var(--r-sm);font-size:13px}[data-shell]>nav a:hover{background:var(--sidebar-hover);color:var(--on-brand)}[data-shell]>nav a[aria-current=page]{background:var(--brand-ink);color:var(--on-brand);font-weight:600}[data-shell-main]{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}[data-shell-main]>header{background:var(--panel);border-bottom:1px solid var(--line);padding:10px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0}[data-shell-main]>header button{border:1px solid var(--line);background:var(--panel);color:var(--ink-2);border-radius:var(--r-sm);padding:6px 12px;font-size:13px}[data-shell-main]>header button:hover{background:var(--hover)}[data-shell-main]>main{flex:1 1;overflow:auto;padding:20px}@media print{@page{size:A4;margin:16mm}[data-shell-main]>header,[data-shell]>nav{display:none}}[data-sidebar-toggle]{display:none}@media (max-width:759px){[data-shell]{grid-template-columns:1fr}[data-shell]>nav{display:none}[data-sidebar-toggle]{display:inline-flex}}[data-sidebar-overlay]{position:fixed;inset:0;z-index:110;background:rgba(0,0,0,.18)}[data-sidebar-overlay-panel]{position:fixed;top:0;left:0;bottom:0;width:min(240px,84vw);background:var(--sidebar);z-index:111;box-shadow:2px 0 16px rgba(0,0,0,.12);display:flex;flex-direction:column;overflow-y:auto}[data-sidebar-overlay-header]{display:flex;align-items:center;justify-content:space-between;padding:12px 12px 12px 16px;flex-shrink:0;border-bottom:1px solid var(--sidebar-hover)}[data-sidebar-overlay-header] h2{margin:0;font-size:13px;font-weight:600;color:var(--sidebar-ink)}[data-sidebar-overlay-panel] nav{flex:1 1;min-height:0;overflow-y:auto;padding:8px}[data-sidebar-overlay-panel] nav a{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:var(--r-sm);color:var(--sidebar-ink);font-size:13px}[data-sidebar-overlay-panel] nav a:hover{background:var(--sidebar-hover);color:var(--on-brand)}[data-sidebar-overlay-panel] nav a[aria-current=page]{background:var(--brand-ink);color:var(--on-brand);font-weight:600}[data-drawer-overlay]:not([role=dialog] *){position:fixed;inset:0;z-index:40;background:rgba(0,0,0,.18)}[data-drawer-overlay]:not([role=dialog] *)+[role=dialog]{position:fixed;top:0;right:0;bottom:0;width:min(400px,100vw);z-index:50;display:flex;flex-direction:column;overflow-y:auto;background:var(--panel);box-shadow:-2px 0 16px rgba(0,0,0,.12)}[data-drawer-header]{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0;padding:16px 20px;border-bottom:1px solid var(--line)}[data-drawer-header] h2{margin:0;font-size:15px;font-weight:600}[data-drawer-body]{padding:16px 20px;font-size:13px}[role=dialog]>[data-drawer-staff-name]{display:flex;align-items:baseline;gap:8px;padding:12px 20px 0;font-weight:600}[data-drawer-staff-name] [data-current-role]{font-weight:400;color:var(--ink-2)}[data-drawer-footer]{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid var(--line)}[role=dialog]>[data-drawer-footer]{margin-top:auto;padding:12px 20px;background:var(--bg)}:where([data-drawer-body],[data-drawer-panel],[data-modal-panel]) [data-field]{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}:where([data-drawer-body],[data-drawer-panel],[data-modal-panel]) label{color:var(--ink-2)}:where([data-drawer-body],[data-drawer-panel],[data-modal-panel]) :where(input:not([type=checkbox]):not([type=radio]),select,textarea){font:inherit;font-size:13px;padding:7px 10px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--panel);color:var(--ink);max-width:100%;box-sizing:border-box}:where([data-drawer-body],[data-drawer-panel],[data-modal-panel]) fieldset{margin:12px 0;padding:12px;border:1px solid var(--line);border-radius:var(--r)}:where([data-drawer-body],[data-drawer-panel],[data-modal-panel]) legend{padding:0 4px;font-weight:600;color:var(--ink-2)}:where([data-drawer-body],[data-drawer-footer],[data-drawer-panel],[data-modal-panel]) button:not([style]){font:inherit;font-size:13px;font-weight:500;padding:7px 14px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--panel);color:var(--ink);cursor:pointer}:where([data-drawer-body],[data-drawer-footer],[data-drawer-panel],[data-modal-panel]) button:not([style]):hover{background:var(--hover)}:where([data-drawer-body],[data-drawer-footer],[data-drawer-panel],[data-modal-panel]) button[type=submit]:not([style]){background:var(--brand-ink);border-color:var(--brand-ink);color:var(--on-brand);font-weight:600}:where([data-drawer-body],[data-drawer-footer],[data-drawer-panel],[data-modal-panel]) button:not([style]):disabled{opacity:.6;cursor:not-allowed}[data-session-drawer]>[data-drawer-backdrop]{position:fixed;inset:0;z-index:40;background:rgba(0,0,0,.18)}[data-session-drawer]>[data-drawer-panel]{position:fixed;top:0;right:0;bottom:0;width:min(400px,100vw);z-index:50;display:flex;flex-direction:column;gap:12px;overflow-y:auto;padding:16px 20px 20px;background:var(--panel);box-shadow:-2px 0 16px rgba(0,0,0,.12);font-size:13px}[data-session-drawer] [data-drawer-close]{align-self:flex-end}[data-session-drawer] [data-drawer-actions]{display:flex;flex-wrap:wrap;gap:8px;padding-top:12px;border-top:1px solid var(--line)}[data-cancel-modal]>[data-modal-backdrop]{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.18)}[data-cancel-modal]>[data-modal-panel]{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(440px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow-y:auto;z-index:70;padding:20px;background:var(--panel);border-radius:var(--r-lg);box-shadow:var(--sh-lg);font-size:13px}[data-cancel-modal] [data-modal-actions]{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}[data-view-tabs]{display:inline-flex;overflow:hidden;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--panel)}[data-view-tabs] button{font:inherit;font-size:13px;padding:6px 12px;border:0;background:transparent;color:var(--ink-2);cursor:pointer}[data-view-tabs] button+button{border-left:1px solid var(--line)}[data-view-tabs] button[data-active]{background:var(--brand-ink);color:var(--on-brand);font-weight:600}[data-schedule-filters]{display:flex;flex-wrap:wrap;gap:8px 16px;margin:12px 0}[data-schedule-filters] [data-filter]{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2)}[data-schedule-filters] select{font:inherit;font-size:13px;padding:6px 10px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--panel);color:var(--ink)}[data-calendar-grid]{overflow-x:auto;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}[data-calendar-days],[data-calendar-weekdays]{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));min-width:640px}[data-calendar-weekdays]{background:var(--bg);border-bottom:1px solid var(--line)}[data-weekday]{padding:8px;font-size:12px;font-weight:600;color:var(--muted);text-align:center}[data-day-cell]{min-width:0;min-height:108px;padding:6px;border-right:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}[data-day-cell]:nth-child(7n){border-right:0}[data-day-cell][data-blank]{background:var(--bg)}[data-day-number]{display:block;margin-bottom:4px;font-size:12px;color:var(--muted)}[data-chip-btn]{display:block;margin-bottom:4px;border-radius:5px;cursor:pointer}[data-session-chip]{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 6px;padding:3px 6px;border:1px solid var(--blue-line);border-radius:5px;background:var(--blue-s);color:var(--blue-ink);font-size:11.5px;line-height:1.35}[data-chip-btn]:hover [data-session-chip]{border-color:var(--blue-ink)}[data-session-chip][data-status=da_dien_ra]{border-color:var(--green-line);background:var(--green-s);color:var(--green-ink)}[data-session-chip][data-status=doi]{border-color:var(--amber-line);background:var(--amber-s);color:var(--amber-ink)}[data-session-chip][data-status=huy]{border-color:var(--gray-line);background:var(--gray-s);color:var(--gray-ink)}[data-session-chip][data-status=huy] [data-chip-class]{text-decoration:line-through}[data-chip-time]{font-weight:600}[data-chip-class]{flex-grow:1;flex-shrink:0;flex-basis:calc(100% - 44px);min-width:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}[data-chip-badge]{font-weight:600}[data-chip-reason]{flex-basis:100%}[data-chip-teacher]{flex:1 1 70%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}