:root{--primary:#1b2a4a;--on-primary:#fff;--primary-container:#d9e2ff;--on-primary-container:#1b2a4a;--secondary:#805600;--on-secondary:#fff;--secondary-container:#ffddb0;--on-secondary-container:#704b00;--tertiary:#00513e;--on-tertiary:#fff;--tertiary-container:#98f4d3;--on-tertiary-container:#00513e;--quaternary:#5b3a8e;--on-quaternary:#fff;--quaternary-container:#ebe0ff;--on-quaternary-container:#4a2f75;--error:#ba1a1a;--on-error:#fff;--error-container:#ffdad6;--on-error-container:#93000a;--surface:#f9f9ff;--surface-container-lowest:#fff;--surface-container-low:#f1f3ff;--surface-container:#e8eefe;--surface-container-high:#e2e8f9;--surface-container-highest:#dde2f3;--on-surface:#161c27;--on-surface-variant:#45464e;--outline:#75777f;--outline-variant:#c5c6cf;--radius-sm:.25rem;--radius:.5rem;--radius-lg:.75rem;--shadow-sm:0 1px 3px #1b2a4a14;--shadow-md:0 4px 16px #1b2a4a1f}*{box-sizing:border-box}body{color:var(--on-surface);background:var(--surface);margin:0;padding:0;font-family:Inter,Segoe UI,system-ui,sans-serif;line-height:1.6}.material-symbols-outlined{letter-spacing:normal;text-transform:none;white-space:nowrap;vertical-align:middle;font-family:Material Symbols Outlined;font-size:1.125rem;font-style:normal;font-weight:400;line-height:1}main{max-width:88rem;margin:0;padding:0 2rem 4rem}h1,h2{letter-spacing:-.01em}h1{margin-block:1.75rem .6rem;font-size:1.9rem}h2{color:var(--on-surface);margin-block:0 1rem;font-size:1.1rem}.lede{color:var(--on-surface-variant);max-width:42rem;margin-block-end:2rem}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.site-header{z-index:10;backdrop-filter:blur(16px);background:#f9f9ffe6;position:sticky;top:0;box-shadow:0 1px 8px #1b2a4a0f}.site-header-inner{justify-content:space-between;align-items:center;gap:1.5rem;max-width:88rem;height:4rem;margin:0;padding:0 2rem;display:flex}.site-header .brand{color:var(--on-surface);align-items:center;gap:.6rem;display:flex}.site-header .brand:hover{text-decoration:none}.brand-icon{border-radius:var(--radius);background:var(--primary);width:2rem;height:2rem;color:var(--on-primary);justify-content:center;align-items:center;font-size:1.15rem;display:flex}.brand-text{flex-direction:column;line-height:1.2;display:flex}.brand-title{font-size:1.05rem;font-weight:700}.brand-subtitle{color:var(--on-surface-variant);font-size:.75rem}.site-header nav{align-items:center;gap:.25rem;display:flex}.site-header nav a{border-radius:var(--radius);color:var(--on-surface-variant);padding:.45rem .9rem;font-size:.9rem;font-weight:600}.site-header nav a:hover{background:var(--surface-container-high);color:var(--on-surface);text-decoration:none}.site-header nav a.active{background:var(--primary-container);color:var(--on-primary-container)}form{flex-wrap:wrap;align-items:center;gap:.5rem;margin-block:1.5rem;display:flex}input{min-width:12rem;font:inherit;border:1px solid var(--outline-variant);border-radius:var(--radius-sm);flex:1;padding:.5rem .7rem}button{font:inherit;border:1px solid var(--primary);border-radius:var(--radius);background:var(--primary);color:var(--on-primary);cursor:pointer;align-items:center;gap:.4rem;padding:.5rem 1.1rem;font-weight:600;transition:background-color .12s,transform 50ms;display:inline-flex}button:hover{background:#14213d;border-color:#14213d}button:active{transform:translateY(1px)}button.button-secondary{background:var(--surface-container-lowest);color:var(--on-surface);border-color:var(--outline-variant)}button.button-secondary:hover{background:var(--surface-container-high);border-color:var(--outline)}.stats-bar{grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.75rem;margin-block:1.5rem;display:grid}.stat-card{background:var(--surface-container-lowest);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-direction:column;gap:.3rem;padding:.9rem 1rem;display:flex}.stat-card-label{text-transform:uppercase;letter-spacing:.04em;color:var(--on-surface-variant);justify-content:space-between;align-items:center;font-size:.7rem;font-weight:700;display:flex}.stat-card-label .material-symbols-outlined{font-size:1.05rem}.stat-card-value{color:var(--primary);font-size:1.6rem;font-weight:700}.stat-card-value small{color:var(--on-surface-variant);margin-inline-start:.3rem;font-size:.85rem;font-weight:500}.stat-card.stat-status .stat-card-value{color:var(--on-tertiary-container);align-items:center;gap:.35rem;font-size:1.1rem;display:flex}.layout{align-items:flex-start;gap:2.5rem;display:flex}.sidebar{border-radius:var(--radius-lg);background:var(--surface-container-lowest);box-shadow:var(--shadow-sm);flex:0 0 19rem;padding:1.5rem;position:sticky;top:5.5rem}.timetable-panel{border-radius:var(--radius-lg);background:var(--surface-container-lowest);min-width:0;box-shadow:var(--shadow-sm);flex:1;padding:1.5rem}.panel-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-block-end:1rem;display:flex}.panel-header h2{margin:0}.bulk-actions{gap:.6rem;margin:0;display:flex}.bulk-actions form{margin:0}#offerings{flex-direction:column;gap:.6rem;display:flex}.course-group{border:1px solid var(--outline-variant);border-radius:var(--radius);overflow:hidden}.course-group summary{cursor:pointer;background:var(--surface-container-low);align-items:center;gap:.5rem;padding:.7rem .9rem;font-weight:600;list-style:none;display:flex}.course-group summary::-webkit-details-marker{display:none}.course-group summary:before{content:"▸";color:var(--on-surface-variant);font-size:.75rem;transition:transform .15s;display:inline-block}.course-group[open] summary:before{transform:rotate(90deg)}.course-group summary:hover{background:var(--surface-container-high)}.course-sessions{flex-direction:column;gap:.8rem;margin:0;padding:.6rem .8rem .8rem;list-style:none;display:flex}.course-sessions li{border-radius:var(--radius);border-inline-start:4px solid var(--outline-variant);background:var(--surface-container-low);flex-direction:column;gap:.3rem;padding:.65rem .75rem;font-size:.85rem;display:flex}.course-sessions li.type-lecture{border-inline-start-color:var(--primary)}.course-sessions li.type-lab{border-inline-start-color:var(--secondary)}.course-sessions li.type-studio{border-inline-start-color:var(--tertiary)}.course-sessions li.type-tutorial{border-inline-start-color:var(--quaternary)}.session-type{text-transform:uppercase;letter-spacing:.03em;border-radius:var(--radius-sm);align-items:center;gap:.3rem;width:fit-content;padding:.1rem .5rem;font-size:.7rem;font-weight:700;display:inline-flex}.session-type .material-symbols-outlined{font-size:.9rem}.type-lecture .session-type{background:var(--primary-container);color:var(--on-primary-container)}.type-lab .session-type{background:var(--secondary-container);color:var(--on-secondary-container)}.type-studio .session-type{background:var(--tertiary-container);color:var(--on-tertiary-container)}.type-tutorial .session-type{background:var(--quaternary-container);color:var(--on-quaternary-container)}.session-location{color:var(--on-surface-variant);align-items:center;gap:.25rem;font-size:.8rem;display:flex}.session-location .material-symbols-outlined{font-size:.85rem}.course-sessions form{margin-block:.3rem 0}.course-sessions button{padding:.3rem .8rem;font-size:.8rem}.added-tag{background:var(--tertiary-container);color:var(--on-tertiary-container);border-radius:1rem;align-self:flex-start;align-items:center;gap:.25rem;margin-block-start:.3rem;padding:.15rem .6rem;font-size:.75rem;font-weight:600;display:inline-flex}.added-tag .material-symbols-outlined{font-size:.9rem}.empty-state{text-align:center;border:1.5px dashed var(--outline-variant);border-radius:var(--radius-lg);background:var(--surface-container-low);color:var(--on-surface-variant);flex-direction:column;align-items:center;gap:.75rem;margin-block:1rem;padding:3rem 2rem;display:flex}.empty-state .material-symbols-outlined{color:var(--primary);font-size:2.5rem}.empty-state p{max-width:26rem;margin:0}.empty-state strong{color:var(--on-surface)}#timetable{border-radius:var(--radius);background:var(--outline-variant);gap:1px;margin-block-start:1rem;font-size:.85rem;display:grid;overflow:auto}.agenda{border-radius:var(--radius-lg);background:var(--surface-container-lowest);box-shadow:var(--shadow-sm);flex-direction:column;flex:0 0 16rem;gap:1rem;padding:1.5rem;display:flex;position:sticky;top:5.5rem}.agenda h3{margin:0;font-size:.95rem}.agenda-empty{color:var(--on-surface-variant);margin:0;font-size:.85rem}.agenda-day h4{text-transform:uppercase;letter-spacing:.05em;color:var(--on-surface-variant);margin:0 0 .5rem;font-size:.7rem;font-weight:700}.agenda-day ul{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.agenda-item{border-radius:var(--radius);border-inline-start:4px solid var(--primary);background:var(--surface-container-low);align-items:flex-start;gap:.6rem;padding:.5rem .65rem;font-size:.8rem;display:flex}.agenda-item .material-symbols-outlined{color:var(--primary);margin-block-start:.05rem;font-size:1.05rem}.agenda-item-body{flex-direction:column;gap:.1rem;display:flex}.agenda-item-body span{color:var(--on-surface-variant)}.agenda-item.type-lab{border-inline-start-color:var(--secondary)}.agenda-item.type-lab .material-symbols-outlined{color:var(--secondary)}.agenda-item.type-studio{border-inline-start-color:var(--tertiary)}.agenda-item.type-studio .material-symbols-outlined{color:var(--tertiary)}.agenda-item.type-tutorial{border-inline-start-color:var(--quaternary)}.agenda-item.type-tutorial .material-symbols-outlined{color:var(--quaternary)}.grid-hour-band{z-index:0;background:var(--surface-container-low)}.grid-corner,.grid-day-header,.grid-time-label,.slot{z-index:1;position:relative}.grid-corner,.grid-day-header,.grid-time-label{background:var(--surface-container-low);padding:.4rem}.grid-day-header{text-align:center;font-weight:600;position:sticky;top:0}.grid-time-label{text-align:right;color:var(--on-surface-variant);white-space:nowrap;font-size:.75rem}.slot{background:var(--surface-container-lowest);border-inline-start:4px solid var(--primary);box-shadow:var(--shadow-sm);flex-direction:column;gap:.15rem;padding:.3rem .5rem;font-size:.8rem;line-height:1.25;display:flex;position:relative;overflow:hidden}.slot-type-icon{color:var(--on-surface-variant);font-size:.85rem}.slot.type-lecture{background:var(--primary-container)}.slot.type-lecture .slot-type-icon{color:var(--primary)}.slot.type-lab{background:var(--secondary-container);border-inline-start-color:var(--secondary)}.slot.type-lab .slot-type-icon{color:var(--secondary)}.slot.type-studio{background:var(--tertiary-container);border-inline-start-color:var(--tertiary)}.slot.type-studio .slot-type-icon{color:var(--tertiary)}.slot.type-tutorial{background:var(--quaternary-container);border-inline-start-color:var(--quaternary)}.slot.type-tutorial .slot-type-icon{color:var(--quaternary)}.remove-form{margin:0;position:absolute;top:.15rem;right:.15rem}.remove-form button{border-radius:var(--radius-sm);min-width:0;color:var(--on-error-container);cursor:pointer;background:#ffffffb3;border:none;padding:.1rem}.remove-form button .material-symbols-outlined{font-size:.95rem}.remove-form button:hover{background:#fff}.toast{background:var(--surface-container-lowest);width:min(34rem,100vw - 2rem);box-shadow:var(--shadow-md);border-radius:var(--radius-lg);z-index:20;align-items:flex-start;gap:.75rem;padding:.85rem 1rem;animation:.18s ease-out toast-in;display:flex;position:fixed;top:5.5rem;left:50%;transform:translate(-50%)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-.5rem)}to{opacity:1;transform:translate(-50%)}}.toast-icon{border-radius:var(--radius);flex-shrink:0;justify-content:center;align-items:center;width:2.1rem;height:2.1rem;display:flex}.toast-body{flex-direction:column;gap:.15rem;font-size:.85rem;display:flex}.toast-body strong{font-size:.9rem}.toast-success .toast-icon{background:var(--tertiary-container);color:var(--on-tertiary-container)}.toast-success strong{color:var(--on-surface)}.toast-error .toast-icon{background:var(--error);color:var(--on-error)}.toast-error strong{color:var(--on-error-container)}.toast-error{background:var(--error-container)}.toast-error .toast-body{color:var(--on-error-container)}.site-footer{border-top:1px solid var(--outline-variant);background:var(--surface-container-low);margin-block-start:3rem;padding-block:1.5rem}.site-footer-inner{max-width:88rem;color:var(--on-surface-variant);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin:0;padding:0 2rem;font-size:.8rem;display:flex}.site-footer strong{color:var(--primary);font-size:.9rem;display:block}@media (width<=45rem){.layout{flex-direction:column}.sidebar,.agenda{flex:auto;width:100%;position:static}.site-header-inner{padding:0 1rem}main{padding:0 1rem 3rem}#timetable{width:100%;max-width:none}}
