:root{color-scheme:light dark;--bg: #fbfaf8;--surface: #ffffff;--surface-2: #f4f2ef;--surface-3: #ebe8e3;--ink: #17171b;--ink-soft: #6e6e78;--ink-faint: #9a9aa4;--line: #e7e4df;--line-strong: #d6d2cb;--brand: #2b5bd0;--brand-soft: #eaf0fd;--brand-ink: #ffffff;--btn-bg: #1c1c22;--btn-fg: #ffffff;--btn-bg-hover: #33333d;--accent: #1e7d5a;--accent-soft: #e4f2ec;--warn: #93701f;--warn-soft: #fbf1d9;--warn-ink: #6d5316;--danger: #c0392f;--danger-soft: #fbe8e6;--danger-ink: #96291f;--rail-bg: #f4f2ef;--rail-ink: #5d5d67;--rail-ink-active: #17171b;--tint: 1a;--text-xs: .75rem;--text-sm: .825rem;--text-base: .9375rem;--text-md: 1.0625rem;--text-lg: 1.1875rem;--text-xl: 1.5rem;--text-2xl: 1.875rem;--leading-tight: 1.25;--leading: 1.55;--tracking-tight: -.014em;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--radius: 14px;--radius-sm: 9px;--radius-xs: 6px;--shadow: 0 1px 2px rgba(23, 23, 27, .04);--shadow-raised: 0 2px 4px rgba(23, 23, 27, .06), 0 12px 28px rgba(23, 23, 27, .08);--font: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--ease: cubic-bezier(.2, 0, 0, 1);--tap: 44px}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #101014;--surface: #17171d;--surface-2: #1f1f27;--surface-3: #2a2a34;--ink: #ececf1;--ink-soft: #9b9baa;--ink-faint: #6d6d7c;--line: #2a2a33;--line-strong: #3a3a46;--brand: #7fa4f5;--brand-soft: #1c2537;--brand-ink: #0f1219;--btn-bg: #ececf1;--btn-fg: #17171b;--btn-bg-hover: #ffffff;--accent: #4fbb92;--accent-soft: #13291f;--warn: #d3ab53;--warn-soft: #2c2411;--warn-ink: #e3c88e;--danger: #e8837a;--danger-soft: #33191a;--danger-ink: #f0aaa4;--rail-bg: #15151a;--rail-ink: #9b9baa;--rail-ink-active: #ececf1;--tint: 33;--shadow: 0 1px 2px rgba(0, 0, 0, .5);--shadow-raised: 0 2px 4px rgba(0, 0, 0, .5), 0 12px 28px rgba(0, 0, 0, .45)}}:root[data-theme=dark]{--bg: #101014;--surface: #17171d;--surface-2: #1f1f27;--surface-3: #2a2a34;--ink: #ececf1;--ink-soft: #9b9baa;--ink-faint: #6d6d7c;--line: #2a2a33;--line-strong: #3a3a46;--brand: #7fa4f5;--brand-soft: #1c2537;--brand-ink: #0f1219;--btn-bg: #ececf1;--btn-fg: #17171b;--btn-bg-hover: #ffffff;--accent: #4fbb92;--accent-soft: #13291f;--warn: #d3ab53;--warn-soft: #2c2411;--warn-ink: #e3c88e;--danger: #e8837a;--danger-soft: #33191a;--danger-ink: #f0aaa4;--rail-bg: #15151a;--rail-ink: #9b9baa;--rail-ink-active: #ececf1;--tint: 33;--shadow: 0 1px 2px rgba(0, 0, 0, .5);--shadow-raised: 0 2px 4px rgba(0, 0, 0, .5), 0 12px 28px rgba(0, 0, 0, .45)}*{box-sizing:border-box}body{margin:0;font-family:var(--font);font-size:var(--text-base);line-height:var(--leading);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}h1,h2,h3,h4{line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);font-weight:650}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}.icon{flex:0 0 auto;vertical-align:-.16em}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:var(--radius-xs)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.section-title{margin:0;font-size:var(--text-lg)}.meta{font-size:var(--text-sm);color:var(--ink-soft);margin:0}.app-shell{min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap;padding:var(--space-3) var(--space-5);background:color-mix(in srgb,var(--surface) 82%,transparent);-webkit-backdrop-filter:saturate(1.4) blur(12px);backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:var(--space-2);min-width:0;flex-wrap:wrap}.brand .name{font-weight:650;letter-spacing:var(--tracking-tight);font-size:var(--text-md)}.brand .icon,.brand svg{color:var(--ink)}.topbar-spacer{flex:1}.user-switcher{display:flex;align-items:center;gap:var(--space-2);min-width:0}.user-switcher label{font-size:var(--text-sm);color:var(--ink-soft);white-space:nowrap}.user-switcher select,.select{font-family:inherit;font-size:var(--text-base);padding:var(--space-2) .6rem;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface);color:var(--ink);max-width:100%;min-width:0}.content{flex:1;padding:1.75rem var(--space-5) 4rem;max-width:1080px;margin:0 auto;width:100%}.page-head{margin-bottom:var(--space-5)}.page-head h1{margin:0 0 var(--space-1);font-size:var(--text-2xl)}.page-head p{margin:0;color:var(--ink-soft);max-width:60ch}.banner{display:block;padding:.65rem .9rem;border-radius:var(--radius-sm);font-size:var(--text-sm);margin-bottom:var(--space-5);line-height:1.5}.banner.demo{background:var(--warn-soft);color:var(--warn-ink)}.banner.demo .dot{background:var(--warn)}.banner.error{background:var(--danger-soft);color:var(--danger-ink)}.banner.error .dot{background:var(--danger)}.banner .dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:.55rem;vertical-align:middle}.banner>div{display:inline-block;vertical-align:middle;max-width:92%}.banner code{font-family:var(--font-mono);font-size:.95em;background:#7f7f7f2e;padding:.05rem .3rem;border-radius:4px}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;margin-bottom:1.25rem}.grid{display:grid;gap:var(--space-4)}.grid.cols-2{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.15rem 1.25rem}.card.subtle{background:var(--surface-2);border-color:transparent}.card h3{font-size:var(--text-md)}.card .sub{color:var(--ink-soft);font-size:var(--text-sm);margin:0}.class-card.selected{outline:2px solid var(--brand);outline-offset:-2px}.assignment h3{font-size:var(--text-md)}.due{font-size:var(--text-xs);font-weight:600;color:var(--ink-soft);white-space:nowrap}.due.overdue{color:var(--danger)}.chip{display:inline-flex;align-items:center;gap:.3rem;font-size:var(--text-xs);font-weight:500;padding:.15rem .55rem;border-radius:99px;background:var(--surface-2);color:var(--ink-soft);border:1px solid transparent;white-space:nowrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.5rem .9rem;border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:600;letter-spacing:-.005em;border:1px solid transparent;background:var(--btn-bg);color:var(--btn-fg);transition:background-color .15s var(--ease),border-color .15s var(--ease),color .15s var(--ease)}.btn:hover{background:var(--btn-bg-hover);text-decoration:none}.btn:active{transform:translateY(.5px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:disabled:hover{background:var(--btn-bg)}.btn.secondary{background:var(--surface);color:var(--ink);border-color:var(--line-strong)}.btn.secondary:hover{background:var(--surface-2);border-color:var(--ink-faint)}.btn.ghost{background:transparent;color:var(--ink-soft);padding:.4rem var(--space-2)}.btn.ghost:hover{background:var(--surface-2);color:var(--ink)}.btn.danger{background:transparent;color:var(--danger);border-color:var(--line-strong)}.btn.danger:hover{background:var(--danger-soft);border-color:var(--danger);color:var(--danger-ink)}.btn.small{padding:.34rem .6rem;font-size:var(--text-xs)}.bank-card{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-4);background:var(--surface-2);border-color:transparent}.digest-preview{background:var(--surface-2);border-color:transparent}.digest-subject{display:flex;gap:.5rem;align-items:baseline;padding-bottom:.6rem;margin-bottom:.6rem;border-bottom:1px solid var(--line)}.linklike{color:var(--brand);padding:0;text-align:left}.linklike:hover{text-decoration:underline}.toggle-group{display:flex;flex-wrap:wrap;gap:.4rem}.toggle-group{background:var(--surface-2);border-radius:99px;padding:3px;gap:2px}.toggle{font-size:var(--text-sm);font-weight:550;padding:.35rem .8rem;border-radius:99px;border:1px solid transparent;background:transparent;color:var(--ink-soft);transition:background-color .15s var(--ease),color .15s var(--ease)}.toggle:hover{color:var(--ink)}.toggle.on{background:var(--surface);color:var(--ink);border-color:var(--line);box-shadow:var(--shadow)}.field{margin-bottom:.85rem}.field label{display:block;font-size:var(--text-sm);font-weight:600;margin-bottom:.3rem}.field .hint{font-weight:400;color:var(--ink-soft)}.field input,.field select,.field textarea{width:100%;font-family:inherit;font-size:var(--text-base);padding:.55rem .7rem;border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);transition:border-color .15s var(--ease)}.field input:hover,.field select:hover,.field textarea:hover{border-color:var(--ink-faint)}.field input::placeholder,.field textarea::placeholder{color:var(--ink-faint)}.field textarea{min-height:64px;resize:vertical}.stack{display:flex;flex-direction:column;gap:1.25rem}.feed-group-head{display:flex;align-items:baseline;gap:var(--space-2);margin-bottom:.6rem}.feed-group-head .muted{font-size:.82rem}.feed-date-dot{width:9px;height:9px;border-radius:50%;align-self:center;flex:0 0 auto}.calendar-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);flex-wrap:wrap;margin-bottom:var(--space-3)}.calendar-head h2{margin:0;font-size:var(--text-lg)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.calendar-weekday{background:var(--surface-2);color:var(--ink-soft);font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:var(--space-2);text-align:center}.calendar-cell{background:var(--surface);min-height:92px;padding:.35rem;display:flex;flex-direction:column;gap:var(--space-1)}.calendar-cell.muted-cell{background:color-mix(in srgb,var(--surface) 70%,var(--bg))}.calendar-cell.muted-cell .calendar-date{opacity:.55}.calendar-cell.today{background:var(--brand-soft)}.calendar-date{font-size:var(--text-xs);font-weight:600;color:var(--ink-soft)}.calendar-cell.today .calendar-date{color:var(--brand)}.calendar-cell-head{display:flex;align-items:center;justify-content:space-between}.calendar-items{display:flex;flex-direction:column;gap:.2rem}.calendar-item{display:flex;align-items:center;gap:.25rem;font-size:var(--text-xs);text-align:left;padding:.25rem .35rem;border-radius:6px;border:1px solid transparent;color:var(--ink);min-height:26px;width:100%;overflow:hidden}.calendar-item:hover{filter:brightness(.97)}.calendar-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-item-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto}.calendar-item.is-event{background:var(--surface);border-style:dashed}.calendar-more{font-size:var(--text-xs);color:var(--ink-soft);padding:.2rem;text-align:left;text-decoration:underline;min-height:24px}.calendar-more:hover{color:var(--brand)}.calendar-caption{margin-top:var(--space-2)}.calendar-add{width:22px;height:22px;line-height:1;border-radius:6px;font-size:var(--text-base);color:var(--ink-soft);background:transparent;opacity:0;transition:opacity .12s ease}.calendar-cell:hover .calendar-add,.calendar-add:focus-visible{opacity:1}.calendar-add:hover{background:var(--brand-soft);color:var(--brand)}@media (hover: none){.calendar-add{opacity:.55}}.cal-legend{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.9rem}.legend-chip{display:inline-flex;align-items:center;gap:.35rem;font-size:var(--text-sm);padding:.3rem .65rem;border-radius:99px;border:1px solid var(--line);background:var(--surface);color:var(--ink-soft)}.legend-chip:hover{color:var(--ink)}.legend-chip.on{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}.legend-dot{width:9px;height:9px;border-radius:50%;display:inline-block}.muted{color:var(--ink-soft)}.divider{height:1px;background:var(--line);margin:.9rem 0}.row-between{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap}.inline{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.section>h2{font-size:var(--text-lg);margin:0 0 var(--space-3)}.empty{text-align:center;padding:var(--space-6) var(--space-4);color:var(--ink-soft);font-size:var(--text-sm);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2)}.center-screen{display:grid;place-items:center;min-height:60vh;color:var(--ink-soft)}.signin-card{width:min(28rem,calc(100vw - 2rem));margin:var(--space-5) auto;color:var(--ink);text-align:left}.signin-card .btn{width:100%;justify-content:center}.rail-layout{flex-direction:row}.global-rail{width:88px;flex-shrink:0;background:var(--rail-bg);border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:stretch;gap:2px;padding:var(--space-2) var(--space-2) var(--space-4);position:sticky;top:0;height:100vh;z-index:20}.rail-brand{display:grid;place-items:center;height:44px;margin-bottom:var(--space-2);color:var(--ink)}.rail-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:.55rem var(--space-1);border-radius:var(--radius-sm);color:var(--rail-ink);font-size:.66rem;font-weight:600;letter-spacing:.005em;text-align:center;min-height:var(--tap);transition:background-color .15s var(--ease),color .15s var(--ease)}.rail-item:hover{background:var(--surface-3);color:var(--rail-ink-active);text-decoration:none}.rail-item.active{background:var(--surface);color:var(--rail-ink-active);box-shadow:var(--shadow)}.rail-item.active .rail-glyph{color:var(--brand)}.rail-glyph{display:grid;place-items:center;font-size:1.15rem;line-height:1}.rail-glyph .icon{vertical-align:0}.rail-main{flex:1;min-width:0;display:flex;flex-direction:column}.dashboard-layout{display:grid;grid-template-columns:1fr 260px;gap:var(--space-5);align-items:start}.course-card-grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.course-card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;color:var(--ink);transition:transform .18s var(--ease),box-shadow .18s var(--ease),border-color .18s var(--ease)}.course-card:hover{text-decoration:none;transform:translateY(-2px);box-shadow:var(--shadow-raised);border-color:var(--line-strong)}.course-card-hero{height:5px}.course-card-body{padding:var(--space-3) var(--space-4) .4rem}.course-card-body h3{margin:0 0 .2rem;font-size:var(--text-md)}.course-card-body .sub{margin:0;font-size:var(--text-sm);color:var(--ink-soft)}.course-card-icons{display:flex;gap:.9rem;padding:.55rem var(--space-4) .7rem;margin-top:auto;font-size:.95rem;opacity:.75}.todo-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-4) 1.1rem;position:sticky;top:4.5rem}.todo-panel h2{margin:0 0 .7rem;font-size:var(--text-md)}.todo-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.55rem}.todo-list a{display:flex;align-items:center;gap:.45rem;color:var(--ink);flex-wrap:wrap}.todo-list a:hover{text-decoration:none}.todo-list a:hover .todo-title{text-decoration:underline;color:var(--brand)}.todo-title{font-size:.84rem;font-weight:600;flex:1 1 100%}.todo-meta{font-size:var(--text-xs);color:var(--ink-soft);margin-left:var(--space-4)}.announcement-row{color:var(--ink);padding:var(--space-3) var(--space-4)}.announcement-row:hover{text-decoration:none;border-color:var(--brand)}.course-header{padding:0 0 var(--space-4);border-bottom:1px solid var(--line);margin-bottom:var(--space-5);display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap}.course-header h1{margin:0 0 .2rem;font-size:var(--text-2xl)}.course-header .sub{margin:0;color:var(--ink-soft);font-size:var(--text-sm)}.course-body{display:grid;grid-template-columns:168px 1fr;gap:var(--space-5);align-items:start}.course-nav{display:flex;flex-direction:column;position:sticky;top:4.5rem;border-right:1px solid var(--line);padding-right:var(--space-1)}.course-nav a{padding:.45rem .7rem;font-size:var(--text-sm);font-weight:550;color:var(--ink-soft);border-radius:var(--radius-xs);white-space:nowrap;transition:background-color .15s var(--ease),color .15s var(--ease)}.course-nav a:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}.course-nav a.active{font-weight:650;color:var(--ink);background:var(--surface-2)}.course-content{min-width:0}.plain-list{list-style:none;margin:0;padding:0}.plain-list.boxed{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}.list-row{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);padding:.65rem .9rem;border-bottom:1px solid var(--line)}.plain-list:not(.boxed) .list-row{padding-left:0;padding-right:0}.list-row:last-child{border-bottom:none}.group-label{font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);margin:0 0 var(--space-2)}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.data-table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);font-size:.88rem}.data-table th{text-align:left;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;font-weight:600;color:var(--ink-soft);background:var(--surface-2);padding:.6rem var(--space-3)}.data-table td{padding:.7rem var(--space-3);border-top:1px solid var(--line);vertical-align:top}.avatar{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:var(--surface-3);color:var(--ink-soft);font-size:var(--text-xs);font-weight:650;margin-right:4px;flex:0 0 auto}.quiz-card-grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.quiz-card{display:flex;flex-direction:column;justify-content:space-between}.builder-choice{flex:1 1 44%;margin-bottom:var(--space-2)}.quiz-choices{display:flex;flex-direction:column;gap:.4rem}.quiz-choice{display:flex;align-items:center;gap:.55rem;padding:var(--space-2) .7rem;border:1px solid var(--line);border-radius:var(--radius-sm);font-size:var(--text-base);cursor:pointer;min-height:var(--tap)}.quiz-choice:hover{border-color:var(--brand)}.quiz-choice.selected{border-color:var(--brand);background:var(--brand-soft);font-weight:600}.quiz-choice.correct{border-color:var(--accent);background:var(--accent-soft);font-weight:600}.quiz-choice.incorrect{border-color:var(--danger);background:var(--danger-soft)}.quiz-choice input{accent-color:var(--brand)}.quiz-choice input:disabled{cursor:default}.quiz-choice .mark{margin-left:auto;font-weight:700}.quiz-choice.correct .mark{color:var(--accent)}.quiz-choice.incorrect .mark{color:var(--danger)}.quiz-question-row{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3);padding:.4rem 0}.practice-scoreboard{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap;background:var(--surface-2);border-color:transparent;margin-bottom:var(--space-4)}.disc-toolbar{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin-bottom:1.1rem}.disc-toolbar .select{flex:0 0 auto}.search-wrap{position:relative;flex:1 1 240px;display:flex;align-items:center}.search-icon{position:absolute;left:.6rem;font-size:var(--text-sm);opacity:.6;pointer-events:none}.search-input{width:100%;font-family:inherit;font-size:var(--text-base);padding:var(--space-2) 2rem var(--space-2) 2rem;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface);color:var(--ink)}.search-clear{position:absolute;right:.35rem;font-size:var(--text-sm);color:var(--ink-soft);width:24px;height:24px;border-radius:50%}.search-clear:hover{background:var(--surface-2);color:var(--ink)}.disc-row-main{display:flex;flex-direction:column;gap:3px;text-align:left;flex:1;color:var(--ink)}.disc-row-main:hover .disc-title{color:var(--brand);text-decoration:underline}.disc-title{font-weight:600}.disc-meta{font-size:var(--text-sm);color:var(--ink-soft)}.discussion-post{border-left:3px solid var(--line)}.gc-connect{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap}.gc-logo{width:52px;height:52px;border-radius:12px;display:grid;place-items:center;font-size:1.6rem;background:var(--brand-soft);flex:0 0 auto}.gc-course{display:flex;gap:.7rem;align-items:flex-start;cursor:pointer}.gc-course input{margin-top:.2rem;width:auto;accent-color:var(--brand)}.gc-course.picked{outline:2px solid var(--brand);outline-offset:-2px}.gc-course input:disabled{opacity:.5}.callout{display:flex;gap:.7rem;align-items:flex-start;background:var(--brand-soft);border:1px solid transparent;border-radius:var(--radius);padding:.85rem var(--space-4);margin-bottom:var(--space-5);font-size:var(--text-base)}.callout>strong{font-weight:650}.callout .callout-icon{font-size:1.1rem;line-height:1.4}.callout p{color:var(--ink-soft);font-size:.86rem}.subtle-callout{background:var(--surface-2)}@media (max-width: 900px){.dashboard-layout{display:flex;flex-direction:column-reverse}.todo-panel{position:static;top:auto}.todo-list a{padding:.35rem 0;min-height:var(--tap)}.todo-title{flex:1 1 auto}.todo-meta{margin-left:auto}}@media (max-width: 800px){.course-body{grid-template-columns:1fr}.course-nav{flex-direction:row;overflow-x:auto;border-right:none;border-bottom:1px solid var(--line);position:static}.course-nav a{min-height:var(--tap);display:flex;align-items:center}}@media (max-width: 640px){.content{padding:1.1rem .9rem 3rem}.page-head h1{font-size:1.3rem}.topbar{padding:.6rem .9rem;gap:var(--space-2)}.user-switcher{flex:1 1 100%}.user-switcher select{flex:1}.toolbar{flex-direction:column;align-items:stretch}.toolbar .toggle-group{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;min-width:0;max-width:100%;scrollbar-width:none}.toolbar .toggle-group::-webkit-scrollbar{display:none}.toolbar .toggle{flex:0 0 auto;min-height:var(--tap)}.toolbar .select{width:100%}.disc-toolbar{flex-direction:column;align-items:stretch}.disc-toolbar .select,.disc-toolbar .btn{width:100%}.search-wrap{flex:1 1 auto}.grid.cols-2{grid-template-columns:1fr}.btn.small,.legend-chip,.toggle{min-height:var(--tap);padding-block:.6rem}.calendar-item{min-height:30px;padding:.35rem}.calendar-add{width:28px;height:28px}.rail-layout{flex-direction:column}.global-rail{order:2;flex-direction:row;width:100%;height:auto;position:fixed;bottom:0;left:0;top:auto;z-index:30;border-right:none;border-top:1px solid var(--line);justify-content:space-around;gap:0;padding:var(--space-1) var(--space-1);padding-bottom:calc(var(--space-1) + env(safe-area-inset-bottom,0))}.rail-brand{display:none}.rail-item{flex:1;padding:var(--space-2) .15rem;min-height:52px}.rail-glyph{font-size:1.25rem}.rail-label{font-size:.6rem}.rail-main{order:1;padding-bottom:4.5rem}}.subject-chip{display:inline-flex;align-items:center;gap:.35rem;font-size:var(--text-xs);padding:.12rem var(--space-2);border-radius:99px;background:var(--surface-2);color:var(--ink);border:1px solid var(--line)}.subject-chip .legend-dot{width:7px;height:7px}.done-check{display:inline-flex;align-items:center;gap:.35rem;font-size:var(--text-sm);color:var(--ink-soft);cursor:pointer;flex:0 0 auto}.done-check input{width:18px;height:18px;accent-color:var(--accent);cursor:pointer;margin:0}.done-check.is-done{color:var(--accent);font-weight:600}.is-done .calendar-item-label,.assignment.is-done h3,.assignment-row.is-done a{text-decoration:line-through}.assignment.is-done,.assignment-row.is-done{opacity:.62}.progress-row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.progress-row input{accent-color:var(--brand)}@media (max-width: 640px){.progress-row{justify-content:space-between}.done-check input{width:22px;height:22px}}.due-soon{margin-bottom:var(--space-5)}.due-soon .list-row{padding:.6rem .9rem}.bulk-preview{margin-top:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--surface-2);border-radius:var(--radius-sm)}.bulk-row{display:flex;justify-content:space-between;gap:var(--space-3);padding:.2rem 0;font-size:var(--text-sm)}.bulk-row.has-error{color:var(--danger)}.chip.request-pending{background:var(--warn-soft);color:var(--warn-ink);border-color:var(--warn)}.chip.request-accepted{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.chip.request-declined{background:var(--surface-2);color:var(--ink-soft)}.score-ring{display:grid;place-items:center;flex:0 0 auto;width:62px;height:62px;border-radius:50%;font-size:1.25rem;font-weight:650;letter-spacing:var(--tracking-tight);border:2px solid var(--line-strong);background:var(--surface);color:var(--ink)}.score-ring span{font-size:.7rem;font-weight:600;color:var(--ink-soft)}.score-ring[data-tier=high]{border-color:var(--accent);color:var(--accent)}.score-ring[data-tier=mid]{border-color:var(--warn);color:var(--warn-ink)}.file-glyph{color:var(--ink-faint)}.signin-mark,.success-mark{display:grid;place-items:center;width:46px;height:46px;border-radius:13px;background:var(--surface-2);color:var(--ink);flex:0 0 auto}.success-mark{background:var(--accent-soft);color:var(--accent)}.callout-icon{display:grid;place-items:center;color:var(--ink-soft);padding-top:1px}.callout .callout-icon .icon{vertical-align:0}.gc-logo{color:var(--ink-soft);font-size:1.5rem}.btn .icon{vertical-align:0}.disc-title{font-weight:600;letter-spacing:-.006em}.section{margin-bottom:var(--space-6)}.section>h2,.section>.row-between:first-child{margin-bottom:var(--space-3)}.rail-label{display:block;max-width:100%;font-size:.6rem;line-height:1.2;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.course-card-body h3{color:var(--ink)}.course-card-icons{color:var(--ink-faint);gap:.6rem}.type-glyph{color:var(--ink-faint);margin-right:6px}.due-soon .list-row a,.todo-list a .todo-title{color:var(--ink)}.due-soon .list-row a:hover,.todo-list a:hover .todo-title{color:var(--brand)}.todo-list a{flex-wrap:wrap;align-items:baseline;row-gap:1px}.todo-list .feed-date-dot{align-self:center}.todo-title{flex:1 1 0;min-width:0;font-size:var(--text-sm);font-weight:600}.todo-meta{flex:1 1 100%;margin-left:0;padding-left:.95rem}.course-card-body{padding:var(--space-4) var(--space-4) var(--space-2)}.course-card-icons{padding:0 var(--space-4) var(--space-4)}
