@font-face{font-family:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/public-sans-vietnamese-wght-normal.CtlIRbEm.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/public-sans-latin-ext-wght-normal.MQgHevqp.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/public-sans-latin-wght-normal.DdeTHZLK.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--color-black:#000;--color-white:#fff;--color-gold:#be830e;--color-gold-tint:#f5edde;--color-grey:#333;--color-bg:var(--color-white);--color-surface:var(--color-white);--color-border:#d9d9d9;--color-border-strong:var(--color-black);--color-text:var(--color-black);--color-text-muted:var(--color-grey);--color-accent:var(--color-gold);--color-accent-tint:var(--color-gold-tint);--color-danger:#a4262c;--color-danger-bg:#fbeeee;--color-danger-border:#d99a9a;--color-ok:#1a7f4b;--radius-sm:3px;--radius-md:4px;--shadow-sm:none;--shadow-md:0 6px 16px #0000002e;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--font-sans:"Public Sans Variable", "Public Sans", sans-serif;--max-width:87.5rem}*{box-sizing:border-box}body{font-family:var(--font-sans);font-optical-sizing:auto;color:var(--color-text);background:var(--color-bg);margin:0;line-height:1.6}a{color:var(--color-text)}:focus-visible{outline:2px solid var(--color-gold);outline-offset:2px}.site-header{background:var(--color-black);color:var(--color-white);border-block-end:1px solid var(--color-black)}.site-header-inner{max-width:var(--max-width);padding:var(--space-4) var(--space-5);justify-content:space-between;align-items:center;gap:var(--space-3) var(--space-5);flex-wrap:wrap;margin:0 auto;display:flex}.site-brand{align-items:baseline;gap:var(--space-3);color:var(--color-white);text-decoration:none;display:flex}.site-brand-mark{letter-spacing:.06em;color:var(--color-gold);font-size:1.05rem;font-weight:800}.site-brand-name{font-size:1.05rem;font-weight:600}.site-nav{align-items:center;gap:var(--space-5);display:flex}.site-nav a{color:var(--color-white);border-bottom:2px solid #0000;padding-block-end:.2rem;font-weight:500;text-decoration:none}.site-nav a:hover,.site-nav a:focus-visible{border-bottom-color:var(--color-gold)}.site-nav a:focus-visible{outline-offset:4px}main{max-width:var(--max-width);padding:var(--space-6) var(--space-5) var(--space-6);margin:0 auto}h1{letter-spacing:-.01em;margin-block-end:var(--space-2);font-size:1.9rem;font-weight:700}h2{margin-block:var(--space-6) var(--space-3);border-bottom:2px solid var(--color-border-strong);padding-block-end:var(--space-2);font-size:1.25rem;font-weight:700}.lede{color:var(--color-text-muted);max-width:38rem;margin-block-end:var(--space-5)}.summary-line{font-size:1.05rem}.status-ok{color:var(--color-ok);font-weight:600}.status-bad{color:var(--color-danger);font-weight:600}.section-header{justify-content:space-between;align-items:center;gap:var(--space-3);margin-block:var(--space-6) var(--space-3);border-bottom:2px solid var(--color-border-strong);flex-wrap:wrap;padding-block-end:var(--space-2);display:flex}.section-header h2{border-bottom:none;margin:0;padding:0}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:var(--space-5);margin-block-end:var(--space-5)}.card h2,.card h3{margin-block-start:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.btn{border-radius:var(--radius-sm);font:inherit;cursor:pointer;border:1px solid #0000;align-items:center;gap:.4rem;padding:.55rem 1.1rem;font-weight:600;display:inline-flex}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-sm{padding:.35rem .7rem;font-size:.8rem}.btn-primary{background:var(--color-black);color:var(--color-white);border-color:var(--color-black)}.btn-primary:hover:not(:disabled),.btn-primary:focus-visible:not(:disabled){background:var(--color-gold);border-color:var(--color-gold);color:var(--color-black)}.btn-danger-outline{background:var(--color-white);color:var(--color-danger);border-color:var(--color-danger-border)}.btn-danger-outline:hover:not(:disabled){background:var(--color-danger-bg)}.btn-secondary{background:var(--color-white);color:var(--color-black);border-color:var(--color-black)}.btn-secondary:hover:not(:disabled){background:var(--color-gold-tint);border-color:var(--color-gold)}.inline-form{margin:0;display:inline-flex}.clash-banner{border-color:var(--color-border-strong);border-inline-start:4px solid var(--color-danger);background:var(--color-white)}.clash-banner h2{color:var(--color-black);border-bottom-color:var(--color-border-strong)}.clash-banner h2:before{content:"⚠ ";color:var(--color-danger)}.clash-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.clash-group+.clash-group{border-block-start:1px solid var(--color-border);margin-block-start:var(--space-4);padding-block-start:var(--space-3)}.clash-group-heading{margin-block-end:var(--space-2);font-weight:600}.clash-item{justify-content:space-between;align-items:center;gap:var(--space-3);background:var(--color-white);border:1px solid var(--color-danger-border);border-radius:var(--radius-sm);flex-wrap:wrap;padding:.6rem .8rem;display:flex}.clash-group-actions{margin-block-start:var(--space-2)}.clash-indicator{color:var(--color-danger);margin-inline-end:.3rem}.session-meta{font-weight:500}.empty-state{text-align:center;color:var(--color-text-muted);border:1px dashed var(--color-border);border-radius:var(--radius-md);padding:var(--space-6);background:var(--color-surface)}.grid-scroll{overflow-x:auto}.grid-scroll-hint{color:var(--color-text-muted);margin:0 0 var(--space-2);font-size:.75rem;display:none}.week-grid{grid-template-rows:auto repeat(26,minmax(1.9rem,auto));display:grid}.grid-corner{border-block-end:2px solid var(--color-border-strong);grid-area:1/1}.grid-day-header{text-align:center;border-block-end:2px solid var(--color-border-strong);grid-row:1;padding-block-end:.4rem;font-size:.85rem;font-weight:700}.grid-hour-label{color:var(--color-text-muted);text-align:right;border-block-start:1px solid var(--color-border);grid-column:1;padding-inline-end:.4rem;font-size:.7rem}.grid-session{border-radius:var(--radius-sm);background:var(--color-white);border:1px solid var(--color-border);border-inline-start:3px solid var(--color-gold);text-align:center;flex-direction:column;justify-content:space-between;align-items:center;gap:.25rem;margin:1px 3px;padding:.3rem .4rem;font-size:.75rem;display:flex;overflow:hidden}.grid-session.clashing{background:var(--color-danger-bg);border-color:var(--color-danger-border);border-inline-start:3px solid var(--color-danger)}.grid-session-text{overflow-wrap:break-word;line-height:1.35}.clash-toggle{all:unset;box-sizing:border-box;cursor:pointer;flex-direction:column;align-items:center;width:100%;display:flex}.clash-toggle:focus-visible{outline:2px solid var(--color-gold);outline-offset:2px;border-radius:var(--radius-sm)}.clash-count-hint{color:var(--color-danger);margin-block-start:.15rem;font-size:.68rem;font-weight:700;display:block}.clash-popover{z-index:100;background:var(--color-white);border:1px solid var(--color-black);border-radius:var(--radius-md);max-width:min(20rem,100vw - 1.5rem);box-shadow:var(--shadow-md);padding:var(--space-3) var(--space-4);text-align:left;color:var(--color-text);font-size:.8rem;line-height:1.4;position:fixed}.clash-popover-title{margin:0 0 var(--space-2);color:var(--color-danger);font-weight:700}.clash-popover-current{margin:0 0 var(--space-3);border-block-end:1px solid var(--color-border);padding-block-end:var(--space-2)}.clash-popover-label{margin:0 0 var(--space-2);color:var(--color-text-muted);font-weight:600}.clash-popover-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.clash-popover-list li+li{border-block-start:1px dashed var(--color-border);padding-block-start:var(--space-2)}.grid-session-remove{align-self:center;display:none}.week-grid.edit-mode .grid-session-remove{display:inline-flex}.course-list,.course-grid{gap:var(--space-4);display:grid}.course-grid{grid-template-columns:repeat(auto-fill,minmax(15rem,1fr))}.course-card{margin-block-end:0}.course-card h3{letter-spacing:.01em;font-size:1.1rem}.course-card-header{justify-content:space-between;align-items:flex-start;gap:var(--space-3);flex-wrap:wrap;margin-block-end:var(--space-3);display:flex}.course-card-actions{align-items:flex-end;gap:var(--space-2);flex-direction:column;display:flex}.course-title{color:var(--color-text-muted);margin:.2rem 0 0}.course-code-link,.course-title-link{color:inherit;text-decoration:underline;text-decoration-color:var(--color-border);text-underline-offset:.15em}.course-code-link:hover,.course-title-link:hover,.course-code-link:focus-visible,.course-title-link:focus-visible{text-decoration-color:var(--color-gold)}.available-sessions{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.available-session{justify-content:space-between;align-items:center;gap:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);flex-wrap:wrap;padding:.5rem .6rem;display:flex}.course-search-form{gap:var(--space-2);max-width:26rem;margin-block-end:var(--space-4);display:flex}.course-search-form input{flex:auto;min-width:0}input:not([type=checkbox]),select{border:1px solid var(--color-black);border-radius:var(--radius-sm);background:var(--color-white);width:100%;color:var(--color-text);font:inherit;padding:.55rem .7rem}input:focus-visible,select:focus-visible{border-color:var(--color-gold);outline:none;box-shadow:0 0 0 3px #be830e40}.site-footer{background:var(--color-black);color:var(--color-white);margin-block-start:var(--space-6)}.site-footer-inner{max-width:var(--max-width);padding:var(--space-5);justify-content:space-between;align-items:baseline;gap:var(--space-3) var(--space-5);flex-wrap:wrap;margin:0 auto;display:flex}.site-footer-name{font-weight:700}.site-footer-tagline{color:#bdbdbd;margin-inline-start:var(--space-2);font-size:.85rem}.site-footer-links{gap:var(--space-4);display:flex}.site-footer-links a{color:var(--color-white);text-underline-offset:.15em;font-size:.9rem;text-decoration:underline #6b6b6b}.site-footer-links a:hover,.site-footer-links a:focus-visible{text-decoration-color:var(--color-gold)}@media (width<=600px){.site-header-inner,.site-footer-inner{padding:var(--space-4)}main{padding:var(--space-5) var(--space-3) var(--space-5)}.card{padding:var(--space-4)}.clash-item,.available-session{flex-direction:column;align-items:flex-start}.clash-item .btn,.available-session .btn{justify-content:center;width:100%}.course-search-form{max-width:none}.grid-scroll-hint{display:block}.course-card-actions{align-items:stretch;width:100%}.course-card-header .btn{justify-content:center;width:100%}}
