/* AcadFlow add-on styles, generated by patches/gen_bundle.py from patches/addons.json */
/* ---- a11y-1.css ---- */
/* AcadFlow accessibility patch 1 - loaded after the main stylesheet.
   Versioned file name on purpose: .htaccess caches /assets/*.css as immutable,
   so any change ships as a new name (a11y-2.css, ...), never an edit in place. */

/* 1. Visible keyboard focus (WCAG 2.4.7). The base rule uses box-shadow, which
   button styles such as .btn-primary and .theme-btn overwrite with their own
   shadows, so the ring never shows. An outline is not overwritten. */
a:focus-visible,
button:focus-visible,
[role=button]:focus-visible,
[tabindex]:not([tabindex="-1"]):focus-visible,
summary:focus-visible {
  outline: 2px solid var(--accent) !important;
  outline-offset: 2px !important;
}

/* 2. Phones: 16px form text so iOS does not zoom the page on tap. */
@media (max-width: 767px) {
  input:not([type=checkbox]):not([type=radio]):not([type=range]),
  select,
  textarea {
    font-size: 16px !important;
  }
}

/* 3. Bigger tap targets on the sign-in screen (WCAG 2.5.8, 44px guideline). */
.auth2 .btn-primary { min-height: 44px; }
.auth2 .link-btn { min-height: 44px; } /* buttons centre their label vertically on their own */
.auth2 label:has(> input[type=checkbox]) { min-height: 44px; cursor: pointer; }
.auth2-foot { font-size: .8125rem; }
.auth2-foot .link-btn { font-size: .8125rem; }
/* Eye icon: keep the 20px glyph, widen the clickable area to 40px. */
.pw-toggle { min-width: 40px; height: 40px; justify-content: center; right: 4px; }

/* 4. Windows High Contrast / forced colors: keep focus and borders visible. */
@media (forced-colors: active) {
  a:focus-visible, button:focus-visible, input:focus-visible,
  select:focus-visible, textarea:focus-visible, [tabindex]:focus-visible {
    outline: 2px solid CanvasText !important;
  }
  .btn, .theme-btn, .link-btn { border: 1px solid ButtonText; }
}

/* ---- a11y-2.css ---- */
/* AcadFlow accessibility patch 2 - generated by patches/gen_a11y2.py.
   12px text floor, px->rem, no phone/tablet text shrink. Do not edit by hand. */
