/* Hallmark · macrostructure: Index-First · tone: utilitarian · anchor hue: blue · genre: editorial · theme: Almanac · nav: N3 · footer: Ft2 · enrichment: none · contrast: pass (40–41) · mobile: pass (34,49–57)
 * Hallmark · pre-emit critique: P4 H5 E4 S5 R5 V4 */
@import url('/tokens.css');
*{box-sizing:border-box}html,body{overflow-x:clip}html{scroll-behavior:auto}body{margin:0;background:var(--color-paper);color:var(--color-ink);font:var(--text-body)/1.7 var(--font-body);font-variant-numeric:tabular-nums}a{color:var(--color-accent);text-underline-offset:4px}button,input,select{font:inherit;color:inherit}button,.button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);border:var(--rule-thin) solid var(--color-rule);background:var(--color-paper);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);cursor:pointer;text-decoration:none;white-space:nowrap}button:active,.button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed}button[aria-busy=true]{opacity:.65}button[data-state=error],input[aria-invalid=true]{border-color:var(--color-error)}button[data-state=success]{border-color:var(--color-success)}:focus-visible{outline:3px solid var(--color-focus);outline-offset:3px}input,select{min-height:44px;max-width:100%;border:var(--rule-thin) solid var(--color-rule);background:var(--color-paper);padding:var(--space-sm);border-radius:var(--radius-sm)}h1,h2,h3{font-family:var(--font-display);font-style:normal;line-height:1.3;overflow-wrap:anywhere;min-width:0}h1{font-size:var(--text-title);margin:0}h2{font-size:var(--text-title);margin:var(--space-xl) 0 var(--space-md)}h3{font-size:var(--text-lg);margin:0 0 var(--space-sm)}p{margin:var(--space-sm) 0 var(--space-md)}ul{padding-left:var(--space-lg)}li+li{margin-top:var(--space-sm)}.muted,.meta{color:var(--color-muted)}.meta{font-size:var(--text-sm)}.shell{display:grid;grid-template-columns:240px minmax(0,1fr);max-width:1600px;margin:auto}.sidebar{padding:var(--space-xl) var(--space-lg);border-right:var(--rule-thin) solid var(--color-rule);height:100dvh;position:sticky;top:0;display:flex;flex-direction:column;gap:var(--space-lg)}.brand{font-family:var(--font-display);font-size:var(--text-title);font-weight:800}.side-nav{display:flex;flex-direction:column;gap:var(--space-sm)}.side-nav a{min-height:44px;padding:var(--space-sm) 0;text-decoration:none;color:var(--color-ink);white-space:nowrap}.side-nav a.active{color:var(--color-accent);font-weight:700}.sidebar-bottom{margin-top:auto}.main{min-width:0;padding:var(--space-xl) clamp(1rem,4vw,4rem)}.mast{display:flex;justify-content:space-between;gap:var(--space-md);align-items:flex-start;padding-bottom:var(--space-lg);border-bottom:2px solid var(--color-ink)}.mast p{margin:var(--space-sm) 0 0}.mast-meta{text-align:right}.notice{border-left:3px solid var(--color-rule);padding-left:var(--space-md);color:var(--color-muted);margin:var(--space-lg) 0}.deadline-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--space-xl)}.deadline{display:grid;grid-template-columns:68px minmax(0,1fr);gap:var(--space-md);padding:var(--space-md) 0;border-top:var(--rule-thin) solid var(--color-rule)}.week{color:var(--color-accent);font-family:var(--font-display);font-size:1.75rem;font-weight:800;line-height:1.3}.deadline p{margin:0}.course-index{display:flex;flex-direction:column}.course-link{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-md);align-items:center;padding:var(--space-lg) 0;border-top:var(--rule-thin) solid var(--color-rule);text-decoration:none}.course-link strong{font-size:var(--text-lg);color:var(--color-ink)}.course-link span{display:block}.course-link small{font-size:var(--text-sm);color:var(--color-muted)}.split-grade{display:flex;gap:var(--space-xl);padding:var(--space-md) 0 var(--space-lg);border-bottom:var(--rule-thin) solid var(--color-rule)}.grade-number{font:800 var(--text-display)/1.2 var(--font-display);color:var(--color-accent)}.grade-number small{font:var(--text-body) var(--font-body);color:var(--color-muted)}.grade-note{max-width:75ch}.item{padding:var(--space-lg) 0;border-bottom:var(--rule-thin) solid var(--color-rule)}.item-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md)}.item ul{max-width:75ch;margin-bottom:var(--space-md)}.score{color:var(--color-accent);font-weight:700;white-space:nowrap}.due{color:var(--color-muted)}.attachments{display:flex;flex-direction:column}.attachment{display:flex;justify-content:space-between;gap:var(--space-md);padding:var(--space-md) 0;border-top:var(--rule-thin) solid var(--color-rule);align-items:center}.attachment p{margin:0}.footer{margin-top:var(--space-2xl);border-top:var(--rule-thin) solid var(--color-rule);padding-top:var(--space-md);color:var(--color-muted);font-size:var(--text-sm)}.toolbar{display:flex;gap:var(--space-sm);flex-wrap:wrap;align-items:end;margin:var(--space-lg) 0}.field{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.field label{font-size:var(--text-sm);color:var(--color-muted)}.status-line{min-height:1.7em;color:var(--color-muted)}.error{color:var(--color-error)}.tabbar{display:flex;gap:var(--space-sm);flex-wrap:wrap;margin:var(--space-lg) 0}.tabbar button[aria-pressed=true]{border-color:var(--color-accent);color:var(--color-accent);font-weight:700}.roster-row{display:grid;grid-template-columns:48px minmax(0,1fr) minmax(90px,auto);gap:var(--space-sm);align-items:center;padding:var(--space-sm) 0;border-top:var(--rule-thin) solid var(--color-rule)}.initial{font-family:var(--font-display);font-size:var(--text-lg);color:var(--color-accent)}.roster-row small{display:block;color:var(--color-muted)}.empty{padding:var(--space-xl) 0}.install{max-width:65ch}.install ol{padding-left:var(--space-lg)}.skip{position:absolute;left:var(--space-md);top:-100px}.skip:focus{top:var(--space-md);z-index:var(--z-sticky);background:var(--color-paper)}[hidden]{display:none!important}
@media(hover:hover){button:hover,.button:hover,input:hover,select:hover{background:var(--color-paper-2)}.course-link:hover strong,.side-nav a:hover{text-decoration:underline;text-underline-offset:5px}}
@media(max-width:960px){.shell{grid-template-columns:minmax(0,1fr)}.sidebar{height:auto;position:static;display:block;border-right:0;border-bottom:var(--rule-thin) solid var(--color-rule);padding:var(--space-md)}.brand{font-size:var(--text-lg)}.sidebar>.meta,.sidebar-bottom{display:none}.side-nav{flex-direction:row;flex-wrap:wrap;gap:var(--space-md);margin-top:var(--space-sm)}.side-nav a{padding:0}.main{padding:var(--space-lg) var(--space-md)}.mast-meta{display:none}.deadline-list{grid-template-columns:minmax(0,1fr)}.mast{display:block}.item-head{display:block}.score{display:block}.course-link{grid-template-columns:minmax(0,1fr)}.course-link .index-grade{display:flex;gap:var(--space-md)}.attachment{align-items:flex-start}.attachment .button{flex-shrink:0}.split-grade{gap:var(--space-lg)}h1,h2{font-size:1.75rem}}
@media(max-width:374px){.attachment{flex-direction:column}.roster-row{grid-template-columns:28px minmax(0,1fr) 90px}.grade-number{font-size:2rem}.side-nav{gap:var(--space-sm)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
.overview-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:var(--space-xl)}.overview-grid .deadline-list{grid-template-columns:minmax(0,1fr)}.schedule-row{display:grid;grid-template-columns:140px minmax(0,1fr);gap:var(--space-sm) var(--space-md);padding:var(--space-md) 0;border-top:var(--rule-thin) solid var(--color-rule);text-decoration:none}.schedule-row .meta{grid-column:2}.schedule-row strong{color:var(--color-ink)}.schedule-row span{min-width:0;overflow-wrap:anywhere}.side-nav{align-items:flex-start}.button,button{line-height:1.3}.toolbar{align-items:center}input:disabled,select:disabled{opacity:.55;cursor:not-allowed}input[data-state=success],select[data-state=success]{border-color:var(--color-success)}input[aria-busy=true]{opacity:.65}
@media(max-width:1100px){.overview-grid{grid-template-columns:minmax(0,1fr)}}
@media(max-width:640px){.schedule-row{grid-template-columns:minmax(0,1fr)}.schedule-row .meta{grid-column:1}}

.side-nav a:active,.attachment a:active{color:var(--color-muted)}input:active,select:active{background:var(--color-paper-2)}.brand,.grade-number,.week{overflow-wrap:anywhere;min-width:0}@media(prefers-reduced-motion:reduce){button:active,.button:active{transform:none}}
