:root{--s1:8px;--s2:16px;--s3:24px;--s4:32px;--s5:40px;--s6:48px;--radius-sm:8px;--radius-md:16px;--radius-lg:24px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--canvas:var(--lightningcss-light,#f5f5f5)var(--lightningcss-dark,#161718);--surface:var(--lightningcss-light,#fff)var(--lightningcss-dark,#222426);--sidebar:var(--lightningcss-light,#eee)var(--lightningcss-dark,#1c1e20);--ink:var(--lightningcss-light,#222)var(--lightningcss-dark,#ededee);--muted:var(--lightningcss-light,#646464)var(--lightningcss-dark,#adafb3);--accent:var(--ink);--accent-soft:var(--lightningcss-light,#eaeaea)var(--lightningcss-dark,#303336);--hover:var(--lightningcss-light,#e5e5e5)var(--lightningcss-dark,#34373b);--line:var(--lightningcss-light,#d8d8d8)var(--lightningcss-dark,#50545a);--selected:var(--lightningcss-light,#dfdfdf)var(--lightningcss-dark,#3b3f44);--selected-hover:var(--lightningcss-light,#d5d5d5)var(--lightningcss-dark,#484d53);--grade-selected:var(--lightningcss-light,#e7e7e7)var(--lightningcss-dark,#303338);--marker:var(--lightningcss-light,#aaa)var(--lightningcss-dark,#777d84);--marker-selected:var(--lightningcss-light,#777)var(--lightningcss-dark,#b9bec6);--unavailable:var(--lightningcss-light,#eaeaea)var(--lightningcss-dark,#292c2f);--unavailable-ink:var(--lightningcss-light,#707070)var(--lightningcss-dark,#a3a8b0);--error:var(--lightningcss-light,#a52b27)var(--lightningcss-dark,#ffaaa3);--button-fill:var(--lightningcss-light,#222)var(--lightningcss-dark,#e5e7eb);--button-ink:var(--lightningcss-light,#fff)var(--lightningcss-dark,#202226);--button-hover:var(--lightningcss-light,#444)var(--lightningcss-dark,#c9cdd3);--current:var(--lightningcss-light,#d1e3fa)var(--lightningcss-dark,#203b56);--schedule-accent:var(--lightningcss-light,#124a78)var(--lightningcss-dark,#a6cff6);--schedule-accent-ink:var(--lightningcss-light,#fff)var(--lightningcss-dark,#142a40);--schedule-soft:var(--lightningcss-light,#e4edf6)var(--lightningcss-dark,#293e52);--schedule-hover:var(--lightningcss-light,#e4e8ed)var(--lightningcss-dark,#334353);--schedule-ink:var(--lightningcss-light,#1a242e)var(--lightningcss-dark,#e3eaf2);--schedule-muted:var(--lightningcss-light,#5c6975)var(--lightningcss-dark,#acbdce);--schedule-meta:var(--lightningcss-light,#3b444d)var(--lightningcss-dark,#b8c7d6);--schedule-current-meta:var(--lightningcss-light,#40546e)var(--lightningcss-dark,#c1d8f1);--schedule-line:var(--lightningcss-light,#e5e9ee)var(--lightningcss-dark,#465568);--schedule-button-hover:var(--lightningcss-light,#dce6ef)var(--lightningcss-dark,#3b5066);--upcoming:var(--lightningcss-light,#ffecd1)var(--lightningcss-dark,#42321e);--upcoming-tag:var(--lightningcss-light,#ffecd1)var(--lightningcss-dark,#48351f);--upcoming-ink:var(--lightningcss-light,#87500b)var(--lightningcss-dark,#f0c28b);--success-soft:var(--lightningcss-light,#e3efe8)var(--lightningcss-dark,#243c2e);--success-ink:var(--lightningcss-light,#31533d)var(--lightningcss-dark,#acd9b9);--backdrop:var(--lightningcss-light,#0000003d)var(--lightningcss-dark,#0000008f);--control-shadow:var(--lightningcss-light,#1a242e0a)var(--lightningcss-dark,#00000030);--brand-filter:none;--menu-duration:.2s;--menu-overlay-duration:.24s;--day-slide-duration:.24s}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--brand-filter:invert(1)}:root[data-theme-changing] *,:root[data-theme-changing] :before,:root[data-theme-changing] :after{transition:none!important}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--canvas);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,Hiragino Kaku Gothic ProN,Noto Sans JP,sans-serif;font-size:14px}button,input{font:inherit;border:0}button,a,input{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation;transition:background-color .18s,color .18s}button{cursor:pointer;color:inherit;background:0 0}button:disabled{cursor:default}input:is([type=date],[type=datetime-local]){appearance:none;box-sizing:border-box;min-width:0;max-width:100%;min-height:calc(var(--s2) * 2 + var(--s3))}input:is([type=date],[type=datetime-local])::-webkit-date-and-time-value{height:var(--s3);text-align:left}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}main:focus{outline:none}h1,h2,h3,p{margin:0}[hidden]{display:none!important}.icon{width:20px;height:20px;-webkit-mask-image:var(--sf-icon);mask-image:var(--sf-icon);background-color:currentColor;flex:0 0 20px;display:block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.sr-only,.skip-link:not(:focus){clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link:focus{z-index:10;padding:var(--s2);background:var(--surface);position:fixed}#app{grid-template-columns:248px minmax(0,1fr);height:100dvh;display:grid;overflow:hidden}.sidebar{background:var(--sidebar);min-height:0;padding:var(--s3);gap:var(--s4);flex-direction:column;display:flex}.sidebar-header{justify-content:space-between;align-items:center;display:flex}.sidebar-nav{gap:var(--s1);margin-bottom:var(--s4);display:grid}.sidebar-nav .button{justify-content:flex-start;font-size:14px}.nav-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.site-notice{white-space:pre-wrap;overflow-wrap:anywhere;margin-bottom:var(--s3);padding:var(--s2);background:var(--surface);border-radius:var(--radius-md)}.sidebar-nav .button[aria-current=page]{background:var(--selected)}.sidebar-nav .button:hover{background:var(--hover)}.sidebar-nav .button[aria-current=page]:hover{background:var(--selected-hover)}.menu-toggle,.menu-backdrop{display:none}.brand{width:fit-content;padding:var(--s2);align-items:center;display:inline-flex}.brand img{filter:var(--brand-filter);width:112px;height:auto;display:block}.sidebar-content{overscroll-behavior:contain;scrollbar-width:thin;flex-direction:column;flex:1;min-height:0;display:flex;overflow-y:auto}.sidebar-content>*{flex-shrink:0}.theme-settings{padding-top:var(--s4);margin-top:auto}.theme-options{gap:var(--s1);width:fit-content;padding:var(--s1);border-radius:var(--radius-md);background:var(--canvas);display:flex}.theme-options .button{color:var(--muted)}.theme-options .button:hover{background:var(--hover);color:var(--ink)}.theme-options .button[aria-pressed=true]{background:var(--selected);color:var(--ink)}.theme-options .button[aria-pressed=true]:hover{background:var(--selected-hover)}.grade-options{gap:var(--s1);display:grid}.grade-row{align-items:center;gap:var(--s2);padding:var(--s2);border-radius:var(--radius-sm);white-space:nowrap;width:100%;color:var(--muted);font-size:14px;line-height:16px;display:flex}.grade-row>.icon{flex-basis:16px;width:16px;height:16px}.grade-row:hover{background:var(--hover)}.group-label{color:var(--muted);margin:0 var(--s2) var(--s2);font-size:11px}.grade-row[aria-pressed=true]{background:var(--grade-selected);color:var(--ink)}.grade-marker{background:var(--marker);border-radius:3px;flex:0 0 8px;width:8px;height:8px;margin:4px}.grade-row[aria-pressed=true] .grade-marker{background:var(--marker-selected)}.grade-row[aria-pressed=true]:hover{background:var(--selected-hover)}.grade-check{visibility:hidden;margin-left:auto}.grade-row[aria-pressed=true] .grade-check{visibility:visible}main{overscroll-behavior:contain;scrollbar-gutter:stable;min-width:0;min-height:0;overflow-y:auto}.content{max-width:1088px;padding:var(--s6);margin:0 auto}.course-card.course-card-missing{gap:var(--s1);background:var(--unavailable);color:var(--unavailable-ink)}.course-unavailable{text-align:left;min-width:0;font:inherit;color:inherit;flex:1 1 0;padding:0}.add-link-button{color:var(--muted);flex:none;margin-left:auto;font-weight:500}.add-link-button:hover{background:var(--hover);color:var(--ink)}.course-card .add-link-button{width:24px;height:24px;padding:4px;position:relative}.course-card .add-link-button:after{content:"";position:absolute;inset:-12px}#contribution-form fieldset{border:0;min-width:0;margin:0;padding:0}.course-grid.contribution-fields{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}.course-card.contribution-row{align-items:stretch;gap:var(--s2);overflow-wrap:anywhere;border-radius:var(--radius-lg);flex-direction:column;line-height:24px}.contribution-title{flex:1;font-size:14px;font-weight:500}.form-help{margin-bottom:var(--s3);color:var(--muted);overflow-wrap:anywhere;line-height:24px}.form-help code{font-size:13px}.course-url-example{margin-top:var(--s1);font-weight:400;display:block}.course-url-example strong{color:var(--ink);font-weight:700}.contribution-row input{padding:var(--s2);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line);width:100%;min-width:0;scroll-margin-top:96px;font-size:16px;font-weight:400;line-height:24px}.contribution-row input:disabled{opacity:.6}.form-footer{justify-items:start;gap:var(--s2);margin-top:var(--s4);display:grid}.form-note{color:var(--muted);overflow-wrap:anywhere;line-height:24px}.form-submit{background:var(--button-fill);min-width:176px;color:var(--button-ink)}.form-submit:not(:disabled):hover{background:var(--button-hover)}.form-submit:disabled{opacity:.6}.form-status{overflow-wrap:anywhere;line-height:24px}.form-status[data-status=error]{color:var(--error)}.page-heading{justify-content:space-between;align-items:center;gap:var(--s2);margin-bottom:var(--s4);display:flex}h1{letter-spacing:-.035em;font-size:30px;font-weight:700;line-height:1.4}.home-date-navigation{gap:var(--s1);grid-template-columns:48px minmax(0,1fr) 48px;display:grid}.home-date-navigation h1{text-align:center;white-space:nowrap;font-size:clamp(18px,4.5vw,30px)}.home-date-navigation .icon-button{width:48px;height:48px;padding:var(--s2);color:var(--muted)}.home-date-navigation .icon-button:focus-visible{color:var(--ink)}.home-date-navigation .icon{flex-basis:16px;width:16px;height:16px}.home-events-viewport{touch-action:pan-y pinch-zoom;padding:var(--s1);margin:calc(-1 * var(--s1));align-items:start;display:grid;overflow:clip}.home-events-viewport>div{grid-area:1/1;min-width:0}.today-panel{min-width:0}.today-panel,#home-week-strip{--accent:var(--schedule-accent);--accent-soft:var(--schedule-soft);--hover:var(--schedule-hover);--ink:var(--schedule-ink);--muted:var(--schedule-muted);--line:var(--schedule-line)}.event-list{gap:14px;display:grid}.preview-notice{justify-content:space-between;align-items:center;gap:var(--s1);margin-bottom:var(--s2);color:var(--muted);flex-wrap:wrap;font-size:12px;line-height:16px;display:flex}.preview-notice a{padding:var(--s1);text-underline-offset:3px;text-decoration:underline}.event-row{padding:var(--s2);border-radius:var(--radius-lg);background:var(--surface);color:var(--schedule-ink);grid-template-columns:70px minmax(0,1fr) auto;align-items:start;gap:14px;transition:background-color .35s ease-in-out,margin-top .35s ease-in-out;display:grid;position:relative}.upcoming-tag{background:var(--upcoming-tag);color:var(--upcoming-ink);opacity:0;pointer-events:none;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:700;line-height:14px;transition:opacity .35s ease-in-out,transform .35s ease-in-out;position:absolute;top:-24px;left:0;transform:translateY(24px)}.event-time{letter-spacing:-.04em;font-variant-numeric:tabular-nums;flex-direction:column;align-items:flex-start;gap:4px;font-size:22px;font-weight:700;line-height:1.3;display:flex}.end-time{color:var(--schedule-meta);letter-spacing:0;font-size:13px;font-weight:500}.event-title{overflow-wrap:anywhere;font-size:17px;font-weight:600;line-height:1.3}.event-meta{align-items:center;gap:var(--s1);color:var(--schedule-meta);margin-top:6px;font-size:13px;font-weight:500;line-height:20px;display:flex}.event-meta .icon{flex-basis:16px;width:16px;height:20px}.event-meta span{overflow-wrap:anywhere;min-width:0}.event-action{place-self:center end;gap:var(--s1);flex-wrap:wrap;display:flex}.button,.icon-button{justify-content:center;align-items:center;gap:var(--s2);padding:var(--s2);border-radius:var(--radius-sm);white-space:nowrap;font-size:12px;line-height:16px;display:inline-flex}.button .icon,.icon-button .icon{flex-basis:16px;width:16px;height:16px}.button-primary{color:var(--accent);background:0 0;font-weight:600}.button-primary:not(:disabled):hover{background:var(--schedule-button-hover)}.button-primary:disabled{color:var(--muted);opacity:.4;background:0 0}.event-row[data-status=neutral]{background:var(--surface)}.event-row[data-status=upcoming]{background:var(--upcoming);margin-top:14px}.event-row[data-status=upcoming] .upcoming-tag{opacity:1;transform:none}.event-row[data-status=current]{background:var(--current)}.event-row[data-status=current] :is(.event-meta,.end-time){color:var(--schedule-current-meta)}.courses-section{margin-top:var(--s6)}.section-heading{justify-content:space-between;align-items:center;gap:var(--s2);margin-bottom:var(--s3);flex-wrap:wrap;display:flex}h2{font-size:18px;font-weight:600}.subtle-count{margin-left:var(--s2);color:var(--muted);font-size:13px;font-weight:400}.term-controls{padding:var(--s1);background:var(--sidebar);border-radius:var(--radius-md);display:flex}.term-controls button{padding:var(--s1);color:var(--muted);border-radius:var(--radius-sm);white-space:nowrap;font-size:12px;line-height:16px}.term-controls button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:0 1px 4px var(--control-shadow)}.term-controls button:hover{background:var(--hover)}.course-grid{gap:var(--s1);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.course-card{padding:var(--s2);border-radius:var(--radius-md);background:var(--surface);text-align:left;align-items:center;width:100%;min-width:0;font-size:15px;font-weight:600;line-height:24px;display:flex}.course-title{white-space:nowrap;width:100%;min-width:0;display:block;overflow:hidden}.course-title.is-overflowing{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000)}.course-card[href]:hover{background:var(--accent-soft);color:var(--accent)}.icon-button{background:var(--surface)}.week-strip{--week-radius:var(--radius-md);--selected-column:1;gap:var(--s1);margin-bottom:var(--s3);grid-template-columns:repeat(7,minmax(0,1fr));display:grid;position:relative}.week-strip[data-selected-day="1"]{--selected-column:2}.week-strip[data-selected-day="2"]{--selected-column:3}.week-strip[data-selected-day="3"]{--selected-column:4}.week-strip[data-selected-day="4"]{--selected-column:5}.week-strip[data-selected-day="5"]{--selected-column:6}.week-strip[data-selected-day="6"]{--selected-column:7}.day-selection{grid-column:var(--selected-column) / span 1;background:var(--accent);border-radius:var(--week-radius);pointer-events:none;grid-row:1/span 1;position:absolute;inset:0}.day-button{align-items:center;gap:var(--s1);padding:var(--s2);border-radius:var(--week-radius);color:var(--muted);flex-direction:column;font-size:11px;display:flex;position:relative}.day-button strong{font-size:21px;font-weight:600}.day-button[aria-pressed=true]{color:var(--schedule-accent-ink)}@media (hover:hover) and (pointer:fine){.day-button:not([aria-pressed=true]):hover,.icon-button:hover{background:var(--hover)}.home-date-navigation .icon-button:hover{color:var(--ink)}}.day-button.is-today:not([aria-pressed=true]) strong{color:var(--accent);text-underline-offset:5px;text-decoration:underline}.empty-state{padding:var(--s6);background:var(--surface);border-radius:var(--radius-lg);text-align:center;color:var(--muted)}.empty-state>.icon{margin:0 auto var(--s3);width:32px;height:32px}.empty-state h3{color:var(--ink);font-size:16px;font-weight:500}.inline-empty{color:var(--muted);padding:var(--s3);grid-column:1/-1}@media (width<=1100px){.course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.content{padding:var(--s4)}.event-row{gap:14px}}@media (width<=900px){.event-row{grid-template-columns:70px minmax(0,1fr) 48px}.event-action .button-label{display:none}}@media (width<=720px){.course-card.contribution-row{padding:var(--s1);border-radius:var(--radius-md)}.contribution-row input{padding:var(--s1);min-height:var(--s6);line-height:32px}.contribution-row input::-webkit-date-and-time-value{height:var(--s4)}.contribution-row input::-webkit-calendar-picker-indicator{width:var(--s2);margin:0;padding:0}html,body{height:auto}#app{height:auto;padding-top:80px;display:block;overflow:visible}.sidebar{z-index:40;background:var(--canvas);border-radius:0;gap:0;height:80px;padding:0;position:fixed;top:0;left:0;right:0;overflow:hidden}.sidebar:is([data-menu=opening],[data-menu=open]){border-radius:0 0 var(--radius-lg) var(--radius-lg);height:auto}.sidebar-header{padding:var(--s2);flex-shrink:0}.brand{padding:var(--s1)}.brand img{width:88px}.menu-toggle{padding:var(--s2);width:var(--s6);height:var(--s6);border-radius:var(--radius-sm);background:0 0;place-items:center;display:grid}.menu-glyph{width:16px;height:16px;display:block;position:relative}.menu-symbol{opacity:1;display:block;position:absolute;inset:0;transform:none}.menu-symbol .icon{width:16px;height:16px}.menu-symbol-close{opacity:0;transform:rotate(-90deg)scale(.8)}.menu-toggle[aria-expanded=true] .menu-symbol-open{opacity:0;transform:rotate(90deg)scale(.8)}.menu-toggle[aria-expanded=true] .menu-symbol-close{opacity:1;transform:none}.menu-backdrop{z-index:39;background:var(--backdrop);opacity:0;touch-action:none;display:block;position:fixed;inset:0}#app:has(.sidebar[data-menu=opening],.sidebar[data-menu=open]) .menu-backdrop{opacity:1}.sidebar-content{max-height:calc(100dvh - 80px);padding:var(--s2);overscroll-behavior:contain;opacity:0;pointer-events:none;flex:none;overflow-y:auto;transform:translateY(-8px)}.sidebar:is([data-menu=opening],[data-menu=open]) .sidebar-content{opacity:1;pointer-events:auto;transform:none}.grade-filter .group-label{margin:0 var(--s1) var(--s1);font-size:12px}.grade-options{gap:var(--s1);grid-template-columns:repeat(5,minmax(0,1fr))}.grade-row{padding:var(--s1);justify-content:center;gap:0;min-width:0;font-size:13px;line-height:28px}.grade-marker,.grade-check,.grade-suffix{display:none}main{scrollbar-gutter:auto;overflow:visible}.content{padding:var(--s2)}.page-heading{margin-bottom:var(--s3);flex-wrap:wrap}h1{font-size:26px}.event-row{gap:var(--s1)}.courses-section{margin-top:var(--s4)}.week-strip{--week-radius:var(--radius-sm)}.day-button{padding:var(--s1)}.day-button strong{font-size:18px}.empty-state{padding:var(--s3)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