@layer base{:root h1,:root h2,:root h3,:root h4,:root h5,:root h6{font-size:inherit}}
@layer base{:root code,:root kbd,:root samp,:root pre{font-size:1em}}
@layer base{:root small{font-size:80%}}
@layer base{:root sub,:root sup{font-size:75%}}
@layer base{:root button,:root input,:root select,:root optgroup,:root textarea{font-size:inherit}}
@layer base{:root ::file-selector-button{font-size:inherit}}
@layer base{html:root{font-size:calc(100% * var(--font-scale,1))}}
@layer base{@media(max-width:1023px){html:root{font-size:calc(100% * var(--font-scale,1))}}}
@layer base{@media(max-width:767px){html:root{font-size:calc(100% * var(--font-scale,1))}}}
@layer base{:root body{font-size:.9688rem}}
@layer components{:root .tip{font-size:.75rem}}
@layer components{:root .uiswitch-row-title{font-size:.875rem}}
@layer components{:root .uiswitch-row-sub{font-size:.75rem}}
@layer components{:root .toast{font-size:.9063rem}}
@layer components{:root .toast-action-btn{font-size:.8438rem}}
@layer components{:root .fb-cat{font-size:.8125rem}}
@layer components{:root .fb-pill{font-size:.75rem}}
@layer components{:root .dlg-icon-wrap{font-size:1.5625rem}}
@layer components{:root .dlg-title{font-size:1.0313rem}}
@layer components{:root .dlg-msg{font-size:.9063rem}}
@layer components{:root .app-splash-word{font-size:clamp(2.1rem,9vw,2.8rem)}}
@layer components{:root .app-splash-tag{font-size:.85rem}}
@layer components{:root .app-splash-hint{font-size:.75rem}}
@layer components{:root .tb-live{font-size:.75rem}}
@layer components{:root .sb-r{font-size:.8438rem}}
@layer components{:root .tb-acct-av{font-size:.8125rem}}
@layer components{:root .tb-acct-av.lg{font-size:.9rem}}
@layer components{:root .tb-acct-idt b{font-size:.8125rem}}
@layer components{:root .tb-acct-idt>span{font-size:.75rem}}
@layer components{:root .tb-acct-ver{font-size:.75rem}}
@layer components{:root .changelog-ver{font-size:.75rem}}
@layer components{:root .changelog-current-tag{font-size:.75rem}}
@layer components{:root .changelog-date{font-size:.75rem}}
@layer components{:root .changelog-title{font-size:.875rem}}
@layer components{:root .changelog-sec{font-size:.75rem}}
@layer components{:root .changelog-changes li{font-size:.8125rem}}
@layer components{:root .about-title{font-size:1.0625rem}}
@layer components{:root .about-sub{font-size:.75rem}}
@layer components{:root .nav-label{font-size:.75rem}}
@layer components{@media(min-width:1024px){:root .nav-label{font-size:.9063rem}}}
@layer components{:root .student-id{font-size:.7813rem}}
@layer components{:root .btn{font-size:.9063rem}}
@layer components{:root .link-btn{font-size:.9063rem}}
@layer components{:root .field label{font-size:.8438rem}}
@layer components{:root .field input:not([type=checkbox]):not([type=radio]),:root .field select,:root .field textarea{font-size:.9063rem}}
@layer components{:root .field-float input,:root .field-float select{font-size:.9063rem}}
@layer components{:root .field-float label{font-size:.9063rem}}
@layer components{:root .field-float input:focus~label,:root .field-float input:not(:placeholder-shown)~label,:root .field-float select:focus~label,:root .field-float select:not([value=""]):valid~label{font-size:.75rem}}
@layer components{:root .field-float--select label{font-size:.75rem}}
@layer components{:root .auth-section-label{font-size:.75rem}}
@layer components{:root .pw-req{font-size:.7813rem}}
@layer components{:root .pw-match{font-size:.7813rem}}
@layer components{:root .err-msg,:root .ok-msg{font-size:.8438rem}}
@layer components{:root .badge{font-size:.7813rem}}
@layer components{:root .input{font-size:.9063rem}}
@layer components{:root .form-label{font-size:.8438rem}}
@layer components{:root .form-input{font-size:.9063rem}}
@layer components{:root .btn-sm{font-size:.8438rem}}
@layer components{:root .btn-xs{font-size:.7813rem}}
@layer components{:root .modal-sub{font-size:.8438rem}}
@layer components{:root .sc-icon-wrap{font-size:1.25rem}}
@layer components{:root .sc-val{font-size:2rem}}
@layer components{:root .sc-label{font-size:.75rem}}
@layer components{:root .sc-sub{font-size:.7813rem}}
@layer components{:root .chart-title{font-size:.8438rem}}
@layer components{:root .chart-legend{font-size:.7813rem}}
@layer components{:root .sec-title{font-size:.9688rem}}
@layer components{:root .tbl{font-size:.9063rem}}
@layer components{:root .tbl th{font-size:.75rem}}
@layer components{:root .th-sort-icon{font-size:.75rem}}
@layer components{:root .grade-input{font-size:.9063rem}}
@layer components{:root .sg-subject-name{font-size:.9375rem}}
@layer components{:root .sg-upload-label{font-size:.75rem}}
@layer components{:root .sg-section-label{font-size:.75rem}}
@layer components{:root .sg-score-row{font-size:.8438rem}}
@layer components{:root .sg-score-avg{font-size:.8438rem}}
@layer components{:root .sg-no-data{font-size:.8438rem}}
@layer components{:root .sg-upload-status{font-size:.75rem}}
@layer components{:root .rub-lv-cell{font-size:.75rem}}
@layer components{:root .rub-lv-cell span{font-size:.75rem}}
@layer components{@media(max-width:679px){:root .sgw-more{font-size:.75rem}}}
@layer components{:root .cal-day-name{font-size:.7813rem}}
@layer components{:root .cal-day{font-size:.9063rem}}
@layer components{:root .att-toggle-btn{font-size:.8438rem}}
@layer components{:root .seg-toggle button{font-size:.8125rem}}
@layer components{:root .tpk-head-t b{font-size:.8125rem}}
@layer components{:root .tpk-head-t span{font-size:.75rem}}
@layer components{:root .tpk-bub{font-size:.75rem}}
@layer components{:root .tpk-who{font-size:.75rem}}
@layer components{:root .tpk-foot{font-size:.75rem}}
@layer components{:root .tpk-mi{font-size:.8125rem}}
@layer components{:root .tpk-mi small{font-size:.75rem}}
@layer components{:root .prof-badge-label{font-size:.6875rem}}
@layer components{:root .team-proj-strip{font-size:.75rem}}
@layer components{:root .team-proj-strip .tps-behind{font-size:.75rem}}
@layer components{:root .s-thread-ended{font-size:.875rem}}
@layer components{:root .s-conv-avatar{font-size:.9688rem}}
@layer components{:root .s-conv-name{font-size:.9063rem}}
@layer components{:root .s-conv-preview{font-size:.7813rem}}
@layer components{:root .s-conv-time{font-size:.75rem}}
@layer components{:root .ni-icon{font-size:1.25rem}}
@layer components{:root .ni-title{font-size:.9063rem}}
@layer components{:root .ni-sub{font-size:.7813rem}}
@layer components{:root .ni-time{font-size:.75rem}}
@layer components{:root .nbell .nbell-badge{font-size:.62rem}}
@layer components{:root .nbell-title{font-size:1.0625rem}}
@layer components{:root .nbell-markall{font-size:.8125rem}}
@layer components{:root .nbell-foot{font-size:.8125rem}}
@layer components{:root .smeta-chip{font-size:.75rem}}
@layer components{:root .cs-term{font-size:.75rem}}
@layer components{:root .cs-save{font-size:.75rem}}
@layer components{:root .cs-gchip{font-size:.75rem}}
@layer components{:root .cs-ava{font-size:.5938rem}}
@layer components{:root .cs-sco{font-size:.8125rem}}
@layer components{:root .cs-max{font-size:.75rem}}
@layer components{:root .cs-applied{font-size:.75rem}}
@layer components{:root .cs-note{font-size:.75rem}}
@layer components{:root .cs-empty{font-size:.75rem}}
@layer components{:root .recplay-note{font-size:.75rem}}
@layer components{:root .recplay-missing{font-size:.8125rem}}
@layer components{:root .quiz-focus-fsbtn{font-size:.75rem}}
@layer components{:root .rich-editor h3{font-size:1.0313rem}}
@layer components{:root .rich-editor h4{font-size:.9688rem}}
@layer components{:root .rich-editor pre,:root .ann-message pre{font-size:.8438rem}}
@layer components{:root .rich-editor code,:root .ann-message code{font-size:.92em}}
@layer components{:root .rich-editor td,:root .rich-editor th,:root .ann-message td,:root .ann-message th{font-size:.9063rem}}
@layer components{:root .ann-message{font-size:.9688rem}}
@layer components{:root .ann-message--preview{font-size:.9063rem}}
@layer components{:root .expandable-html__toggle{font-size:.8438rem}}
@layer components{:root .ann-message h3{font-size:1.0313rem}}
@layer components{:root .ann-message h4{font-size:.9688rem}}
@layer components{:root .kebab-trigger{font-size:1.25rem}}
@layer components{:root .kebab-item{font-size:.875rem}}
@layer components{:root .fsel-eyebrow{font-size:.75rem}}
@layer components{:root .fsel{font-size:.8125rem}}
@layer components{:root .seg-btn{font-size:.8125rem}}
@layer components{:root .seg-count{font-size:.6875rem}}
@layer components{:root .s-pill{font-size:.8438rem}}
@layer components{:root .s-post-title{font-size:.9688rem}}
@layer components{:root .s-post-meta{font-size:.8125rem}}
@layer components{:root .s-post-body{font-size:.9375rem}}
@layer components{:root .s-post-foot{font-size:.8438rem}}
@layer components{:root .s-post-action{font-size:.9063rem}}
@layer components{:root .s-feed-day{font-size:.7813rem}}
@layer components{:root .feed-sentinel{font-size:.8438rem}}
@layer components{:root .feed-end{font-size:.8125rem}}
@layer components{@media(max-width:640px){:root .s-pill{font-size:.75rem}}}
@layer components{:root .s-pill-n{font-size:.75rem}}
@layer components{:root .s-media-more{font-size:1.4rem}}
@layer components{:root .s-media-file-main{font-size:inherit}}
@layer components{:root .s-media-file-name{font-size:.8438rem}}
@layer components{:root .s-media-file-meta{font-size:.75rem}}
@layer components{:root .s-media-file-btn{font-size:.8125rem}}
@layer components{:root .s-media-fold{font-size:.75rem}}
@layer components{:root .s-media-link-name{font-size:.8438rem}}
@layer components{:root .s-media-link-sub{font-size:.75rem}}
@layer components{:root .s-media-link-btn{font-size:.8125rem}}
@layer components{:root .s-media-link-chip{font-size:.75rem}}
@layer components{:root .s-textcard-date{font-size:.75rem}}
@layer components{:root .s-textcard-title{font-size:1.0625rem}}
@layer components{:root .s-textcard-body{font-size:.875rem}}
@layer components{:root .s-textcard-foot{font-size:.75rem}}
@layer components{:root .s-textcard-more{font-size:.8125rem}}
@layer components{:root .s-lb-name{font-size:.8125rem}}
@layer components{:root .s-lb-count{font-size:.8125rem}}
@layer components{:root .s-lb-open{font-size:.8125rem}}
@layer components{:root .chip{font-size:.8438rem}}
@layer components{:root .skip-link{font-size:.9688rem}}
@layer components{:root .sug-opt{font-size:.75rem}}
@layer utilities{:root .text-2xl{font-size:var(--text-2xl)}}
@layer utilities{:root .text-3xl{font-size:var(--text-3xl)}}
@layer utilities{:root .text-base{font-size:var(--text-base)}}
@layer utilities{:root .text-lg{font-size:var(--text-lg)}}
@layer utilities{:root .text-sm{font-size:var(--text-sm)}}
@layer utilities{:root .text-xl{font-size:var(--text-xl)}}
@layer utilities{:root .text-xs{font-size:var(--text-xs)}}
@layer utilities{:root .text-\[9px\]{font-size:.75rem}}
@layer utilities{:root .text-\[10px\]{font-size:.75rem}}
@layer utilities{:root .text-\[11px\]{font-size:.75rem}}
:root #student-portal .sec-title{font-size:1.0313rem}
@media(max-width:1023px){:root #student-portal .student-bottom-nav .nav-item .nav-icon{font-size:1.5625rem}}
:root .auth2-eyebrow{font-size:.75rem}
:root .auth2-headline{font-size:2.6rem}
:root .auth2-tagline{font-size:1.0625rem}
:root .auth2-feat-t{font-size:.9375rem}
:root .auth2-brandtop .auth2-tagline{font-size:.9375rem}
:root .auth2-title{font-size:1.55rem}
:root .auth2-sub-text{font-size:.875rem}
:root .auth2-or{font-size:.75rem}
:root .auth2-subcard{font-size:.875rem}
:root .auth2-trust{font-size:.75rem}
:root .auth2-foot{font-size:.75rem}
:root .auth2-foot .link-btn{font-size:.75rem}
:root .faq-intro p{font-size:.9063rem}
:root .faq-q{font-size:.9688rem}
:root .faq-a{font-size:.9063rem}
:root .res-title{font-size:.9688rem}
:root .res-desc{font-size:.8438rem}
:root .res-new{font-size:.75rem}
:root .res-sub-count{font-size:.85rem}
:root .cal2-title{font-size:1.15rem}
:root .cal2-sub{font-size:.8rem}
:root .cal2-leg{font-size:.75rem}
:root .cal-chip{font-size:.75rem}
:root .oc-sec-h{font-size:.75rem}
:root .oc-hist-btn{font-size:.82rem}
:root .fb2-ring-meta{font-size:.75rem}
:root .fb-tip{font-size:.75rem}
:root .faceid-prompt{font-size:.75rem}
:root .faceid-note{font-size:.75rem}
:root #student-portal .badge{font-size:.7813rem}
:root .onb-title{font-size:1.25rem}
:root .onb-body{font-size:.9063rem}
:root .passed-eyebrow{font-size:.9063rem}
:root .passed-title{font-size:1.0313rem}
:root .passed-subject{font-size:1.6875rem}
:root .passed-eq{font-size:.9063rem}
:root .passed-msg{font-size:.9063rem}
:root .typing-indicator{font-size:.8438rem}
:root .gm-members-btn{font-size:.8438rem}
:root .gm-seen-label{font-size:.7813rem}
:root .gm-more{font-size:.75rem}
:root .gm-name{font-size:.9063rem}
:root .dashc-label{font-size:.75rem}
:root .dgc-row{font-size:.8125rem}
:root .dgc-time{font-size:.75rem}
:root .dgc-num{font-size:1.5rem}
:root .dgc-sub,:root .dgc-meta{font-size:.75rem}
:root .dgc-lede{font-size:.7812rem}
:root .dgc-title{font-size:.8438rem}
:root .dgc-clear{font-size:.7812rem}
:root .dgc-pill-dim{font-size:.75rem}
:root .dgc-cd{font-size:.7812rem}
:root .dgc-trend{font-size:.75rem}
:root .dgc-wd-l{font-size:.75rem}
:root .dgc-wd-dot{font-size:.6875rem}
:root .dgc-budget{font-size:.75rem}
:root .dgc-b-v{font-size:.75rem}
:root .dash-addtile{font-size:.8125rem}
:root .dgal-nm{font-size:.8438rem}
:root .dgal-ap{font-size:.75rem}
:root .dgal-desc{font-size:.75rem}
:root .dgal-prev .dgc{font-size:.75rem}
:root .dgal-prev .dgc-num{font-size:1.1875rem}
:root .dgal-note{font-size:.75rem}
:root .dgal-added{font-size:.75rem}
:root .dgal-hint{font-size:.75rem}
:root .rv-tab{font-size:.8125rem}
:root .rv-tab-n{font-size:.75rem}
:root .rv-prof{font-size:.75rem}
:root .rv-remove{font-size:.75rem}
:root .recipient-trigger-name{font-size:.9063rem}
:root .recipient-trigger-sub{font-size:.7813rem}
:root .recipient-search input{font-size:.9063rem}
:root .recipient-opt-name{font-size:.9063rem}
:root .recipient-opt-sub{font-size:.7813rem}
:root .recipient-divider{font-size:.75rem}
:root .recipient-empty{font-size:.8438rem}
:root .igl{font-size:.7812rem}
:root .igl th{font-size:.75rem}
:root .igl-stu b{font-size:.7812rem}
:root .igl-stu small{font-size:.75rem}
:root .igs-h b{font-size:.8438rem}
:root .igs-val{font-size:.9375rem}
:root .igs-chip{font-size:.75rem}
:root .igs-drift{font-size:.75rem}
:root .igs-exam{font-size:.75rem}
:root table.atl{font-size:.7813rem}
:root table.atl th{font-size:.75rem}
:root .atl-stu b{font-size:.7813rem}
:root .atl-stu small{font-size:.75rem}
:root .atl-flag{font-size:.75rem}
:root .ds-stud-av{font-size:13px}
:root .ds-stud-name{font-size:.875rem}
:root .ds-stud-id{font-size:.75rem}
:root .attn-av{font-size:13px}
:root .attn-name{font-size:.875rem}
:root .attn-id{font-size:.75rem}
:root .attn-reason{font-size:.75rem}
:root .ff-hint{font-size:.75rem}
:root .mk-nm{font-size:.8125rem}
:root .mk-warn{font-size:.75rem}
:root .rop-row{font-size:.8125rem}
:root .rop-state{font-size:.75rem}
:root .rop-ded{font-size:.75rem}
:root .tg-of{font-size:.75rem}
:root .gr-score{font-size:.875rem}
:root .gr-draft{font-size:.75rem}
:root .gd-title{font-size:.875rem}
:root .fb-area{font-size:.8438rem}
:root .fb-count{font-size:11px}
:root .fb-lead{font-size:.75rem}
:root .fb-chips button{font-size:.75rem}
:root .fb-chip-pts{font-size:.75rem}
:root .gd-abtn{font-size:.8125rem}
:root .sp-ring span{font-size:1rem}
:root .sp-ring span i{font-size:.75rem}
:root .sp-title{font-size:1.0625rem}
:root .sp-sub{font-size:.7812rem}
:root .sp-chip{font-size:.75rem}
:root .sp-node-label{font-size:.75rem}
:root .sp-here{font-size:.75rem}
:root .sp-state-tag{font-size:.75rem}
:root .atb-seg button{font-size:.75rem}
:root .sc-trend{font-size:.7813rem}
:root .ds-crumb{font-size:.8438rem}
:root .ds-page-head h2{font-size:1.55rem}
:root .ds-page-head p{font-size:.9375rem}
:root .sec-link{font-size:.875rem}
:root .empty-cta b{font-size:.9688rem}
:root .empty-cta span{font-size:.875rem}
:root .ds-card-h h3{font-size:.9688rem}
:root .ds-la{font-size:.9063rem}
:root .ds-ln{font-size:.9688rem}
:root .ds-ls{font-size:.8438rem}
:root .ds-lr{font-size:1.0313rem}
:root .risk-name{font-size:.9688rem}
:root .ds-statline .t{font-size:.9063rem}
@media(max-width:767px){:root .abn-label{font-size:.75rem}}
:root .ds-sheet-title{font-size:.8438rem}
:root .ds-tile{font-size:.7813rem}
@media(max-width:767px){:root .abn-label{font-size:.8125rem}}
:root .btn-lg{font-size:.9688rem}
:root .ds-field label{font-size:.8438rem}
:root .field-hint{font-size:.8125rem}
:root .nmm-to-label{font-size:.8125rem}
:root .nmm-chip{font-size:.7812rem}
:root .nmm-to-search input{font-size:.875rem}
:root .nmm-sec{font-size:.75rem}
:root .nmm-av{font-size:14px}
:root .nmm-name{font-size:.875rem}
:root .nmm-sub{font-size:.7812rem}
:root .nmm-pill{font-size:.75rem}
:root .nmm-empty{font-size:.8438rem}
:root .nmm-note{font-size:.75rem}
:root .nmm-cta{font-size:.875rem}
:root .note-banner{font-size:.8125rem}
@media(min-width:768px){:root .fm-pill-label{font-size:1.0625rem}}
@media(min-width:768px){:root .fm-stack-av{font-size:11px}}
@media(min-width:768px){:root .fm-pill-count{font-size:12px}}
@media(min-width:768px){:root .fm-head-title{font-size:1.0625rem}}
@media(min-width:768px){:root .fm-head-stack .fm-stack-av{font-size:9px}}
:root .apx-pack{font-size:inherit}
:root .apx-pack .apx-meta b{font-size:.8125rem}
:root .apx-pack .apx-meta span{font-size:.75rem}
:root .apx-open{font-size:.7812rem}
:root .apx-hexwrap i{font-size:.8125rem}
:root .apx-hexwrap input{font-size:.8125rem}
:root .apx-reset{font-size:.7812rem}
:root .apx-tuned>p{font-size:.75rem}
:root .apx-tuned-strip div{font-size:.75rem}
:root .apx-locked{font-size:.75rem}
:root .check-row-lbl{font-size:.8438rem}
:root .check-row-sub{font-size:.75rem}
:root .ok-t{font-size:1.125rem}
:root .ok-s{font-size:.8125rem}
@layer components{:root ._headTitle_18isb_5{font-size:1.02rem}}
@layer components{:root ._headMeta_18isb_9{font-size:.76rem}}
@layer components{:root ._footNote_18isb_11{font-size:.76rem}}
@layer components{:root ._label_18isb_14{font-size:.75rem}}
@layer components{:root ._muted_18isb_19{font-size:.78rem}}
@layer components{:root ._bad_18isb_20{font-size:.82rem}}
@layer components{:root ._returnedH_18isb_25{font-size:.75rem}}
@layer components{:root ._returnedNote_18isb_30{font-size:.87rem}}
@layer components{:root ._gradeScore_18isb_38{font-size:1.6rem}}
@layer components{:root ._gradeMax_18isb_39{font-size:.95rem}}
@layer components{:root ._penalty_18isb_40{font-size:.75rem}}
@layer components{:root ._feedbackTxt_18isb_42{font-size:.84rem}}
@layer components{:root ._crit_18isb_43{font-size:.83rem}}
@layer components{:root ._critP_18isb_52{font-size:.76rem}}
@layer components{:root ._instr_18isb_53{font-size:.87rem}}
@layer components{:root ._grouptext_18isb_54{font-size:.82rem}}
@layer components{:root ._factK_18isb_61{font-size:.75rem}}
@layer components{:root ._factV_18isb_65{font-size:.82rem}}
@layer components{:root ._prevX_18isb_71{font-size:.75rem}}
:root ._makeup_18isb_80{font-size:.8125rem}
@layer components{:root ._stat_9uvdb_2{font-size:.8438rem}}
@layer components{:root ._linkChip_9uvdb_9{font-size:.8438rem}}
@layer components{:root ._scopeH_9uvdb_62{font-size:.75rem}}
@layer components{:root ._navItem_9uvdb_72{font-size:.875rem}}
@layer components{:root ._navCount_9uvdb_82{font-size:.75rem}}
@layer components{:root ._upnextKick_9uvdb_94{font-size:.75rem}}
@layer components{:root ._upnextTitle_9uvdb_99{font-size:.9063rem}}
@layer components{:root ._upnextSub_9uvdb_100{font-size:.75rem}}
@layer components{:root ._tileV_9uvdb_105{font-size:1.25rem}}
@layer components{:root ._tileL_9uvdb_106{font-size:.75rem}}
@layer components{:root ._resTitle_9uvdb_113{font-size:.9375rem}}
@layer components{:root ._resSearch_9uvdb_114 input{font-size:.8125rem}}
@layer components{:root ._resSegI_9uvdb_123{font-size:.75rem}}
@layer components{:root ._resCount_9uvdb_130{font-size:.6875rem}}
@layer components{:root ._resChip_9uvdb_134{font-size:.75rem}}
@layer components{:root ._resChipct_9uvdb_142{font-size:.75rem}}
@layer components{:root ._resSech_9uvdb_147{font-size:.75rem}}
@layer components{:root ._resSecct_9uvdb_152{font-size:.75rem}}
@layer components{:root ._resBadge_9uvdb_158{font-size:.5rem}}
@layer components{:root ._resName_9uvdb_177{font-size:.8rem}}
@layer components{:root ._resMeta_9uvdb_182{font-size:.75rem}}
@layer components{:root ._resPill_9uvdb_187{font-size:.75rem}}
@layer components{:root ._resNew_9uvdb_191{font-size:.75rem}}
@layer components{:root ._resPost_9uvdb_195{font-size:.75rem}}
@layer components{:root ._resNote_9uvdb_203{font-size:.75rem}}
@layer components{:root ._resEmpty_9uvdb_204 span{font-size:.8438rem}}
@layer components{:root ._resEmpty_9uvdb_204 small{font-size:.75rem}}
:root ._compAv_9uvdb_226{font-size:.8125rem}
:root ._compPrompt_9uvdb_229{font-size:.8125rem}
:root ._compDraft_9uvdb_236{font-size:.75rem}
:root ._compWho_9uvdb_240{font-size:.8125rem}
:root ._compChip_9uvdb_248{font-size:.75rem}
:root ._compTarget_9uvdb_256{font-size:.75rem}
:root ._compPickI_9uvdb_268{font-size:.75rem}
:root ._compTitle_9uvdb_275,:root ._compMsg_9uvdb_275{font-size:inherit}
:root ._compTitle_9uvdb_275{font-size:.875rem}
:root ._compMsg_9uvdb_275{font-size:.8125rem}
:root ._compTool_9uvdb_287,:root ._compMore_9uvdb_287{font-size:.75rem}
:root ._compCancel_9uvdb_295{font-size:.75rem}
:root ._compPost_9uvdb_300{font-size:.75rem}
:root ._compHint_9uvdb_305{font-size:.75rem}
:root ._compField_9uvdb_319{font-size:.78rem}
:root ._compAdd_9uvdb_332{font-size:.75rem}
:root ._compLbl_9uvdb_339{font-size:.75rem}
:root ._compReach_9uvdb_380{font-size:.75rem}
:root ._compLinkPv_9uvdb_382{font-size:.75rem}
@layer components{:root ._av_1vlcw_4{font-size:13px}}
@layer components{:root ._name_1vlcw_7{font-size:.875rem}}
@layer components{:root ._time_1vlcw_10{font-size:.8125rem}}
@layer components{:root ._pin_1vlcw_11{font-size:.75rem}}
@layer components{:root ._pill_1vlcw_21{font-size:.75rem}}
@layer components{:root ._likes_1vlcw_25{font-size:.875rem}}
@layer components{:root ._caption_1vlcw_26{font-size:.875rem}}
@layer components{:root ._more_1vlcw_30{font-size:.8125rem}}
@layer components{:root ._viewcomments_1vlcw_31{font-size:.8125rem}}
@layer components{:root ._modalTitle_1vlcw_33{font-size:1rem}}
@layer components{:root ._clampMore_1vlcw_48{font-size:.75rem}}
@layer components{:root ._cardH_1hffm_4{font-size:.875rem}}
@layer components{:root ._pill_1hffm_13{font-size:.75rem}}
@layer components{:root ._chip_1hffm_33 b{font-size:1.05rem}}
@layer components{:root ._chip_1hffm_33 small{font-size:.75rem}}
@layer components{:root ._watchLead_1hffm_54{font-size:.82rem}}
@layer components{:root ._find_1hffm_55{font-size:.8rem}}
@layer components{:root ._subName_1hffm_84{font-size:.95rem}}
@layer components{:root ._subMeta_1hffm_85{font-size:.75rem}}
@layer components{:root ._subRate_1hffm_86{font-size:1.75rem}}
@layer components{:root ._barHead_1hffm_94{font-size:.75rem}}
@layer components{:root ._counts_1hffm_103{font-size:.75rem}}
@layer components{:root ._legend_1hffm_112{font-size:.75rem}}
:root ._cls_1f6ss_11 b{font-size:.9063rem}
:root ._cls_1f6ss_11 span{font-size:.75rem}
:root ._metric_1f6ss_19 b{font-size:1.0625rem}
:root ._metric_1f6ss_19 span{font-size:.75rem}
:root ._todayI_1f6ss_40{font-size:.75rem}
:root ._todayT_1f6ss_44 b{font-size:.8125rem}
:root ._todayT_1f6ss_44 span{font-size:.75rem}
:root ._gh_1f6ss_58 h3{font-size:.8125rem}
:root ._gh_1f6ss_58 ._cnt_1f6ss_62{font-size:.75rem}
:root ._gh_1f6ss_58 ._lede_1f6ss_64{font-size:.75rem}
:root ._card_1f6ss_89{font-size:inherit}
:root ._h_1f6ss_94 b{font-size:.8125rem}
:root ._h_1f6ss_94 small{font-size:.75rem}
:root ._ring_1f6ss_104 ._val_1f6ss_108{font-size:.875rem}
:root ._tally_1f6ss_113{font-size:.75rem}
:root ._why_1f6ss_126{font-size:.75rem}
:root ._perfect_1f6ss_138{font-size:.75rem}
:root ._mSel_1f6ss_166{font-size:.9063rem}
:root ._mBt_1f6ss_164>span{font-size:.75rem}
:root ._mDayH_1f6ss_183 b{font-size:1.0625rem}
:root ._mDayH_1f6ss_183 span{font-size:.75rem}
:root ._mTl_1f6ss_196 b{font-size:1.0625rem}
:root ._mTl_1f6ss_196 span{font-size:.75rem}
:root ._mSwitch_1f6ss_211 button{font-size:.8125rem}
:root ._mHint_1f6ss_224{font-size:.75rem}
:root ._mAv_1f6ss_241{font-size:.8125rem}
:root ._mRowN_1f6ss_248 b{font-size:.8125rem}
:root ._mRowN_1f6ss_248 small{font-size:.75rem}
:root ._mPill_1f6ss_257{font-size:.7813rem}
:root ._mOptS_1f6ss_268{font-size:.8125rem}
:root ._mProgT_1f6ss_279 b{font-size:.8125rem}
:root ._mProgT_1f6ss_279 span{font-size:.75rem}
:root ._mBigAv_1f6ss_294{font-size:1.625rem}
:root ._mNm_1f6ss_301{font-size:1.1875rem}
:root ._mSid_1f6ss_306{font-size:.7813rem}
:root ._mCur_1f6ss_311{font-size:.75rem}
:root ._mOpt_1f6ss_266{font-size:.875rem}
:root ._mDg_1f6ss_334{font-size:.75rem}
:root ._mDsp_1f6ss_342{font-size:.75rem}
:root ._mDsp_1f6ss_342 b{font-size:.8125rem}
:root ._find_2dg1p_7 input{font-size:.8125rem}
:root ._chip_2dg1p_21{font-size:.75rem}
:root ._count_2dg1p_34{font-size:.65625rem}
:root ._code_2dg1p_42{font-size:.75rem}
:root ._when_2dg1p_47{font-size:.75rem}
:root ._sum_2dg1p_48{font-size:.7812rem}
:root ._mtag_2dg1p_53{font-size:.75rem}
:root ._who_2dg1p_60{font-size:.75rem}
:root ._mon_169mx_16{font-size:.875rem}
:root ._today_169mx_20{font-size:.75rem}
:root ._clsChip_169mx_25{font-size:.75rem}
:root ._chip_169mx_36{font-size:.75rem}
:root ._sec_169mx_51 b{font-size:.75rem}
:root ._sec_169mx_51 span{font-size:.75rem}
:root ._secBtn_169mx_57{font-size:.75rem}
:root ._empty_169mx_61{font-size:.75rem}
:root ._time_169mx_62{font-size:.75rem}
:root ._pickRow_169mx_66{font-size:.8125rem}
@layer components{:root ._barT_4q8yl_14 b{font-size:.9375rem}}
@layer components{:root ._barT_4q8yl_14 span{font-size:.75rem}}
@layer components{:root ._subName_4q8yl_26{font-size:.7812rem}}
@layer components{:root ._subMeta_4q8yl_27{font-size:.75rem}}
@layer components{:root ._subAll_4q8yl_28{font-size:.75rem}}
@layer components{:root ._letter_4q8yl_44{font-size:.9375rem}}
@layer components{:root ._tName_4q8yl_49 b{font-size:.7812rem}}
@layer components{:root ._tName_4q8yl_49 span{font-size:.75rem}}
@layer components{:root ._tMeta_4q8yl_52{font-size:.75rem}}
@layer components{:root ._tCount_4q8yl_58{font-size:.6875rem}}
@layer components{:root ._enr_4q8yl_61{font-size:.75rem}}
@layer components{:root ._past_4q8yl_71{font-size:.75rem}}
@layer components{:root ._archLine_4q8yl_75{font-size:.75rem}}
@layer components{:root ._modes_4q8yl_111 button{font-size:.7812rem}}
@layer components{:root ._modeN_4q8yl_124{font-size:.75rem}}
@layer components{:root ._ghName_4q8yl_131{font-size:.8438rem}}
@layer components{:root ._ghMeta_4q8yl_132{font-size:.75rem}}
@layer components{:root ._cName_4q8yl_148{font-size:.9375rem}}
@layer components{:root ._cMeta_4q8yl_151{font-size:.75rem}}
@layer components{:root ._stripT_4q8yl_158{font-size:.75rem}}
@layer components{:root ._sw_4q8yl_162{font-size:.75rem}}
@layer components{:root ._fu_4q8yl_175{font-size:inherit}}
@layer components{:root ._fuV_4q8yl_191{font-size:1rem}}
@layer components{:root ._fuL_4q8yl_195{font-size:.75rem}}
@layer components{:root ._cSub_4q8yl_206{font-size:.75rem}}
@layer components{:root ._cSubMore_4q8yl_214{font-size:.75rem}}
@layer components{:root ._fbar_4q8yl_217{font-size:.7812rem}}
@layer components{:root ._cFoot_4q8yl_227{font-size:.75rem}}
@layer components{:root ._cPast_4q8yl_232{font-size:.75rem}}
:root ._vT_14o1b_32{font-size:1rem}
:root ._vS_14o1b_34{font-size:.7812rem}
:root ._vPill_14o1b_36{font-size:.75rem}
:root ._n_14o1b_61{font-size:.9062rem}
:root ._s_14o1b_63{font-size:.75rem}
:root ._legend_14o1b_71{font-size:.75rem}
:root ._fact_14o1b_75{font-size:.75rem}
:root ._avatar_1bxcc_17{font-size:.9375rem}
:root ._inviteBy_1bxcc_21{font-size:.75rem}
:root ._inviteName_1bxcc_23{font-size:.9375rem}
:root ._classCode_1bxcc_27{font-size:.75rem}
:root ._className_1bxcc_30{font-size:1.0625rem}
:root ._tag_1bxcc_35{font-size:.75rem}
:root ._sect_1bxcc_38{font-size:.75rem}
:root ._state_1bxcc_41 h2{font-size:1.375rem}
:root ._state_1bxcc_41 p{font-size:.875rem}
:root ._trT_1bxcc_83{font-size:.875rem}
:root ._trT_1bxcc_83 small{font-size:.75rem}
:root ._resumeP_1bxcc_92{font-size:.8125rem}
:root ._resumeH_1bxcc_94{font-size:.75rem}
:root ._appr_1bxcc_96{font-size:.8125rem}
:root ._youN_1bxcc_106{font-size:.9375rem}
:root ._youS_1bxcc_108{font-size:.75rem}
:root ._rules_1bxcc_112{font-size:.75rem}
:root ._linkIn_1bxcc_119{font-size:.8125rem}
:root ._lbar_1bxcc_140{font-size:.8125rem}
:root ._lbarT_1bxcc_148 small{font-size:.7812rem}
:root ._watch_1bxcc_151{font-size:.75rem}
:root ._grp_1bxcc_163{font-size:.75rem}
:root ._lockNote_1bxcc_167{font-size:.7812rem}
@layer components{:root ._tile_yaelg_25{font-size:inherit}}
@layer components{:root ._tileV_yaelg_43{font-size:1.625rem}}
@layer components{:root ._tileL_yaelg_50{font-size:.75rem}}
@layer components{:root ._tileS_yaelg_51{font-size:.75rem}}
@layer components{:root ._pT_yaelg_71{font-size:.9375rem}}
@layer components{:root ._pHint_yaelg_72{font-size:.75rem}}
@layer components{:root ._pTools_yaelg_73 select,:root ._pTools_yaelg_73 input{font-size:.7812rem}}
@layer components{:root ._av_yaelg_91{font-size:.8125rem}}
@layer components{:root ._nm_yaelg_99{font-size:.8438rem}}
@layer components{:root ._num_yaelg_100{font-size:.75rem}}
@layer components{:root ._meta_yaelg_104{font-size:.75rem}}
@layer components{:root ._flag_yaelg_106{font-size:.75rem}}
@layer components{:root ._emptyT_yaelg_129{font-size:.875rem}}
@layer components{:root ._emptyS_yaelg_130{font-size:.7812rem}}
@layer components{:root ._warn_yaelg_133{font-size:.75rem}}
@layer components{:root ._mkT_yaelg_145{font-size:.8125rem}}
@layer components{:root ._f_yaelg_106 label{font-size:.75rem}}
@layer components{:root ._f_yaelg_106 select,:root ._f_yaelg_106 input{font-size:.8125rem}}
@layer components{:root ._seg_yaelg_157 button{font-size:.75rem}}
@layer components{:root ._qrNote_yaelg_174{font-size:.75rem}}
@layer components{:root ._urlBox_yaelg_175{font-size:.75rem}}
@layer components{:root ._rejT_yaelg_188{font-size:.8125rem}}
@layer components{:root ._preset_yaelg_189{font-size:.75rem}}
@layer components{:root ._rejTa_yaelg_196{font-size:.7812rem}}
@layer components{:root ._rejCount_yaelg_201{font-size:.6875rem}}
@layer components{:root ._note_yaelg_204{font-size:.75rem}}
:root ._head_al0ev_11{font-size:.8438rem}
:root ._meta_al0ev_15{font-size:.75rem}
:root ._note_al0ev_16{font-size:.8125rem}
:root ._link_al0ev_17{font-size:.8125rem}
:root ._lbl_al0ev_24{font-size:.75rem}
:root ._chip_al0ev_31{font-size:.75rem}
:root ._chip_al0ev_31 i{font-size:.75rem}
:root ._av_al0ev_39{font-size:.5938rem}
:root ._x_al0ev_44{font-size:.9375rem}
:root ._result_al0ev_51 b{font-size:.8125rem}
:root ._result_al0ev_51 small{font-size:.75rem}
:root ._file_al0ev_64{font-size:.75rem}
:root ._fileRow_al0ev_75{font-size:.75rem}
:root ._back_al0ev_88{font-size:.8125rem}
:root ._headT_1n94q_13 b{font-size:1.0625rem}
:root ._headSub_1n94q_14{font-size:.8125rem}
:root ._progT_1n94q_17 b{font-size:.875rem}
:root ._progT_1n94q_17 span{font-size:.75rem}
:root ._qhead_1n94q_32 b{font-size:.75rem}
:root ._qrow_1n94q_45{font-size:inherit}
:root ._qname_1n94q_54 b{font-size:.8125rem}
:root ._qname_1n94q_54 span{font-size:.75rem}
:root ._qmark_1n94q_62{font-size:.875rem}
:root ._qmarkOff_1n94q_66{font-size:.75rem}
:root ._chip_1n94q_70{font-size:.75rem}
:root ._pickN_1n94q_87{font-size:.75rem}
:root ._who_1n94q_97 b{font-size:.9375rem}
:root ._whoSub_1n94q_102{font-size:.75rem}
:root ._nameTag_1n94q_106{font-size:.9375rem}
:root ._addBtn_1n94q_121{font-size:.75rem}
:root ._pickRow_1n94q_135{font-size:inherit}
:root ._pickWho_1n94q_143 b{font-size:.875rem}
:root ._pickWho_1n94q_143 span{font-size:.75rem}
:root ._av_1n94q_152{font-size:.6875rem}
:root ._pair_1n94q_160{font-size:.75rem}
:root ._shotOpen_1n94q_179{font-size:.75rem}
:root ._blank_1n94q_188 b{font-size:.9375rem}
:root ._blank_1n94q_188 p{font-size:.8125rem}
:root ._tile_1n94q_197{font-size:inherit}
:root ._tkind_1n94q_209{font-size:.75rem}
:root ._tdead_1n94q_215 ._tfail_1n94q_217{font-size:.75rem}
:root ._tname_1n94q_224{font-size:.75rem}
:root ._openOne_1n94q_228{font-size:.75rem}
:root ._said_1n94q_238{font-size:.8125rem}
:root ._sco_1n94q_246{font-size:1.125rem}
:root ._outOf_1n94q_252{font-size:.875rem}
:root ._cmt_1n94q_253{font-size:.8125rem}
:root ._keys_1n94q_258{font-size:.75rem}
:root ._keys_1n94q_258 kbd{font-size:.75rem}
:root ._meta_1n94q_271{font-size:.8125rem}
:root ._empty_1n94q_273 b{font-size:.9375rem}
:root ._empty_1n94q_273 span{font-size:.8125rem}
@layer components{:root ._eq_17yft_14{font-size:1.5rem}}
@layer components{:root ._pct_17yft_20{font-size:.75rem}}
@layer components{:root ._chip_17yft_21{font-size:.75rem}}
@layer components{:root ._compLb_17yft_38{font-size:.75rem}}
@layer components{:root ._examsH_17yft_53{font-size:.75rem}}
@layer components{:root ._examV_17yft_62{font-size:.9375rem}}
@layer components{:root ._x_17yft_78{font-size:.75rem}}
@layer components{:root ._simBig_17yft_110{font-size:1.7rem}}
@layer components{:root ._simHm_17yft_117{font-size:.8rem}}
@layer components{:root ._simSub_17yft_125{font-size:.75rem}}
@layer components{:root ._simRow_17yft_127{font-size:.78rem}}
@layer components{:root ._simLb_17yft_133 em{font-size:.75rem}}
@layer components{:root ._simCur_17yft_142{font-size:.75rem}}
@layer components{:root ._simIn_17yft_150{font-size:.8rem}}
@layer components{:root ._simNote_17yft_157{font-size:.75rem}}
@layer components{:root ._explain_17yft_160{font-size:.8rem}}
@layer components{:root ._audit_17yft_169{font-size:.76rem}}
@layer components{:root ._stepLb_17yft_192{font-size:.75rem}}
@layer components{:root ._stepVal_17yft_200{font-size:.86rem}}
@layer components{:root ._stepSub_17yft_201{font-size:.75rem}}
@layer components{:root ._splitMain_xkxz3_4{font-size:.7812rem}}
@layer components{:root ._menuTx_xkxz3_16 .t{font-size:.8125rem}}
@layer components{:root ._menuTx_xkxz3_16 .d{font-size:.75rem}}
@layer components{:root ._menuNote_xkxz3_21{font-size:.75rem}}
@layer components{:root ._menuBadge_xkxz3_22{font-size:9.5px}}
@layer components{:root ._joinTxt_xkxz3_26{font-size:.7812rem}}
@layer components{:root ._joinBtn_xkxz3_28{font-size:.7812rem}}
@layer components{:root ._metaSub_xkxz3_38{font-size:.75rem}}
@layer components{:root ._metaTitle_xkxz3_39{font-size:.8125rem}}
@layer components{:root ._av_xkxz3_40{font-size:11px}}
@layer components{:root ._cbtn_xkxz3_46.leave{font-size:.7812rem}}
@layer components{:root ._stageTitle_xkxz3_59 b{font-size:.9375rem}}
@layer components{:root ._stageSub_xkxz3_61{font-size:.75rem}}
@layer components{:root ._stagePresent_xkxz3_65{font-size:.75rem}}
@layer components{:root ._partAv_xkxz3_69{font-size:1.375rem}}
@layer components{:root ._partName_xkxz3_73{font-size:.8125rem}}
@layer components{:root ._partTag_xkxz3_74{font-size:.75rem}}
@layer components{:root ._partBadge_xkxz3_76{font-size:10px}}
@layer components{:root ._stageTab_xkxz3_83{font-size:.7812rem}}
@layer components{:root ._tabBadge_xkxz3_88{font-size:10px}}
@layer components{:root ._chatEmpty_xkxz3_93 p{font-size:.7812rem}}
@layer components{:root ._msgName_xkxz3_98{font-size:.75rem}}
@layer components{:root ._msgTime_xkxz3_99{font-size:.75rem}}
@layer components{:root ._msgBubble_xkxz3_100{font-size:.8125rem}}
@layer components{:root ._chatInput_xkxz3_104{font-size:.8125rem}}
@layer components{:root ._part_xkxz3_67.is-row ._partAv_xkxz3_69{font-size:.75rem}}
@layer components{:root ._stageFoot_xkxz3_116 ._cbtn_xkxz3_46{font-size:.8125rem}}
@layer components{:root ._cbtnBadge_xkxz3_123{font-size:10px}}
:root ._vbT_sjiir_25 b{font-size:.9688rem}
:root ._vbT_sjiir_25 span{font-size:.75rem}
:root ._gh_sjiir_55 h3{font-size:.8125rem}
:root ._cnt_sjiir_59{font-size:.75rem}
:root ._lede_sjiir_62{font-size:.75rem}
:root ._av_sjiir_96{font-size:11.5px}
:root ._t_sjiir_43 b{font-size:.8125rem}
:root ._t_sjiir_43 small{font-size:.75rem}
:root ._pill_sjiir_111{font-size:.75rem}
:root ._n_sjiir_119 b{font-size:1.1875rem}
:root ._n_sjiir_119 span{font-size:.75rem}
:root ._d_sjiir_83{font-size:.75rem}
:root ._comp_sjiir_138>span{font-size:.75rem}
:root ._comp_sjiir_138 b{font-size:.75rem}
:root ._scanH_sjiir_155{font-size:.75rem}
:root ._lift_sjiir_158{font-size:.75rem}
:root ._legend_sjiir_176{font-size:.75rem}
:root ._why_sjiir_186{font-size:.75rem}
:root ._note_sjiir_201{font-size:.75rem}
:root ._sec_sjiir_218{font-size:.75rem}
:root ._chain_sjiir_221{font-size:.7812rem}
:root ._none_sjiir_228{font-size:.75rem}
:root ._qt_sjiir_233{font-size:.75rem}
:root ._tag_sjiir_243{font-size:.75rem}
:root ._tlE_sjiir_252 b{font-size:.7812rem}
:root ._tlE_sjiir_252>span{font-size:.75rem}
:root ._hash_sjiir_265{font-size:.75rem}
:root ._checksH_sjiir_269 span{font-size:.7812rem}
:root ._chk_sjiir_273{font-size:.75rem}
:root ._sum_sjiir_276{font-size:.75rem}
:root ._entry_q934u_3 .we-t{font-size:1.0313rem}
:root ._entry_q934u_3 .we-s{font-size:.875rem}
:root ._eyebrow_q934u_96{font-size:.8438rem}
:root ._big_q934u_98{font-size:5rem}
:root ._title_q934u_100{font-size:2.0625rem}
:root ._label_q934u_102{font-size:1.0313rem}
:root ._blurb_q934u_104{font-size:1.0313rem}
:root ._recapV_q934u_113{font-size:1.6875rem}
:root ._recapL_q934u_115{font-size:.7813rem}
:root ._done_q934u_65{font-size:.9688rem}
:root ._back_q934u_127{font-size:.9063rem}
:root ._hK_3gxhk_44{font-size:.75rem}
:root ._hT_3gxhk_46{font-size:1.1875rem}
:root ._hS_3gxhk_48{font-size:.7812rem}
:root ._msV_3gxhk_60{font-size:1.1875rem}
:root ._msV_3gxhk_60 small{font-size:.75rem}
:root ._msL_3gxhk_64{font-size:.75rem}
:root ._eyebrow_3gxhk_66{font-size:.75rem}
:root ._bar_3gxhk_74{font-size:.75rem}
:root ._due_3gxhk_78{font-size:.75rem}
@media(max-width:560px){:root ._hT_3gxhk_46{font-size:1rem}}
:root ._up_dxlcf_11{font-size:inherit}
:root ._upK_dxlcf_21{font-size:.75rem}
:root ._upT_dxlcf_22{font-size:.7812rem}
:root ._upW_dxlcf_23{font-size:.75rem}
:root ._tile_dxlcf_29 b{font-size:1.0625rem}
:root ._tile_dxlcf_29 span{font-size:.75rem}
:root ._laneN_dxlcf_36{font-size:.75rem}
:root ._chip_dxlcf_43{font-size:.75rem}
:root ._day_dxlcf_59{font-size:.75rem}
:root ._rb_dxlcf_73 b{font-size:.7812rem}
:root ._rb_dxlcf_73 span{font-size:.75rem}
:root ._rs_dxlcf_76{font-size:.75rem}
:root ._score_dxlcf_81{font-size:.875rem}
:root ._empty_dxlcf_83{font-size:.8125rem}
:root ._pickRow_dxlcf_86{font-size:.875rem}
@layer components{:root ._note_1bfu0_2{font-size:.875rem}}
@layer components{:root ._livedot_1bfu0_10{font-size:.75rem}}
@layer components{:root ._lens_1bfu0_31{font-size:.8125rem}}
@layer components{:root ._stat_1bfu0_45 span{font-size:.75rem}}
@layer components{:root ._stat_1bfu0_45 b{font-size:1.375rem}}
@layer components{:root ._stat_1bfu0_45 i{font-size:.75rem}}
@layer components{:root ._cardT_1bfu0_89{font-size:.9063rem}}
@layer components{:root ._cardX_1bfu0_99{font-size:.8125rem}}
@layer components{:root ._err_1bfu0_112{font-size:.8125rem}}
@layer components{:root ._errM_1bfu0_127{font-size:.75rem}}
@layer components{:root ._errN_1bfu0_135{font-size:.75rem}}
@layer components{:root ._upd_1bfu0_157{font-size:.75rem}}
@layer components{:root ._ax_1bfu0_173{font-size:.75rem}}
@layer components{:root ._tip_1bfu0_198{font-size:.75rem}}
@layer components{:root ._pill_1bfu0_213{font-size:.75rem}}
@layer components{:root ._live_1bfu0_10{font-size:.8125rem}}
@layer components{:root ._whoPill_1bfu0_252{font-size:.75rem}}
@layer components{:root ._whoSub_1bfu0_263{font-size:.75rem}}
@layer components{:root ._whoNone_1bfu0_268{font-size:.8125rem}}
@layer components{:root ._whoAv_1bfu0_290 i{font-size:.72em}}
@layer components{:root ._whoNm_1bfu0_323{font-size:.8125rem}}
@layer components{:root ._whoSt_1bfu0_331{font-size:.75rem}}
@layer components{:root ._whoMore_1bfu0_350{font-size:.75rem}}
@layer components{:root ._popHead_1bfu0_372 b{font-size:.8125rem}}
@layer components{:root ._popHead_1bfu0_372 span{font-size:.75rem}}
@layer components{:root ._popBanner_1bfu0_387{font-size:.75rem}}
@layer components{:root ._popLab_1bfu0_397{font-size:.75rem}}
@layer components{:root ._popTr_1bfu0_405{font-size:.75rem}}
@layer components{:root ._popFoot_1bfu0_422{font-size:.75rem}}
@layer components{:root ._mRange_1bfu0_441{font-size:.7812rem}}
@layer components{:root ._mUpd_1bfu0_447{font-size:.75rem}}
@layer components{:root ._mStat_1bfu0_458 i{font-size:.75rem}}
@layer components{:root ._mStat_1bfu0_458 b{font-size:.875rem}}
@layer components{:root ._mChip_1bfu0_476{font-size:.75rem}}
@layer components{:root ._mPickRow_1bfu0_493{font-size:.8125rem}}
@layer components.components{:root ._pt_1ktfj_10>b{font-size:.8125rem}}
@layer components.components{:root ._pt_1ktfj_10>span{font-size:.75rem}}
@layer components.components{:root ._headT_1ktfj_35>b{font-size:.875rem}}
@layer components.components{:root ._headT_1ktfj_35>span{font-size:.75rem}}
@layer components.components{:root ._n_1ktfj_25{font-size:.75rem}}
@layer components.components{:root ._title_1ktfj_61{font-size:.75rem}}
@layer components.components{:root ._when_1ktfj_65{font-size:.75rem}}
@layer components.components{:root ._flag_1ktfj_79{font-size:.75rem}}
@layer components.components{:root ._today_1ktfj_84{font-size:.75rem}}
@layer components.components{:root ._colH_1ktfj_118>b{font-size:.75rem}}
@layer components.components{:root ._colN_1ktfj_123{font-size:.75rem}}
@layer components.components{:root ._colEmpty_1ktfj_127{font-size:.75rem}}
@layer components.components{:root ._tileH_1ktfj_139>b{font-size:.875rem}}
@layer components.components{:root ._tileTasks_1ktfj_142{font-size:.75rem}}
@layer components.components{:root ._chip_1ktfj_156{font-size:.75rem}}
@layer components.components{:root ._tileAct_1ktfj_163 .cs-sco{font-size:.75rem}}
@layer components.components{:root ._mark_1ktfj_168{font-size:.75rem}}
@layer components.components{:root ._bub_1ktfj_196{font-size:.75rem}}
@layer components.components{:root ._nt_1ktfj_207>b{font-size:.75rem}}
@layer components.components{:root ._nt_1ktfj_207>span{font-size:.75rem}}
@layer components.components{:root ._hero_1ktfj_215>h3{font-size:1.0625rem}}
@layer components.components{:root ._hero_1ktfj_215>p{font-size:.75rem}}
@layer components.components{:root ._heroNote_1ktfj_227{font-size:.75rem!important}}
@layer components.components{:root ._tcardB_1ktfj_236>b{font-size:.75rem}}
@layer components.components{:root ._tcardB_1ktfj_236>span{font-size:.75rem}}
@layer components.components{:root ._tnoneCard_1ktfj_240{font-size:.75rem}}
@layer components.components{:root ._teamNm_1ktfj_250{font-size:.75rem}}
@layer components.components{:root ._teamSt_1ktfj_255{font-size:.75rem}}
@layer components.components{:root ._note_1ktfj_256{font-size:.75rem}}
@layer components.components{:root ._ovrNm_1ktfj_264{font-size:.75rem}}
@layer components.components{:root ._ovrSub_1ktfj_268{font-size:.75rem}}
@layer components.components{:root ._ovrIn_1ktfj_270{font-size:.75rem}}
@layer components.components{:root ._ovrMax_1ktfj_275{font-size:.75rem}}
@layer components.components{:root ._mPill_1ktfj_302{font-size:.75rem}}
@layer components.components{:root ._mKicker_1ktfj_329{font-size:.75rem}}
@layer components.components{:root ._mTitle_1ktfj_337{font-size:1.625rem}}
@layer components.components{:root ._mMeta_1ktfj_338{font-size:.8125rem}}
@layer components.components{:root ._mBarL_1ktfj_341{font-size:.75rem}}
@layer components.components{:root ._mNote_1ktfj_342{font-size:.75rem}}
@layer components.components{:root ._mAct_1ktfj_343{font-size:.875rem}}
@layer components.components{:root ._mFaces_1ktfj_375 ._mFace_1ktfj_375{font-size:.75rem}}
@layer components.components{:root ._mGrpT_1ktfj_388 b{font-size:.8438rem}}
@layer components.components{:root ._mGrpT_1ktfj_388 span{font-size:.75rem}}
:root ._subHead_1ktfj_428{font-size:.8125rem}
:root ._subLink_1ktfj_432{font-size:.8125rem}
:root ._subNote_1ktfj_438{font-size:.8125rem}
:root ._subMeta_1ktfj_439{font-size:.75rem}
:root ._subFile_1ktfj_441{font-size:.75rem}
@layer components{:root ._planHint_1rsyj_9{font-size:.75rem}}
@layer components{:root ._sub_1rsyj_13{font-size:.75rem}}
@layer components{:root ._stepTitle_1rsyj_21{font-size:.75rem}}
@layer components{:root ._chip_1rsyj_23{font-size:.75rem}}
@layer components{:root ._stepNote_1rsyj_24{font-size:.75rem}}
@layer components{:root ._tasksH_1rsyj_37>b{font-size:.75rem}}
@layer components{:root ._catChip_1rsyj_39{font-size:.75rem}}
@layer components{:root ._ava_1rsyj_47{font-size:.625rem}}
@layer components{:root ._mmeta_1rsyj_52>b{font-size:.75rem}}
@layer components{:root ._mrole_1rsyj_54{font-size:.75rem}}
@layer components{:root ._mstat_1rsyj_56{font-size:.75rem}}
@layer components{:root ._roleIn_1rsyj_57{font-size:.75rem}}
@layer components{:root ._leadBadge_1rsyj_63{font-size:.6563rem}}
@layer components{:root ._leadSet_1rsyj_67{font-size:.75rem}}
@layer components{:root ._taskT_1rsyj_79{font-size:.75rem}}
@layer components{:root ._taskBy_1rsyj_81{font-size:.75rem}}
@layer components{:root ._taskNone_1rsyj_84{font-size:.75rem}}
@layer components{:root ._assign_1rsyj_85{font-size:.75rem}}
@layer components{:root ._addIn_1rsyj_92{font-size:.75rem}}
@layer components{:root ._gchip_1rsyj_98{font-size:.75rem}}
@layer components{:root ._you_1rsyj_45{font-size:.75rem}}
@layer components{:root ._edLock_1rsyj_115{font-size:.8125rem}}
@layer components{:root ._edLock_1rsyj_115 em{font-size:.75rem}}
@layer components{:root ._edHint_1rsyj_122{font-size:.75rem}}
@layer components{:root ._edMiniN_1rsyj_148{font-size:.75rem}}
@layer components{:root ._edMiniT_1rsyj_153{font-size:.75rem}}
@layer components{:root ._edMiniCat_1rsyj_154{font-size:.75rem}}
@layer components{:root ._edMiniD_1rsyj_158{font-size:.75rem}}
@layer components{:root ._avatar_b08ey_5{font-size:.75rem}}
@layer components{:root ._name_b08ey_10{font-size:.875rem}}
@layer components{:root ._sub_b08ey_11{font-size:.75rem}}
@layer components{:root ._lbl_b08ey_12{font-size:.75rem}}
@layer components{:root ._save_b08ey_13{font-size:.75rem}}
@layer components{:root ._tag_b08ey_26{font-size:.75rem}}
@layer components{:root ._chip_b08ey_40{font-size:.75rem}}
@layer components{:root ._progHead_b08ey_44{font-size:.75rem}}
@layer components{:root ._missedText_b08ey_52{font-size:.8125rem}}
@layer components{:root ._ctitle_b08ey_57{font-size:.8125rem}}
@layer components{:root ._meta2_b08ey_58{font-size:.75rem}}
@layer components{:root ._due_b08ey_62{font-size:.75rem}}
@layer components{:root ._pill_b08ey_63{font-size:.75rem}}
@layer components{:root ._status_b08ey_68{font-size:.75rem}}
@layer components{:root ._flag_b08ey_73{font-size:.75rem}}
:root .grade-row .gr-meta ._name_b08ey_10{font-size:.875rem}
:root ._barT_b08ey_102 b{font-size:.9375rem}
:root ._barT_b08ey_102 span{font-size:.75rem}
:root ._chip_b08ey_40{font-size:.75rem}
:root ._chip_b08ey_40 b{font-size:.75rem}
:root ._rHit_b08ey_148{font-size:inherit}
:root ._rTitle_b08ey_152{font-size:.8125rem}
:root ._rMeta_b08ey_156{font-size:.75rem}
:root ._rDue_b08ey_169{font-size:.75rem}
:root ._rPill_b08ey_171{font-size:.75rem}
:root ._newRow_b08ey_192{font-size:inherit}
:root ._newTxt_b08ey_202 b{font-size:.8125rem}
:root ._newTxt_b08ey_202 span{font-size:.75rem}
:root ._ringInner_b08ey_219 b{font-size:1.625rem}
:root ._ringInner_b08ey_219 span{font-size:.75rem}
:root ._step_b08ey_228{font-size:1.25rem}
:root ._dialCtrls_b08ey_226 ._scoreInput_b08ey_16{font-size:1.25rem}
:root ._quickset_b08ey_246 button{font-size:.75rem}
:root ._etab_1rwwu_13 b{font-size:.8438rem}
:root ._etab_1rwwu_13 span{font-size:.75rem}
:root ._compK_1rwwu_29{font-size:.75rem}
:root ._compV_1rwwu_31{font-size:1.4375rem}
:root ._compD_1rwwu_34{font-size:.75rem}
:root ._src_1rwwu_35{font-size:.75rem}
:root ._led_1rwwu_41{font-size:.8125rem}
:root ._led_1rwwu_41 th{font-size:.75rem}
:root ._tag_1rwwu_66{font-size:.75rem}
:root ._ak_1rwwu_75{font-size:.75rem}
:root ._av_1rwwu_76{font-size:1.1875rem}
:root ._rrow_1rwwu_83{font-size:.8125rem}
:root ._pinfo_1rwwu_96 b{font-size:.875rem}
:root ._pinfo_1rwwu_96 span{font-size:.75rem}
:root ._pbig_1rwwu_99{font-size:1.0625rem}
:root ._pmax_1rwwu_102{font-size:.8125rem}
:root ._rbig_1rwwu_105{font-size:1.875rem}
:root ._oh_1rwwu_112{font-size:.75rem}
:root ._pn_1rwwu_119{font-size:.75rem}
:root ._pcard_1rwwu_114 b{font-size:.8438rem}
:root ._pm_1rwwu_102{font-size:.75rem}
:root ._addp_1rwwu_124{font-size:.8125rem}
:root ._trow_1rwwu_130{font-size:.75rem}
:root ._trowTot_1rwwu_132{font-size:.8125rem}
:root ._instr_1rwwu_135{font-size:.8125rem}
:root ._qn_1rwwu_142{font-size:.75rem}
:root ._qt_1rwwu_145{font-size:.875rem}
:root ._qta_1rwwu_146{font-size:.875rem}
:root ._qpts_1rwwu_149{font-size:.75rem}
:root ._ch_1rwwu_151{font-size:.8125rem}
:root ._cht_1rwwu_156{font-size:.8125rem}
:root ._keyt_1rwwu_159{font-size:.75rem}
:root ._keyline_1rwwu_161{font-size:.8125rem}
:root ._rub_1rwwu_167 table{font-size:.75rem}
:root ._rub_1rwwu_167 th{font-size:.75rem}
:root ._fld_1rwwu_179 label{font-size:.75rem}
:root ._fld_1rwwu_179 input{font-size:.8125rem}
:root ._hint_1rwwu_184{font-size:.75rem}
:root ._phAbove_1rwwu_193{font-size:.75rem}
:root ._phTitle_1rwwu_194{font-size:1.0625rem}
:root ._phDetail_1rwwu_195{font-size:.8125rem}
:root ._crest_1rwwu_196{font-size:.8125rem}
:root ._phPts_1rwwu_198{font-size:1.25rem}
:root ._phPts_1rwwu_198 span{font-size:.75rem}
:root ._nameline_1rwwu_201{font-size:.8125rem}
:root ._honesty_1rwwu_203{font-size:.75rem}
:root ._pTitle_1rwwu_204{font-size:.875rem}
:root ._pInstr_1rwwu_205{font-size:.8125rem}
:root ._paper_1rwwu_187 ol{font-size:.8125rem}
:root ._opts2_1rwwu_211{font-size:.8125rem}
:root ._keySheet_1rwwu_214{font-size:.8125rem}
:root ._fact_1rwwu_226 b{font-size:1.25rem}
:root ._fact_1rwwu_226 span{font-size:.75rem}
:root ._rules_1rwwu_232 li{font-size:.8125rem}
:root ._timer_1rwwu_240{font-size:.9375rem}
:root ._tk_1rwwu_244{font-size:.75rem}
:root ._saveDot_1rwwu_246{font-size:.75rem}
:root ._partTag_1rwwu_256{font-size:.75rem}
:root ._qtext_1rwwu_258{font-size:1.0625rem}
:root ._opt_1rwwu_211{font-size:.9375rem}
:root ._lt_1rwwu_268{font-size:.8125rem}
:root ._idin_1rwwu_271{font-size:.9375rem}
:root ._essay_1rwwu_273{font-size:.9375rem}
:root ._ecount_1rwwu_276{font-size:.75rem}
:root ._gh_1rwwu_279{font-size:.75rem}
:root ._gn_1rwwu_283{font-size:.75rem}
:root ._qt_1rwwu_145{font-size:.7812rem}
:root ._legend_1rwwu_319{font-size:.75rem}
:root ._pqn_1rwwu_328{font-size:.75rem}
:root ._pqt_1rwwu_331{font-size:.9375rem}
:root ._o_1rwwu_19{font-size:.8438rem}
:root ._parthead_1rwwu_336 b{font-size:.9375rem}
:root ._parthead_1rwwu_336 span{font-size:.8125rem}
:root ._scK_1rwwu_347{font-size:.75rem}
:root ._scV_1rwwu_349{font-size:1.4375rem}
:root ._scD_1rwwu_350{font-size:.75rem}
:root ._heldnote_1rwwu_352{font-size:.8125rem}
:root ._cardH_1rwwu_359 b{font-size:.9375rem}
:root ._cardMeta_1rwwu_361{font-size:.75rem}
:root ._gPct_1rwwu_370{font-size:1.0625rem}
:root ._gEq_1rwwu_371{font-size:.75rem}
:root ._gPts_1rwwu_376{font-size:.75rem}
:root ._gPend_1rwwu_379{font-size:.75rem}
:root ._sid_1rwwu_416 b{font-size:.9375rem}
:root ._sid_1rwwu_416 span{font-size:.75rem}
:root ._fsBtn_1rwwu_419{font-size:.75rem}
:root ._scount_1rwwu_430{font-size:.75rem}
:root ._watch_1rwwu_433{font-size:.8125rem}
:root ._lockCard_1rwwu_441 h3{font-size:1.25rem}
:root ._lockCard_1rwwu_441 p{font-size:.875rem}
:root ._mtext_1rwwu_464{font-size:.875rem}
:root ._mauto_1rwwu_468{font-size:.75rem}
:root ._mnote_1rwwu_471{font-size:.8125rem}
:root ._pnote_1rwwu_477{font-size:.8125rem}
:root ._pnote_1rwwu_477 b{font-size:.75rem}
:root ._liveBar_1rwwu_490{font-size:.8125rem}
:root ._liveDot_1rwwu_493{font-size:.6875rem}
:root ._lstale_1rwwu_502{font-size:.75rem}
:root ._lname_1rwwu_512{font-size:.875rem}
:root ._lprog_1rwwu_514 em{font-size:.75rem}
:root ._lseen_1rwwu_520{font-size:.75rem}
:root ._qcell_1rwwu_527{font-size:.75rem}
:root ._tlLegend_1rwwu_534{font-size:.75rem}
:root ._lat_1rwwu_541{font-size:.75rem}
:root ._tlEvents_1rwwu_543{font-size:.75rem}
:root ._tmplH_1rwwu_556 b{font-size:.875rem}
:root ._tmplH_1rwwu_556 span{font-size:.75rem}
:root ._tchip_1rwwu_562{font-size:.75rem}
:root ._tmplNote_1rwwu_566{font-size:.75rem}
:root ._tmplPre_1rwwu_569{font-size:.75rem}
:root ._undoBar_1rwwu_575{font-size:.8125rem}
:root ._explText_1rwwu_585{font-size:.75rem}
:root ._explNone_1rwwu_586{font-size:.75rem}
:root ._pmark_1rwwu_596{font-size:1.125rem}
:root ._premark_1rwwu_598{font-size:.75rem}
:root ._premark_1rwwu_598 b{font-size:.875rem}
:root ._pEarn_1rwwu_604{font-size:.75rem}
:root ._pPts_1rwwu_609{font-size:.75rem}
:root ._pkey_1rwwu_624{font-size:.75rem}
:root ._pnoteP_1rwwu_625{font-size:.75rem}
:root ._soon_1rwwu_629{font-size:.75rem}
:root ._mClockK_1rwwu_648{font-size:.75rem}
:root ._mClockV_1rwwu_651{font-size:1.75rem}
:root ._mCount_1rwwu_654>b{font-size:.9375rem}
:root ._mMap_1rwwu_664{font-size:.75rem}
:root ._mNext_1rwwu_671{font-size:.9375rem}
:root ._mSh_1rwwu_644{font-size:.75rem}
:root ._mQN_1rwwu_697{font-size:.75rem}
:root ._mQT_1rwwu_702{font-size:.8125rem}
:root ._mQS_1rwwu_704{font-size:.75rem}
:root ._mRow_1rwwu_708{font-size:.875rem}
:root ._mLeftNote_1rwwu_712{font-size:.75rem}
:root ._mSubmit_1rwwu_713{font-size:.9375rem}
:root ._mClose_1rwwu_716{font-size:.8125rem}
:root ._xBt_1rwwu_731>b{font-size:.9375rem}
:root ._xBt_1rwwu_731>span{font-size:.75rem}
:root ._xTab_1rwwu_741{font-size:.75rem}
:root ._xSheetT_1rwwu_760>b{font-size:.9375rem}
:root ._xSheetT_1rwwu_760>span{font-size:.75rem}
:root ._xPub_1rwwu_767{font-size:.9375rem}
:root ._xRow_1rwwu_771{font-size:.875rem}
:root ._xCloseB_1rwwu_782{font-size:.8125rem}
:root ._xPagerT_1rwwu_792>b{font-size:.875rem}
:root ._xPagerT_1rwwu_792>span{font-size:.75rem}
:root ._xBack_1rwwu_813{font-size:.75rem}
:root ._xEx_1rwwu_823{font-size:inherit}
:root ._xEx_1rwwu_823>b{font-size:.8125rem}
:root ._xExTag_1rwwu_828{font-size:.75rem}
:root ._compMk_1rwwu_836{font-size:.75rem}
:root ._compMv_1rwwu_838{font-size:.9375rem}
:root ._xPt_1rwwu_844{font-size:inherit}
:root ._xPt_1rwwu_844>b{font-size:.75rem}
:root ._xPt_1rwwu_844>span{font-size:.75rem}
:root ._xProg_1rwwu_858>span{font-size:.75rem}
:root ._xWho_1rwwu_869{font-size:inherit}
:root ._xWho_1rwwu_869>b{font-size:.75rem}
:root ._xWho_1rwwu_869>span{font-size:.75rem}
:root ._xRwIn_1rwwu_875{font-size:.9375rem}
:root ._xRwOf_1rwwu_880{font-size:.75rem}
:root ._xRwTag_1rwwu_881{font-size:.75rem}
:root ._xExRow_1rwwu_884{font-size:inherit}
:root ._xExRow_1rwwu_884>b{font-size:.8125rem}
:root ._xExRow_1rwwu_884>span{font-size:.75rem}
:root ._dWarnT_1rwwu_909 b{font-size:.8125rem}
:root ._dWarnT_1rwwu_909 span{font-size:.75rem}
:root ._intgName_1rwwu_933{font-size:.8438rem}
:root ._intgNone_1rwwu_935{font-size:.7812rem}
:root ._sig_1rwwu_937{font-size:.75rem}
:root ._find_1rwwu_942 b{font-size:.8125rem}
:root ._find_1rwwu_942 p{font-size:.7812rem}
:root ._quote_1rwwu_948{font-size:.7812rem}
:root ._tq_1rwwu_958{font-size:.75rem}
:root ._tsec_1rwwu_963{font-size:.75rem}
:root ._tlegend_1rwwu_965{font-size:.75rem}
:root ._pBarT_1rwwu_983 b{font-size:.9375rem}
:root ._pBarT_1rwwu_983 span{font-size:.75rem}
:root ._clsName_ce9f7_14{font-size:.9063rem}
:root ._clsMeta_ce9f7_16{font-size:.75rem}
:root ._metricV_ce9f7_22{font-size:1.0625rem}
:root ._metricL_ce9f7_24{font-size:.75rem}
:root ._metricSub_ce9f7_26{font-size:.75rem}
:root ._progress_ce9f7_38{font-size:.75rem}
:root ._chip_ce9f7_41{font-size:.75rem}
:root ._live_ce9f7_65{font-size:.75rem}
:root ._gb_ce9f7_63{font-size:.75rem}
:root ._gb_ce9f7_63 th{font-size:.75rem}
:root ._gb_ce9f7_63 th._grp_ce9f7_79{font-size:.75rem}
:root ._cell_ce9f7_98{font-size:.75rem}
:root ._ro_ce9f7_119{font-size:.75rem}
:root ._gbName_ce9f7_123 b{font-size:.75rem}
:root ._gbName_ce9f7_123 small{font-size:.75rem}
:root ._gbFoot_ce9f7_129{font-size:.75rem}
:root ._kbd_ce9f7_131{font-size:.75rem}
:root ._incChip_ce9f7_148{font-size:inherit}
:root ._udChip_ce9f7_170{font-size:inherit}
:root ._grpLbl_ce9f7_188{font-size:.75rem}
:root ._item_ce9f7_190{font-size:inherit}
:root ._itemN_ce9f7_196 b{font-size:.75rem}
:root ._itemN_ce9f7_196 small{font-size:.75rem}
:root ._itemM_ce9f7_202{font-size:.75rem}
:root ._dhN_ce9f7_208{font-size:1rem}
:root ._dhM_ce9f7_210{font-size:.75rem}
:root ._secT_ce9f7_216{font-size:.75rem}
:root ._f_ce9f7_36 label{font-size:.75rem}
:root ._f_ce9f7_36 input{font-size:.9375rem}
:root ._fV_ce9f7_242{font-size:.9375rem}
:root ._bar_ce9f7_244{font-size:.75rem}
:root ._back_ce9f7_256{font-size:.75rem}
:root ._srow_ce9f7_278{font-size:inherit}
:root ._srowN_ce9f7_286 b{font-size:.8125rem}
:root ._srowN_ce9f7_286 span{font-size:.75rem}
:root ._srowEq_ce9f7_292{font-size:1.1875rem}
:root ._gwa_ce9f7_307{font-size:2.375rem}
:root ._heroM_ce9f7_309 b{font-size:.875rem}
:root ._heroM_ce9f7_309 span{font-size:.75rem}
:root ._heroR_ce9f7_315 b{font-size:1.0625rem}
:root ._heroR_ce9f7_315 span{font-size:.75rem}
:root ._stepL_ce9f7_332{font-size:.75rem}
:root ._stepV_ce9f7_334{font-size:1rem}
:root ._stepS_ce9f7_336{font-size:.75rem}
:root ._mgrid_ce9f7_345 span{font-size:.75rem}
:root ._mgrid_ce9f7_345 b{font-size:.8125rem}
:root ._mSel_ce9f7_384{font-size:.9063rem}
:root ._mBt_ce9f7_379>span{font-size:.75rem}
:root ._mMet_ce9f7_404 b{font-size:1.0625rem}
:root ._mMet_ce9f7_404 span{font-size:.75rem}
:root ._gbCardH_ce9f7_446 b{font-size:.8125rem}
:root ._gbCardH_ce9f7_446 small{font-size:.75rem}
:root ._gbLock_ce9f7_454 span{font-size:.75rem}
:root ._gbLock_ce9f7_454 b{font-size:.8125rem}
:root ._gbF_ce9f7_129 span{font-size:.75rem}
:root ._gbFin_ce9f7_488{font-size:1rem}
:root ._gbSum_ce9f7_505{font-size:.75rem}
:root ._gbSum_ce9f7_505>strong{font-size:.8125rem}
:root ._eSwitch_ce9f7_552 button{font-size:.8125rem}
:root ._eCol_ce9f7_566{font-size:.7813rem}
:root ._eColHi_ce9f7_587 b{font-size:1.0625rem}
:root ._eColHi_ce9f7_587 span{font-size:.75rem}
:root ._eRing_ce9f7_598 i{font-size:.75rem}
:root ._eGrp_ce9f7_609{font-size:.75rem}
:root ._eRowN_ce9f7_621 b{font-size:.8125rem}
:root ._eRowN_ce9f7_621 small{font-size:.75rem}
:root ._eIn_ce9f7_633{font-size:1.0625rem}
:root ._eNextCol_ce9f7_649{font-size:.8125rem}
:root ._eItemN_ce9f7_663 b{font-size:.7813rem}
:root ._eItemN_ce9f7_663 small{font-size:.75rem}
:root ._eStep_ce9f7_675{font-size:1.125rem}
:root ._ePos_ce9f7_682{font-size:.75rem}
:root ._ePos_ce9f7_682 b{font-size:.8125rem}
:root ._eUng_ce9f7_689{font-size:.75rem}
@layer components{:root ._heroT_cq1ld_26 b{font-size:.9063rem}}
@layer components{:root ._heroT_cq1ld_26 span{font-size:.7813rem}}
@layer components{:root ._liveChip_cq1ld_29{font-size:.75rem}}
@layer components{:root ._dchipMo_cq1ld_34{font-size:.75rem}}
@layer components{:root ._dchipDy_cq1ld_36{font-size:1.0625rem}}
@layer components{:root ._rowT_cq1ld_37 b{font-size:.875rem}}
@layer components{:root ._rowT_cq1ld_37 span{font-size:.7813rem}}
@layer components{:root ._cd_cq1ld_40{font-size:.75rem}}
@layer components{:root ._lcName_cq1ld_48 b{font-size:.875rem}}
@layer components{:root ._lcName_cq1ld_48 span{font-size:.75rem}}
@layer components{:root ._wcard_cq1ld_57{font-size:inherit}}
@layer components{:root ._wcardH_cq1ld_77{font-size:.8438rem}}
@layer components{:root ._wcardBadge_cq1ld_80{font-size:.6563rem}}
@layer components{:root ._wcardSub_cq1ld_90{font-size:.75rem}}
@layer components{:root ._wchip_cq1ld_92{font-size:.75rem}}
@layer components{:root ._subhint_cq1ld_104{font-size:.75rem}}
@layer components{:root ._linkstat_cq1ld_106{font-size:.75rem}}
@layer components{:root ._formNote_cq1ld_121{font-size:.75rem}}
@layer components{:root ._editLockedK_cq1ld_126{font-size:.75rem}}
@layer components{:root ._editLockedNote_cq1ld_127{font-size:.75rem}}
@layer components{:root ._recName_cq1ld_171{font-size:.8125rem}}
@layer components{:root ._recMeta_cq1ld_172{font-size:.75rem}}
@layer components{:root ._recNote_cq1ld_173{font-size:.75rem}}
@layer components{:root ._secChip_cq1ld_176{font-size:.75rem}}
@layer components{:root ._subLb_cq1ld_177{font-size:.75rem}}
@layer components{:root ._nolink_cq1ld_178{font-size:.75rem}}
:root ._barT_cq1ld_201 b{font-size:.9375rem}
:root ._barT_cq1ld_201 span{font-size:.75rem}
:root ._chip_cq1ld_210{font-size:.75rem}
:root ._chip_cq1ld_210 b{font-size:.75rem}
:root ._gh_cq1ld_224 b{font-size:.75rem}
:root ._gh_cq1ld_224 span{font-size:.75rem}
:root ._lTxt_cq1ld_238 b{font-size:.7812rem}
:root ._lUrl_cq1ld_240{font-size:.75rem}
:root ._lNone_cq1ld_244{font-size:.75rem}
:root ._sheetSub_cq1ld_247{font-size:.75rem}
@layer components{:root ._panelTitle_1gsma_12{font-size:1.0938rem}}
@layer components{:root ._panelSub_1gsma_13{font-size:.8438rem}}
@layer components{:root ._perpageSelect_1gsma_15{font-size:.8438rem}}
@layer components{:root ._avatar_1gsma_31{font-size:.8438rem}}
@layer components{:root ._nameText_1gsma_44{font-size:.9063rem}}
@layer components{:root ._yearText_1gsma_45{font-size:.7813rem}}
@layer components{:root ._wsAll_1gsma_65{font-size:.75rem}}
@layer components{:root ._wsCount_1gsma_75{font-size:.6875rem}}
@layer components{:root ._wsBtn_1gsma_91{font-size:inherit}}
@layer components{:root ._wsNm_1gsma_102{font-size:.8125rem}}
@layer components{:root ._wsSub_1gsma_112{font-size:.75rem}}
@layer components{:root ._idPill_1gsma_126{font-size:.7813rem}}
@layer components{:root ._courseCell_1gsma_138{font-size:.8438rem}}
@layer components{:root ._emailCell_1gsma_139{font-size:.8438rem}}
@layer components{:root ._sortIcon_1gsma_140{font-size:.75rem}}
:root ._mlHead_1gsma_163{font-size:inherit}
:root ._mlTag_1gsma_178{font-size:.7813rem}
:root ._mlTitle_1gsma_194 b{font-size:.875rem}
:root ._mlTitle_1gsma_194>span{font-size:.75rem}
:root ._mlFlag_1gsma_207{font-size:.75rem}
:root ._mlCount_1gsma_217{font-size:.75rem}
:root ._mlSchool_1gsma_242{font-size:.75rem}
:root ._mlDocTitle_1gsma_243{font-size:1.0625rem}
:root ._mlSem_1gsma_244{font-size:.75rem}
:root ._mlMeta_1gsma_246 span{font-size:.75rem}
:root ._mlMeta_1gsma_246 b{font-size:.8125rem}
:root ._mlRow_1gsma_259{font-size:inherit}
:root ._mlNo_1gsma_274{font-size:.75rem}
:root ._mlAv_1gsma_285{font-size:.8125rem}
:root ._mlWho_1gsma_298 b{font-size:.8125rem}
:root ._mlWho_1gsma_298>span{font-size:.75rem}
:root ._mlGrid_1gsma_313{font-size:.8125rem}
:root ._mlGrid_1gsma_313 th{font-size:.75rem}
:root ._mlTally_1gsma_340{font-size:.75rem}
:root ._mlSign_1gsma_355 small{font-size:.75rem}
:root ._mlLine_1gsma_358{font-size:.75rem}
@media(max-width:767px){:root ._mlTag_1gsma_178{font-size:.75rem}}
@media(max-width:767px){:root ._mlDocTitle_1gsma_243{font-size:.9375rem}}
:root ._sBt_1gsma_378 b{font-size:.9063rem}
:root ._sBt_1gsma_378 span{font-size:.75rem}
:root ._sChip_1gsma_393{font-size:.75rem}
:root ._sDockN_1gsma_439{font-size:.8125rem}
:root ._mlFiltered_1gsma_442{font-size:.75rem}
:root ._sOpen_1gsma_471{font-size:inherit}
:root ._sAv_1gsma_485{font-size:.9375rem}
:root ._sN1_1gsma_499 b{font-size:.8438rem}
:root ._sId_1gsma_509{font-size:.75rem}
:root ._sTag_1gsma_510{font-size:.75rem}
:root ._sIrr_1gsma_521{font-size:.75rem}
:root ._sYr_1gsma_530{font-size:.75rem}
@layer components{:root ._ringMeta_uqfvt_23{font-size:.78rem}}
@layer components{:root ._watchTitle_uqfvt_27{font-size:.9rem}}
@layer components{:root ._watchLead_uqfvt_28{font-size:.82rem}}
@layer components{:root ._chipTag_uqfvt_29{font-size:.75rem}}
@layer components{:root ._findTxt_uqfvt_49{font-size:.78rem}}
@layer components{:root ._pill_uqfvt_59{font-size:.76rem}}
@layer components{:root ._tlSech_uqfvt_82{font-size:.75rem}}
@layer components{:root ._tlSecct_uqfvt_87{font-size:.75rem}}
@layer components{:root ._tlRow_uqfvt_92{font-size:inherit}}
@layer components{:root ._tlWhen_uqfvt_118{font-size:.75rem}}
@layer components{:root ._tlTitle_uqfvt_123{font-size:.875rem}}
@layer components{:root ._tlMeta_uqfvt_128{font-size:.75rem}}
@layer components{@media(max-width:520px){:root ._tlWhen_uqfvt_118{font-size:.75rem}}}
@layer components{:root ._groupH_uqfvt_147{font-size:.75rem}}
@layer components{:root ._row_uqfvt_159{font-size:inherit}}
@layer components{:root ._rowTitle_uqfvt_183{font-size:.82rem}}
@layer components{:root ._rowMeta_uqfvt_184{font-size:.75rem}}
@layer components{:root ._rowDue_uqfvt_185{font-size:.75rem}}
@layer components{:root ._driveConnect_63bd4_3,:root ._drivePick_63bd4_3{font-size:.8125rem}}
@layer components{:root ._driveName_63bd4_17{font-size:.8125rem}}
@layer components{:root ._driveOk_63bd4_18{font-size:.75rem}}
@layer components{:root ._drivePct_63bd4_19{font-size:.75rem}}
@layer components{:root ._actLink_63bd4_24{font-size:.8438rem}}
@layer components{:root ._statVal_63bd4_53{font-size:1.5rem}}
@layer components{:root ._statLbl_63bd4_62{font-size:.7813rem}}
@layer components{:root ._statSub_63bd4_69{font-size:.75rem}}
@layer components{:root ._subPill_63bd4_75{font-size:.8438rem}}
@layer components{:root ._tab_63bd4_120{font-size:.8438rem}}
@layer components{:root ._day_63bd4_161{font-size:.7813rem}}
@layer components{:root ._recordItem_63bd4_184{font-size:.9063rem}}
:root ._eyebrow_6uy50_39{font-size:1.5cqw}
:root ._ribbon_6uy50_57{font-size:1.15cqw}
:root ._awarded_6uy50_61{font-size:1.7cqw}
:root ._name_6uy50_66{font-size:4.8cqw}
:root ._id_6uy50_70{font-size:1.5cqw}
:root ._title_6uy50_72{font-size:4.6cqw}
:root ._cite_6uy50_83{font-size:1.75cqw}
:root ._sigName_6uy50_90{font-size:1.9cqw}
:root ._sigWho_6uy50_95{font-size:1.3cqw}
:root ._code_6uy50_101{font-size:1.3cqw}
:root ._ring_qg39h_11 span{font-size:1.0625rem}
:root ._ring_qg39h_11 span i{font-size:.75rem}
:root ._title_qg39h_18{font-size:1.125rem}
:root ._sub_qg39h_20{font-size:.8125rem}
:root ._chip_qg39h_24{font-size:.7812rem}
:root ._pinnedLabel_qg39h_31{font-size:.75rem}
:root ._pinSlot_qg39h_36.empty{font-size:.75rem}
:root ._pinName_qg39h_41{font-size:.75rem}
:root ._medalCore_qg39h_54{font-size:1.5625rem}
:root ._tileName_qg39h_60{font-size:.8125rem}
:root ._progCap_qg39h_66{font-size:.75rem}
:root ._rarity_qg39h_72{font-size:.75rem}
:root ._detailCore_qg39h_80{font-size:2.25rem}
:root ._detailBody_qg39h_85 h3{font-size:1.25rem}
:root ._detailBlurb_qg39h_89{font-size:.8438rem}
:root ._earnedNote_qg39h_91{font-size:.7812rem}
:root ._certNote_qg39h_98{font-size:.75rem}
:root ._certLoading_qg39h_101{font-size:.8125rem}
@layer components{:root ._word_1wjlk_20{font-size:1.0625rem}}
@layer components{:root ._g_1wjlk_97{font-size:.75rem}}
@layer components{:root ._mini_1wjlk_47 ._g_1wjlk_97{font-size:0}}
@layer components{:root ._b_1wjlk_150{font-size:.75rem}}
@layer components{:root ._mini_1wjlk_47 ._b_1wjlk_150{font-size:.75rem}}
@layer components{:root ._mini_1wjlk_47 .sb-r[data-tip]:hover:after{font-size:.75rem}}
@layer components{:root ._mi_1wjlk_47{font-size:.8125rem}}
:root ._ctxLbl_1wjlk_261{font-size:.75rem}
:root ._ctxTxt_1wjlk_263{font-size:.7813rem}
:root ._ctxMeta_1wjlk_265{font-size:.75rem}
:root ._name_1wjlk_273{font-size:.7813rem}
:root ._when_1wjlk_277{font-size:.75rem}
:root ._empty_1wjlk_285{font-size:.75rem}
:root ._mBig_1wjlk_294{font-size:1.375rem}
:root ._mOf_1wjlk_295{font-size:.75rem}
:root ._mPct_1wjlk_296{font-size:.75rem}
:root ._seg_1wjlk_299{font-size:.75rem}
:root ._srchIn_1wjlk_305{font-size:.75rem}
@layer components{:root ._tab_1aos0_11{font-size:.8125rem}}
@layer components{:root ._tabct_1aos0_31{font-size:.75rem}}
@layer components{:root ._sec_1aos0_36{font-size:.75rem}}
@layer components{:root ._av_1aos0_73{font-size:.72rem}}
@layer components{:root ._t_1aos0_11{font-size:.875rem}}
@layer components{:root ._when_1aos0_96{font-size:.75rem}}
@layer components{:root ._b_1aos0_101{font-size:.8rem}}
@layer components{:root ._cta_1aos0_106{font-size:.75rem}}
@layer components{:root ._pill_1aos0_113{font-size:.75rem}}
@layer components{:root ._railitem_1aos0_162{font-size:.9rem}}
@layer components{:root ._railbadge_1aos0_173{font-size:.7rem}}
@layer components{@media(max-width:720px){:root ._railbadge_1aos0_173{font-size:.6875rem}}}
@layer components{:root ._compact_1aos0_210 ._t_1aos0_11{font-size:.86rem}}
@layer components{:root ._compact_1aos0_210 ._b_1aos0_101{font-size:.79rem}}
@layer components{:root .nbell-pop ._tlabel_1aos0_95{font-size:inherit!important}}
@layer components{:root .nbell-pop ._pill_1aos0_113{font-size:.75rem!important}}
@layer components{:root .nbell-pop ._tabct_1aos0_31{font-size:.75rem!important}}
@layer components{:root .nbell-pop ._when_1aos0_96{font-size:.75rem!important}}
@layer components{:root .nbell-pop ._dot_1aos0_100{font-size:inherit!important}}
@layer components{:root .nbell-pop ._cta_1aos0_106{font-size:.75rem!important}}
:root ._title_mb88m_40{font-size:1.375rem}
:root ._body_mb88m_50{font-size:.875rem}
:root ._decline_mb88m_65{font-size:.875rem}
:root ._accept_mb88m_78{font-size:.875rem}
:root ._hint_mb88m_94{font-size:.8125rem}
@media(max-width:767px){:root ._title_mb88m_40{font-size:1.1875rem}}
:root ._btn_ds1ta_9{font-size:.8438rem}
:root ._kbd_ds1ta_34{font-size:.75rem}
@layer components{:root ._seenbyLabel_q36i4_5{font-size:.75rem}}
@layer components{:root ._seenbyAv_q36i4_9 .ini{font-size:.75rem}}
@layer components{:root ._seenbyMore_q36i4_14{font-size:.75rem}}
@layer components{:root ._convAvatar_q36i4_31{font-size:.9063rem}}
@layer components{:root ._convName_q36i4_30{font-size:.9063rem}}
@layer components{:root ._convPreview_q36i4_57{font-size:.7813rem}}
@layer components{:root ._convTime_q36i4_72{font-size:.75rem}}
@layer components{:root ._unreadBadge_q36i4_73{font-size:.6875rem}}
@layer components{:root ._bubble_q36i4_79{font-size:1rem}}
@layer components{:root ._daySep_q36i4_107 span{font-size:.75rem}}
@layer components{:root ._avatarSm_q36i4_115{font-size:.7188rem}}
@layer components{:root ._seen_q36i4_3{font-size:.75rem}}
@layer components{:root ._retryBtn_q36i4_131{font-size:inherit}}
@layer components{:root ._loadOlder_q36i4_134{font-size:.8rem}}
@layer components{:root ._seenAva_q36i4_137 .av-fallback{font-size:.5625rem}}
@layer components{:root ._archiveToggle_q36i4_214{font-size:.75rem}}
@layer components{:root ._archiveToggle_q36i4_214 span{font-size:.75rem}}
@layer components{:root ._reactPill_q36i4_229{font-size:.75rem}}
@layer components{:root ._reactCount_q36i4_241{font-size:.7rem}}
@layer components{:root ._edited_q36i4_243{font-size:.75rem}}
@layer components{:root ._editChip_q36i4_257{font-size:.75rem}}
@layer components{:root ._editIn_q36i4_269{font-size:1rem}}
@layer components{:root ._editCount_q36i4_280{font-size:.6875rem}}
@layer components{:root ._editCancel_q36i4_284,:root ._editSave_q36i4_284{font-size:.7813rem}}
@layer components{:root ._editHint_q36i4_295{font-size:.75rem}}
@layer components{:root ._editHint_q36i4_295 kbd{font-size:.75rem}}
@layer components{:root ._replyInput_q36i4_318{font-size:.9063rem}}
@layer components{:root ._plusItem_q36i4_340{font-size:.875rem}}
@layer components{:root ._emojiTab_q36i4_361{font-size:.75rem}}
@layer components{:root ._emojiCell_q36i4_366{font-size:1.25rem}}
@layer components{:root ._jumbo1_q36i4_373{font-size:2.6rem}}
@layer components{:root ._jumbo2_q36i4_374{font-size:1.9rem}}
@layer components{:root ._paneTitle_q36i4_383{font-size:1.25rem}}
@layer components{:root ._searchPill_q36i4_321 input{font-size:.9063rem}}
@layer components{:root ._senderName_q36i4_397{font-size:.7813rem}}
@layer components{:root ._postcardKicker_q36i4_408{font-size:.75rem}}
@layer components{:root ._postcardTitle_q36i4_409{font-size:.8125rem}}
@layer components{:root ._postcardOpen_q36i4_410{font-size:.75rem}}
@layer components{:root ._postcardChip_q36i4_421{font-size:.75rem}}
@layer components{:root ._threadHeadAv_q36i4_442{font-size:.9063rem}}
@layer components{:root ._pinbar_q36i4_453{font-size:.8125rem}}
@layer components{:root ._pinbarCount_q36i4_467{font-size:.6875rem}}
@layer components{:root ._searchbar_q36i4_476 input{font-size:.8438rem}}
@layer components{:root ._searchbarCount_q36i4_486{font-size:.6875rem}}
@layer components{:root ._quoteAuthor_q36i4_497{font-size:.75rem}}
@layer components{:root ._quoteText_q36i4_498{font-size:.75rem}}
@layer components{:root ._replyBanner_q36i4_432 .rb-author{font-size:.75rem}}
@layer components{:root ._replyBanner_q36i4_432 .rb-text{font-size:.75rem}}
@layer components{:root ._teamClassH_q36i4_510{font-size:.75rem}}
@layer components{:root ._teamFilter_q36i4_515 button{font-size:.75rem}}
@layer components{:root ._applink_q36i4_528{font-size:.75rem}}
@layer components{:root ._scope_q36i4_536 button{font-size:.8125rem}}
@layer components{:root ._scopeDot_q36i4_545{font-size:.75rem}}
@layer components{:root ._filter_q36i4_555 button{font-size:.8125rem}}
@layer components{:root ._filterN_q36i4_564{font-size:.75rem}}
@layer components{:root ._emptyNote_q36i4_565{font-size:.8125rem}}
@layer components{:root ._secureHint_q36i4_570{font-size:.75rem}}
@layer components{:root ._ownPrivate_q36i4_581{font-size:.75rem}}
@layer components{:root ._lockHint_q36i4_583{font-size:.75rem}}
@layer components{:root ._thumbSz_q36i4_610{font-size:.75rem}}
@layer components{:root ._imgMore_q36i4_633{font-size:1.25rem}}
@layer components{:root ._imgGone_q36i4_645{font-size:.75rem}}
@layer components{:root ._lbCount_q36i4_674{font-size:.75rem}}
@layer components{:root ._lbGone_q36i4_678{font-size:.875rem}}
@layer components{:root ._screenshotNote_q36i4_682{font-size:.75rem}}
:root ._selectCount_q36i4_724{font-size:.8438rem}
:root ._selectToggle_q36i4_729{font-size:.8438rem}
@media(min-width:768px){:root .fm-card ._scope_q36i4_536 button{font-size:.78rem}}
@media(min-width:768px){:root .fm-card ._filter_q36i4_555 button{font-size:.78rem}}
@media(min-width:768px){:root .fm-card ._convName_q36i4_30,:root .fm-card .s-conv-name{font-size:.875rem}}
@media(min-width:768px){:root .fm-card ._convPreview_q36i4_57,:root .fm-card .s-conv-preview{font-size:.8125rem}}
:root ._title_alyex_9{font-size:.9rem}
:root ._count_alyex_11{font-size:.72rem}
:root ._exit_alyex_19{font-size:.78rem}
:root ._stamp_alyex_46{font-size:.75rem}
:root ._openfull_alyex_56{font-size:.78rem}
:root ._hint_alyex_60{font-size:.75rem}
:root ._done_alyex_62 b{font-size:.95rem}
:root ._done_alyex_62 span{font-size:.8rem}
:root ._bannerT_alyex_80{font-size:.8rem}
:root ._bannerS_alyex_82{font-size:.75rem}
:root ._peekName_alyex_101{font-size:.78rem}
:root ._peekPrev_alyex_103{font-size:.75rem}
:root ._invite_alyex_87 h3{font-size:1rem}
:root ._invite_alyex_87 p{font-size:.8rem}
:root ._inviteSub_alyex_109{font-size:.75rem}
[style*="font-size: .6875rem"],[style*="font-size: 0.625rem"],[style*="font-size: 0.65rem"],[style*="font-size: 0.6875rem"],[style*="font-size: 0.72rem"],[style*="font-size: 10.5px"],[style*="font-size: 10px"],[style*="font-size: 11.5px"],[style*="font-size: 11px"],[style*="font-size: 9px"]{font-size:.75rem!important}
/* Layout fixes found while testing the larger text. */
:root [class*="_time_1vlcw_10"]{flex:1 0 auto}
:root [class*="_name_1vlcw_7"]{min-width:0;overflow:hidden;text-overflow:ellipsis}
@media(max-width:1023px){:root .auth2-inner{padding-top:64px}}
:root [class*="_gbName_ce9f7_123"] b{max-width:12.5rem}
:root [class*="_gbF_ce9f7_129"] span{white-space:normal}
:root [class*="_sN2_1gsma_508"]{flex-wrap:wrap;row-gap:4px}
@media(max-width:767px){:root [class*="_sN1_1gsma_499"] b{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}}

/* ---- a11y-4.css ---- */
/* AcadFlow accessibility round 4 (plan 2026-10-23 #1): the 25 issues the test
 * suite carried as "known". Each rule only darkens a colour (light theme) or
 * removes a fade, so text meets 4.5:1. Ratios measured with axe-core on the
 * local copy; dark and Frost themes checked separately (rules scoped below). */
:root:not([data-theme="dark"]):not([data-theme="frost"]) body .af-aav[style*="gold-var"]{color:#8a5a00!important}          /* 3.06 -> 5.72 */
:root:not([data-theme="dark"]):not([data-theme="frost"]) body ._tagWait_1rwwu_69{color:#92400e}                              /* 4.36 -> 6.16 */
:root:not([data-theme="dark"]):not([data-theme="frost"]) body .badge[style*="rgb(37, 99, 235)"]{color:#1d4ed8!important}  /* 4.24 -> 5.50 */
/* weekend days in the student's attendance calendar: no fade, a softer accent */
html body ._weekend_63bd4_172{opacity:1;color:color-mix(in srgb,var(--accent) 72%,var(--ink2))}                                   /* 2.29 -> 5+ */
/* the stream lane count: no fade */
html body ._laneN_dxlcf_36{opacity:1}                                                                                               /* 2.78 -> 5.5 */
/* the count on a selected filter pill: a darker chip under the white number */
:root:not([data-theme="dark"]):not([data-theme="frost"]) body .active>.s-pill-n{background:rgba(0,0,0,.24)}                                                                              /* 3.87 -> 6+ */
/* exams (phone): the "/ 6 · 2 of 38" line on the selected (indigo) score tile */
html body ._xPtOn_1rwwu_853>span{color:#fff}                                                                                      /* 4.46 -> 6.29 */
/* dark and Frost themes (found while checking the fixes above; the suite only
 * scans the light theme): Exams' fixed amber text, white text on the light
 * dark-mode accent, and faint grey labels */
:root[data-theme="dark"] body ._srcMan_1rwwu_38,:root[data-theme="frost"] body ._srcMan_1rwwu_38,
:root[data-theme="dark"] body ._tagWait_1rwwu_69,:root[data-theme="frost"] body ._tagWait_1rwwu_69{color:#fcd34d}
:root[data-theme="dark"] body ._xTabOn_1rwwu_746,:root[data-theme="frost"] body ._xTabOn_1rwwu_746{color:var(--on-accent)}
:root[data-theme="dark"] body ._xExTag_1rwwu_828,:root[data-theme="frost"] body ._xExTag_1rwwu_828,
:root[data-theme="dark"] body ._compK_1rwwu_29,:root[data-theme="frost"] body ._compK_1rwwu_29,
:root[data-theme="dark"] body ._compMk_1rwwu_836,:root[data-theme="frost"] body ._compMk_1rwwu_836{color:var(--ink2)}
:root[data-theme="dark"] body ._xPtOn_1rwwu_853,:root[data-theme="frost"] body ._xPtOn_1rwwu_853,
:root[data-theme="dark"] body ._xPtOn_1rwwu_853>span,:root[data-theme="frost"] body ._xPtOn_1rwwu_853>span{color:var(--on-accent)}
/* student Activities › Activity Watch: the "Due soon" (warning) line was gold
 * on pale yellow (found once a test activity was due soon) */
:root:not([data-theme="dark"]):not([data-theme="frost"]) body ._findWarn_uqfvt_53 ._findTxt_uqfvt_49,
:root:not([data-theme="dark"]):not([data-theme="frost"]) body ._findWarn_uqfvt_53 svg{color:#8a5a00}
/* plan #4: issues found once the tests scan dark and Frost too */
/* selected chips/segments: dark-mode accent is light, so use the theme's on-accent text */
:root[data-theme="dark"] body button[data-state="on"][class*="_chip_"],:root[data-theme="frost"] body button[data-state="on"][class*="_chip_"],
:root[data-theme="dark"] body .af-lchip.on,:root[data-theme="frost"] body .af-lchip.on{color:var(--on-accent)}
:root[data-theme="dark"] body .af-lchip.on .af-cs-n,:root[data-theme="frost"] body .af-lchip.on .af-cs-n{color:inherit}
/* the accent on its own tint was 4.46:1 in dark: a lighter indigo for text */
:root[data-theme="dark"] body .af-td-tile.on b,:root[data-theme="dark"] body .af-td-tile.on span,
:root[data-theme="dark"] body .cs-term,:root[data-theme="dark"] body .af-cs-tab.on>span,:root[data-theme="dark"] body .af-cs-tab.on>span>small{color:#a5b4fc}
/* Students (Frost): dark amber on the dark surface */
:root[data-theme="frost"] body ._attention_1gsma_421,:root[data-theme="frost"] body ._attention_1gsma_421>i,
:root[data-theme="frost"] body [style*="--yellow-d"]{color:#fcd34d!important}
:root[data-theme="dark"] body [style*="--yellow-d"]{color:#fcd34d!important}
/* student Grades: the warning chip keeps its pale background in every theme */
:root:not([data-theme="dark"]):not([data-theme="frost"]) body ._chipWarn_17yft_36{color:#8a5a00}
:root[data-theme="dark"] body ._chipWarn_17yft_36,:root[data-theme="frost"] body ._chipWarn_17yft_36{color:#fcd34d}
/* plan #11: visible label above the student's link box */
.af-act-lbl{display:block;margin:6px 0 4px;font:600 .8125rem/1.3 var(--font-body,inherit);color:var(--ink)}
/* Round B #9: what each Assignment tracker row is (Activity, Quiz, Exam, Case study) */
html body .af-asg-k{display:inline-block;font:700 .66rem/1.5 "Plus Jakarta Sans",system-ui,sans-serif;letter-spacing:.04em;text-transform:uppercase;padding:0 6px;margin-right:6px;border-radius:6px;background:var(--accent-l);color:var(--ink);border:1px solid var(--border);vertical-align:1px}
/* Theme scans that now really run in dark/Frost for students (the account's saved theme used to win) */
/* subject badges (subjectColor) on dark: the light-theme tint of each subject colour, 7:1+ */
:root[data-theme="dark"] body .badge[style*="14%, transparent"][style*="color: rgb(37, 99, 235)"],:root[data-theme="frost"] body .badge[style*="14%, transparent"][style*="color: rgb(37, 99, 235)"]{color:#93c5fd!important}
:root[data-theme="dark"] body .badge[style*="14%, transparent"][style*="color: rgb(124, 58, 237)"],:root[data-theme="frost"] body .badge[style*="14%, transparent"][style*="color: rgb(124, 58, 237)"]{color:#c4b5fd!important}
:root[data-theme="dark"] body .badge[style*="14%, transparent"][style*="color: rgb(13, 148, 136)"],:root[data-theme="frost"] body .badge[style*="14%, transparent"][style*="color: rgb(13, 148, 136)"]{color:#5eead4!important}
:root[data-theme="dark"] body .badge[style*="14%, transparent"][style*="color: rgb(219, 39, 119)"],:root[data-theme="frost"] body .badge[style*="14%, transparent"][style*="color: rgb(219, 39, 119)"]{color:#f9a8d4!important}
:root[data-theme="dark"] body .badge[style*="14%, transparent"][style*="color: rgb(234, 88, 12)"],:root[data-theme="frost"] body .badge[style*="14%, transparent"][style*="color: rgb(234, 88, 12)"]{color:#fdba74!important}
:root[data-theme="dark"] body .badge[style*="14%, transparent"][style*="color: rgb(22, 163, 74)"],:root[data-theme="frost"] body .badge[style*="14%, transparent"][style*="color: rgb(22, 163, 74)"]{color:#86efac!important}
:root[data-theme="dark"] body .badge[style*="14%, transparent"][style*="color: rgb(8, 145, 178)"],:root[data-theme="frost"] body .badge[style*="14%, transparent"][style*="color: rgb(8, 145, 178)"]{color:#67e8f9!important}
:root[data-theme="dark"] body .badge[style*="14%, transparent"][style*="color: rgb(147, 51, 234)"],:root[data-theme="frost"] body .badge[style*="14%, transparent"][style*="color: rgb(147, 51, 234)"]{color:#d8b4fe!important}
:root[data-theme="dark"] body .badge[style*="14%, transparent"][style*="color: rgb(202, 138, 4)"],:root[data-theme="frost"] body .badge[style*="14%, transparent"][style*="color: rgb(202, 138, 4)"]{color:#fde047!important}
:root[data-theme="dark"] body .badge[style*="14%, transparent"][style*="color: rgb(220, 38, 38)"],:root[data-theme="frost"] body .badge[style*="14%, transparent"][style*="color: rgb(220, 38, 38)"]{color:#fca5a5!important}
:root[data-theme="dark"] body .badge[style*="14%, transparent"][style*="color: rgb(79, 70, 229)"],:root[data-theme="frost"] body .badge[style*="14%, transparent"][style*="color: rgb(79, 70, 229)"]{color:#a5b4fc!important}
:root[data-theme="dark"] body .badge[style*="14%, transparent"][style*="color: rgb(101, 163, 13)"],:root[data-theme="frost"] body .badge[style*="14%, transparent"][style*="color: rgb(101, 163, 13)"]{color:#bef264!important}
/* attendance calendar: white on the light dark-theme greens/reds/golds was 1.7:1 */
:root[data-theme="dark"] body ._present_63bd4_173,:root[data-theme="frost"] body ._present_63bd4_173,:root[data-theme="dark"] body ._late_63bd4_174,:root[data-theme="frost"] body ._late_63bd4_174,:root[data-theme="dark"] body ._absent_63bd4_176,:root[data-theme="frost"] body ._absent_63bd4_176{color:#10101a}
:root:not([data-theme="dark"]):not([data-theme="frost"]) body ._rPillWarn_b08ey_172{color:#8a5a00}                 /* 3.06 -> 5.72 */
:root[data-theme="dark"] body ._tagUpcoming_b08ey_38,:root[data-theme="frost"] body ._tagUpcoming_b08ey_38{color:#a5b4fc}                 /* 4.46 -> 6.68 */
:root:not([data-theme="dark"]):not([data-theme="frost"]) body ._upNow_dxlcf_18 ._upW_dxlcf_23{background:rgba(0,0,0,.16)}   /* 4.19 -> 7+ */
/* Round B #10: late / makeup deduction tag on Grades › Activity Scores */
html body .af-late-t{display:inline-block;margin-left:6px;padding:0 7px;border-radius:999px;font-size:.72rem;font-weight:700;line-height:1.6;background:color-mix(in srgb,#b45309 12%,transparent);color:#8a4b00;white-space:nowrap}
html body .af-late-t.mk{background:var(--accent-l);color:var(--accent)}
:root[data-theme="dark"] body .af-late-t,:root[data-theme="frost"] body .af-late-t{color:#fcd34d}
:root[data-theme="dark"] body .af-late-t.mk,:root[data-theme="frost"] body .af-late-t.mk{color:#c7d2fe}
/* badge-blue on dark (e.g. "GWA 1.50" on the phone subject view): 4.23 -> 6.4+ */
:root[data-theme="dark"] body .badge.badge-blue,:root[data-theme="frost"] body .badge.badge-blue{color:#a5b4fc}
/* grading panel (found with Round C #6): subject chip 3.86 -> 6.9, "Return" 2.94 -> 5.6 */
:root:not([data-theme="dark"]):not([data-theme="frost"]) body .smeta-subject{color:#6d28d9}
:root:not([data-theme="dark"]):not([data-theme="frost"]) body .gd-return{color:#8a5a00}
/* accent-filled pills drawn with inline white text (e.g. the selected list filter in the grading panel): 2.98 -> on-accent */
:root[data-theme="dark"] body button[style*="background: var(--accent)"][style*="color: rgb(255, 255, 255)"],:root[data-theme="frost"] body button[style*="background: var(--accent)"][style*="color: rgb(255, 255, 255)"]{color:var(--on-accent)!important}
/* Messages conversation list and reactions (found with the grade breakdown): faint text in dark/Frost, small reaction button */
:root[data-theme="dark"] body ._convPreview_q36i4_57,:root[data-theme="frost"] body ._convPreview_q36i4_57,
:root[data-theme="dark"] body ._convTime_q36i4_72,:root[data-theme="frost"] body ._convTime_q36i4_72,
:root[data-theme="dark"] body .s-conv-preview,:root[data-theme="frost"] body .s-conv-preview,
:root[data-theme="dark"] body .s-conv-time,:root[data-theme="frost"] body .s-conv-time{color:var(--ink2)}
:root[data-theme="dark"] body ._convAvatar_q36i4_31,:root[data-theme="frost"] body ._convAvatar_q36i4_31{color:var(--ink)}
html body ._reactTrigger_q36i4_153{min-width:24px;min-height:24px;justify-content:center}
/* sidebar count badges on dark/Frost: white on light red was 2.16:1 */
:root[data-theme="dark"] body ._b_1wjlk_150,:root[data-theme="frost"] body ._b_1wjlk_150{color:#10101a}
/* quiz results (found with plan 2026-10-28 #5): amber percentages on white 2.14 -> 5.7; avatar initials on dark 4.12 */
:root:not([data-theme="dark"]):not([data-theme="frost"]) body [style*="color: rgb(245, 158, 11)"]{color:#8a5a00!important}
:root[data-theme="dark"] body [style*="background: var(--accent-l)"][style*="color: var(--accent)"],:root[data-theme="frost"] body [style*="background: var(--accent-l)"][style*="color: var(--accent)"]{color:var(--ink)!important}

/* ---- stream-1.css ---- */
/* AcadFlow Stream redesign (S1-S3) - styles for the patched post card
 * (af-* classes from AnnouncementPost-*.js) and accessibility fixes for the
 * rest of the Stream page. Light-theme colours are darker than the app's
 * teal/purple tokens so every label is >= 4.5:1; dark mode keeps the app's
 * bright tokens, which already pass on dark surfaces. */

/* ---------- card ---------- */
.af-post{display:flex;flex-direction:column;gap:10px}
.af-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.af-type{display:inline-flex;align-items:center;gap:6px;font-size:.8125rem;font-weight:700;line-height:1.2;padding:4px 10px;border-radius:999px;
  background:#eef2ff;color:#3730a3}
.af-t-no_class .af-type{background:#fef3c7;color:#92400e}
.af-t-online_class .af-type{background:#dcfce7;color:#166534}
.af-t-meeting_topics .af-type{background:#ede9fe;color:#5b21b6}
.af-t-resource_hub .af-type{background:#ccfbf1;color:#115e59}
[data-theme=dark] .af-type{background:var(--accent-l);color:var(--ink)}
[data-theme=dark] .af-t-no_class .af-type{background:var(--yellow-l);color:var(--yellow)}
[data-theme=dark] .af-t-online_class .af-type{background:var(--green-l);color:var(--green)}
[data-theme=dark] .af-t-meeting_topics .af-type{background:var(--purple-l);color:var(--purple)}
[data-theme=dark] .af-t-resource_hub .af-type{background:var(--teal-l);color:var(--teal)}
.af-chips{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
.af-chip{font-size:.8125rem;font-weight:600;line-height:1.2;padding:3px 9px;border-radius:999px;background:var(--surface2);color:var(--ink2);border:1px solid var(--border)}
.af-head{margin:0}
.af-title{font-size:1.125rem;font-weight:700;line-height:1.3;margin:2px 0 0;color:var(--ink);overflow-wrap:anywhere}
.af-body{font-size:.9375rem;line-height:1.6;color:var(--ink);overflow-wrap:anywhere}
.af-body h3{font-size:1.0625rem;margin:12px 0 4px}.af-body h4{font-size:1rem;margin:10px 0 4px}
.af-body p{margin:6px 0}.af-body ul,.af-body ol{margin:6px 0;padding-left:22px}
.af-body a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}
.af-body.af-clamped{max-height:12.5em;overflow:hidden;-webkit-mask-image:linear-gradient(#000 70%,transparent);mask-image:linear-gradient(#000 70%,transparent)}
.af-more{align-self:flex-start;min-height:32px;padding:4px 2px;border:0;background:none;color:var(--accent);font:inherit;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.af-topics{margin:0;padding:0;list-style:none}
.af-topics li,.af-t-meeting_topics .af-body li{list-style:none;position:relative;padding:6px 0 6px 28px;border-bottom:1px dashed var(--border)}
.af-t-meeting_topics .af-body ul{padding-left:0}
.af-topics li::before,.af-t-meeting_topics .af-body li::before{content:"";position:absolute;left:2px;top:9px;width:16px;height:16px;border:2px solid var(--ink3);border-radius:4px}
.af-topics li:last-child,.af-t-meeting_topics .af-body li:last-child{border-bottom:0}
.af-files{margin:0}

/* no class: a banner, not just a tag */
.ig-post.af-t-no_class{background:#fffbeb;border-color:#f3c96a;border-left:5px solid #b45309}
[data-theme=dark] .ig-post.af-t-no_class{background:var(--yellow-l);border-color:var(--yellow)}

/* online class: status + one big Join button */
.af-live{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 14px;border-radius:12px;background:#dcfce7;color:#14532d}
[data-theme=dark] .af-live{background:var(--green-l);color:var(--ink)}
.af-live-status{font-weight:700}
.af-live:not(.af-ended) .af-live-status::before{content:"";display:inline-block;width:9px;height:9px;border-radius:50%;background:#16a34a;margin-right:8px;vertical-align:1px}
.af-live.af-ended{background:var(--surface2);color:var(--ink2)}
.af-join{min-height:44px;display:inline-flex;align-items:center;gap:8px;padding:0 16px;border-radius:10px;border:0;text-decoration:none;font-weight:700;background:#4f46e5!important;color:#fff!important}
.af-join:hover{background:#4338ca!important}

/* actions: words + counts, 44px targets */
.af-actions{display:flex;gap:4px;flex-wrap:wrap;border-top:1px solid var(--border);padding-top:6px}
.af-act{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border:0;border-radius:10px;background:none;color:var(--ink2);font:inherit;font-size:.875rem;font-weight:600;cursor:pointer}
.af-act:hover{background:var(--surface2);color:var(--ink)}
.af-act[aria-pressed=true],.af-act.liked{color:var(--red)}
.af-act[aria-expanded=true]{color:var(--accent)}
.af-count{font-variant-numeric:tabular-nums}
.af-comments{margin-top:2px}
.af-post .sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ---------- professor feed: "Class updates" ---------- */
.af-updates{border:1px solid var(--border);border-radius:14px;background:var(--surface);overflow:hidden}
.af-updates>summary{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-height:48px;padding:10px 16px;cursor:pointer;list-style:none}
.af-updates>summary::-webkit-details-marker{display:none}
.af-updates>summary::after{content:"Show";margin-left:auto;font-size:.875rem;font-weight:600;color:var(--accent)}
.af-updates[open]>summary::after{content:"Hide"}
.af-updates-h{font-weight:700;color:var(--ink)}
.af-updates-n{color:var(--ink2);font-size:.875rem}
.af-updates-list{display:flex;flex-direction:column;gap:10px;padding:0 10px 10px}

/* ---------- rest of the page ---------- */
.s-feed-day[role=heading]{margin:0}
.af-h1{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
/* WCAG 2.5.8: composer toolbar and small text buttons >= 24px */
[role=toolbar][aria-label=Formatting] button{min-width:28px;min-height:28px}
[class*="_viewcomments_"]{min-height:28px}
/* WCAG 1.4.10: phone filter chips wrap instead of running off-screen */
@media (max-width:767px){.s-filter-row,.s-filter-pills{flex-wrap:wrap!important;overflow:visible!important}}
/* WCAG 1.4.3: older type/subject pills inside activity and quiz cards */
:root:not([data-theme=dark]) [class*="_pillSubject_"]{color:#166534!important}
/* WCAG 2.4.11: keep the focused item clear of the Messages button / bottom bar */
html:has(.s-feed){scroll-padding-bottom:120px}
/* WCAG 2.3.3: no entrance animation for people who asked for less motion */
@media (prefers-reduced-motion:reduce){.feed-reveal,.feed-reveal *{animation:none!important;transition:none!important;opacity:1!important;transform:none!important}}

/* card padding: the new rows sit inside one padded card */
.ig-post.af-post{padding:14px 16px 8px}
.af-post .af-head{padding:0}
.af-post .af-comments{padding-left:0;padding-right:0}
/* wider reading column: the post column gets the space, the side columns slim down */
@media (min-width:1100px){.stream-shell{grid-template-columns:200px minmax(0,1fr) 260px!important}}

/* ---- att-1.css ---- */
/* AcadFlow Attendance patch 1 - styles for the redesigned Attendance pages and
 * site-wide contrast fixes. Branding kept: same hues, darker stops only where
 * white text failed 4.5:1. */

/* Approve / success and danger buttons: white text was 2.3-4.8:1 on the old
 * gradients (#22c55e/#16a34a, #ef4444/#dc2626); now 5.0-8.3:1. */
.btn-success{background:linear-gradient(135deg,#15803d,#166534)!important}
.btn-danger{background:linear-gradient(135deg,#b91c1c,#991b1b)!important}

/* Text tokens: amber and purple text that pass 4.5:1 in the light theme; the
 * dark themes keep their own (already light) shades. */
:root{--att-amber:#8a6416;--att-purple:#6d28d9}
[data-theme=dark],[data-theme=frost]{--att-amber:var(--gold-var);--att-purple:var(--purple)}
:root:not([data-theme=dark]):not([data-theme=frost]) .att-toggle-btn.active-late{color:var(--att-amber)}
:root:not([data-theme=dark]):not([data-theme=frost]) .att-toggle-btn.active-excuse{color:var(--att-purple)}

/* Status strips: a letter in every square (not colour alone). */
.af-strip i{display:flex!important;align-items:center;justify-content:center;font:700 10px/1 var(--font-body);color:#fff;background:var(--surface3);color:var(--ink2)}
._strip10_1f6ss_120.af-strip i{height:16px}
.atl-spark.af-strip i{width:13px!important}
.af-strip i[data-s=P]{background:#15803d;color:#fff}
.af-strip i[data-s=L]{background:#8a6416;color:#fff}
.af-strip i[data-s=E]{background:#6d28d9;color:#fff}
.af-strip i[data-s=A]{background:#b91c1c;color:#fff}
.af-strip i[data-s=N]{background:transparent;color:var(--ink2);outline:1px dashed var(--border2);outline-offset:-1px}
[data-theme=dark] .af-strip i[data-s],[data-theme=frost] .af-strip i[data-s]{color:#111}
[data-theme=dark] .af-strip i[data-s=P],[data-theme=frost] .af-strip i[data-s=P]{background:#4ade80}
[data-theme=dark] .af-strip i[data-s=L],[data-theme=frost] .af-strip i[data-s=L]{background:#e3be63}
[data-theme=dark] .af-strip i[data-s=E],[data-theme=frost] .af-strip i[data-s=E]{background:#a78bfa}
[data-theme=dark] .af-strip i[data-s=A],[data-theme=frost] .af-strip i[data-s=A]{background:#fb9393}
[data-theme=dark] .af-strip i[data-s=N],[data-theme=frost] .af-strip i[data-s=N]{background:transparent;color:var(--ink2)}

/* Professor "Today" panel while check-in is open */
.af-today{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:18px;flex-basis:100%;margin-top:4px}
@media (max-width:760px){.af-today{grid-template-columns:minmax(0,1fr)}}
.af-today-h{font:700 13px/1.3 var(--font-body);color:var(--ink);margin:0 0 8px}
.af-cnt{color:var(--ink2);font-weight:600}
.af-today-empty{font-size:12.5px;color:var(--ink2);margin:0}
.af-today-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.af-today-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:8px 0;border-top:1px solid var(--border)}
.af-who{min-width:0;display:flex;flex-direction:column}
.af-who b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.af-who small{font-size:11.5px;color:var(--ink2)}
.af-chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.af-today-col{min-width:0}
.af-chips li{display:inline-flex;align-items:center;gap:4px;white-space:normal;max-width:100%;text-align:left;line-height:1.35;height:auto}
.af-tm{font-weight:500}
.af-impact{font-size:12px;color:var(--ink);margin-top:5px;padding:5px 8px;border-radius:8px;background:var(--accent-l);border-left:3px solid var(--accent)}

/* Student check-in label and excuse form */
.af-label{display:block;font-size:12px;font-weight:600;color:var(--ink2);margin-bottom:4px}
.af-fl{display:flex;flex-direction:column;gap:4px}
.af-fl>span{font-size:12px;font-weight:600;color:var(--ink2)}
.af-days{border:0;margin:0;padding:0;min-width:0}
.af-days legend{font-size:12px;font-weight:600;color:var(--ink2);margin-bottom:6px;padding:0}
.af-daychips{display:flex;flex-wrap:wrap;gap:6px}
.af-daychip{border:1px solid var(--border2);background:var(--bg);color:var(--ink);border-radius:999px;padding:5px 11px;font:500 12.5px/1.2 var(--font-body);cursor:pointer;min-height:32px}
.af-daychip:hover{background:var(--bg2)}
.af-daychip.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent,#fff);font-weight:700}
.af-daychip:disabled{cursor:not-allowed;opacity:1;color:var(--ink2);background:var(--surface3,var(--bg2));border-style:dashed}
.af-dc-s{font-weight:600}

/* Student calendar: the status letter under the day number */
[data-st]{position:relative}
[data-st]::after{content:attr(data-st);position:absolute;bottom:1px;right:3px;font:700 9px/1 var(--font-body);opacity:.85}

/* Keyboard focus on calendar day buttons */
.cal-day[role=button]:focus-visible{outline:3px solid var(--accent);outline-offset:1px;z-index:1}

/* Excuse form "Attach document photo (medical cert, letter)" wraps on phones
 * instead of pushing the page sideways at 375 px. */
.student-attendance label.btn{white-space:normal;max-width:100%;text-align:left;height:auto;line-height:1.35}

/* ---- students-1.css ---- */
/* AcadFlow Students patch 1 - styles for the redesigned Student Roster
 * (patches/gen_students.py). Branding kept: same fonts, indigo accent,
 * rounded controls; status colours from the shared tokens (att-1.css adds the
 * darker --att-amber used for text). */

/* Toolbar menus that look like buttons ("Export ▾", "Add ▾") */
.af-menu .kebab-trigger{display:inline-flex;align-items:center;gap:6px;width:auto;height:32px;line-height:1;padding:0 12px;border-radius:10px;
  border:1px solid var(--border2,var(--border));background:var(--surface,#fff);color:var(--ink);font:600 13px/1 var(--font-body);cursor:pointer;white-space:nowrap}
.af-menu .kebab-trigger:hover{background:var(--bg2,var(--bg))}
.af-menu.af-primary .kebab-trigger{background:var(--accent);border-color:var(--accent);color:var(--on-accent,#fff)}
.af-menu.af-primary .kebab-trigger:hover{filter:brightness(1.05)}
.af-menu .kebab-trigger:focus-visible{outline:3px solid var(--accent);outline-offset:2px}

/* Filter chips (desktop uses the same radio group as phones) */
.af-filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 12px}
.af-flab{font-size:12px;font-weight:700;color:var(--ink2);text-transform:uppercase;letter-spacing:.06em}
.af-chips{flex-wrap:wrap;overflow:visible!important}

/* Table: sortable headers are buttons */
.af-sort{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:4px;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;border-radius:6px;padding:2px 4px;margin:-2px -4px}
.af-sort:focus-visible{outline:3px solid var(--accent);outline-offset:1px}
.af-sort:hover{color:var(--accent)}

/* Pinned student column and menu column when the table scrolls sideways */
.af-roster{position:relative}
.af-roster table{min-width:760px}
.af-roster .af-c0{position:sticky;left:0;z-index:1;background:var(--surface,#fff)}
.af-roster .af-c1{position:sticky;left:40px;z-index:1;background:var(--surface,#fff);max-width:250px}
.af-roster .af-cN{position:sticky;right:0;z-index:1;background:var(--surface,#fff)}
.af-roster thead .af-c0,.af-roster thead .af-c1,.af-roster thead .af-cN{background:var(--surface2)}
.af-roster tr[style*="accent-l"] td{background:var(--accent-l)}
.af-roster .af-c1 > button > div{min-width:0}
.af-sub{font-size:11.5px;color:var(--ink2);display:flex;gap:0;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.af-id{font-variant-numeric:tabular-nums;white-space:nowrap}
.af-mail{overflow:hidden;text-overflow:ellipsis}
.af-cls{display:flex;flex-wrap:wrap;gap:4px}
.af-chip{font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--bg2,var(--bg));color:var(--ink);white-space:nowrap}
.af-none{color:var(--ink2);font-size:12.5px}
.af-bar{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.af-bar i{display:block;width:52px;height:6px;border-radius:9px;background:var(--bg2,#ecebf5);position:relative;overflow:hidden}
.af-bar i::after{content:"";position:absolute;inset:0;width:var(--w);background:currentColor}
.af-bar b{font-variant-numeric:tabular-nums}
.af-grade{display:inline-flex;align-items:baseline;gap:6px;white-space:nowrap;font-variant-numeric:tabular-nums}
.af-grade small{color:var(--ink2);font-size:11.5px}
.af-g{color:var(--green)}.af-a{color:var(--att-amber,#8a6416)}.af-r{color:var(--red)}
.af-notes{white-space:normal;min-width:140px;max-width:220px}
.af-flag{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--red-l,#fde8e8);color:var(--red);margin:1px 4px 1px 0;white-space:nowrap}

/* Bulk bar: count first, Delete set apart */
.af-bulk{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 12px;padding:8px 12px;border-radius:12px;background:var(--accent-l);border:1px solid var(--border)}
.af-bulk > b{font-size:13px}
.af-gap{flex:1}
.af-del{color:var(--red)!important}

/* Phone card: one line of standing */
.af-mst{display:flex;gap:8px;flex-wrap:wrap;font-size:11.5px;color:var(--ink2);margin-top:3px}
.af-mst .af-flag{margin:0}

/* Add Student: errors under the field, setup-code note */
.af-ferr{color:var(--red);font-size:12px;font-weight:600;margin-top:4px}
input[aria-invalid="true"],select[aria-invalid="true"]{border-color:var(--red)!important;box-shadow:0 0 0 3px var(--red-l,#fde3e3)}
.af-codenote{display:flex;gap:8px;align-items:flex-start;margin-top:10px;padding:9px 11px;border-radius:10px;background:var(--accent-l);color:var(--ink);font-size:12.5px;line-height:1.45}

/* Setup codes dialog */
.af-codewarn{font-size:12.5px;font-weight:600;color:var(--ink);background:var(--yellow-l,#fffbeb);border:1px solid var(--yellow,#ca8a04);border-radius:10px;padding:8px 11px;margin:0 0 12px}
.af-codes{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}
.af-codes li{display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px dashed var(--border2,var(--border));border-radius:10px;padding:9px 11px}
.af-cw{display:flex;flex-direction:column;min-width:0}
.af-cw b{font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.af-cw small{font-size:11.5px;color:var(--ink2);font-variant-numeric:tabular-nums}
.af-code{font:700 17px/1.1 ui-monospace,Menlo,monospace;letter-spacing:.1em;color:var(--ink);white-space:nowrap}

/* ---- dash-1.css ---- */
/* AcadFlow Dashboard patch 1 - styles for the professor Dashboard and the
 * student Home (patches/gen_dashboard.py). Branding kept: same fonts, indigo
 * accent, rounded cards, shared status colours (students-1.css supplies
 * .af-flag / .af-bar / .af-g .af-a .af-r / .af-none). */

/* page title is now the h1 (same look as the old h2) */
.ds-page-head h1{font-size:1.55rem;font-weight:800;letter-spacing:-.03em;color:var(--ink);line-height:1.15;font-family:var(--font-display)}

/* section headings */
.af-h2{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;margin:22px 0 10px;font:700 1rem/1.25 var(--font-display);color:var(--ink);letter-spacing:-.01em}
.af-h2-sub{font:500 .8125rem/1.3 var(--font-body);color:var(--ink2)}
.af-sech{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.af-sech .af-h2{margin-bottom:10px}
.af-tnone{margin:0;font-size:.8438rem;color:var(--ink2)}
.af-tclear{display:flex;align-items:center;gap:7px;padding:10px 12px;border:1px dashed var(--border);border-radius:var(--radius,14px);background:var(--surface)}
.af-tclear svg{color:var(--green);flex:none}

/* T3 Today */
.af-dtoday .af-h2{margin-top:0}
.af-tcard{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius,14px);padding:8px 14px 12px}
.af-trows{list-style:none;margin:0;padding:0}
.af-trow{display:flex;align-items:center;gap:8px 10px;flex-wrap:wrap;padding:8px 0;border-bottom:1px solid var(--border);font-size:.875rem}
.af-trow:last-child{border-bottom:0}
.af-tdone{color:var(--ink2)}
.af-ttm{width:64px;flex:none;color:var(--ink2);font-size:.8125rem;font-variant-numeric:tabular-nums}
.af-tcl{font-weight:700;color:var(--ink)}
.af-tdone .af-tcl{font-weight:600;color:var(--ink2)}
.af-tmeta{color:var(--ink2);font-size:.8125rem}
.af-tsp{flex:1}
.af-tchips{list-style:none;margin:10px 0 0;padding:0;display:flex;gap:6px;flex-wrap:wrap}
.af-trows+.af-tchips{border-top:0}
.af-tchip{display:inline-flex;align-items:baseline;gap:5px;min-height:32px;padding:5px 11px;border-radius:10px;border:1px solid var(--border2,var(--border));background:var(--surface);color:var(--ink);font:500 .8125rem/1.3 var(--font-body);cursor:pointer}
.af-tchip b{font-size:.9375rem;font-weight:700}
.af-tchip:hover{border-color:var(--accent)}
.af-tchip.hot{border-color:var(--red);color:var(--red);background:var(--red-l)}
.af-tchip:focus-visible,.af-dgc-go:focus-visible,.af-aname:focus-visible,.af-dot:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.af-tcard>.af-tnone:first-child{padding:6px 0}
.af-tcard>.af-tclear{margin-top:10px}

/* T2 class cards */
.af-cgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px}
.af-cc{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius,14px);padding:13px 15px;display:flex;flex-direction:column;gap:8px;min-width:0}
.af-cc-h{display:flex;align-items:flex-start;gap:10px}
.af-cc-ic{width:34px;height:34px;border-radius:10px;background:var(--accent-l);color:var(--accent);display:grid;place-items:center;flex:none}
.af-cc-n{margin:0;font:700 1rem/1.25 var(--font-display);color:var(--ink)}
.af-cc-s{font-size:.78rem;color:var(--ink2);margin-top:2px}
.af-cc-bar{display:flex;height:7px;border-radius:9px;overflow:hidden;background:var(--surface2)}
.af-cc-bar i{display:block;height:100%}
.af-cc-leg{display:flex;gap:4px 12px;flex-wrap:wrap;font-size:.78rem;color:var(--ink2)}
.af-cc-leg span::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;background:var(--c)}
.af-cc-none{margin:0;font-size:.8125rem;color:var(--ink2)}
.af-cc-nums{display:flex;gap:18px;margin:2px 0 0}
.af-cc-nums div{display:flex;flex-direction:column-reverse}
.af-cc-nums dt{font-size:.75rem;color:var(--ink2)}
.af-cc-nums dd{margin:0;font-size:1.0625rem;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.af-cc-act{display:flex;gap:6px;flex-wrap:wrap}

/* T4 needs-attention rows */
.af-alist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.af-arow{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:10px 12px;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px 12px}
.af-aav{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:.8125rem;overflow:hidden}
.af-amain{min-width:0}
.af-aname-row{display:flex;align-items:center;gap:5px;min-width:0}
.af-aname{all:unset;cursor:pointer;font-weight:700;font-size:.875rem;line-height:1.3;color:var(--accent);overflow-wrap:anywhere;border-radius:4px}
.af-aname:hover{text-decoration:underline}
.af-asub{font-size:.78rem;color:var(--ink2);margin-top:2px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.af-afl{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}
.af-afl .af-flag{margin:0}
.af-aact{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.af-dmore{text-align:center;margin-top:12px}
@media (max-width:760px){.af-arow{grid-template-columns:38px minmax(0,1fr)}.af-aact{grid-column:1/-1;justify-content:flex-start}}
[role="dialog"] .af-arow{grid-template-columns:38px minmax(0,1fr)}
[role="dialog"] .af-aact{grid-column:1/-1;justify-content:flex-start}

/* T5 nudge preview */
.af-npre{display:flex;flex-direction:column;gap:3px;background:var(--surface2);border:1px solid var(--border);border-radius:12px;padding:11px 13px;font-size:.875rem;color:var(--ink)}
.af-nlast{margin:10px 0 0;font-size:.8125rem;color:var(--ink2)}

/* W2 move buttons, W5 card titles */
.af-mv{font:700 13px/1 var(--font-body)}
.af-dgc-h{margin:0 0 4px;font:700 .8125rem/1.3 var(--font-body);color:var(--ink2);letter-spacing:.01em}
.af-dgc-go{all:unset;cursor:pointer;color:var(--ink);border-radius:4px}
.af-dgc-go:hover{color:var(--accent)}

/* student Home */
.af-subj-h{margin:0;font:inherit}
.af-gat{margin-top:22px}
.af-gat-w{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius,14px);overflow-x:auto}
.af-gat-t{width:100%;border-collapse:collapse;font-size:.875rem}
.af-gat-t th,.af-gat-t td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--border)}
.af-gat-t thead th{font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink2);background:var(--surface2);font-weight:700}
.af-gat-t tbody th{font-weight:600;color:var(--ink)}
.af-gat-t tr:last-child th,.af-gat-t tr:last-child td{border-bottom:0}
.af-gat .af-bar i{width:72px}

/* W4 announcement dots: 24px targets */
.af-dot{width:24px;height:24px;padding:0;border:0;background:none;cursor:pointer;display:inline-grid;place-items:center;border-radius:12px}
.af-dot::after{content:"";width:8px;height:8px;border-radius:99px;background:var(--border2,var(--border));transition:width .2s}
.af-dot.on::after{width:18px;background:var(--accent)}
@media (prefers-reduced-motion:reduce){.af-dot::after{transition:none}}
@media (max-width:480px){.af-gat .af-bar i{display:none}.af-gat-t th,.af-gat-t td{padding:9px 10px}.af-gat-t thead th{letter-spacing:.03em}}

/* ---- exams-1.css ---- */
/* AcadFlow Exams patch 1 - styles for the redesigned Exams pages
 * (patches/gen_exams.py). Branding kept: Lexend / Plus Jakarta Sans, indigo
 * accent, rounded cards, shared status tokens. Module classes are hashed
 * (_name_1rwwu_N), so they are matched by prefix. */

/* ---------- student: grouped list ---------- */
.af-exg{margin:0 0 22px}
.af-exh{display:flex;align-items:center;gap:8px;margin:0 0 10px;font:700 .9375rem/1.25 var(--font-display);color:var(--ink);letter-spacing:-.01em}
.af-exn{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 7px;border-radius:99px;background:var(--surface2);color:var(--ink2);font:700 .75rem/1 var(--font-body)}

/* ---------- student: player ---------- */
.af-ptitle{margin:0;font:inherit;font-weight:700}
h2[class*="_qtext_1rwwu_"]{scroll-margin-top:80px}
h2[class*="_qtext_1rwwu_"]:focus{outline:none}
h2[class*="_qtext_1rwwu_"]:focus-visible{outline:3px solid var(--accent);outline-offset:4px;border-radius:6px}
[class*="_opt_1rwwu_"]:focus-visible,[class*="_o_1rwwu_"]:focus-visible,[class*="_gn_1rwwu_"]:focus-visible,
[class*="_mMap_1rwwu_"]:focus-visible,[class*="_mSheetWrap_1rwwu_"] button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
/* flagged is a symbol as well as a colour */
[class*="_gnFlag_1rwwu_"]{position:relative}
[class*="_gnFlag_1rwwu_"]::after{content:"\2691";position:absolute;top:-7px;right:-5px;font-size:11px;line-height:1;color:var(--gold-var,#b45309);background:var(--surface);border-radius:50%;padding:1px}
/* low time: bold red text as well as the tint */
[class*="_timerLow_1rwwu_"]{font-weight:800}

/* ---------- student: after submitting / review ---------- */
.af-cut{margin:10px 0 0;padding:9px 12px;border-radius:10px;background:var(--yellow-l,#fff4d6);color:var(--ink);font-size:.8438rem;line-height:1.5}
.af-pend{margin:10px 0 0;color:var(--ink2);font-size:.8438rem;line-height:1.5}
.af-rv{margin-left:auto;flex:none;align-self:center;font:700 .75rem/1 var(--font-body);padding:3px 9px;border-radius:99px;white-space:nowrap}
.af-rv-ok{background:var(--green-l);color:var(--green)}
.af-rv-no{background:var(--red-l);color:var(--red)}

/* ---------- professor: exam strip ---------- */
.af-etab{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:200px;max-width:280px}
.af-etab>b{font:700 .875rem/1.25 var(--font-display);color:var(--ink)}
.af-etab>span:not(.af-st){font-size:.75rem;color:var(--ink2)}
.af-tabn{font-size:.72rem;color:var(--accent);font-weight:600}
.af-st{display:inline-flex;align-items:center;gap:5px;font:700 .6875rem/1.4 var(--font-body);border-radius:99px;padding:1px 8px;background:var(--surface3,var(--surface2));color:var(--ink2)}
.af-st-open{background:var(--green-l);color:var(--green)}
.af-st-open::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.af-st-soon{background:var(--accent-l);color:var(--accent)}
.af-st-closed{background:var(--yellow-l);color:var(--att-amber,#8a6416)}
.af-st-rel,.af-st-pub{background:var(--accent-l);color:var(--accent)}
.af-xt{margin:0;font:700 1.0625rem/1.25 var(--font-display);color:var(--ink);letter-spacing:-.01em}

/* ---------- professor: where the exam is + next action ---------- */
.af-flow{margin:2px 0 14px}
.af-steps2{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-wrap:wrap;gap:4px 0}
.af-steps2 li{display:flex;align-items:center;gap:7px;font-size:.78rem;color:var(--ink2);padding-right:8px}
.af-steps2 li::after{content:"";width:18px;height:2px;border-radius:2px;background:var(--border);margin-left:3px}
.af-steps2 li:last-child::after{display:none}
.af-steps2 li b{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:.7rem;background:var(--surface2);color:var(--ink2);border:1.5px solid var(--border)}
.af-steps2 li.done b{background:var(--accent);border-color:var(--accent);color:#fff}
.af-steps2 li.cur{color:var(--ink);font-weight:700}
.af-steps2 li.cur b{background:var(--surface);border:2px solid var(--accent);color:var(--accent)}
.af-next{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:11px 14px;border-radius:14px;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--border));background:linear-gradient(135deg,var(--accent-l),var(--surface))}
.af-next-t{flex:1;min-width:220px;display:flex;flex-direction:column;gap:2px}
.af-next-t b{font-size:.875rem;color:var(--ink)}
.af-next-t span{font-size:.78rem;color:var(--ink2)}

/* ---------- professor: Live filters ---------- */
.af-lchips{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 10px}
.af-lchip{min-height:30px;padding:4px 11px;border-radius:99px;border:1px solid var(--border2,var(--border));background:var(--surface);color:var(--ink);font:500 .78rem/1.3 var(--font-body);cursor:pointer}
.af-lchip.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.af-lchip:focus-visible{outline:3px solid var(--accent);outline-offset:2px}

/* ---------- professor: create / settings steps ---------- */
.af-wz{list-style:none;margin:0 0 4px;padding:0;display:flex;gap:6px;flex-wrap:wrap}
.af-wz-b{display:inline-flex;align-items:center;gap:7px;min-height:32px;padding:4px 12px 4px 5px;border-radius:99px;border:1px solid var(--border);background:var(--surface);color:var(--ink2);font:600 .8125rem/1 var(--font-body);cursor:pointer}
.af-wz-b b{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:.72rem;background:var(--surface2)}
.af-wz-b.on{border-color:var(--accent);color:var(--accent);background:var(--accent-l)}
.af-wz-b.on b{background:var(--accent);color:#fff}
.af-wz-b.done b{background:var(--green-l);color:var(--green)}
.af-wz-b:disabled{opacity:.55;cursor:not-allowed}
.af-wz-b:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.af-hint{margin-right:auto;font-size:.78rem;color:var(--ink2);align-self:center}

/* ---------- professor: late attempt dialog ---------- */
.af-late{display:flex;flex-direction:column;gap:12px}
.af-warn{margin:0;padding:9px 12px;border-radius:10px;background:var(--yellow-l,#fff4d6);color:var(--ink);font-size:.8125rem;line-height:1.5}
.af-danger{color:var(--red)!important;margin-right:auto}

/* ---------- professor: 24px targets (WCAG 2.5.8) ---------- */
[class*="_rad_1rwwu_"]{width:24px;height:24px}
[class*="_nameX_1n94q_"]{width:24px;height:24px}
[class*="_rad_1rwwu_"]:focus-visible,[class*="_nameX_1n94q_"]:focus-visible{outline:3px solid var(--accent);outline-offset:2px}

/* option label and its description on separate lines (they ran together) */
#exam-form .check-row-txt>b,#exam-form .check-row-txt>small,.af-late .check-row-txt>b,.af-late .check-row-txt>small{display:block}
#exam-form .check-row-txt>small,.af-late .check-row-txt>small{margin-top:2px;color:var(--ink2);font-size:.78rem;line-height:1.45}
.af-bwarn{grid-column:1/-1;margin:0 0 4px}

/* ---- cs-1.css ---- */
/* AcadFlow Case Studies patch 1 - styles for the redesigned Case Studies pages
 * (patches/gen_cs.py). Branding kept: Lexend / Plus Jakarta Sans, indigo
 * accent, rounded cards, shared status tokens. */

.af-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.af-cs-mut{color:var(--ink3);font-size:.78rem}

/* ---------- professor: header ---------- */
.af-cs-h{margin:0;font:700 1.0625rem/1.3 var(--font-display);color:var(--ink);letter-spacing:-.01em}
.af-cs-hb{display:flex;gap:4px;flex-wrap:wrap}
.af-cs-hb .btn{display:inline-flex;align-items:center;gap:6px;min-height:32px}

/* ---------- professor: phase tabs ---------- */
.af-cs-wrap{margin-top:12px;container:afcs/inline-size}
.af-cs-tabs{display:flex;gap:6px;overflow-x:auto;padding:2px 2px 8px;margin:0 0 6px;scrollbar-width:thin}
.af-cs-tab{flex:none;display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:5px 12px 5px 6px;border-radius:12px;border:1px solid var(--border);background:var(--surface);color:var(--ink);font:500 .8125rem/1.25 var(--font-body);cursor:pointer;text-align:left}
.af-cs-tab>b{width:24px;height:24px;flex:none;border-radius:50%;display:grid;place-items:center;font-size:.72rem;background:var(--surface2);color:var(--ink2)}
.af-cs-tab>span{display:flex;flex-direction:column;max-width:190px}
.af-cs-tab>span>small{font-size:.6875rem;color:var(--ink3)}
.af-cs-tab.on{border-color:var(--accent);background:var(--accent-l);color:var(--accent);font-weight:600}
.af-cs-tab.on>b{background:var(--accent);color:#fff}
.af-cs-tab.on>span>small{color:var(--accent)}
.af-cs-all{padding-left:12px}
.af-cs-tab:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.af-cs-show{font-size:.78rem;color:var(--ink2);align-self:center}
.af-cs-n{font-weight:700;margin-left:2px}

/* ---------- professor: groups table ---------- */
.af-cs-tw{border:1px solid var(--border);border-radius:14px;overflow-x:auto;background:var(--surface)}
.af-cs-tbl{width:100%;border-collapse:collapse;font-size:.8125rem}
.af-cs-tbl thead th{font:700 .6875rem/1.3 var(--font-body);letter-spacing:.05em;text-transform:uppercase;color:var(--ink2);text-align:left;padding:9px 10px;background:var(--surface2);border-bottom:1px solid var(--border);white-space:nowrap}
.af-cs-tbl td,.af-cs-tbl tbody th{padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:middle;text-align:left;font-weight:400}
.af-cs-tbl tbody tr:last-child>*{border-bottom:0}
.af-cs-tbl tr.bad>th:first-child{box-shadow:inset 3px 0 0 var(--red)}
.af-cs-tbl.all td,.af-cs-tbl.all tbody th{white-space:nowrap}
.af-cs-tbl.all thead th{white-space:normal;min-width:84px;max-width:140px;vertical-align:bottom;text-transform:none;letter-spacing:0;font-size:.72rem}
.af-cs-tbl.all tbody th .af-cs-g>span{white-space:nowrap}
.af-cs-g{display:flex;flex-direction:column;align-items:flex-start;gap:1px;background:none;border:0;padding:4px 6px;margin:-4px -6px;border-radius:8px;cursor:pointer;text-align:left;color:var(--ink);min-height:24px}
.af-cs-g>b{font:700 .875rem/1.25 var(--font-display);color:var(--accent)}
.af-cs-g>span{font-size:.72rem;color:var(--ink2);white-space:nowrap}
.af-cs-g:hover>b{text-decoration:underline}
.af-cs-g:focus-visible{outline:3px solid var(--accent);outline-offset:1px}
.af-cs-faces .cs-avs{padding-left:6px;margin:0}
.af-cs-pill{display:inline-flex;align-items:center;gap:5px;font:700 .6875rem/1.4 var(--font-body);border-radius:99px;padding:2px 9px;background:var(--surface2);color:var(--ink2);white-space:nowrap}
.af-cs-pill.done{background:var(--green-l);color:var(--green)}
.af-cs-pill.active{background:var(--accent-l);color:var(--accent)}
.af-cs-pill.behind{background:var(--red-l);color:var(--red)}
.af-cs-sco{display:inline-grid;grid-template-columns:auto auto;align-items:center;gap:2px 5px;white-space:nowrap}
.af-cs-sco>small{grid-column:1/-1;font-size:.6875rem;color:var(--ink3)}
.af-cs-tbl .cs-sco{width:64px;min-height:30px;font-size:.8125rem}
.af-cs-tbl .cs-sco:focus-visible{outline:3px solid var(--accent);outline-offset:1px}
.af-cs-avg{font-weight:700;color:var(--ink)}
.af-cs-act{text-align:right!important;white-space:nowrap}
.af-cs-none{text-align:center!important;color:var(--ink3);padding:18px!important}

@container afcs (max-width:820px){
  .af-cs-tbl:not(.all) thead th:nth-child(2),.af-cs-tbl:not(.all) .af-cs-faces{display:none}
}

/* ---------- professor: foot ---------- */
.af-cs-ready{display:flex;flex-direction:column;gap:8px;flex:1;min-width:240px}
.af-cs-rd{list-style:none;margin:0;padding:0;display:flex;gap:6px;flex-wrap:wrap}
.af-cs-rd li{font-size:.72rem;color:var(--ink2);padding:3px 9px;border-radius:99px;border:1px solid var(--border);background:var(--surface)}
.af-cs-rd li b{color:var(--ink)}
.af-cs-rd li.ok{border-color:color-mix(in srgb,var(--green) 40%,var(--border));background:var(--green-l)}
.af-cs-rd li.ok b{color:var(--green)}

/* ---------- professor: apply dialog ---------- */
.af-cs-dlg{display:flex;flex-direction:column;gap:12px;font-size:.8438rem;line-height:1.5;color:var(--ink)}
.af-cs-dlg p{margin:0}
.af-cs-rep{list-style:none;margin:6px 0 0;padding:0;max-height:180px;overflow:auto}
.af-cs-rep li{display:flex;justify-content:space-between;gap:12px;padding:4px 0;border-bottom:1px solid color-mix(in srgb,var(--ink) 8%,transparent);font-variant-numeric:tabular-nums}
.af-cs-rep li:last-child{border-bottom:0}
.af-cs-miss{margin:4px 0 4px;padding-left:18px}

/* ---------- professor: plan editor Move up/down ---------- */
.af-cs-mv{position:absolute;top:8px;right:62px;display:inline-flex;gap:4px}
.af-cs-mvb{width:24px;height:24px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--ink);font-size:.875rem;line-height:1;cursor:pointer}
.af-cs-mvb:disabled{opacity:.4;cursor:not-allowed}
.af-cs-mvb:focus-visible{outline:3px solid var(--accent);outline-offset:1px}

/* ---------- student: result ---------- */
.af-cs-res{margin:14px 0;padding:12px 14px;border:1px solid var(--border);border-radius:14px;background:var(--surface)}
.af-cs-res.none{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;padding:10px 14px}
.af-cs-res.none p{margin:0;font-size:.8125rem;color:var(--ink2)}
.af-cs-resT{display:flex;align-items:center;justify-content:space-between;gap:10px}
.af-cs-resh{margin:0;font:700 .9375rem/1.3 var(--font-display);color:var(--ink)}
.af-cs-big{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin:8px 0 6px}
.af-cs-big b{font:800 1.75rem/1 var(--font-display);color:var(--ink);letter-spacing:-.02em}
.af-cs-big span{font-size:.8125rem;color:var(--ink2)}
.af-cs-ph{list-style:none;margin:0 0 8px;padding:0}
.af-cs-ph li{display:flex;justify-content:space-between;gap:12px;font-size:.8125rem;padding:6px 0;border-bottom:1px solid var(--border)}
.af-cs-ph li:last-child{border-bottom:0}
.af-cs-res>.af-cs-mut{margin:0}

/* ---------- new case study: due / max / groups row on a phone ---------- */
@media (max-width:480px){
  #cs-new-form>div[style*="1fr 1fr 1fr"]{grid-template-columns:1fr 1fr!important}
  #cs-new-form>div[style*="1fr 1fr 1fr"]>div:last-child{grid-column:1/-1}
}

/* ---------- narrow: table rows become cards (the table's own width) ---------- */
@container afcs (max-width:600px){
  .af-cs-tw:not(.wide){border:0;background:none;border-radius:0;overflow:visible}
  .af-cs-tbl:not(.all) thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
  .af-cs-tbl:not(.all),.af-cs-tbl:not(.all) tbody,.af-cs-tbl:not(.all) tr{display:block}
  .af-cs-tbl:not(.all) tbody tr{border:1px solid var(--border);border-radius:14px;background:var(--surface);margin:0 0 10px;padding:6px 4px;display:grid;grid-template-columns:1fr auto}
  .af-cs-tbl:not(.all) tbody tr>*{border:0!important;padding:6px 10px}
  .af-cs-tbl:not(.all) tbody th{grid-column:1}
  .af-cs-tbl:not(.all) .af-cs-faces{grid-column:2;grid-row:1;align-self:center}
  .af-cs-tbl:not(.all) td[data-l]{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;gap:10px}
  .af-cs-tbl:not(.all) td[data-l]::before{content:attr(data-l);font-size:.75rem;color:var(--ink2)}
  .af-cs-tbl:not(.all) .af-cs-act{grid-column:1/-1;text-align:left!important}
  .af-cs-tbl:not(.all) .af-cs-act .btn{width:100%;justify-content:center;min-height:40px}
  .af-cs-tbl:not(.all) tr.bad{box-shadow:inset 3px 0 0 var(--red)}
  .af-cs-tbl:not(.all) tr.bad>th:first-child{box-shadow:none}
  .af-cs-tbl:not(.all) .af-cs-faces{display:block}
}
@media (max-width:640px){
  .af-cs-hb .btn{min-height:40px}
}

/* ---- todo-3.css ---- */
/* AcadFlow To do, round 2 (patches/TodoTab-af2.js). One row layout on every
 * tab. Branding kept: Lexend / Plus Jakarta Sans, indigo accent, rounded
 * cards, shared status tokens. Motion: the placeholder shimmer and progress
 * line stop for prefers-reduced-motion, and the shimmer stops after 5 s. */
.af-td .af-sr{position:absolute!important;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.af-td-shell{padding:0;overflow:hidden}

/* tiles = tabs */
.af-td-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:14px 14px 0}
.af-td-tile{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:76px;padding:10px 12px;border-radius:14px;border:1px solid var(--border);background:var(--surface);color:var(--ink);text-align:left;cursor:pointer;font-family:var(--font-body)}
.af-td-tile b{font:800 1.5rem/1.1 var(--font-display);letter-spacing:-.02em;color:var(--ink);min-height:1.65rem}
.af-td-tile span{font:600 .8125rem/1.3 var(--font-body);color:var(--ink)}
.af-td-tile small{font-size:.72rem;color:var(--ink2)}
.af-td-tile:hover{border-color:color-mix(in srgb,var(--accent) 40%,var(--border))}
.af-td-tile.on{border:2px solid var(--accent);background:var(--accent-l);padding:9px 11px}
.af-td-tile.on b,.af-td-tile.on span{color:var(--accent)}
.af-td-tile:focus-visible{outline:3px solid var(--accent);outline-offset:2px}

/* toolbar */
.af-td-bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:12px 14px;border-bottom:1px solid var(--border)}
.af-td-bar .input{min-height:38px}
.af-td-search{flex:1 1 220px}
.af-td-search .input{width:100%}
.af-td-bar select.input{width:auto;max-width:230px}
.af-td-hv{margin-left:auto}

/* panel + rows */
.af-td-panel{position:relative;padding:12px 14px 14px}
.af-td-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.af-td-item{display:grid;grid-template-columns:36px minmax(0,1fr) auto auto;grid-template-areas:"ic main stat acts" "below below below below";gap:0 12px;align-items:start;padding:12px;border:1px solid var(--border);border-radius:14px;background:var(--surface)}
.af-td-ic{grid-area:ic;align-self:start;width:36px;height:36px;border-radius:10px;display:grid;place-items:center;font:800 .62rem/1 var(--font-body);letter-spacing:.04em;background:var(--accent-l);color:var(--accent)}
.af-td-ic.k-message{background:var(--surface2);color:var(--ink)}
.af-td-ic.k-exam,.af-td-ic.k-practical,.af-td-ic.k-casestudy{background:var(--yellow-l,#fff4d6);color:var(--att-amber,#7a5300)}
.af-td-ic.k-excuse,.af-td-ic.k-enroll{background:var(--green-l);color:var(--green)}
.af-td-main{grid-area:main;min-width:0;display:flex;flex-direction:column;gap:3px}
.af-td-t{margin:0;font:700 .9375rem/1.35 var(--font-display);color:var(--ink);overflow-wrap:anywhere}
.af-td-t:focus{outline:none}
.af-td-t:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:6px}
.af-td-meta{margin:0;font-size:.8125rem;color:var(--ink2);line-height:1.45}
.af-td-stat{grid-area:stat;justify-self:end;padding-top:6px}
.af-td-below{grid-area:below;min-width:0}
.af-td-below:empty{display:none}
.af-td-acts{grid-area:acts;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.af-td-acts .btn{min-height:36px;white-space:nowrap}
.af-td-st{display:inline-flex;align-items:center;font:700 .75rem/1.4 var(--font-body);padding:3px 10px;border-radius:99px;background:var(--surface2);color:var(--ink2);white-space:nowrap}
.af-td-st.ok{background:var(--green-l);color:var(--green)}
.af-td-st.bad{background:var(--red-l);color:var(--red)}
.af-td-st.warn{background:var(--yellow-l,#fff4d6);color:var(--att-amber,#7a5300)}
.af-td-st.info{background:var(--accent-l);color:var(--accent)}
/* message details */
.af-td-q{margin:6px 0 2px;padding:8px 12px;border-left:3px solid var(--accent);background:var(--surface2);border-radius:0 10px 10px 0;font-size:.875rem;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere}
.af-td-why{margin:0;font-size:.78rem;color:var(--ink2)}
.af-td-check{margin:4px 0 0;padding:8px 10px;border-radius:10px;background:var(--accent-l);color:var(--ink);font-size:.8438rem;line-height:1.5}
/* missing work */
.af-td-names-wrap{margin-top:8px;display:flex;flex-direction:column;gap:8px}
.af-td-selbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;border-radius:12px;background:var(--accent-l)}
.af-td-selbar .btn-ghost{background:var(--surface);color:var(--ink);border:1px solid var(--border)}
.af-td-selbar .btn-ghost:disabled{color:var(--ink2)}
.af-td-selc{font:600 .8125rem var(--font-body);color:var(--accent);margin-right:auto}
.af-td-names{list-style:none;margin:0;padding:0;columns:2 280px;column-gap:16px}
.af-td-names li{break-inside:avoid;border-bottom:1px solid var(--border)}
.af-td-chk{display:flex;align-items:center;gap:10px;min-height:40px;padding:4px 2px;cursor:pointer;font-size:.875rem;color:var(--ink)}
.af-td-chk input{width:20px;height:20px;accent-color:var(--accent);flex:none}
.af-td-chk small{margin-left:auto;font-size:.75rem;color:var(--ink2);text-align:right}
.af-td-chk.off{cursor:default}
.af-td-dash{width:20px;height:2px;background:var(--border);flex:none}
.af-td-chk:focus-within{outline:3px solid var(--accent);outline-offset:1px;border-radius:8px}
/* states */
.af-td-empty{margin:28px 0;text-align:center;color:var(--ink2);font-size:.9375rem}
.af-td-alert{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px;padding:10px 12px;border-radius:12px;background:var(--red-l);color:var(--red);font-size:.875rem}
.af-td-alert .btn{margin-left:auto}
.af-td-more{display:block;width:100%;margin-top:10px;min-height:42px}
.af-td-count{margin:8px 0 0;text-align:center;font-size:.75rem;color:var(--ink2)}
.af-td-form{display:flex;flex-direction:column;gap:12px}
.af-td-note{margin:0;font-size:.78rem;color:var(--ink2)}
.af-td-err{margin:0;color:var(--red);font-size:.8438rem}
/* loading: placeholders + thin progress line */
.af-td-shim{display:block;border-radius:8px;background:linear-gradient(90deg,var(--surface2) 25%,var(--border) 50%,var(--surface2) 75%);background-size:400% 100%;animation:af-td-sh 1.4s ease-in-out infinite}
.af-td-shim.box{width:36px;height:36px;border-radius:10px}
.af-td-shim.l1{height:14px;width:62%}
.af-td-shim.l2{height:11px;width:42%;margin-top:7px}
.af-td-shim.pill{width:76px;height:22px;border-radius:99px}
.af-td-shim.btn{width:84px;height:34px;border-radius:10px}
.af-td-shim.num{width:44px;height:1.4rem}
.af-td-sk.still .af-td-shim{animation:none}
@keyframes af-td-sh{0%{background-position:100% 0}100%{background-position:0 0}}
.af-td-prog{position:absolute;left:14px;right:14px;top:0;height:3px;border-radius:2px;overflow:hidden;opacity:0;transition:opacity .2s}
.af-td-prog.on{opacity:1;background:var(--accent-l)}
.af-td-prog i{display:block;width:35%;height:100%;background:var(--accent);animation:af-td-pg 1.2s ease-in-out infinite}
@keyframes af-td-pg{0%{transform:translateX(-100%)}100%{transform:translateX(300%)}}
@media (prefers-reduced-motion:reduce){
  .af-td-shim,.af-td-prog i{animation:none}
  .af-td-prog i{width:100%;opacity:.5}
}
/* phone / zoom: rows stack, buttons full width */
@media (max-width:760px){
  .af-td-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
  .af-td-item{grid-template-columns:36px minmax(0,1fr);grid-template-areas:"ic main" "ic stat" "acts acts" "below below";gap:8px 12px}
  .af-td-stat{justify-self:start}
  .af-td-acts{justify-content:stretch}
  .af-td-acts .btn{flex:1 1 auto;min-height:42px}
  .af-td-hv{margin-left:0}
  .af-td-bar select.input{max-width:none;flex:1 1 140px}
}

/* ---- todo-5.css ---- */
/* AcadFlow To do round 4 (patches/TodoTab-af4.js): five tiles (Check-up added).
 * Phone: 2 per row, the fifth spans the row. */
.af-td-tiles{grid-template-columns:repeat(5,minmax(0,1fr))}
.af-td-ic.k-check{background:var(--red-l,#fde8e6);color:var(--red,#b3261e)}
@media (max-width:1100px){.af-td-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:760px){.af-td-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.af-td-tile:last-child:nth-child(odd){grid-column:1/-1}}
/* round 5: the health card (plan #2) */
.af-hl{margin:0 0 14px;padding:12px 14px;border-radius:14px;background:var(--yellow-l,#fff4d6);border:1px solid color-mix(in srgb,var(--att-amber,#7a5300) 25%,transparent);color:var(--att-amber,#7a5300)}
.af-hl-top{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}
.af-hl h2{margin:0;font:700 .95rem/1.3 var(--font-display,inherit);color:inherit}
.af-hl p{margin:2px 0 0;font-size:.8438rem}
.af-hl-acts{display:flex;gap:6px;flex-wrap:wrap}
.af-hl-list{margin:10px 0 0;padding-left:18px;font-size:.8125rem;color:var(--ink)}
.af-hl-list code{font-size:.78rem}
:root[data-theme="dark"] .af-hl,:root[data-theme="frost"] .af-hl{color:#fcd34d}
/* semester wrap-up (plan 2026-10-27 #8) */
.af-wu{margin:0 0 14px;padding:14px 16px;border-radius:16px}
.af-wu-top{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}
.af-wu h2{margin:0;font:700 1rem/1.3 var(--font-display,inherit);color:var(--ink)}
.af-wu-top p{margin:2px 0 0;font-size:.8438rem;color:var(--ink2)}
.af-wu-bar{height:6px;border-radius:99px;background:var(--border);margin:10px 0 4px;overflow:hidden}
.af-wu-bar i{display:block;height:100%;background:var(--accent);border-radius:inherit;transition:width .3s}
.af-wu-list{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:2px}
.af-wu-list li{display:flex;gap:12px;align-items:center;padding:9px 4px;border-top:1px solid var(--border)}
.af-wu-list li:first-child{border-top:0}
.af-wu-n{flex:none;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font:700 .78rem/1 var(--font-display,inherit);background:var(--accent-l);color:var(--ink)}
.af-wu-list li.done .af-wu-n{background:var(--green);color:#fff}
.af-wu-tick{flex:none;width:22px;height:22px;margin:2px;accent-color:var(--accent)}
.af-wu-b{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.af-wu-t{font-weight:700;font-size:.875rem;color:var(--ink)}
.af-wu-b small{font-size:.8125rem;color:var(--ink2)}
.af-wu-list li.done .af-wu-t{color:var(--ink2)}
.af-wu-list li .btn{flex:none}
@media (max-width:560px){.af-wu-list li{flex-wrap:wrap}.af-wu-list li .btn{margin-left:38px}}
:root[data-theme="dark"] .af-wu-list li.done .af-wu-n,:root[data-theme="frost"] .af-wu-list li.done .af-wu-n{color:#06270f}
/* Monday summary + start of semester (plan 2026-10-28 #4 #6) */
.af-wu-n.warn{background:color-mix(in srgb,#b45309 16%,transparent);color:#8a4b00}
:root[data-theme="dark"] .af-wu-n.warn,:root[data-theme="frost"] .af-wu-n.warn{color:#fcd34d}
.af-wk-due{margin:10px 0 0;font-size:.8125rem;color:var(--ink2)}
.af-wk-due b{color:var(--ink)}

/* ---- ev-1.css ---- */
/* AcadFlow @everyone (patches/gen_everyone.py): the shared @ list, the
 * Private + @everyone error under the professor's composer, and the @ badge on
 * a muted chat. Branding kept: Lexend / Plus Jakarta Sans, indigo accent. */
.af-mlist{position:absolute;bottom:calc(100% + 4px);left:0;right:0;z-index:50;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-lg,0 8px 24px rgba(0,0,0,.15));padding:4px 0}
.af-mopt{display:flex;align-items:center;gap:10px;min-height:40px;padding:6px 12px;cursor:pointer;color:var(--ink);font:500 .8125rem/1.3 var(--font-body,inherit);box-shadow:inset 3px 0 0 transparent}
.af-mopt.on{background:var(--surface2);box-shadow:inset 3px 0 0 var(--accent)}
.af-mopt.ev{border-bottom:1px solid var(--border)}
.af-mname{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.af-mopt.ev .af-mname{font-weight:700}
.af-mhint{margin-left:auto;padding-left:8px;min-width:0;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;color:var(--ink2);font-size:.75rem;white-space:nowrap}
.af-mav{width:24px;height:24px;border-radius:50%;flex:none;display:grid;place-items:center;font:800 .8rem/1 var(--font-body,inherit)}
.af-mav.ev{background:var(--accent);color:#fff}
.af-ev-err[data-on]{margin:8px 12px 0;padding:9px 12px;border-radius:12px;background:var(--red-l);color:var(--red);font-size:.8438rem;line-height:1.45}
.af-at{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--accent);color:#fff;font:800 .68rem/1 var(--font-body,inherit)}
@media (max-width:760px){.af-mopt{min-height:44px}}
/* a mention inside your own (brand gradient) bubble: white text on a light
 * tint was about 3.7:1 (light theme) and lower in dark; a white chip with deep
 * indigo text is above 10:1 in every theme. Loaded before the Messages CSS,
 * hence the extra `html`. */
html ._bubble_q36i4_79.sent ._mention_q36i4_400{background:#fff;color:#312e81}

/* ---- msgx-1.css ---- */
/* AcadFlow Messages improvements, rounds A-D (patches/msgx-1.js). Branding:
 * Lexend / Plus Jakarta Sans, indigo accent, rounded cards, app tokens. Every
 * control has a visible focus ring and at least 24 px targets (44 px on phones);
 * text meets 4.5:1 in light and dark themes. */
.af-mx-sr{position:absolute!important;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.af-mx-link{background:none;border:0;padding:2px 4px;margin:0;color:var(--accent);font:600 .75rem/1.4 var(--font-body,inherit);cursor:pointer;border-radius:6px;text-decoration:underline;text-underline-offset:2px}
.af-mx-link:hover{text-decoration-thickness:2px}
.af-mx-link:disabled{color:var(--ink2);cursor:default}
.af-mx-link:focus-visible,.af-mx-iconbtn:focus-visible,.af-mx-ackbtn:focus-visible,.af-mx-file:focus-visible,.af-mx-chip button:focus-visible,.af-mx-menu [role^=menuitem]:focus-visible,.af-mx-tabs [role=tab]:focus-visible,.af-mx-skip:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
/* waiting flag on a conversation row */
.af-mx-wait{display:inline-flex;align-items:center;flex:none;font:700 .66rem/1 var(--font-body,inherit);padding:3px 6px;border-radius:99px;background:var(--yellow-l,#fff4d6);color:var(--att-amber,#7a5300);white-space:nowrap}
.af-mx-wait.red{background:var(--red-l,#fde8e6);color:var(--red,#b3261e)}
/* read line under your own group posts */
.af-mx-readline{display:flex;justify-content:flex-end;margin:2px 4px 6px}
/* composer */
.af-mx-iconbtn{display:inline-grid;place-items:center;width:36px;height:36px;flex:none;border-radius:50%;border:0;background:transparent;color:var(--ink2);cursor:pointer}
.af-mx-iconbtn:hover{background:var(--surface2);color:var(--accent)}
.af-mx-menuwrap{position:relative;display:inline-flex}
.af-mx-menu{position:absolute;bottom:calc(100% + 6px);left:0;z-index:60;min-width:250px;padding:6px;border-radius:14px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-lg,0 10px 30px rgba(0,0,0,.18))}
.af-mx-menu [role^=menuitem]{display:flex;align-items:flex-start;gap:10px;width:100%;min-height:40px;padding:8px 10px;border:0;border-radius:10px;background:none;color:var(--ink);text-align:left;font:500 .875rem/1.35 var(--font-body,inherit);cursor:pointer}
.af-mx-menu [role^=menuitem]:hover,.af-mx-menu [role^=menuitem]:focus{background:var(--surface2)}
.af-mx-menu [role^=menuitem]:disabled{color:var(--ink2);cursor:default}
.af-mx-menu small{display:block;font-size:.72rem;color:var(--ink2);margin-top:1px}
.af-mx-mi{width:18px;flex:none;text-align:center;color:var(--accent);font-weight:800}
.af-mx-cbar{display:flex;flex-direction:column;gap:6px;padding:6px 12px 0}
.af-mx-chips{display:flex;flex-wrap:wrap;gap:6px}
.af-mx-chip{display:inline-flex;align-items:center;gap:4px;max-width:100%;padding:3px 4px 3px 10px;border-radius:99px;background:var(--accent-l);color:var(--accent);font:600 .75rem/1.4 var(--font-body,inherit)}
.af-mx-chip.urgent{background:var(--red-l,#fde8e6);color:var(--red,#b3261e)}
.af-mx-chip.sched{background:var(--surface2);color:var(--ink)}
.af-mx-chip button{display:inline-grid;place-items:center;width:24px;height:24px;border:0;border-radius:50%;background:transparent;color:inherit;font-size:1rem;line-height:1;cursor:pointer}
.af-mx-chip button:hover{background:rgba(0,0,0,.08)}
.af-mx-hours{padding:8px 12px;border-radius:12px;background:var(--yellow-l,#fff4d6);color:var(--att-amber,#7a5300);font-size:.8125rem;line-height:1.45}
/* bubble extras */
.af-mx-extras{display:flex;flex-direction:column;gap:6px;margin-top:6px}
.af-mx-tag{align-self:flex-start;display:inline-flex;padding:2px 8px;border-radius:99px;background:var(--accent-l);color:var(--accent);font:700 .68rem/1.5 var(--font-body,inherit);letter-spacing:.02em}
.af-mx-tag.urgent{background:var(--red-l,#fde8e6);color:var(--red,#b3261e)}
.af-mx-ackrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.af-mx-ackbtn{min-height:32px;padding:0 14px;border-radius:10px;border:0;background:var(--accent);color:#fff;font:700 .8125rem/1 var(--font-body,inherit);cursor:pointer}
.af-mx-ackbtn.ghost{align-self:flex-start;background:var(--surface);color:var(--accent);border:1px solid var(--border)}
.af-mx-ackbtn:disabled{opacity:.6;cursor:default}
.af-mx-acked{align-self:flex-start;font:600 .75rem/1.4 var(--font-body,inherit);color:var(--green)}
.af-mx-files{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.af-mx-file{display:flex;align-items:center;gap:10px;min-width:0;max-width:320px;padding:8px 10px;border-radius:12px;background:var(--surface);border:1px solid var(--border);color:var(--ink);text-decoration:none}
.af-mx-file:hover{border-color:var(--accent)}
.af-mx-fic{display:grid;place-items:center;flex:none;width:34px;height:40px;border-radius:6px;background:var(--accent-l);color:var(--accent);font:800 .6rem/1 var(--font-body,inherit)}
.af-mx-fic.k-pdf{background:#fde8e6;color:#9b1c14}
.af-mx-fic.k-doc,.af-mx-fic.k-docx{background:#e3ecfd;color:#1b4fb0}
.af-mx-fic.k-ppt,.af-mx-fic.k-pptx{background:#fdeadf;color:#8f3a07}
.af-mx-fic.k-xls,.af-mx-fic.k-xlsx{background:#e2f4e8;color:#17663b}
.af-mx-fmeta{display:flex;flex-direction:column;min-width:0}
.af-mx-fmeta b{font:600 .8125rem/1.3 var(--font-body,inherit);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.af-mx-fmeta small{font-size:.72rem;color:var(--ink2)}
/* polls */
.af-mx-poll{margin:0;min-width:min(280px,100%);padding:10px 12px;border:1px solid var(--border);border-radius:14px;background:var(--surface);color:var(--ink)}
.af-mx-poll legend{float:left;width:100%;padding:0;margin:0 0 2px;font:700 .9rem/1.35 var(--font-display,inherit)}
.af-mx-pmeta{clear:both;margin:0 0 8px;font-size:.72rem;color:var(--ink2)}
.af-mx-popt{display:grid;grid-template-columns:1fr auto;align-items:center;gap:2px 10px;margin:6px 0}
.af-mx-popt label{display:flex;align-items:center;gap:8px;min-height:32px;cursor:pointer;font-size:.875rem}
.af-mx-popt input{width:18px;height:18px;accent-color:var(--accent)}
.af-mx-plabel{font-size:.875rem}
.af-mx-pcount{font:600 .75rem var(--font-body,inherit);color:var(--ink2)}
.af-mx-pbar{grid-column:1/-1;height:8px;border-radius:4px;background:var(--surface2);overflow:hidden}
.af-mx-pbar i{display:block;height:100%;background:var(--accent);border-radius:4px}
.af-mx-pnames{grid-column:1/-1;font-size:.72rem;color:var(--ink2)}
.af-mx-pfoot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px;font-size:.75rem;color:var(--ink2)}
.af-mx-pfoot [role=status]{margin-right:auto}
/* dialogs */
.af-mx-form{display:flex;flex-direction:column;gap:12px}
.af-mx-field{display:flex;flex-direction:column;gap:4px;min-width:0}
.af-mx-field label{font:600 .8125rem var(--font-body,inherit);color:var(--ink)}
.af-mx-field small{font-size:.75rem;color:var(--ink2)}
.af-mx-fs{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.af-mx-fs legend{font:600 .8125rem var(--font-body,inherit);margin-bottom:4px;padding:0}
.af-mx-orow{display:flex;gap:6px;align-items:center}
.af-mx-orow .input{flex:1;min-width:0}
.af-mx-check{display:flex;align-items:center;gap:10px;min-height:32px;font-size:.875rem;cursor:pointer}
.af-mx-check input{width:18px;height:18px;accent-color:var(--accent);flex:none}
.af-mx-two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.af-mx-days{display:flex;flex-wrap:wrap;gap:6px}
.af-mx-day{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 10px;border:1px solid var(--border);border-radius:10px;font-size:.8125rem;cursor:pointer}
.af-mx-day input{accent-color:var(--accent)}
.af-mx-quick{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.af-mx-quick .btn{display:flex;flex-direction:column;align-items:flex-start;gap:2px;height:auto;min-height:52px;padding:8px 12px;text-align:left}
.af-mx-quick small{font-size:.72rem;color:var(--ink2)}
.af-mx-trow{display:grid;grid-template-columns:160px 1fr auto;gap:10px;align-items:end;padding-bottom:10px;border-bottom:1px solid var(--border)}
.af-mx-slash{display:flex;align-items:center;gap:4px;font-weight:700;color:var(--accent)}
.af-mx-slash .input{flex:1;min-width:0}
.af-mx-note{margin:0;font-size:.8125rem;color:var(--ink2)}
.af-mx-err{margin:0;color:var(--red,#b3261e);font-size:.8125rem}
.af-mx-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.af-mx-tabs [role=tab]{min-height:36px;padding:0 12px;border-radius:99px;border:1px solid var(--border);background:var(--surface);color:var(--ink);font:600 .8125rem var(--font-body,inherit);cursor:pointer}
.af-mx-tabs [role=tab].on{background:var(--accent-l);border-color:var(--accent);color:var(--accent)}
.af-mx-names{list-style:none;margin:0;padding:0;max-height:min(50vh,360px);overflow-y:auto;columns:2 220px;column-gap:16px}
.af-mx-names li{display:flex;justify-content:space-between;gap:8px;break-inside:avoid;padding:6px 2px;border-bottom:1px solid var(--border);font-size:.875rem}
.af-mx-names small{font-size:.72rem;color:var(--ink2);white-space:nowrap}
.af-mx-sched{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.af-mx-sched li{padding:10px 12px;border:1px solid var(--border);border-radius:14px;display:flex;flex-direction:column;gap:6px}
.af-mx-sh{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:.8125rem}
.af-mx-sh span{color:var(--ink2)}
.af-mx-sbody{margin:0;font-size:.875rem;white-space:pre-wrap;overflow-wrap:anywhere}
.af-mx-acts{display:flex;gap:6px;flex-wrap:wrap}
.af-mx-danger{color:var(--red,#b3261e)!important}
/* the @ / quick reply list: quick reply rows */
.af-mav.sl{background:var(--surface2);color:var(--accent)}
.af-mopt.sl .af-mhint{max-width:60%}
/* skip link: visible only on keyboard focus */
.af-mx-skip{position:absolute;left:12px;top:8px;z-index:70;transform:translateY(-200%);padding:8px 14px;border-radius:10px;border:0;background:var(--accent);color:#fff;font:700 .8125rem var(--font-body,inherit);cursor:pointer}
.af-mx-skip:focus{transform:none}
[data-af-thread]:focus-visible{outline:3px solid var(--accent);outline-offset:-3px}
[id^="msgentry-"]:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:14px}
/* To do round 3 */
.af-td-wait{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 10px;padding:8px 12px;border-radius:12px;background:var(--yellow-l,#fff4d6);color:var(--att-amber,#7a5300);font-size:.8438rem}
/* #11b: the faded back cards in "Catch up" are decoration; their text is
 * hidden instead of shown at low contrast */
[class*="_peekCard_"].p2>*,[class*="_peekCard_"].p3>*{visibility:hidden}
@media (max-width:760px){
  .af-mx-menu{min-width:min(280px,calc(100vw - 32px))}
  .af-mx-menu [role^=menuitem],.af-mx-chip button{min-height:44px}
  .af-mx-chip button{width:44px;height:44px;margin:-10px -4px -10px 0}
  .af-mx-iconbtn{width:44px;height:44px}
  .af-mx-trow{grid-template-columns:1fr}
  .af-mx-quick,.af-mx-two{grid-template-columns:1fr}
  .af-mx-file{max-width:100%}
}
/* grade breakdown card (plan "breakdown") */
.af-bd{margin-top:6px;max-width:460px;background:var(--surface);border:1px solid var(--border);border-radius:16px;overflow:hidden;color:var(--ink);font-size:.8438rem;text-align:left}
.af-bd-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:12px 14px;background:var(--accent-l)}
.af-bd-k{font-size:.6875rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink2)}
.af-bd-t{margin:2px 0 0;font:800 1rem/1.25 var(--font-display,inherit);color:var(--ink)}
.af-bd-big{text-align:right;flex:none}.af-bd-big b{display:block;font:800 1.5rem/1 var(--font-display,inherit);color:var(--ink)}.af-bd-big small{color:var(--ink2)}
.af-bd-steps{list-style:none;margin:0;padding:4px 14px}
.af-bd-steps li{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:8px;align-items:baseline;padding:7px 0;border-bottom:1px dashed var(--border)}
.af-bd-steps li:last-child{border-bottom:0}
.af-bd-steps small{display:block;color:var(--ink2);font-size:.75rem}
.af-bd-steps b{white-space:nowrap;text-align:right}
.af-bd-n{width:20px;height:20px;border-radius:50%;background:var(--accent-l);color:var(--ink);display:grid;place-items:center;font-size:.6875rem;font-weight:700}
.af-bd-held{margin:0;padding:6px 14px;font-size:.75rem;color:var(--ink2)}
.af-bd-more{display:flex;justify-content:space-between;width:100%;padding:9px 14px;border:0;border-top:1px solid var(--border);background:transparent;color:var(--ink);font:600 .8125rem/1.3 inherit;cursor:pointer;min-height:36px}
.af-bd-more:hover{background:var(--accent-l)}
.af-bd-list{padding:2px 14px 10px}
.af-bd-list h4{margin:8px 0 2px;font-size:.75rem;font-weight:700;color:var(--ink2);text-transform:uppercase;letter-spacing:.04em}
.af-bd-list ul{list-style:none;margin:0;padding:0}
.af-bd-list li{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-bottom:1px solid var(--border);font-size:.8125rem}
.af-bd-list li:last-child{border-bottom:0}
.af-bd-list li b{text-align:right}
.af-bd-tag{font-size:.6875rem;font-weight:700;padding:0 6px;border-radius:999px;margin-left:6px;background:color-mix(in srgb,#b45309 14%,transparent);color:#8a4b00;white-space:nowrap}
:root[data-theme="dark"] .af-bd-tag,:root[data-theme="frost"] .af-bd-tag{color:#fcd34d}
.af-bd-note{margin:8px 0 0;font-size:.75rem;color:var(--ink2)}
.af-bd-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 14px;border-top:1px solid var(--border);font-size:.75rem;color:var(--ink2)}

/* ---- offline-1.css ---- */
/* AcadFlow offline-friendly submit (patches/offline-1.js). Branding kept:
 * Lexend / Plus Jakarta Sans, indigo accent, rounded cards, app tokens.
 * Status text is always written out; colour is never the only signal. */
.af-of-banner{margin:0 0 12px;padding:10px 14px;border-radius:14px;background:var(--red-l,#fde8e6);color:var(--red,#9b1c14);font-size:.875rem;line-height:1.45}
.af-of-st{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:1 1 100%;margin:0 0 8px;padding:8px 12px;border-radius:12px;font-size:.8125rem;line-height:1.4}
.af-of-st.wait{background:var(--yellow-l,#fff4d6);color:var(--att-amber,#7a5300)}
.af-of-st.warn{background:var(--yellow-l,#fff4d6);color:var(--att-amber,#7a5300)}
.af-of-st.bad{background:var(--red-l,#fde8e6);color:var(--red,#9b1c14)}
.af-of-acts{display:inline-flex;gap:6px;flex-wrap:wrap;margin-left:auto}
.af-of-draft{flex:1 1 100%;font-size:.75rem;color:var(--ink2);margin:0 0 6px}
.af-of-pill{position:fixed;left:16px;bottom:16px;z-index:80;max-width:calc(100vw - 32px);padding:10px 14px;border-radius:99px;background:var(--surface);color:var(--ink);border:1px solid var(--border);box-shadow:var(--shadow-lg,0 8px 24px rgba(0,0,0,.18));font:600 .8125rem/1.3 var(--font-body,inherit)}
.af-of-pill.ok{border-color:var(--green);color:var(--green)}
.af-of-pill.bad{border-color:var(--red,#b3261e);color:var(--red,#b3261e)}
@media (max-width:760px){.af-of-pill{bottom:76px}.af-of-acts{margin-left:0}.af-of-acts .btn{min-height:44px}}

/* ---- rc-1.css ---- */
/* Round C (plan 2026-10-27) */
/* #6 your own saved comments beside Quick add: a chip with a small remove button */
html body .fb-chips .af-fg-own{display:inline-flex;align-items:stretch;border:1px solid var(--accent);border-radius:999px;overflow:hidden;background:var(--accent-l)}
html body .fb-chips .af-fg-own button{border:0;border-radius:0;background:transparent;color:var(--ink)}
html body .fb-chips .af-fg-own .af-fg-x{min-width:28px;padding:6px 10px 6px 6px;color:var(--ink2);font-size:14px;line-height:1}
html body .fb-chips .af-fg-own .af-fg-x:hover{color:var(--red);background:transparent}
html body .fb-chips .af-fg-add{border-style:dashed}
html body .fb-chips .af-fg-add:disabled{opacity:.55;cursor:not-allowed}
html body .af-fg-hint{font-size:.75rem;color:var(--ink2);text-align:center;padding:0 8px}
@media (max-width:640px){html body .af-fg-hint{visibility:hidden}}
/* #7 scheduled grade release control */
html body .af-rel{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px;font-size:.8125rem;color:var(--ink2)}
html body .af-rel.on{padding:8px 12px;border-radius:12px;background:var(--accent-l);border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);color:var(--ink)}
html body .af-rel.on b{color:var(--ink)}
html body .af-rel.edit{display:grid;grid-template-columns:auto minmax(0,240px);align-items:center;gap:6px 10px;padding:10px 12px;border-radius:12px;border:1px solid var(--border);background:var(--surface)}
html body .af-rel.edit label{font-weight:700;color:var(--ink)}
html body .af-rel.edit small{grid-column:1/-1}
html body .af-rel-acts{display:flex;gap:6px;flex-wrap:wrap}
html body .af-rel.edit .af-rel-acts{grid-column:1/-1}
html body .af-rel-err{color:var(--red)}
html body .af-rel.compact{margin:0}
html body .af-rel-pair{display:inline-flex;flex-wrap:wrap;gap:6px;align-items:center;justify-content:flex-end}
@media (max-width:560px){html body .af-rel.edit{grid-template-columns:1fr}}
:root:not([data-theme="dark"]):not([data-theme="frost"]) body .af-rel-err{color:#b42318}

/* ---- r7-1.css ---- */
/* plan 2026-10-28 */
/* #8 "What do I need?" (student Grades) */
html body .af-goal{margin-top:10px}
html body .af-goal-btn{border:1px solid var(--border);background:var(--surface);color:var(--ink);border-radius:999px;padding:6px 12px;font-weight:600;font-size:.8125rem;cursor:pointer;min-height:32px}
html body .af-goal-btn:hover{border-color:var(--accent);background:var(--accent-l)}
html body .af-goal-panel{margin-top:8px;padding:12px;border:1px solid var(--border);border-radius:14px;background:var(--surface);display:grid;gap:6px;max-width:520px}
html body .af-goal-panel label{font-weight:700;font-size:.8125rem;color:var(--ink)}
html body .af-goal-out{font-size:.875rem;color:var(--ink);min-height:1.4em}
html body .af-goal-big{font:800 1.4rem/1 var(--font-display,inherit);color:var(--ink);margin-right:6px}
html body .af-goal-err{color:var(--red)}
:root:not([data-theme="dark"]):not([data-theme="frost"]) body .af-goal-err{color:#b42318}
html body .af-goal-note{margin:0;font-size:.75rem;color:var(--ink2)}

/* ---- a11y-6.css ---- */
/* AcadFlow accessibility round 6 (audit 2026-10-28). Pairs with a11y-6.js. */

/* U5 the rich-text editor shows where focus is */
div:has(> [role="toolbar"][aria-label="Formatting"]):focus-within { outline: 2px solid #4f46e5; outline-offset: 2px; }
.rich-editor:focus { outline: none; }

/* U2 / U30 keyboard hints in the search box mean nothing on a touch screen */
@media (hover: none), (max-width: 640px) {
  .af6-palette kbd, .af6-palette > div > div:last-child:not([role]) span:has(> kbd) { display: none !important; }
}

/* U6 contrast (WCAG 1.4.3): darker ink on light tints, lighter ink on dark ones */
.text-green-600 { color: #15803d !important; }
div[title] > .truncate { color: #166534; }
:is([data-theme="dark"],[data-theme="frost"]) div[title] > .truncate { color: #86efac; }
[class*="_gFin_"], th[title="Finals exam score"] { color: #6d28d9 !important; }
:is([data-theme="dark"],[data-theme="frost"]) [class*="_gFin_"], :is([data-theme="dark"],[data-theme="frost"]) th[title="Finals exam score"],
:is([data-theme="dark"],[data-theme="frost"]) [class*="_gRes_"], :is([data-theme="dark"],[data-theme="frost"]) input[data-gcell] { color: #c7d2fe !important; }
.sset-rsub { color: #4b4e63; }
:is([data-theme="dark"],[data-theme="frost"]) .sset-rsub, :is([data-theme="dark"],[data-theme="frost"]) .sset-rlabel { color: #c9cfe6; }
[class*="_nolink_"], [class*="_lNone_"] { color: #7a5a14 !important; }
:is([data-theme="dark"],[data-theme="frost"]) [class*="_secChip_"], :is([data-theme="dark"],[data-theme="frost"]) [class*="_lprog_"] em { color: #c7d2fe !important; }
[class*="_lift_"], [class*="_pillFl_"] { color: #6d28d9 !important; }
.r-legendary { color: #7a5a14 !important; }
.r-epic { color: #6d28d9 !important; }
:is([data-theme="dark"],[data-theme="frost"]) .r-rare, :is([data-theme="dark"],[data-theme="frost"]) .r-epic, :is([data-theme="dark"],[data-theme="frost"]) .r-legendary { color: #e9d5ff !important; }
[class*="_ribbon_"] { background: #7a5a14 !important; }
[class*="_modeOn_"] { color: #3730a3 !important; }
:is([data-theme="dark"],[data-theme="frost"]) [class*="_modeOn_"] { color: #e0e7ff !important; }

/* U18 student Grades: "Request regrade" was cut off beside the view switch */
.student-grades .ds-ph-actions { flex-wrap: wrap; row-gap: 8px; }
.student-grades .ds-ph-actions > .btn { white-space: nowrap; flex: 1 0 auto; }

/* U19 the floating Messages button covered the last rows of a page */
@media (min-width: 768px) { body:has(.fm-pill) main#main-content { padding-bottom: 104px; } }

/* U21 targets at least 24 x 24 px (WCAG 2.5.8) */
button[class*="_incBtn_"], button[class*="_udBtn_"] { min-width: 24px; min-height: 24px; }
button.link-btn.text-xs, .epf-slide > button, button[class*="_enr_"], [role="dialog"] .btn-xs, [class*="_liveBar_"] .btn-xs { min-height: 24px; }
input[class*="_scoreSlider_"] { min-height: 24px; }

/* U22 no text under 12 px for reading (avatar initials excepted) */
button.af-cs-tab small, button.af-cs-tab b, .af-cs th, [class*="_tCount_"], [class*="_wsCount_"],
[class*="_liveDot_"], span.af-asg-k, .grade-row .gr-score small, .fb-count { font-size: 12px !important; }
:is([data-theme="dark"],[data-theme="frost"]) [class*="_gMid_"], :is([data-theme="dark"],[data-theme="frost"]) th[title="Midterm exam score"] { color: #fde68a !important; }
:is([data-theme="dark"],[data-theme="frost"]) .text-green-600 { color: #86efac !important; }
:is([data-theme="dark"],[data-theme="frost"]) [class*="_lift_"], :is([data-theme="dark"],[data-theme="frost"]) [class*="_pillFl_"] { color: #ddd6fe !important; }
:is([data-theme="dark"],[data-theme="frost"]) [class*="_nolink_"], :is([data-theme="dark"],[data-theme="frost"]) [class*="_lNone_"] { color: #fcd34d !important; }
:is([data-theme="dark"],[data-theme="frost"]) .sset-rsub { color: #c9cfe6; }

/* ---- next-1.css ---- */
/* Plan "next" (29 Oct 2026). Pairs with gen_next.py. */

/* #6 editor toolbar: Heading and Size sized to their content, inline */
[role="toolbar"][aria-label="Formatting"] > select { width: auto !important; flex: 0 0 auto; max-width: 9.5rem; min-height: 29px; padding-top: 2px; padding-bottom: 2px; }

/* #7 Grade Integrity: the chevron is now the expand button */
.af-gi-tog { background: none; border: 0; padding: 4px; margin: -4px; min-width: 24px; min-height: 24px; display: inline-flex; align-items: center; justify-content: center; color: inherit; border-radius: 6px; cursor: pointer; }
.af-gi-tog:focus-visible { outline: 2px solid #4f46e5; outline-offset: 2px; }

/* #4 Audit Log: ids behind "Details" */
.af-al-d { display: inline; margin-left: 6px; }
.af-al-d > summary { display: inline; cursor: pointer; color: var(--accent, #4f46e5); font-size: 12px; }
.af-al-d[open] > code { display: block; margin-top: 2px; }

/* ---- a11y-7.css ---- */
/* Plan "flows" (29 Oct 2026). Pairs with a11y-7.js and gen_flows.py. */
/* nudges (profile photo, group chat pings) wait while a quiz is open */
body:has(.quiz-focus-overlay) .toast-viewport li.toast-dark { display: none !important; }
/* the focused question heading after Next shows where you are */
[data-af-qhead]:focus-visible { outline: 2px solid #4f46e5; outline-offset: 3px; border-radius: 4px; }
/* chosen answer is not shown by colour alone */
[role="radio"][aria-checked="true"] { box-shadow: inset 0 0 0 1px currentColor; font-weight: 600; }
/* inline link error */
.af7-err { display: block; margin-top: 4px; font-size: 12.5px; color: #b91c1c; }
:is([data-theme="dark"],[data-theme="frost"]) .af7-err { color: #fca5a5; }
input[aria-invalid="true"] { border-color: #dc2626 !important; }
/* phone: "Back to conversations" at least 24 px */
button[aria-label="Back to conversations"] { min-width: 24px; min-height: 24px; }

/* ---- a11y-8.css ---- */
/* Plan "fixes3" (29 Oct 2026). Pairs with a11y-8.js and gen_fixes3.py. */
/* G-13 / H-22 contrast */
.text-green-700 { color: #166534 !important; }
:is([data-theme="dark"],[data-theme="frost"]) .text-green-700 { color: #86efac !important; }
[class*="_you_1rsyj"] { color: #3730a3 !important; }
:is([data-theme="dark"],[data-theme="frost"]) [class*="_you_1rsyj"] { color: #c7d2fe !important; }
[class*="_linkstat_cq1ld"], [class*="_cd_cq1ld"] { color: var(--ink2) !important; }
/* G-11 enrollment board rows stack on a phone */
@media (max-width: 520px) {
  [class^="_row_yaelg_"] { flex-wrap: wrap; }
  [class^="_main_yaelg_"] { flex: 1 1 100%; min-width: 0; }
  [class^="_acts_yaelg_"] { width: 100%; justify-content: flex-end; }
}
/* H-17 the student calendar fits a phone */
.grid-cols-7 { grid-template-columns: repeat(7, minmax(0, 1fr)) !important; }
.grid-cols-7 > * { min-width: 0; }
[data-af8-day]:focus-visible { outline: 2px solid #4f46e5; outline-offset: -2px; border-radius: 6px; }
/* H-21 sidebar pins at least 24 px */
nav[aria-label="Sections"] [class*="_pin_"] { min-width: 24px; min-height: 24px; }
/* G-18 the excuse attachment shows keyboard focus */
label:has(> input.af-file-vh:focus-visible) { outline: 2px solid #4f46e5; outline-offset: 2px; }
/* G-21 attendance card title is its open button */
.af-card-open { background: none; border: 0; padding: 0; margin: 0; font: inherit; color: inherit; text-align: left; cursor: pointer; min-height: 24px; }
.af-card-open:focus-visible { outline: 2px solid #4f46e5; outline-offset: 2px; border-radius: 4px; }
/* the month card sits in a grid: without this, a long event label stretched it past the screen */
.cal2-grid > * { min-width: 0; }
/* Stream composer prompt: enough contrast on its hover background too */
:root:not([data-theme="dark"]):not([data-theme="frost"]) [class*="_compPrompt_"] { color: #50536a !important; }
[data-theme="frost"] [class*="_compPrompt_"] { color: #d6cff0 !important; }

/* ---- next4-1.css ---- */
/* Plan "next4" (30 Oct 2026). Pairs with gen_next4.py. */
.af-past-acts { flex-basis: 100%; order: 99; margin-top: 8px; display: grid; gap: 8px; }
.af-past-row { display: flex; flex-wrap: wrap; gap: 8px; }
.af-past-recap { display: grid; gap: 6px; }
.af-past-recap label { font-size: 12.5px; color: var(--ink2); }
.af-past-recap .btn { justify-self: start; }
.af-past-msg { font-size: 12.5px; color: var(--ink2); margin: 0; min-height: 1em; }
.af-minor { font-size: 12.5px; color: var(--ink2); margin: 6px 0; }

/* ---- next5-1.css ---- */
/* Plan "next5" (30 Oct 2026). Pairs with gen_next5.py. */
.af-pend { display: inline-grid; justify-items: end; font-weight: 700; color: var(--ink2); }
.af-pend small { font-weight: 500; font-size: 11px; color: var(--ink3); }
.af-cs-all { max-height: 240px; overflow: auto; }
/* #5 case-study task ticks: at least 24 px to tap (WCAG 2.5.8) */
button[role="checkbox"][class*="_check_1rsyj"] { width: 24px; height: 24px; min-width: 24px; flex: none; }

/* ---- next6-1.css ---- */
/* plan "next6" (30 Oct 2026) */
/* #16 Journey: an open step that isn't the current one */
.sp-state-tag.s-open{background:var(--surface2);color:var(--ink2)}
.s-open .sp-node-core{background:var(--surface);color:var(--ink2);border-color:var(--border);box-shadow:none}
/* #20 Semester review: Back / Next */
.af-sw-nav{position:absolute;left:0;right:0;bottom:14px;display:flex;justify-content:space-between;align-items:center;padding:0 16px;z-index:3;pointer-events:none}
.af-sw-btn{pointer-events:auto;min-width:76px;min-height:36px;padding:0 14px;border-radius:999px;border:1px solid rgba(255,255,255,.6);background:rgba(0,0,0,.28);color:#fff;font-weight:700;font-size:.8125rem;cursor:pointer}
.af-sw-btn[aria-disabled="true"]{opacity:.4;cursor:default}
.af-sw-btn:focus-visible{outline:3px solid #fff;outline-offset:2px}

/* ---- missing-1.css ---- */
/* plan "missing" (3 Nov 2026): Activities → Missing */
.af-ms-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 12px}
.af-ms-sum{margin:0;font-size:.8125rem;color:var(--ink2);flex:1 1 260px}
.af-ms-seg{margin:0}
.af-ms-q{max-width:260px;min-height:36px}
.af-ms-cards{display:flex;flex-direction:column;gap:12px}
.af-ms-card{border:1px solid var(--border);border-radius:12px;background:var(--surface);padding:12px 14px}
.af-ms-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.af-ms-title{margin:0;font-size:.9375rem;font-weight:700;color:var(--ink)}
.af-ms-acts{display:flex;gap:6px;flex-wrap:wrap}
.af-ms-acts .btn,.af-ms-row .btn{min-height:28px;min-width:44px}
.af-ms-h4{margin:10px 0 4px;font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink3)}
.af-ms-list{list-style:none;margin:0;padding:0}
.af-ms-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 0;border-top:1px solid var(--border)}
.af-ms-row:first-child{border-top:0}
.af-ms-who{display:flex;flex-direction:column;min-width:0}
.af-ms-who b{font-size:.8125rem;color:var(--ink);overflow:hidden;text-overflow:ellipsis}
.af-ms-sub{font-size:.75rem;color:var(--ink2)}
.af-ms-red{color:var(--red-d,#b42318)}
.af-ms-badge{margin-left:6px}
.af-ms-more{margin-top:4px;font-size:.75rem;min-height:24px}
/* the Missing count, now always shown: accent on accent-light fell short of 4.5:1 in the dark and frost themes */
.seg-count-alert{background:var(--accent);color:var(--on-accent,#fff)}

/* ---- gradingreport-1.css ---- */
/* plan "gradingreport" (3 Nov 2026): Grading → Grading Report */
.af-gr-actions{display:flex;gap:8px;flex-wrap:wrap}
.af-gr-note{margin:0 0 12px;font-size:.8125rem;color:var(--ink2);max-width:72ch}
.af-gr-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.af-gr-wrap:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.af-gr-t{width:100%;border-collapse:collapse;font-size:.8125rem;min-width:720px}
.af-gr-t th,.af-gr-t td{text-align:left;vertical-align:top;padding:10px 12px;border-top:1px solid var(--border)}
.af-gr-t thead th{border-top:0;font-size:.6875rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink3);background:var(--surface2)}
.af-gr-t td small{display:block;color:var(--ink3);font-size:.6875rem;margin-top:2px}
.af-gr-cls{display:flex;flex-direction:column;align-items:flex-start;text-align:left;min-height:24px}
.af-gr-cls b{color:var(--ink);font-weight:700}
.af-gr-cls span{color:var(--ink2);font-size:.75rem;font-weight:400}
.af-gr-left{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px;color:var(--ink2)}
.af-gr-left .link-btn{font-weight:600;min-height:24px}
.af-gr-muted{color:var(--ink3)}
.af-gr-pill{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.75rem;font-weight:700;white-space:nowrap}
.af-gr-ok{background:var(--green-l,#dcfce7);color:var(--green-d,#166534)}
.af-gr-mid{background:var(--yellow-l,#fef9c3);color:var(--yellow-d,#854d0e)}
.af-gr-none{background:var(--surface3,#eee);color:var(--ink2)}

/* ---- closesem-1.css ---- */
/* plan "closesem" (3 Nov 2026): Close the semester */
.af-cs1{display:flex;flex-direction:column;gap:14px;max-width:880px}
.af-cs1-card{border:1px solid var(--border);border-radius:12px;background:var(--surface);padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.af-cs1-done{border-color:var(--green,#16a34a)}
.af-cs1-h{margin:0;font-size:.9375rem;font-weight:700;color:var(--ink)}
.af-cs1-p{margin:0;font-size:.8125rem;color:var(--ink2);max-width:72ch}
.af-cs1-list{margin:0;padding-left:18px;font-size:.8125rem;color:var(--ink2);display:flex;flex-direction:column;gap:4px}
.af-cs1-list b{color:var(--ink)}
.af-cs1-row{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end}
.af-cs1-row .form-input{min-width:220px;flex:1 1 220px;max-width:340px}
.af-cs1-f{display:flex;flex-direction:column;gap:4px;font-size:.75rem;font-weight:600;color:var(--ink2)}
.af-cs1-card > .btn{align-self:flex-start}
