:root{--ink:#131313;--muted:#636363;--muted-2:#8c8c8c;--line:#e2e2e2;--line-strong:#ccc;--surface:#f6f6f6;--surface-alt:#fff;--brand:#be830e;--brand-strong:#7a4d00;--brand-soft:#fff7e9;--brand-soft-2:#fcf0d7;--ok-fg:#336103;--ok-bg:#effada;--warn-fg:#c53b00;--warn-bg:#faefeb;--error-fg:#a40303;--error-bg:#ffe3e3;--radius-sm:.4rem;--radius:.65rem;--radius-lg:1rem;--shadow-1:0 2px 4px #25252514;--shadow-2:0 6px 16px #2525251f}*{box-sizing:border-box}body{color:var(--ink);background:var(--surface);margin:0;font-family:Public Sans,system-ui,sans-serif;line-height:1.55}a{color:var(--brand-strong)}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.minibar{background:var(--ink);color:#fff;border-bottom:3px solid var(--brand);z-index:20;justify-content:space-between;align-items:center;gap:1rem;padding:.6rem 1.25rem;display:flex;position:sticky;top:0}.minibar-home{color:#fff;align-items:center;gap:.6rem;text-decoration:none;display:flex}.minibar-mark{border-radius:var(--radius-sm);background:var(--brand);width:2rem;height:2rem;color:var(--ink);justify-content:center;align-items:center;font-size:1rem;font-weight:700;display:inline-flex}.minibar-title{letter-spacing:-.01rem;font-size:1rem;font-weight:600}.minibar-title small{color:var(--brand-soft-2);letter-spacing:.02em;font-size:.72rem;font-weight:400;display:block}.minibar-actions{align-items:center;gap:.35rem;display:flex}details.dropdown{position:relative}details.dropdown>summary{cursor:pointer;list-style:none}details.dropdown>summary::-webkit-details-marker{display:none}.icon-btn{border-radius:var(--radius-sm);color:#fff;justify-content:center;align-items:center;width:2.25rem;height:2.25rem;display:inline-flex;position:relative}.icon-btn:hover,details[open]>.icon-btn{background:#ffffff1f}.badge-count{background:var(--brand);min-width:1.05rem;height:1.05rem;color:var(--ink);border-radius:999px;justify-content:center;align-items:center;padding:0 .25rem;font-size:.65rem;font-weight:700;display:flex;position:absolute;top:.1rem;right:.1rem}.profile-chip{border-radius:999px;align-items:center;gap:.5rem;padding:.25rem .6rem .25rem .25rem;display:inline-flex}.profile-chip:hover,details[open]>.profile-chip{background:#ffffff1f}.avatar{background:var(--brand-soft);width:1.75rem;height:1.75rem;color:var(--brand-strong);border-radius:50%;justify-content:center;align-items:center;font-size:.75rem;font-weight:700;display:inline-flex}.profile-name{font-size:.85rem}.dropdown-panel{background:var(--surface-alt);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow-1);min-width:16rem;padding:.9rem;position:absolute;top:calc(100% + .6rem);right:0}.waffle-panel{min-width:22rem;padding:.6rem;left:0;right:auto}.waffle-grid{grid-template-columns:repeat(2,1fr);gap:.3rem;margin:0;padding:0;list-style:none;display:grid}.waffle-grid a{border-radius:var(--radius-sm);color:var(--ink);padding:.55rem .65rem;text-decoration:none;display:block}.waffle-grid a:hover{background:var(--surface)}.waffle-grid a[aria-current=page]{background:var(--brand-soft)}.waffle-label{font-size:.88rem;font-weight:600;display:block}.waffle-grid a[aria-current=page] .waffle-label{color:var(--brand-strong)}.waffle-desc{color:var(--muted);margin-top:.1rem;font-size:.74rem;display:block}.bell-panel h2,.profile-panel h2{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border:none;margin:0 0 .5rem;padding:0;font-size:.78rem}.bell-panel section+section{border-top:1px solid var(--line);margin-top:.9rem;padding-top:.9rem}.bell-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.bell-list a,.profile-panel{font-size:.85rem}.profile-panel p{color:var(--muted);margin:0 0 .3rem}.breadcrumb-bar{background:var(--surface-alt);border-bottom:1px solid var(--line)}.breadcrumb{max-width:68rem;color:var(--muted);gap:.4rem;margin:0 auto;padding:.6rem 1.5rem;font-size:.82rem;display:flex}.breadcrumb a{color:var(--muted);text-decoration:none}.breadcrumb a:hover{color:var(--ink);text-decoration:underline}.crumb-current{color:var(--brand-strong);font-weight:600}main{max-width:68rem;margin:0 auto;padding:2rem 1.5rem 4rem}h1{letter-spacing:-.02rem;margin-block-end:.25rem}h2{margin-block:0 .75rem;font-size:1.05rem;font-weight:600}.section-heading{border-bottom:1px solid var(--line);margin-block:2rem .75rem;padding-block-end:.35rem;font-size:1.05rem;font-weight:600}.lede{color:var(--muted);max-width:42rem}.empty{color:var(--muted);font-style:italic}.muted{color:var(--muted);margin:.15rem 0 0;font-size:.85rem}.widget-grid{grid-template-columns:repeat(auto-fit,minmax(20rem,1fr));gap:1rem;margin-block:1.25rem;display:grid}.widget{background:var(--surface-alt);border:1px solid var(--line);border-top:3px solid var(--brand);border-radius:var(--radius-sm);grid-column:span 1;padding:1.1rem 1.2rem}.widget-wide{grid-column:1/-1}.widget-header{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.85rem;display:flex}.widget-header-title{align-items:center;gap:.55rem;display:flex}.widget-header h2{margin:0}.widget-icon{border-radius:var(--radius-sm);background:var(--brand-soft);width:1.6rem;height:1.6rem;color:var(--brand-strong);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.widget-icon svg{width:.95rem;height:.95rem}.widget-link{white-space:nowrap;font-size:.82rem}.course-card-grid{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:.75rem;display:grid}.course-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:.85rem 1rem}.course-card-code{color:var(--brand-strong);font-size:.9rem;font-weight:700;display:block}.course-card-title{margin:.1rem 0 .5rem;font-size:.88rem;display:block}.course-card-meta{color:var(--muted);margin:0 0 .65rem;font-size:.8rem}.card-grid{grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.75rem;margin-block:1.25rem;display:grid}.stat-card{background:var(--surface-alt);border:1px solid var(--line);border-radius:var(--radius-sm);color:inherit;flex-direction:column;gap:.15rem;padding:.9rem 1rem;text-decoration:none;display:flex}.stat-value{color:var(--brand-strong);font-size:1.4rem;font-weight:700}.stat-label{color:var(--muted);font-size:.82rem}table{border-collapse:collapse;background:var(--surface-alt);border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;overflow:hidden}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:.5rem .75rem;font-size:.9rem}th{background:var(--surface);color:var(--muted);text-transform:uppercase;letter-spacing:.02em;font-size:.78rem;font-weight:600}tbody tr:nth-child(2n){background:var(--surface)}tbody tr:last-child td{border-bottom:none}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}form{align-items:center;gap:.5rem;margin:0;display:inline-flex}button{font:inherit;border:1px solid var(--ink);background:var(--ink);color:#fff;border-radius:var(--radius-sm);cursor:pointer;padding:.4rem .9rem;font-size:.85rem;font-weight:600}button:hover{background:#000;border-color:#000}button.secondary{background:var(--surface-alt);color:var(--ink);border-color:var(--line-strong)}button.secondary:hover{background:var(--surface)}.task-list,.session-list,.notice-list{flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.task-list li{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);justify-content:space-between;align-items:center;gap:1rem;padding:.6rem .85rem;display:flex}.task-list form{display:contents}.task-done-group{margin-top:.75rem}.task-done-group summary{cursor:pointer;color:var(--muted);font-weight:600}.task-done-group .task-list{margin-top:.6rem}.session-list li{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.5rem .85rem;font-size:.9rem}.notice-list li{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.75rem .9rem}.notice-list p{color:var(--muted);margin:.3rem 0 0;font-size:.9rem}.notice-list time{color:var(--muted);font-size:.78rem}.notice-category{background:var(--brand-soft);text-transform:uppercase;letter-spacing:.04em;color:var(--brand-strong);border-radius:999px;align-items:center;padding:.15rem .55rem;font-size:.68rem;font-weight:700;display:inline-flex}.notice-title{margin-top:.4rem;font-size:.95rem;display:block}.badge{text-transform:capitalize;white-space:nowrap;border-radius:999px;padding:.15rem .5rem;font-size:.78rem;font-weight:600;display:inline-block}.badge-paid,.badge-ok{background:var(--ok-bg);color:var(--ok-fg)}.badge-unpaid,.badge-warn{background:var(--warn-bg);color:var(--warn-fg)}.badge-error{background:var(--error-bg);color:var(--error-fg)}.status-strip{flex-wrap:wrap;gap:.6rem;margin:0 0 1.25rem;display:flex}.status-chip{border-radius:999px;align-items:center;gap:.4rem;padding:.35rem .75rem;font-size:.82rem;font-weight:600;display:inline-flex}.status-chip-count{background:#ffffff8c;border-radius:999px;justify-content:center;align-items:center;min-width:1.4rem;height:1.4rem;font-size:.78rem;display:inline-flex}.status-chip-ok{background:var(--ok-bg);color:var(--ok-fg)}.status-chip-warn{background:var(--warn-bg);color:var(--warn-fg)}.status-chip-error{background:var(--error-bg);color:var(--error-fg)}.hub-section+.hub-section{margin-top:2.25rem}.hub-section-label{color:var(--ink);align-items:center;gap:.4rem;margin:0 0 .6rem;font-size:1rem;font-weight:700;display:flex}.hub-section-label:before{content:"▾";color:var(--muted-2);font-size:.72rem}.hub-section-desc{color:var(--muted);margin:0 0 .9rem;font-size:.88rem}.tt-wrap{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-alt);overflow-x:auto}.tt-head,.tt-body-row{grid-template-columns:3.25rem repeat(7,minmax(6.5rem,1fr));min-width:52rem;display:grid}.tt-head{border-bottom:1px solid var(--line)}.tt-head-cell{text-align:center;color:var(--muted);border-left:1px solid var(--line);padding:.5rem .4rem;font-size:.78rem;font-weight:700}.tt-corner{border-left:none}.tt-head-cell.tt-today{color:var(--brand-strong);background:var(--brand-soft)}.tt-today-tag{text-transform:uppercase;letter-spacing:.04em;font-size:.65rem;font-weight:600;display:block}.tt-hours{position:relative}.tt-hour-label{text-align:right;color:var(--muted);font-size:.68rem;position:absolute;left:0;right:.4rem;transform:translateY(-.55em)}.tt-day-col{border-left:1px solid var(--line);background-image:repeating-linear-gradient(to bottom, var(--line), var(--line) 1px, transparent 1px, transparent 100%);background-repeat:repeat-y;position:relative}.tt-day-col.tt-today{background-color:var(--brand-soft)}.tt-block{border:1px solid #00000014;border-left:3px solid var(--line-strong);border-radius:var(--radius-sm);padding:.25rem .4rem;font-size:.72rem;line-height:1.3;position:absolute;left:.2rem;right:.2rem;overflow:hidden}.tt-block strong{font-size:.78rem;display:block}.tt-block-meta{color:var(--muted);display:block}.course-color-a{background:#f3f0ff;border-left-color:#7048e8}.course-color-b{background:#e3fafc;border-left-color:#0b7285}.course-color-c{background:#fff0f6;border-left-color:#c2255c}.course-color-d{background:#fff4e6;border-left-color:#e8590c}.course-color-e{background:#ebfbee;border-left-color:#2b8a3e}.course-color-f{background:#e7f5ff;border-left-color:#1864ab}.course-group+.course-group,.content-group+.content-group{margin-top:1.75rem}.course-group-header{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.5rem;display:flex}.course-group-header h2{margin:0}.weight-summary{color:var(--muted);white-space:nowrap;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:.2rem .65rem;font-size:.78rem;display:inline-block}.notice-group-heading{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 .6rem;font-size:.78rem;font-weight:700}.deadline-list{flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.deadline-list li{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);justify-content:space-between;align-items:center;gap:1rem;padding:.6rem .85rem;display:flex}.deadline-list .muted{margin:.2rem 0 0}
