@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:var(--font-manrope), "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-serif:var(--font-merriweather), "Merriweather", "Iowan Old Style", "Palatino Linotype", Georgia, serif;--font-mono:var(--font-jetbrains-mono,"JetBrains Mono"), ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--color-red-900:#82181a;--color-indigo-500:#625fff;--color-zinc-950:#09090b;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-8xl:6rem;--text-8xl--line-height:1;--text-9xl:8rem;--text-9xl--line-height:1;--tracking-tighter:-.05em;--leading-tight:1.25;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-brand-blue:#005ab9;--color-brand-blue-active:#003f8a;--color-brand-navy:#001e46;--color-shield-sky:#3cbbf9;--color-shield-gold:#e79d00;--color-shield-red:#d40924;--color-shield-red-deep:#960012;--color-academic-emerald:#11bc6d;--color-academic-teal:#008e82;--color-academic-purple:#9d5bf4;--color-academic-purple-deep:#4d008a;--color-academic-pink:#e942a2;--color-academic-bronze:#643400;--color-surface-base:#f4f7fa;--color-surface-raised:#fff;--color-surface-border:#e8e4e1;--color-text-primary:#0e1624;--color-text-secondary:#333e4d;--color-text-muted:#515f6e;--color-text-faint:#5c6b7a;--ease-spring:cubic-bezier(.16, 1, .3, 1);--duration-fast:.15s}@supports (color:lab(0% 0 0)){:root,:host{--color-red-900:lab(28.5139% 44.5539 29.0463);--color-indigo-500:lab(48.295% 38.3129 -81.9673);--color-zinc-950:lab(2.51107% .242703 -.886115);--color-brand-blue:lab(38.0483% 8.50707 -61.5517);--color-brand-blue-active:lab(26.4542% 10.4455 -54.6449);--color-brand-navy:lab(11.0242% 4.25354 -30.7759);--color-shield-sky:lab(71.0844% -19.8772 -41.5833);--color-shield-gold:lab(70.8089% 22.0394 75.9229);--color-shield-red:lab(45.5382% 69.8881 46.2994);--color-shield-red-deep:lab(30.6229% 63.8219 47.2003);--color-academic-emerald:lab(67.3907% -54.6404 28.2368);--color-academic-teal:lab(52.7219% -41.81 -4.18961);--color-academic-purple:lab(52.2932% 50.4727 -67.8536);--color-academic-purple-deep:lab(20.3432% 53.5335 -61.7302);--color-academic-pink:lab(56.4236% 69.6248 -13.561);--color-academic-bronze:lab(27.453% 27.2059 53.8034);--color-surface-base:lab(97.1082% -.82314 -1.65223);--color-surface-border:lab(90.7093% 1.00517 1.99319);--color-text-primary:lab(7.06747% -.19002 -10.6574);--color-text-secondary:lab(25.6628% -1.74692 -10.706);--color-text-muted:lab(39.6306% -2.81024 -10.4956);--color-text-faint:lab(44.2729% -2.85444 -10.5129)}}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.top-4{top:calc(var(--spacing) * 4)}.right-4{right:calc(var(--spacing) * 4)}.isolate{isolation:isolate}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-4{margin-inline:calc(var(--spacing) * 4)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-1{width:var(--spacing);height:var(--spacing)}.h-5{height:calc(var(--spacing) * 5)}.h-40{height:calc(var(--spacing) * 40)}.h-84{height:calc(var(--spacing) * 84)}.h-120{height:calc(var(--spacing) * 120)}.w-5{width:calc(var(--spacing) * 5)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.shrink{flex-shrink:1}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-ping{animation:var(--animate-ping)}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.items-center{align-items:center}.justify-center{justify-content:center}.gap-4{gap:calc(var(--spacing) * 4)}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-surface-border{border-color:var(--color-surface-border)}.bg-black{background-color:var(--color-black)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-indigo-500{background-color:var(--color-indigo-500)}.bg-surface-base{background-color:var(--color-surface-base)}.bg-surface-raised{background-color:var(--color-surface-raised)}.bg-white{background-color:var(--color-white)}.bg-zinc-950{background-color:var(--color-zinc-950)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.p-6{padding:calc(var(--spacing) * 6)}.py-20{padding-block:calc(var(--spacing) * 20)}.py-24{padding-block:calc(var(--spacing) * 24)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.text-8xl{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}.text-9xl{font-size:var(--text-9xl);line-height:var(--tw-leading,var(--text-9xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-\[1\.1\]{--tw-leading:1.1;line-height:1.1}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.text-wrap{text-wrap:wrap}.tab-1{tab-size:1}.tab-2{tab-size:2}.\!text-red-900{color:var(--color-red-900)!important}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.opacity-50{opacity:.5}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}}@media (min-width:48rem){.md\:flex{display:flex}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}}:root{--ubb-royal-blue:var(--color-brand-blue,#005ab9);--ubb-royal-blue-active:var(--color-brand-blue-active,#003f8a);--ubb-midnight-navy:var(--color-brand-navy,#001e46);--white:var(--color-surface-raised,#fff);--paper:var(--color-surface-base,#f4f7fa);--hairline:var(--color-surface-border,#e8e4e1);--ink-900:var(--color-text-primary,#0e1624);--ink-700:var(--color-text-secondary,#333e4d);--ink-500:var(--color-text-muted,#515f6e);--ink-400:var(--color-text-faint,#5c6b7a);--shield-sky:var(--color-shield-sky,#3cbbf9);--shield-gold:var(--color-shield-gold,#e79d00);--shield-red:var(--color-shield-red,#d40924);--shield-red-deep:var(--color-shield-red-deep,#960012);--academic-emerald:var(--color-academic-emerald,#11bc6d);--academic-teal:var(--color-academic-teal,#008e82);--academic-purple:var(--color-academic-purple,#9d5bf4);--academic-purple-deep:var(--color-academic-purple-deep,#4d008a);--academic-pink:var(--color-academic-pink,#e942a2);--academic-bronze:var(--color-academic-bronze,#643400);--color-primary:var(--ubb-royal-blue);--color-primary-active:var(--ubb-royal-blue-active);--color-secondary:var(--ubb-midnight-navy);--color-on-primary:var(--white);--color-primary-wash:#0055b812;--color-primary-tint:#0055b81a;--canvas:var(--white);--canvas-soft:var(--paper);--surface-card:var(--white);--border-hairline:var(--hairline);--border-control:#64748b;--text-body:var(--ink-900);--text-secondary:var(--ink-700);--text-muted:var(--ink-500);--text-faint:var(--ink-400);--text-on-dark:var(--white);--text-link:var(--color-primary);--font-core:var(--font-manrope,var(--font-sans)), "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-display:var(--font-merriweather,var(--font-serif)), "Merriweather", "Iowan Old Style", Georgia, serif;--font-mono:var(--font-jetbrains-mono,"JetBrains Mono"), ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--num:lining-nums tabular-nums;--space-xxs:4px;--space-xs:8px;--space-sm:12px;--space-md:16px;--space-lg:24px;--space-xl:28px;--space-xxl:32px;--space-3xl:48px;--space-4xl:64px;--container-max:1240px;--container-pad:32px;--header-height:62px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--header-offset:calc(var(--header-height) + var(--safe-top));--radius-xs:4px;--radius-sm:5px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px;--shadow-1:#00000003 0 .175px 1.041px, #00000005 0 .8px 2.925px, #00000007 0 2.025px 7.847px, #0000000a 0 4px 18px;--shadow-2:#00000003 0 .5px 2px, #00000005 0 2px 6px, #00000008 0 6px 18px, #0000000d 0 23px 52px;--shadow-focus:0 0 0 3px #0055b847;--transition-fast:.12s cubic-bezier(.2, 0, 0, 1);--transition-base:.18s cubic-bezier(.2, 0, 0, 1);--transition-slow:.26s cubic-bezier(.2, 0, 0, 1);--course-tone:var(--color-primary)}@supports (color:lab(0% 0 0)){:root{--ubb-royal-blue:var(--color-brand-blue,lab(38.0483% 8.50707 -61.5517));--ubb-royal-blue-active:var(--color-brand-blue-active,lab(26.4542% 10.4455 -54.6449));--ubb-midnight-navy:var(--color-brand-navy,lab(11.0242% 4.25354 -30.7759));--paper:var(--color-surface-base,lab(97.1082% -.82314 -1.65223));--hairline:var(--color-surface-border,lab(90.7093% 1.00517 1.99319));--ink-900:var(--color-text-primary,lab(7.06747% -.19002 -10.6574));--ink-700:var(--color-text-secondary,lab(25.6628% -1.74692 -10.706));--ink-500:var(--color-text-muted,lab(39.6306% -2.81024 -10.4956));--ink-400:var(--color-text-faint,lab(44.2729% -2.85444 -10.5129));--shield-sky:var(--color-shield-sky,lab(71.0844% -19.8772 -41.5833));--shield-gold:var(--color-shield-gold,lab(70.8089% 22.0394 75.9229));--shield-red:var(--color-shield-red,lab(45.5382% 69.8881 46.2994));--shield-red-deep:var(--color-shield-red-deep,lab(30.6229% 63.8219 47.2003));--academic-emerald:var(--color-academic-emerald,lab(67.3907% -54.6404 28.2368));--academic-teal:var(--color-academic-teal,lab(52.7219% -41.81 -4.18961));--academic-purple:var(--color-academic-purple,lab(52.2932% 50.4727 -67.8536));--academic-purple-deep:var(--color-academic-purple-deep,lab(20.3432% 53.5335 -61.7302));--academic-pink:var(--color-academic-pink,lab(56.4236% 69.6248 -13.561));--academic-bronze:var(--color-academic-bronze,lab(27.453% 27.2059 53.8034))}}*,:before,:after{box-sizing:border-box}html{background:var(--canvas-soft);scroll-behavior:smooth}body{background:var(--canvas-soft);min-width:0;min-height:100vh;color:var(--text-body);font-family:var(--font-core);-webkit-font-smoothing:antialiased;font-feature-settings:"lnum" 1;margin:0;font-size:16px;line-height:1.5}h1,h2,h3,h4,h5,h6{color:var(--text-body);text-wrap:balance;margin:0}p{text-wrap:pretty;margin:0}button,input,textarea,select{font:inherit;color:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;background:0 0;border:0}a{color:var(--text-link);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-primary-active)}img{max-width:100%}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-xs);scroll-margin-block:calc(var(--header-height) + var(--space-sm)) calc(var(--mobile-nav-height,0px) + var(--space-sm))}.skip-link{top:var(--space-xs);left:var(--space-xs);z-index:200;border-radius:var(--radius-md);background:var(--color-secondary);color:var(--text-on-dark);transform:translateY(calc(-100% - var(--space-lg)));padding:10px 16px;font-size:15px;font-weight:600;position:fixed}.skip-link:focus{color:var(--text-on-dark);transform:translateY(0)}::selection{background:var(--color-primary-tint)}.eyebrow{color:var(--text-muted);font-size:12px;font-weight:600;line-height:1.33;display:block}.num{font-variant-numeric:var(--num)}.academic-prose{min-width:0;color:var(--text-body);font-family:var(--font-core);overflow-wrap:anywhere;font-size:clamp(.98rem,.95rem + .14vw,1.05rem);line-height:1.75}.academic-prose>:first-child{margin-block-start:0}.academic-prose>:last-child{margin-block-end:0}.academic-prose .academic-prose-error{padding:var(--space-sm) var(--space-md);border:1px solid var(--shield-red-deep)}@supports (color:color-mix(in lab, red, red)){.academic-prose .academic-prose-error{border:1px solid color-mix(in srgb, var(--shield-red-deep) 35%, var(--border-hairline))}}.academic-prose .academic-prose-error{border-radius:var(--radius-md);background:var(--shield-red)}@supports (color:color-mix(in lab, red, red)){.academic-prose .academic-prose-error{background:color-mix(in srgb, var(--shield-red) 7%, var(--surface-card))}}.academic-prose .academic-prose-error{color:var(--shield-red-deep);font-weight:600}.academic-prose :where(h1,h2,h3,h4,h5,h6){color:var(--text-body);font-family:var(--font-display);letter-spacing:-.02em;margin-block:1.65em .55em;font-weight:700;line-height:1.25}.academic-prose :where(h1){font-size:clamp(1.8rem,1.56rem + .8vw,2.35rem)}.academic-prose :where(h2){font-size:clamp(1.5rem,1.34rem + .5vw,1.9rem)}.academic-prose :where(h3){font-size:clamp(1.25rem,1.16rem + .28vw,1.48rem)}.academic-prose :where(h4,h5,h6){font-size:1.08rem}.academic-prose :where(p,ul,ol,dl,blockquote,figure,pre,.academic-table-scroll){margin-block:0 1.15em}.academic-prose :where(li+li){margin-block-start:.35em}.academic-prose :where(dt){font-weight:700}.academic-prose :where(dd){margin-inline-start:1.25em}.academic-prose :where(blockquote){padding:var(--space-sm) var(--space-lg);border-inline-start:3px solid var(--color-primary);background:var(--color-primary-wash);color:var(--text-secondary);margin-inline:0}.academic-prose :where(hr){margin-block:var(--space-xl);border:0;border-block-start:1px solid var(--border-hairline)}.academic-prose :where(a){color:var(--text-link);text-underline-offset:.16em;font-weight:600;text-decoration:underline;text-decoration-thickness:1px}.academic-prose :where(code,kbd,samp,var){font-family:var(--font-mono);font-size:.9em}.academic-prose :where(:not(pre)>code,kbd,samp){border:1px solid var(--border-hairline);border-radius:var(--radius-xs);background:var(--canvas-soft);padding:.14em .36em}.academic-prose :where(pre){max-width:100%;padding:var(--space-md) var(--space-lg);border:1px solid var(--border-hairline);border-radius:var(--radius-md);background:var(--canvas-soft);color:var(--text-body);tab-size:2;line-height:1.6;overflow-x:auto}.academic-prose :where(pre code){color:inherit;white-space:pre;background:0 0;border:0;padding:0;font-size:.9rem}.academic-prose :where(img){block-size:auto;max-inline-size:100%;margin-block:var(--space-lg);border-radius:var(--radius-md);display:block}.academic-prose :where(figure){margin-inline:0}.academic-prose :where(figure img){margin-block-end:var(--space-xs)}.academic-prose :where(figcaption){color:var(--text-muted);text-align:center;font-size:.875rem;line-height:1.5}.academic-prose :where(mark){background:var(--shield-gold);padding-inline:.12em}@supports (color:color-mix(in lab, red, red)){.academic-prose :where(mark){background:color-mix(in srgb, var(--shield-gold) 28%, transparent)}}.academic-prose :where(mark){color:inherit}.academic-prose .academic-table-scroll{overscroll-behavior-inline:contain;border:1px solid var(--border-hairline);border-radius:var(--radius-md);background:var(--surface-card);-webkit-overflow-scrolling:touch;max-inline-size:100%;overflow-x:auto}.academic-prose .academic-table-scroll:focus-visible{outline:2px solid var(--color-primary);outline-offset:3px;box-shadow:var(--shadow-focus)}.academic-prose :where(table){border-collapse:collapse;border-spacing:0;background:var(--surface-card);font-variant-numeric:var(--num);inline-size:100%;min-inline-size:36rem}.academic-prose :where(caption){padding:var(--space-sm) var(--space-md);border-block-end:1px solid var(--border-hairline);color:var(--text-secondary);font-family:var(--font-display);text-align:start;font-weight:700}.academic-prose :where(th,td){padding:.75rem var(--space-md);border-block-end:1px solid var(--border-hairline);text-align:start;vertical-align:top}.academic-prose :where(thead th){background:var(--canvas-soft);color:var(--text-secondary);letter-spacing:.04em;text-transform:uppercase;font-size:.78rem;font-weight:700}.academic-prose :where(tbody tr:last-child>*){border-block-end:0}@media (max-width:600px){.academic-prose{font-size:.98rem;line-height:1.7}.academic-prose :where(table){min-inline-size:32rem}.academic-prose :where(th,td){padding:.68rem var(--space-sm)}}.page-head h1,.section-title h2,.classroom-top h1,.course-card h3,.library-panel h2,.policy-page h1,.access-brand h1,.login-card h2{font-family:var(--font-display);font-feature-settings:"lnum" 1;font-weight:700}.manrope-family{font-family:var(--font-manrope,var(--font-sans)), "Manrope", sans-serif}.merriweather-family{font-family:var(--font-merriweather,var(--font-serif)), "Merriweather", serif;font-weight:600}.lato-family{font-family:var(--font-lato,var(--font-display)), "Lato", sans-serif}.playfair-display-family{font-family:var(--font-playfair,var(--font-serif)), "Playfair Display", serif}.boot-shell{background:var(--canvas-soft);grid-template:"header header""sidebar main"minmax(0,1fr)/268px minmax(0,1fr);min-height:100svh;display:grid}.sk{border-radius:var(--radius-sm);background:var(--hairline);display:block;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.sk{background:color-mix(in srgb, var(--hairline) 62%, var(--canvas))}}.sk{animation:sk-settle .5s cubic-bezier(.16, 1, .3, 1) var(--sk-delay,0s) both}.sk:after{content:"";animation:1.55s cubic-bezier(.45,0,.25,1) infinite sk-sweep;animation-delay:var(--sk-delay,0s);background:linear-gradient(105deg,#0000 32%,#ffffffeb 50%,#0000 68%);position:absolute;inset:0}.sk-round{border-radius:var(--radius-full)}@keyframes sk-settle{0%{opacity:0;transform:translateY(6px)}}@keyframes sk-sweep{0%{transform:translate(-100%)}to{transform:translate(100%)}}.boot-header{min-height:var(--header-height);padding:0 var(--space-md) 0 10px;background:var(--canvas);border-bottom:1px solid var(--border-hairline);grid-area:header;align-items:center;gap:6px;display:flex;position:relative}.boot-header img{flex:none;width:auto;height:32px;margin-left:6px}.boot-header strong{font-family:var(--font-display);letter-spacing:-.015em;white-space:nowrap;flex:none;margin-left:10px;font-size:20px;font-weight:700;line-height:1.1}.boot-menu{flex:none;width:38px;height:38px}.boot-search{border-radius:var(--radius-full);flex:0 320px;min-width:0;height:38px;margin-left:auto}.boot-avatar{width:34px;height:34px;margin-left:var(--space-sm);flex:none}.boot-side{padding:var(--space-md) 10px;background:var(--canvas);border-right:1px solid var(--border-hairline);flex-direction:column;grid-area:sidebar;gap:7px;display:flex}.boot-row{border-radius:var(--radius-md);height:38px}.boot-legend{width:84px;height:11px;margin:var(--space-md) 0 4px 10px}.boot-main{gap:var(--space-lg);min-width:0;padding:var(--space-xl) var(--container-pad) var(--space-4xl);max-width:var(--container-max);flex-direction:column;grid-area:main;width:100%;margin:0 auto;display:flex}.boot-head{flex-direction:column;gap:10px;display:flex}.boot-title{width:min(58%,340px);height:30px}.boot-subtitle{width:min(76%,460px);height:13px}.boot-strip{border-radius:var(--radius-lg);height:74px}.boot-grid{gap:var(--space-lg);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.boot-card{padding:0 0 var(--space-md);background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);animation:sk-settle .5s cubic-bezier(.16, 1, .3, 1) var(--sk-delay,0s) both;flex-direction:column;gap:10px;display:flex;overflow:hidden}.boot-card>.sk{margin:0 var(--space-md);animation:none}.boot-cover{aspect-ratio:16/5;border-radius:0;margin:0!important}.boot-line{height:12px}.boot-line.wide{width:78%;height:17px;margin-top:4px}.boot-line.short{width:42%}@media (prefers-reduced-motion:reduce){.sk:after{display:none}}@media (max-width:1240px){.boot-shell{grid-template-columns:240px minmax(0,1fr)}}@media (max-width:1100px){.boot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:900px){.boot-shell{grid-template-columns:minmax(0,1fr);grid-template-areas:"header""main"}.boot-side,.boot-header strong{display:none}}@media (max-width:800px){.boot-grid{grid-template-columns:minmax(0,1fr)}}@media (max-width:520px){.boot-main{padding:var(--space-md) var(--space-md) var(--space-xxl)}.boot-search{border-radius:var(--radius-md);flex:0 0 38px}}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width:767px){:root{--safe-bottom:max(env(safe-area-inset-bottom,0px), 24px)}}.access-page{background:var(--canvas-soft);min-height:100svh;color:var(--text-body);grid-template-columns:1.05fr 1fr;display:grid}.access-brand{padding:calc(clamp(2rem, 4.5vw, 4.5rem) + var(--safe-top)) clamp(2rem, 4.5vw, 4.5rem) clamp(2rem, 4.5vw, 4.5rem);background:radial-gradient(120% 85% at 6% -8%, #38bdf847, transparent 58%), linear-gradient(158deg, #063d78, var(--ubb-midnight-navy) 55%, #001b3c);color:#eaf4fb;align-content:center;justify-items:center;display:grid;position:relative;overflow:hidden}.access-brand:before{content:"";filter:grayscale()brightness(1.75);opacity:.055;pointer-events:none;background:url(/brand/ubb-shield.webp) 72% 44%/cover no-repeat;position:absolute;inset:0;transform:scale(1.16)}.access-brand:after{content:"";background:linear-gradient(180deg, var(--ubb-royal-blue) 0 40%, var(--shield-sky) 40% 64%, var(--shield-gold) 64% 84%, var(--shield-red) 84%);width:.32rem;position:absolute;inset:0 0 0 auto}.access-brand-lockup{align-items:center;gap:clamp(1.1rem,2.5vw,2.5rem);max-width:min(100%,52rem);animation:.5s cubic-bezier(.16,1,.3,1) both access-rise;display:flex;position:relative}.access-brand-lockup>img{flex:none;width:clamp(4.5rem,9vw,10rem);height:auto}.access-brand h1{color:#eaf4fb;letter-spacing:-.035em;min-width:0;margin:0;font-size:clamp(2rem,4.6vw,6rem);font-weight:600;line-height:.98}.access-brand h1 strong{letter-spacing:-.04em;white-space:nowrap;font-weight:700;display:block}.access-panel{padding:clamp(2rem, 5vw, 4rem) clamp(1.3rem, 4vw, 3rem) calc(clamp(2rem, 5vw, 4rem) + var(--safe-bottom));background:var(--canvas-soft);align-content:center;justify-items:center;display:grid;position:relative}.access-panel-inner{gap:1.75rem;width:min(100%,26rem);animation:.5s cubic-bezier(.16,1,.3,1) 80ms both access-rise;display:grid}@keyframes access-rise{0%{opacity:0;transform:translateY(12px)}}.login-card{gap:1.35rem;display:grid}.login-rule{background:linear-gradient(90deg, var(--ubb-royal-blue) 0 40%, var(--shield-sky) 40% 64%, var(--shield-gold) 64% 84%, var(--shield-red) 84%);border-radius:999px;width:4.75rem;height:3px}.login-card h2{letter-spacing:-.032em;text-wrap:balance;margin:0;font-size:clamp(1.8rem,3.1vw,2.45rem);line-height:1.06}.google-button{border:1px solid var(--border-control);border-radius:var(--radius-md);background:var(--surface-card);width:100%;min-height:3.4rem;color:var(--text-body);cursor:pointer;box-shadow:var(--shadow-1);transition:border-color var(--transition-base), box-shadow var(--transition-base), transform var(--transition-fast);justify-content:center;align-items:center;gap:.8rem;font-size:1rem;font-weight:600;display:flex}.google-button img{object-fit:contain;width:1.4rem;height:1.4rem}.google-button:hover:not(:disabled){border-color:var(--color-primary);box-shadow:var(--shadow-2);transform:translateY(-1px)}.google-button:active:not(:disabled){box-shadow:var(--shadow-1);transform:translateY(0)scale(.99)}.google-button:disabled{cursor:progress;color:var(--text-muted);box-shadow:none}.google-spinner{border:2px solid var(--hairline);border-top-color:var(--color-primary);border-radius:50%;flex:none;width:1.15rem;height:1.15rem;animation:.7s linear infinite spin}.institution-note{border-top:1px solid var(--border-hairline);color:var(--text-secondary);margin:0;padding-top:1.05rem;font-size:.82rem;line-height:1.6}.institution-note strong{color:var(--color-secondary)}.store-block{border-top:1px solid var(--border-hairline);padding-top:1.25rem}.store-badges{justify-content:center;align-items:center;gap:.6rem;display:flex}.store-badge{cursor:default;width:auto;height:2.45rem;display:inline-flex}.store-badge img{object-fit:contain;filter:grayscale()contrast(.9);opacity:.78;border-radius:.45rem;width:auto;height:2.45rem;display:block}.form-error{color:var(--shield-red-deep);border-radius:var(--radius-md);background:#fdeae8;border:1px solid #f6cdc9;margin:0;padding:.72rem .9rem;font-size:.82rem;line-height:1.4}.legal-note{color:var(--text-muted);text-align:center;text-wrap:balance;margin:0;font-size:.76rem;line-height:1.55}.legal-note a{color:var(--color-primary);text-underline-offset:2px;font-weight:600;text-decoration:underline}.site-footer{width:100%;margin-top:var(--space-3xl);padding-top:var(--space-xl);padding-bottom:var(--space-2xl);border-top:1px solid var(--border-hairline);color:var(--text-muted)}.site-footer-inner{align-items:center;gap:var(--space-sm);text-align:center;flex-direction:column;display:flex}.site-footer-nav{justify-content:center;gap:var(--space-md);flex-wrap:wrap;font-size:.875rem;font-weight:500;display:flex}.site-footer-nav a{color:var(--text-muted);transition:color var(--transition-fast);text-decoration:none}.site-footer-nav a:hover{color:var(--color-primary);text-underline-offset:2px;text-decoration:underline}.site-footer-note{color:var(--text-faint);text-wrap:balance;max-width:640px;margin:0;font-size:.78rem;line-height:1.55}.policy-page{max-width:760px;padding:var(--space-3xl) var(--container-pad) var(--space-4xl);gap:var(--space-lg);flex-direction:column;margin:0 auto;display:flex}.policy-head{justify-content:space-between;align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.policy-back{align-items:center;gap:var(--space-xs);border:1px solid var(--border-hairline);border-radius:var(--radius-md);background:var(--surface-card);color:var(--text-body);white-space:nowrap;transition:background var(--transition-fast), border-color var(--transition-fast);padding:8px 14px;font-size:15px;font-weight:500;line-height:1.33;display:inline-flex}.policy-back:hover{background:var(--canvas-soft);border-color:var(--text-faint)}.policy-back svg{transition:transform var(--transition-fast);flex:none}.policy-back:hover svg{transform:translate(-2px)}@media (pointer:coarse){.policy-back{min-height:44px}}@media (max-width:767px){.policy-head .app-brand strong{display:block}}.policy-page article{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-xl);padding:var(--space-xxl);gap:var(--space-md);flex-direction:column;display:flex}.policy-page .privacy-date{color:var(--text-muted);margin-bottom:-4px;font-size:13px}.policy-page h1{letter-spacing:-1px;font-size:40px;font-weight:700;line-height:1.1}.policy-page h2{letter-spacing:-.125px;margin-top:var(--space-xs);font-size:20px;font-weight:600;line-height:1.4}.policy-page p{color:var(--text-secondary);font-size:16px;line-height:1.5}.policy-page h3{color:var(--text-body);margin-top:var(--space-xs);font-size:16px;font-weight:600;line-height:1.4}.policy-page p a,.policy-page nav a,.policy-page li a,.policy-page dd a{text-decoration:underline}.policy-page nav{color:var(--text-muted);font-size:14px}.policy-page ul{gap:var(--space-xs);padding-left:var(--space-lg);color:var(--text-secondary);flex-direction:column;margin:0;font-size:16px;line-height:1.5;display:flex}.policy-page li::marker{color:var(--text-faint)}.policy-page dl{gap:var(--space-sm) var(--space-lg);padding:var(--space-md) 0 0;border-top:1px solid var(--border-hairline);grid-template-columns:minmax(11rem,15rem) 1fr;margin:0;font-size:16px;line-height:1.5;display:grid}.policy-page dt{color:var(--text-body);font-weight:600}.policy-page dd{color:var(--text-secondary);margin:0}.policy-page .policy-index{gap:var(--space-xxs);padding-left:0;font-size:15px;list-style:none}.policy-page .policy-index a{color:var(--text-secondary);text-decoration:none}.policy-page .policy-index a:hover{color:var(--text-link);text-decoration:underline}.policy-page code{overflow-wrap:anywhere;white-space:normal}@media (max-width:600px){.policy-page dl{gap:var(--space-xxs) 0;grid-template-columns:1fr}.policy-page dd{margin-bottom:var(--space-xs)}}.app-shell{--rail-width:268px;grid-template-columns:var(--rail-width) minmax(0, 1fr);min-height:100vh;transition:grid-template-columns var(--transition-base);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"header header""sidebar main";display:grid}.app-shell[data-sidebar=closed]{--rail-width:0px}.app-shell[data-sidebar=closed] .app-sidebar{opacity:0;pointer-events:none;transform:translate(-100%)}.app-header{z-index:40;min-height:var(--header-offset);padding:var(--safe-top) var(--space-md) 0 10px;background:var(--canvas);color:var(--text-body);border-bottom:1px solid var(--border-hairline);grid-area:header;align-items:center;gap:6px;display:flex;position:sticky;top:0}@media (min-width:768px){@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.app-header{background:var(--white)}@supports (color:color-mix(in lab, red, red)){.app-header{background:color-mix(in srgb, var(--white) 78%, transparent)}}.app-header{-webkit-backdrop-filter:saturate(180%)blur(16px);backdrop-filter:saturate(180%)blur(16px)}}}.icon-button{border-radius:var(--radius-md);width:38px;height:38px;color:var(--text-secondary);transition:background var(--transition-fast), color var(--transition-fast);flex:0 0 38px;place-items:center;display:inline-grid}.icon-button:hover:not(:disabled){background:var(--canvas-soft);color:var(--text-body)}.icon-button:disabled{opacity:.42;cursor:not-allowed}.app-brand{text-align:left;border-radius:var(--radius-md);min-width:0;transition:background var(--transition-fast);flex:none;align-items:center;gap:10px;padding:6px 10px 6px 6px;display:flex}.app-brand:hover{background:var(--canvas-soft)}.app-brand img{flex:none;width:auto;height:32px}.app-brand strong{font-family:var(--font-display);letter-spacing:-.015em;color:var(--text-body);white-space:nowrap;font-size:20px;font-weight:700;line-height:1.1}.header-context{align-items:center;gap:var(--space-xs);min-width:0;padding-right:var(--space-md);flex:auto;font-size:14.5px;display:flex}.header-context-sep{color:var(--text-faint);flex:none;font-size:20px;font-weight:300}.header-context-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-secondary);font-weight:600;overflow:hidden}.header-search{align-items:center;gap:var(--space-xs);border:1px solid var(--border-hairline);border-radius:var(--radius-full);background:var(--canvas-soft);min-width:0;height:38px;color:var(--text-muted);text-align:left;transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);flex:0 320px;padding:0 8px 0 12px;font-size:14.5px;display:flex}.header-search:hover{background:var(--canvas);border-color:var(--text-faint);color:var(--text-body)}.header-search>span{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.header-search kbd,.palette-field kbd{border:1px solid var(--border-hairline);border-radius:var(--radius-xs);background:var(--canvas);font-family:var(--font-core);color:var(--text-faint);border-bottom-width:2px;flex:none;padding:2px 6px;font-size:12px;font-weight:600;line-height:1.33}.header-actions{align-items:center;gap:var(--space-xxs);flex:none;display:flex}.header-notifications{border-radius:var(--radius-full);width:40px;height:40px;color:var(--text-secondary);transition:background var(--transition-fast), color var(--transition-fast);flex:0 0 40px;place-items:center;display:inline-grid;position:relative}.header-notifications:hover{background:var(--color-primary-wash);color:var(--color-primary)}.header-notification-count{border:2px solid var(--canvas);border-radius:var(--radius-full);background:var(--color-primary);min-width:18px;height:18px;color:var(--color-on-primary);place-items:center;padding:0 4px;font-size:10px;font-weight:700;line-height:1;display:inline-grid;position:absolute;top:0;right:-2px}.palette[open]{flex-direction:column;display:flex}.palette{width:min(560px, calc(100vw - 2 * var(--space-md)));border:1px solid var(--border-hairline);border-radius:var(--radius-xl);background:var(--surface-card);max-height:min(62vh,520px);color:var(--text-body);box-shadow:var(--shadow-2);margin:12vh auto auto;padding:0;animation:.24s cubic-bezier(.16,1,.3,1) palette-in;overflow:hidden}.palette::backdrop{background:#0f172a73;animation:.2s ease-out palette-veil}@media (min-width:768px){.palette::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0f172a4d}}@keyframes palette-in{0%{opacity:0;filter:blur(6px);transform:translateY(-10px)scale(.975)}}@keyframes palette-veil{0%{opacity:0}}.palette-field{min-height:54px;padding:0 var(--space-md);border-bottom:1px solid var(--border-hairline);color:var(--text-muted);flex:none;align-items:center;gap:10px;display:flex}.palette-field input{min-width:0;color:var(--text-body);caret-color:var(--color-primary);background:0 0;border:0;outline:0;flex:auto;font-size:16px}.palette-field input::placeholder{color:var(--text-faint)}.palette-list{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--hairline) transparent;flex:auto;min-height:0;padding:6px;overflow-y:auto}.palette-list::-webkit-scrollbar{width:10px}.palette-list::-webkit-scrollbar-thumb{border-radius:var(--radius-full);background:var(--hairline);background-clip:content-box;border:3px solid #0000}.palette-group{letter-spacing:.6px;text-transform:uppercase;color:var(--text-faint);padding:12px 10px 4px;font-size:12px;font-weight:600}.palette-item{border-radius:var(--radius-md);text-align:left;width:100%;min-height:42px;color:var(--text-secondary);align-items:center;gap:10px;padding:6px 10px;font-size:15px;display:flex}.palette-item[data-active=true]{background:var(--color-primary-wash);color:var(--color-primary);font-weight:600}.palette-icon{width:26px;color:var(--course-tone,var(--text-muted));flex:0 0 26px;place-items:center;display:inline-grid}.palette-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.palette-item small{font-family:var(--font-mono);color:var(--text-faint);flex:none;margin-left:auto;font-size:12px;font-weight:400}.palette-empty{padding:var(--space-lg) var(--space-md);color:var(--text-muted);font-size:15px;line-height:1.5}.palette-empty strong{color:var(--text-body);font-weight:600}.app-sidebar{top:var(--header-offset);width:268px;height:calc(100dvh - var(--header-offset));overscroll-behavior:contain;align-self:start;gap:var(--space-lg);padding:var(--space-sm) 10px var(--space-md);background:var(--canvas);border-right:1px solid var(--border-hairline);transition:transform var(--transition-base), opacity var(--transition-fast);scrollbar-width:thin;scrollbar-color:var(--hairline) transparent;flex-direction:column;grid-area:sidebar;display:flex;position:sticky;overflow:hidden auto}.app-sidebar::-webkit-scrollbar{width:10px}.app-sidebar::-webkit-scrollbar-thumb{border-radius:var(--radius-full);background:var(--hairline);background-clip:content-box;border:3px solid #0000}.side-nav,.side-group{flex-direction:column;gap:1px;display:flex}.side-group>.side-group-title,.side-group>.eyebrow{letter-spacing:.6px;color:var(--text-faint);margin-top:2px;padding:0 10px 6px;font-size:12px}.side-item{border-radius:var(--radius-md);text-align:left;width:100%;min-height:40px;color:var(--text-secondary);transition:background var(--transition-fast), color var(--transition-fast);align-items:center;gap:10px;padding:5px 10px;font-size:14.5px;display:flex;position:relative}.side-item:hover{background:var(--canvas-soft);color:var(--text-body)}.side-item:hover .side-icon{color:var(--text-body)}.side-item.active{background:var(--color-primary-wash);color:var(--color-primary);font-weight:600}.side-group .side-item.active{font-weight:inherit}.side-item.active:before{content:"";background:var(--color-primary);border-radius:0 2px 2px 0;width:3px;position:absolute;top:6px;bottom:6px;left:-10px}.side-icon{border-radius:var(--radius-sm);width:26px;height:26px;color:var(--text-muted);transition:background var(--transition-fast), color var(--transition-fast);flex:0 0 26px;place-items:center;display:inline-grid}.side-item.active .side-icon{color:var(--color-primary)}.side-icon.tone{box-shadow:none;color:var(--course-tone);background:0 0}.side-label{flex-direction:column;min-width:0;line-height:1.3;display:flex}.side-label small{font-family:var(--font-mono);letter-spacing:.2px;color:var(--text-faint);font-size:12px;font-weight:400}.side-name{-webkit-line-clamp:2;line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.side-empty{color:var(--text-faint);padding:2px 10px 4px;font-size:14px;line-height:1.43}.side-foot-group{gap:var(--space-xs);flex-direction:column;margin-top:auto;display:flex}.side-foot{border:1px solid var(--border-hairline);background:var(--canvas-soft);min-height:42px;color:var(--text-body);font-weight:500}.side-foot:hover{color:var(--text-body);background:var(--hairline)}.sidebar-scrim{display:none}.app-main{background:var(--canvas-soft);grid-area:main;min-width:0}.account-menu{position:relative}.account-menu summary{align-items:center;gap:var(--space-xs);border-radius:var(--radius-full);cursor:pointer;transition:background var(--transition-fast);padding:4px 8px 4px 4px;list-style:none;display:flex}.account-menu summary:hover{background:var(--canvas-soft)}.account-menu summary::-webkit-details-marker{display:none}.account-menu[open] summary{background:var(--canvas-soft);box-shadow:inset 0 0 0 1px var(--border-hairline)}.account-caret{color:var(--text-faint);transition:transform var(--transition-fast), color var(--transition-fast);flex:none}.account-menu[open] .account-caret{color:var(--text-secondary);transform:rotate(180deg)}.avatar{background:var(--color-primary-tint);width:32px;height:32px;color:var(--color-primary);border-radius:50%;flex:0 0 32px;place-items:center;font-size:13px;font-weight:600;display:inline-grid;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.app-header .avatar{box-shadow:0 0 0 1px var(--border-hairline)}.account-copy{text-align:left;flex-direction:column;line-height:1.25;display:flex}.account-copy strong{color:var(--text-body);font-size:14px;font-weight:600}.account-copy small{color:var(--text-muted);font-size:12px}.account-popover{min-width:248px;padding:var(--space-md);background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);box-shadow:var(--shadow-2);z-index:50;flex-direction:column;gap:2px;display:flex;position:absolute;top:calc(100% + 8px);right:0}.account-popover strong{color:var(--text-body);font-size:15px;font-weight:600}.account-popover span{color:var(--text-muted);word-break:break-all;font-size:13px}.account-popover button{margin-top:var(--space-sm);align-items:center;gap:var(--space-xs);border:1px solid var(--border-hairline);border-radius:var(--radius-md);min-height:34px;color:var(--text-body);transition:background var(--transition-fast);padding:4px 14px;font-size:15px;display:inline-flex}.account-popover button:hover{background:var(--canvas-soft)}.portal-main{width:100%;max-width:var(--container-max);padding:var(--space-xl) var(--container-pad) var(--space-4xl);gap:var(--space-lg);flex-direction:column;margin:0 auto;display:flex}.portal-main>section>.page-head{margin-bottom:var(--space-lg)}.math{font-family:var(--font-core)}.math mi,.math mn,.math mo{font-style:normal}.page-head{justify-content:space-between;align-items:flex-end;gap:var(--space-md);padding-bottom:var(--space-md);border-bottom:1px solid var(--border-hairline);flex-wrap:wrap;display:flex}.page-head>div{flex-direction:column;gap:6px;display:flex}.page-head h1{letter-spacing:-.02em;text-wrap:balance;font-size:clamp(28px,3.2vw,38px);line-height:1.1}.page-head p{color:var(--text-muted);font-variant-numeric:var(--num);font-size:15px;line-height:1.45}.page-head.lead{gap:var(--space-sm);padding-bottom:var(--space-lg);display:grid}.page-head.lead h1{letter-spacing:-.03em;font-size:clamp(38px,5.4vw,64px);line-height:1}.page-head.lead p{flex-wrap:wrap;gap:4px 10px;max-width:76ch;display:flex}.page-head.lead p b{color:var(--text-secondary);font-weight:600}.next-strip{align-items:center;gap:var(--space-md);background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-md);box-shadow:var(--shadow-1);grid-template-columns:auto minmax(0,1fr) auto;padding:12px 16px 12px 12px;display:grid}.next-strip-date{border-radius:var(--radius-sm);background:var(--course-tone);align-content:center;justify-items:center;gap:1px;min-width:62px;padding:8px 10px 9px;display:grid}@supports (color:color-mix(in lab, red, red)){.next-strip-date{background:color-mix(in srgb, var(--course-tone) 12%, #fff)}}.next-strip-day{font-family:var(--font-display);letter-spacing:-.02em;color:var(--text-body);font-variant-numeric:var(--num);font-size:30px;font-weight:700;line-height:1}.next-strip-month{letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary);font-size:12px;font-weight:600}.next-strip-body{gap:2px;min-width:0;display:grid}.next-strip-line{color:var(--text-secondary);font-size:15px}.next-strip-line strong{color:var(--text-body);font-size:16px;font-weight:600}.next-strip-detail{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.next-strip-end{align-items:center;gap:var(--space-sm);display:flex}.next-strip-count{color:var(--text-secondary);font-variant-numeric:var(--num);white-space:nowrap;font-size:13px;font-weight:600}.next-strip-action,.course-action{border-radius:var(--radius-md);min-height:44px;color:var(--color-primary);white-space:nowrap;transition:background var(--transition-fast);align-items:center;gap:6px;padding:4px 10px;font-size:14px;font-weight:600;display:inline-flex}.next-strip-action:hover{background:var(--color-primary-wash)}.section-title{justify-content:space-between;align-items:baseline;gap:var(--space-md);margin-top:var(--space-xs);display:flex}.section-title h2{align-items:center;gap:var(--space-xs);letter-spacing:-.015em;font-size:23px;line-height:1.25;display:flex}.section-title h2 svg{color:var(--color-primary);flex:none}.section-title a{align-items:center;gap:6px;font-size:14px;font-weight:500;display:inline-flex}.section-title a:hover{text-underline-offset:3px;text-decoration:underline}.compact-title{margin-top:0}.compact-title h2{letter-spacing:-.01em;font-size:20px;line-height:1.3}.course-grid{gap:var(--space-lg);grid-template-columns:repeat(auto-fill,minmax(304px,1fr));align-items:stretch;display:grid}.course-card{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);transition:box-shadow var(--transition-base), border-color var(--transition-base);flex-direction:column;display:flex;position:relative;overflow:hidden}.course-card:hover{box-shadow:var(--shadow-1);border-color:var(--course-tone)}@supports (color:color-mix(in lab, red, red)){.course-card:hover{border-color:color-mix(in srgb, var(--course-tone) 34%, var(--hairline))}}.course-card:focus-within{border-color:var(--color-primary)}.course-thumb{aspect-ratio:16/5;background:var(--course-tone);min-height:96px}@supports (color:color-mix(in lab, red, red)){.course-thumb{background:color-mix(in srgb, var(--course-tone) 13%, white)}}.course-thumb{border-bottom:1px solid var(--border-hairline)}.course-body{flex-direction:column;flex:1;gap:6px;padding:14px 20px 16px;display:flex}.course-head{justify-content:space-between;align-items:center;gap:var(--space-sm);min-height:22px;display:flex}.course-code{font-family:var(--font-mono);font-variant-numeric:var(--num);letter-spacing:.4px;color:var(--text-faint);font-size:12px}.course-head .fresh{border-radius:var(--radius-full);color:#92400e;letter-spacing:.2px;white-space:nowrap;background:#f59e0b29;padding:3px 9px;font-size:12px;font-weight:600}.course-card h3{letter-spacing:-.01em;text-wrap:balance;font-size:21px;line-height:1.2}.course-body>p{color:var(--text-muted);font-size:13.5px}.course-meta{border-top:1px solid var(--border-hairline);flex-direction:column;gap:3px;margin-top:auto;padding-top:12px;display:flex}.course-meta span,.course-meta time{color:var(--text-muted);font-variant-numeric:var(--num);font-size:13.5px}.course-meta time{color:var(--text-secondary);font-weight:500}.course-action{border-radius:var(--radius-md);color:var(--color-primary);transition:background var(--transition-fast);align-self:flex-start;margin:10px 0 -2px -10px;padding:4px 10px;font-size:15px;font-weight:600}.course-action:hover{background:var(--color-primary-wash)}.course-action svg{transition:transform var(--transition-fast)}.course-card:hover .course-action svg{transform:translate(3px)}.course-empty-state{margin-bottom:var(--space-lg)}.archived-courses{margin-top:var(--space-xl);background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);overflow:hidden}.archived-courses>summary{justify-content:space-between;align-items:center;gap:var(--space-md);cursor:pointer;min-height:56px;color:var(--text-secondary);font-family:var(--font-core);padding:12px 18px;list-style-position:inside;display:flex}.archived-courses>summary span{align-items:center;gap:var(--space-xs);display:inline-flex}.archived-courses>summary svg,.archived-courses>summary small{color:var(--text-muted)}.archived-course-list{border-top:1px solid var(--border-hairline)}.archived-course-row{align-items:center;gap:var(--space-md);border-bottom:1px solid var(--border-hairline);grid-template-columns:4px minmax(0,1fr) auto;min-height:68px;padding:10px 18px;display:grid}.archived-course-tone{background:var(--course-tone);border-radius:var(--radius-full);opacity:.65;align-self:stretch;width:4px;min-height:38px}.archived-course-row div{flex-direction:column;gap:2px;min-width:0;display:flex}.archived-course-row div>strong{color:var(--text-body);font-size:15px}.archived-course-row small{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.archived-course-row button{border-radius:var(--radius-md);min-height:44px;color:var(--color-primary);align-items:center;gap:6px;padding:6px 10px;font-size:14px;font-weight:600;display:inline-flex}.archived-course-row button:hover{background:var(--color-primary-wash)}.archived-load-more{margin:var(--space-md) 18px}.panel-navy{background:radial-gradient(120% 130% at 88% -30%, #38bdf838, transparent 58%), linear-gradient(158deg, #063d78, var(--color-secondary) 58%, #001b3c);color:var(--text-on-dark);border-radius:var(--radius-lg);position:relative;overflow:hidden}.panel-navy:before{content:"";background:var(--course-tone);z-index:1;inset-inline:0;height:3px;position:absolute;top:0}.panel-navy h1,.panel-navy h2,.panel-navy h3{color:var(--text-on-dark)}.panel-navy p{color:#e6f3ffeb}.panel-navy .eyebrow{color:var(--shield-sky)}.primary-button,.secondary-button{justify-content:center;align-items:center;gap:var(--space-xs);border-radius:var(--radius-full);min-height:44px;transition:background var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast);padding:10px 22px;font-size:16px;font-weight:500;display:inline-flex}.primary-button{background:var(--color-primary);color:var(--color-on-primary);border:1px solid #0000}.primary-button:hover{background:var(--color-primary-active)}.secondary-button{background:var(--surface-card);color:var(--text-body);border:1px solid var(--border-hairline);box-shadow:var(--shadow-1)}.secondary-button:hover{background:var(--canvas-soft)}.primary-button:active,.secondary-button:active{transform:scale(.985)}.primary-button:disabled,.secondary-button:disabled{opacity:.4;cursor:not-allowed}.classroom-layout{width:100%;max-width:var(--container-max);padding:var(--space-xl) var(--container-pad) var(--space-4xl);margin:0 auto}.classroom-archive-notice{align-items:flex-start;gap:var(--space-sm);margin-bottom:var(--space-md);background:var(--shield-gold);padding:12px 16px;display:flex}@supports (color:color-mix(in lab, red, red)){.classroom-archive-notice{background:color-mix(in srgb, var(--shield-gold) 10%, white)}}.classroom-archive-notice{border:1px solid var(--shield-gold)}@supports (color:color-mix(in lab, red, red)){.classroom-archive-notice{border:1px solid color-mix(in srgb, var(--shield-gold) 36%, var(--hairline))}}.classroom-archive-notice{border-radius:var(--radius-md);color:var(--text-secondary);font-size:14px;line-height:1.5}.classroom-archive-notice svg{color:var(--academic-bronze);flex:none;margin-top:1px}.classroom-archive-notice strong{color:var(--text-body)}.course-tabs{scrollbar-width:none;border-bottom:1px solid var(--border-hairline);gap:2px;display:flex;overflow-x:auto}.course-tabs::-webkit-scrollbar{display:none}.course-tabs button,.course-tabs span{min-height:46px;color:var(--text-secondary);white-space:nowrap;transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);border-bottom:3px solid #0000;align-items:center;gap:8px;margin-bottom:-1px;padding:8px 16px;font-size:15px;display:inline-flex}.course-tabs button svg,.course-tabs span svg{color:var(--text-faint);transition:color var(--transition-fast)}.course-tabs button:hover{background:var(--canvas-soft);color:var(--text-body)}.course-tabs button:hover svg{color:var(--text-secondary)}.course-tabs button.active,.course-tabs span.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:600}.course-tabs button.active svg,.course-tabs span.active svg{color:var(--color-primary)}.breadcrumb button{font:inherit;color:var(--text-muted);text-underline-offset:2px;text-decoration:underline}.breadcrumb button:hover{color:var(--color-primary)}.classroom-main,.classroom-main>div{gap:var(--space-xl);flex-direction:column;min-width:0;display:flex}.classroom-top{justify-content:space-between;align-items:flex-end;gap:var(--space-md);min-height:34px;display:flex}.classroom-top>div{flex-direction:column;gap:6px;min-width:0;display:flex}.classroom-top h1{letter-spacing:-.02em;text-wrap:balance;font-size:clamp(28px,3.2vw,40px);line-height:1.08}.classroom-meta{align-items:center;gap:var(--space-xs);flex-wrap:wrap;justify-content:flex-end;display:flex}.course-reference{border:1px solid var(--border-hairline);border-radius:var(--radius-md);min-height:44px;color:var(--text-faint);font-family:var(--font-mono);font-variant-numeric:var(--num);transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);align-items:center;gap:5px;padding:4px 8px;font-size:12px;display:inline-flex}.course-reference:hover{background:var(--canvas-soft);border-color:var(--color-primary);color:var(--color-primary)}.breadcrumb{color:var(--text-muted);font-size:13px}.classroom-columns{gap:var(--space-lg);grid-template-columns:minmax(0,2fr) minmax(0,1fr);align-items:start;display:grid}.classroom-columns>section{gap:var(--space-md);flex-direction:column;display:flex}.live-class-section{gap:var(--space-sm);flex-direction:column;display:flex}.live-class-banner{align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);background:var(--surface-card);border:1px solid var(--course-tone);grid-template-columns:auto minmax(0,1fr) auto;display:grid;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.live-class-banner{border:1px solid color-mix(in srgb, var(--course-tone) 34%, var(--border-hairline))}}.live-class-banner{border-radius:var(--radius-xl);box-shadow:var(--shadow-1)}.live-class-banner:before{content:"";background:var(--course-tone);width:4px;position:absolute;inset:0 auto 0 0}.live-class-icon{border-radius:var(--radius-lg);background:var(--course-tone);place-items:center;width:44px;height:44px;display:inline-grid}@supports (color:color-mix(in lab, red, red)){.live-class-icon{background:color-mix(in srgb, var(--course-tone) 13%, var(--surface-card))}}.live-class-icon{color:var(--course-tone)}@supports (color:color-mix(in lab, red, red)){.live-class-icon{color:color-mix(in srgb, var(--course-tone) 46%, var(--text-body))}}.live-class-copy{flex-direction:column;gap:2px;min-width:0;display:flex}.live-class-copy>span{color:var(--text-muted);letter-spacing:.125px;text-transform:uppercase;font-size:12px;font-weight:600}.live-class-copy strong{font-family:var(--font-display);letter-spacing:-.01em;text-wrap:balance;font-size:21px;line-height:1.25}.live-class-copy small{color:var(--text-muted);text-wrap:pretty;font-size:13px;line-height:1.4}.live-class-join{white-space:nowrap;min-height:44px}.live-class-editor{align-items:center;gap:var(--space-sm) var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);grid-template-columns:minmax(210px,.7fr) minmax(280px,1fr) auto;display:grid}.live-class-editor-copy{align-items:center;gap:var(--space-sm);min-height:44px;display:flex}.live-class-editor-copy>div{flex-direction:column;gap:2px;min-width:0;display:flex}.live-class-editor-copy strong{font-size:14px;font-weight:600}.live-class-editor-copy small{color:var(--text-muted);text-wrap:pretty;font-size:12px;line-height:1.35}.live-class-editor-icon{border-radius:var(--radius-md);background:var(--canvas-soft);width:36px;height:36px;color:var(--text-secondary);flex:0 0 36px;place-items:center;display:inline-grid}.live-class-field{flex-direction:column;gap:5px;min-width:0;display:flex}.live-class-field label{color:var(--text-secondary);font-size:13px;font-weight:500}.live-class-field input{background:var(--surface-card);border:1px solid var(--border-control);border-radius:var(--radius-xs);width:100%;min-height:44px;color:var(--text-body);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);padding:8px 10px;font-size:16px}.live-class-field input::placeholder{color:var(--text-faint)}.live-class-field input:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.live-class-field input[aria-invalid=true]{border-color:var(--shield-red-deep)}.live-class-actions{align-items:center;gap:var(--space-xs);display:flex}.live-class-actions .primary-button,.live-class-actions .secondary-button{min-height:44px;padding-inline:var(--space-md);white-space:nowrap;font-size:14px}.live-class-editor>.tool-status{grid-column:2/-1;margin:0}.live-class-editor>.tool-status:empty{display:none}.unit-grid{gap:var(--space-sm);flex-direction:column;display:flex}.unit-grid article{align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-md);transition:border-color var(--transition-fast), background var(--transition-fast);grid-template-columns:minmax(0,1fr) auto;display:grid}.unit-grid article:hover{border-color:var(--course-tone)}@supports (color:color-mix(in lab, red, red)){.unit-grid article:hover{border-color:color-mix(in srgb, var(--course-tone) 34%, var(--hairline))}}.unit-grid h3{font-size:16px;font-weight:600;line-height:1.4}.unit-grid p{color:var(--text-muted);font-size:14px}.unit-grid article>strong{color:var(--text-secondary);font-weight:400}.unit-check{color:var(--text-muted);white-space:nowrap;align-items:center;gap:6px;font-size:14px;display:inline-flex}.unit-check input{width:16px;height:16px;accent-color:var(--color-primary)}.course-rail{gap:var(--space-md);flex-direction:column;display:flex}.course-facts{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-xl);overflow:hidden}.course-facts dl{flex-direction:column;margin:0;display:flex}.course-facts dl>div{padding:var(--space-md) var(--space-lg);border-top:1px solid var(--border-hairline);flex-direction:column;gap:6px;display:flex}.course-facts dl>div:first-child{border-top:0}.course-facts dt{letter-spacing:.125px;text-transform:uppercase;color:var(--text-muted);font-size:12px;font-weight:600}.course-facts dd{flex-direction:column;gap:6px;margin:0;display:flex}.course-facts dd b{font-size:16px;font-weight:600}.course-facts dd small{color:var(--text-faint);font-size:13px}.mini-progress,.big-progress{border-radius:var(--radius-full);background:var(--canvas-soft);width:100%;height:6px;display:block;overflow:hidden}.mini-progress span,.big-progress span{border-radius:inherit;background:var(--color-primary);transform-origin:0;width:100%;height:100%;display:block}.big-progress{height:8px}.posts-section{gap:var(--space-md);flex-direction:column;display:flex}.post-list{gap:var(--space-sm);flex-direction:column;display:flex}.post-list article{gap:var(--space-md);padding:var(--space-lg);background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);content-visibility:auto;contain-intrinsic-size:auto 160px;grid-template-columns:auto minmax(0,1fr);display:grid}.post-list article>div{flex-direction:column;gap:6px;min-width:0;display:flex}.post-kind{border-radius:var(--radius-full);background:var(--color-primary-wash);color:var(--color-primary);letter-spacing:.125px;white-space:nowrap;align-self:flex-start;padding:4px 8px;font-size:12px;font-weight:600}.post-kind.guide{color:var(--academic-teal);background:#0d94881f}@supports (color:color-mix(in lab, red, red)){.post-kind.guide{color:color-mix(in srgb, var(--academic-teal) 62%, #0f172a)}}.post-kind.assessment{color:var(--shield-red-deep);background:#e31b231a}.post-kind.resource{color:#0369a1;background:#38bdf829}.post-list h3{font-size:16px;font-weight:600;line-height:1.4}.post-list p{color:var(--text-secondary);white-space:pre-line;font-size:15px;line-height:1.5}.post-list footer{align-items:center;gap:var(--space-sm);color:var(--text-faint);flex-wrap:wrap;font-size:13px;display:flex}.post-list footer a{align-items:center;gap:4px;font-size:13px;display:inline-flex}.post-list footer a:hover{text-decoration:underline}.rich-text{min-width:0;color:var(--text-secondary);overflow-wrap:anywhere;gap:10px;font-size:15px;line-height:1.6;display:grid}.rich-text:empty{display:none}.rich-text p,.rich-text blockquote,.rich-text figure,.rich-text ul,.rich-text ol{margin:0}.rich-text p,.rich-text blockquote,.rich-text li{white-space:pre-wrap}.rich-text ul,.rich-text ol{gap:5px;padding-left:22px;display:grid}.rich-text li::marker{color:var(--text-muted)}.rich-heading{color:var(--text-body);font-family:var(--font-display);margin:4px 0 0;font-size:16px;font-weight:600;line-height:1.4}.rich-heading-1{font-size:19px}.rich-heading-2{font-size:17px}.rich-text blockquote{border-left:3px solid var(--color-primary);padding:8px 12px}@supports (color:color-mix(in lab, red, red)){.rich-text blockquote{border-left:3px solid color-mix(in srgb, var(--color-primary) 55%, var(--border-hairline))}}.rich-text blockquote{background:var(--canvas-soft);border-radius:0 var(--radius-md) var(--radius-md) 0;color:var(--text-muted)}.rich-text a{color:var(--color-primary);text-underline-offset:2px;text-decoration:underline}.rich-text :not(pre)>code{border:1px solid var(--border-hairline);border-radius:var(--radius-xs);background:var(--canvas-soft);color:var(--text-body);font-family:var(--font-mono);padding:2px 5px;font-size:.9em}.rich-code{border-radius:var(--radius-md);background:#0f172a;border:1px solid #243247;min-width:0;max-width:100%;overflow:hidden}.rich-code figcaption{color:#cbd5e1;font-family:var(--font-core);letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid #243247;padding:6px 12px;font-size:11px;font-weight:600}.rich-code pre{overscroll-behavior-inline:contain;scrollbar-gutter:stable;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;color:#e2e8f0;max-width:100%;font-family:var(--font-mono);tab-size:2;margin:0;padding:14px;font-size:13px;line-height:1.65;overflow-x:auto}.rich-code code{font:inherit;white-space:pre}.syntax-comment{color:#94a3b8;font-style:italic}.syntax-string{color:#86efac}.syntax-number{color:#fde68a}.syntax-keyword{color:#c4b5fd;font-weight:600}.syntax-type{color:#7dd3fc}.syntax-function{color:#f9a8d4}.syntax-operator{color:#e2e8f0}.rich-math{max-width:100%;color:var(--text-body)}.rich-math-inline{overscroll-behavior-inline:contain;touch-action:pan-x pan-y;vertical-align:middle;-webkit-overflow-scrolling:touch;margin-inline:2px;display:inline-block;overflow:auto hidden}.rich-math-display{overscroll-behavior-inline:contain;scrollbar-gutter:stable;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;padding:6px 2px;overflow:auto hidden}.rich-math:empty:before{content:attr(data-source);font-family:var(--font-mono);font-size:.9em}.rich-math .katex-display{margin:0}.rich-table-scroll{border:1px solid var(--border-hairline);border-radius:var(--radius-md);overscroll-behavior-inline:contain;scrollbar-gutter:stable;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;min-width:0;max-width:100%;overflow:auto hidden}.rich-table-scroll table{border-collapse:collapse;width:100%;min-width:max-content;color:var(--text-secondary);font-size:14px;line-height:1.5}.rich-table-scroll th,.rich-table-scroll td{border-right:1px solid var(--border-hairline);border-bottom:1px solid var(--border-hairline);text-align:left;vertical-align:top;white-space:normal;min-width:9rem;padding:9px 12px}.rich-table-scroll th:last-child,.rich-table-scroll td:last-child{border-right:0}.rich-table-scroll tbody tr:last-child td{border-bottom:0}.rich-table-scroll th{background:var(--canvas-soft);color:var(--text-body);font-weight:600}.rich-table-align-center{text-align:center!important}.rich-table-align-right{text-align:right!important}.rich-table-align-left{text-align:left!important}.rich-editor{gap:8px;min-width:0;display:grid;container-type:inline-size}.rich-editor-heading{justify-content:space-between;align-items:baseline;gap:var(--space-sm);color:var(--text-secondary);font-size:14px;font-weight:500;display:flex}.rich-editor-heading span{color:var(--text-faint);font-variant-numeric:tabular-nums;font-size:12px;font-weight:400}.rich-editor textarea,.post-edit-form input{border:1px solid var(--border-control);border-radius:var(--radius-xs);background:var(--surface-card);width:100%;color:var(--text-body);padding:9px 10px;font-size:15px;font-weight:400;line-height:1.55}.rich-editor textarea{resize:vertical;min-height:180px;font-family:var(--font-mono)}.rich-editor textarea:focus,.post-edit-form input:focus{border-color:var(--color-primary);box-shadow:var(--shadow-focus);outline:none}.rich-editor-preview{min-height:96px;padding:var(--space-sm);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);background:var(--canvas-soft);gap:10px;display:grid}.rich-editor-preview>strong{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:600}.rich-editor-preview>p{color:var(--text-faint);margin:0;font-size:14px}.editor-tabs{border:1px solid var(--border-hairline);border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:var(--canvas-soft);grid-template-columns:repeat(3,minmax(0,1fr));min-width:0;display:grid;overflow:hidden}.editor-tabs button{border:0;border-right:1px solid var(--border-hairline);min-width:0;min-height:52px;color:var(--text-muted);text-align:left;cursor:pointer;background:0 0;gap:2px;padding:8px 12px;display:grid;position:relative}.editor-tabs button:last-child{border-right:0}.editor-tabs button:after{content:"";background:0 0;border-radius:3px 3px 0 0;height:3px;position:absolute;bottom:0;left:12px;right:12px}.editor-tabs button[aria-selected=true]{background:var(--surface-card);color:var(--text-body)}.editor-tabs button[aria-selected=true]:after{background:var(--color-primary)}.editor-tabs button strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:650;line-height:1.2;overflow:hidden}.editor-tabs button span{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:450;line-height:1.2;overflow:hidden}.editor-tabs button:focus-visible,.editor-toolbar button:focus-visible,.editor-visual-canvas:focus-visible,.editor-source:focus-visible,.multimodal-editor-workspace:focus-visible{z-index:1;outline:3px solid var(--color-primary);outline-offset:-3px;position:relative}.multimodal-editor-workspace{border:1px solid var(--border-hairline);border-radius:0 0 var(--radius-lg) var(--radius-lg);background:var(--surface-card);border-top:0;min-width:0;display:grid;overflow:hidden}.editor-compose-pane{background:var(--surface-card);min-width:0}.editor-toolbar{border-bottom:1px solid var(--border-hairline);background:var(--canvas-soft);scrollbar-width:thin;align-items:center;gap:2px;min-height:52px;padding:4px 7px;display:flex;overflow-x:auto}.editor-toolbar button{border-radius:var(--radius-md);width:44px;height:44px;color:var(--text-secondary);cursor:pointer;background:0 0;border:1px solid #0000;flex:0 0 44px;justify-content:center;align-items:center;padding:0;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}.editor-toolbar button:hover{border-color:var(--border-hairline);background:var(--surface-card);color:var(--text-body)}.editor-toolbar button[aria-pressed=true]{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.editor-toolbar button[aria-pressed=true]{border-color:color-mix(in srgb, var(--color-primary) 28%, var(--border-hairline))}}.editor-toolbar button[aria-pressed=true]{background:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.editor-toolbar button[aria-pressed=true]{background:color-mix(in srgb, var(--color-primary) 9%, white)}}.editor-toolbar button[aria-pressed=true]{color:var(--color-primary)}.editor-visual-canvas,.editor-source{background:var(--surface-card);width:100%;min-height:270px;color:var(--text-body);caret-color:var(--color-primary);resize:vertical;border:0;border-radius:0;margin:0;padding:18px;scroll-margin-block:72px;font-size:15px;line-height:1.65}.editor-visual-canvas{font-family:var(--font-core);overflow:auto}.editor-visual-canvas:empty:before{color:var(--text-faint);content:"Comienza a redactar o pega contenido desde Word…";pointer-events:none}.editor-visual-canvas p,.editor-visual-canvas blockquote,.editor-visual-canvas pre,.editor-visual-canvas table,.editor-visual-canvas aside{margin:0 0 14px}.editor-visual-canvas h1,.editor-visual-canvas h2,.editor-visual-canvas h3,.editor-visual-canvas h4,.editor-visual-canvas h5,.editor-visual-canvas h6{color:var(--text-body);font-family:var(--font-display);letter-spacing:-.02em;margin:20px 0 10px}.editor-visual-canvas blockquote{border-left:3px solid var(--color-primary);color:var(--text-secondary);padding-left:14px}.editor-visual-canvas pre{border-radius:var(--radius-md);background:var(--brand-navy);color:#f8fafc;font-family:var(--font-mono);white-space:pre;padding:14px;overflow-x:auto}.editor-visual-canvas table{border-collapse:collapse;width:max-content;min-width:100%}.editor-visual-canvas td,.editor-visual-canvas th{border:1px solid var(--border-hairline);min-width:112px;padding:8px 10px}.editor-visual-canvas tr:first-child td,.editor-visual-canvas th{background:var(--canvas-soft);font-weight:650}.editor-visual-canvas aside[data-callout]{border:1px solid var(--color-primary);padding:12px 14px}@supports (color:color-mix(in lab, red, red)){.editor-visual-canvas aside[data-callout]{border:1px solid color-mix(in srgb, var(--color-primary) 25%, var(--border-hairline))}}.editor-visual-canvas aside[data-callout]{border-left:4px solid var(--color-primary);border-radius:var(--radius-md);background:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.editor-visual-canvas aside[data-callout]{background:color-mix(in srgb, var(--color-primary) 5%, white)}}.editor-visual-canvas aside[data-callout] p:last-child{margin-bottom:0}.editor-latex-token{border:1px solid var(--border-hairline);border-radius:var(--radius-xs);background:var(--canvas-soft);max-width:100%;color:var(--brand-navy);font-family:var(--font-mono);white-space:pre-wrap;padding:2px 6px;font-size:.9em;display:inline-flex}.editor-latex-token:before,.editor-latex-token:after{content:"$"}div.editor-latex-token:before,div.editor-latex-token:after{content:"$$"}div.editor-latex-token{text-align:center;margin:12px 0;padding:10px;display:block}.editor-source{font-family:var(--font-mono);tab-size:2;white-space:pre-wrap;font-size:14px;display:block}.editor-source-html{background:var(--canvas-soft)}@supports (color:color-mix(in lab, red, red)){.editor-source-html{background:color-mix(in srgb, var(--canvas-soft) 58%, white)}}.editor-source-html{color:var(--brand-navy)}.editor-source::placeholder{color:var(--text-faint)}.multimodal-editor .rich-editor-preview{border:0;border-top:1px solid var(--border-hairline);background:var(--canvas-soft);border-radius:0;align-content:start;min-width:0;min-height:170px;padding:16px 18px 20px}.editor-preview-heading{border-bottom:1px solid var(--border-hairline);justify-content:space-between;align-items:baseline;gap:12px;padding-bottom:9px;display:flex}.editor-preview-heading strong{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:650}.editor-preview-heading span{color:var(--text-faint);font-size:11px}.editor-form-value{resize:none}@container (min-width:720px){.multimodal-editor-workspace{grid-template-columns:minmax(0,1.08fr) minmax(280px,.92fr)}.multimodal-editor .rich-editor-preview{border-top:0;border-left:1px solid var(--border-hairline)}}@media (max-width:520px){.editor-tabs button{text-align:center;min-height:48px;padding-inline:8px}.editor-tabs button span{display:none}.editor-toolbar{padding-inline:4px}.editor-toolbar button{flex-basis:44px;width:44px}.editor-visual-canvas,.editor-source{min-height:240px;padding:14px;font-size:16px}}@media (forced-colors:active){.editor-tabs button[aria-selected=true],.editor-toolbar button[aria-pressed=true]{border:2px solid highlight}}.post-edit-form{gap:var(--space-sm);margin-top:4px;display:grid}.post-edit-form>label{color:var(--text-secondary);gap:6px;font-size:14px;font-weight:500;display:grid}.post-edit-actions{justify-content:flex-end;gap:var(--space-xs);display:flex}.post-edit-actions button{min-height:40px}.content-actions{gap:var(--space-xs);display:inline-flex}.content-actions button{border:1px solid var(--border-hairline);border-radius:var(--radius-md);min-height:28px;color:var(--text-secondary);transition:background var(--transition-fast), color var(--transition-fast);padding:2px 10px;font-size:13px}.content-actions button:hover{background:var(--canvas-soft);color:var(--text-body)}.content-actions button:last-child:hover{color:var(--shield-red-deep);background:#e31b2314;border-color:#e31b2340}.materials-view{gap:var(--space-lg);grid-template-columns:minmax(0,1fr) 340px;align-items:start;display:grid}.materials-list{gap:var(--space-sm);flex-direction:column;display:flex}.material-folder{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);overflow:hidden}.material-folder summary{justify-content:space-between;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);cursor:pointer;background:var(--canvas-soft);border-bottom:1px solid var(--border-hairline);transition:background var(--transition-fast);font-size:15px;font-weight:500;list-style:none;display:flex}.material-folder summary::-webkit-details-marker{display:none}.material-folder summary:hover{background:var(--hairline)}.material-folder summary b{letter-spacing:.125px;color:var(--text-muted);font-size:12px;font-weight:600}.material-row{align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-lg);border-top:1px solid var(--border-hairline);background:var(--surface-card);transition:background var(--transition-fast);content-visibility:auto;contain-intrinsic-size:auto 64px;grid-template-columns:auto minmax(0,1fr) auto;display:grid}.material-folder .material-row:first-of-type{border-top:0}.material-row:hover{background:var(--canvas-soft)}.material-row.featured{border:1px solid var(--border-hairline);border-radius:var(--radius-lg);padding:var(--space-md) var(--space-lg);color:var(--text-body)}.file-icon{border-radius:var(--radius-md);background:var(--canvas-soft);width:38px;height:38px;color:var(--text-muted);font-family:var(--font-mono);place-items:center;font-size:12px;font-weight:600;display:inline-grid}.material-row>div{flex-direction:column;gap:2px;min-width:0;display:flex}.material-row strong{overflow-wrap:anywhere;font-size:15px;font-weight:500}.material-row small{color:var(--text-faint);font-size:13px}.material-row b{color:var(--color-primary);align-items:center;gap:6px;font-size:14px;font-weight:500;display:inline-flex}.material-actions{align-items:center;gap:var(--space-xs);flex-wrap:wrap;justify-content:flex-end;display:inline-flex}.material-actions>button{border:1px solid var(--border-hairline);border-radius:var(--radius-md);min-height:34px;color:var(--text-body);transition:background var(--transition-fast);padding:4px 14px;font-size:14px}.material-actions>button:hover{background:var(--canvas-soft)}.teacher-tools{gap:var(--space-md);padding:var(--space-lg);background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-xl);flex-direction:column;display:flex;position:sticky;top:84px}.teacher-tools h2{letter-spacing:-.125px;font-size:20px;font-weight:600;line-height:1.4}.teacher-tools form{gap:var(--space-sm);flex-direction:column;display:flex}.teacher-tools label{color:var(--text-secondary);flex-direction:column;gap:6px;font-size:14px;font-weight:500;display:flex}.teacher-tools input,.teacher-tools textarea,.teacher-tools select{background:var(--surface-card);border:1px solid var(--border-control);border-radius:var(--radius-xs);min-height:34px;color:var(--text-body);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);padding:6px 10px;font-size:15px;font-weight:400}.teacher-tools input::placeholder,.teacher-tools textarea::placeholder{color:var(--text-faint)}.teacher-tools input:focus,.teacher-tools textarea:focus,.teacher-tools select:focus{border-color:var(--color-primary);box-shadow:var(--shadow-focus);outline:none}.teacher-tools textarea{resize:vertical;min-height:96px;line-height:1.5}.teacher-tools input[type=file]{border-style:dashed;padding:4px}.teacher-tools input[type=file]::file-selector-button{margin-right:var(--space-sm);border:1px solid var(--border-control);border-radius:var(--radius-md);background:var(--canvas-soft);cursor:pointer;min-height:28px;padding:2px 12px;font-size:13px}.teacher-tools .primary-button,.teacher-tools .secondary-button{width:100%}.tool-divider{align-items:center;gap:var(--space-sm);display:flex}.tool-divider:before,.tool-divider:after{content:"";background:var(--border-hairline);flex:1;height:1px}.tool-divider span{letter-spacing:.125px;text-transform:uppercase;color:var(--text-faint);font-size:12px;font-weight:600}.tool-status{color:var(--text-muted);font-size:14px;line-height:1.43}.tool-status.ok{color:#047857}.tool-status.bad{color:var(--shield-red-deep)}.publication-section-title{align-items:center}.publication-split-wrap{z-index:12;font-family:var(--font-core);flex:none;position:relative}.publication-split{border-radius:var(--radius-full);min-width:244px;box-shadow:var(--shadow-1);grid-template-columns:minmax(0,1fr) 44px;display:grid}.publication-split-main,.publication-split-toggle{background:var(--color-primary);min-height:44px;color:var(--color-on-primary);cursor:pointer;transition:background var(--transition-fast);border:0;font-size:14px;font-weight:600}.publication-split-main{border-radius:var(--radius-full) 0 0 var(--radius-full);justify-content:center;align-items:center;gap:7px;padding:0 16px 0 19px;display:inline-flex}.publication-split-toggle{border-radius:0 var(--radius-full) var(--radius-full) 0;border-left:1px solid #ffffff57;place-items:center;display:grid}.publication-split-main:hover,.publication-split-toggle:hover{background:var(--color-primary-active)}.publication-split-main:focus-visible,.publication-split-toggle:focus-visible,.publication-menu button:focus-visible,.publication-dialog :focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.publication-split-main:focus-visible,.publication-split-toggle:focus-visible{outline-color:var(--color-on-primary);outline-offset:-4px}.publication-menu{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);width:min(350px,100vw - 32px);box-shadow:var(--shadow-2);padding:8px;display:grid;position:absolute;top:calc(100% + 8px);right:0}.publication-menu>p{color:var(--text-faint);letter-spacing:.06em;text-transform:uppercase;padding:7px 10px 5px;font-size:11px;font-weight:600}.publication-menu button{border-radius:var(--radius-md);min-height:52px;color:var(--text-body);text-align:left;cursor:pointer;transition:background var(--transition-fast);background:0 0;border:0;align-items:center;gap:10px;padding:8px 10px;display:flex}.publication-menu button:hover,.publication-menu button[aria-checked=true]{background:var(--canvas-soft)}.publication-menu button>span{flex:1;gap:2px;min-width:0;display:grid}.publication-menu button>svg{color:var(--color-primary);flex:none}.publication-menu strong{font-size:14px;font-weight:600}.publication-menu small{color:var(--text-muted);font-size:12px;font-weight:400;line-height:1.35}.publication-menu-rule{background:var(--border-hairline);height:1px;margin:6px 8px}.publication-dialog{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-xl);width:min(760px,100vw - 32px);max-height:calc(100dvh - 40px);box-shadow:var(--shadow-2);color:var(--text-body);margin:auto;padding:0;overflow:hidden}.publication-composer{width:min(920px,100vw - 32px)}.publication-dialog::backdrop{background:#0f172a85}@media (min-width:768px){.publication-dialog::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}}.publication-dialog>form{grid-template-rows:auto auto minmax(0,1fr) auto;max-height:calc(100dvh - 42px);display:grid}.publication-dialog-head{justify-content:space-between;align-items:center;gap:var(--space-md);border-bottom:1px solid var(--border-hairline);padding:20px 24px 16px;display:flex}.publication-dialog-head h2{font-family:var(--font-display);letter-spacing:-.015em;font-size:23px;font-weight:700;line-height:1.25}.publication-dialog-head h2:focus-visible{outline:none}.publication-dialog-head p{color:var(--text-muted);margin-top:3px;font-size:13px;line-height:1.4}.publication-dialog-head>button{background:var(--canvas-soft);border:1px solid var(--border-hairline);border-radius:var(--radius-md);width:44px;height:44px;color:var(--text-muted);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);flex:none;place-items:center;display:grid}.publication-dialog-head>button:hover{background:var(--hairline);color:var(--text-body)}.publication-steps{background:var(--canvas-soft);border-bottom:1px solid var(--border-hairline);grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:14px 24px;list-style:none;display:grid}.publication-steps li{min-width:0;color:var(--text-faint);align-items:center;gap:8px;display:flex}.publication-steps li+li:before{content:"";background:var(--border-hairline);width:min(28px,3vw);height:1px;margin-right:8px}.publication-steps li[aria-current=step]{color:var(--text-body)}.publication-steps span{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-full);font-variant-numeric:var(--num);flex:none;place-items:center;width:26px;height:26px;font-size:12px;font-weight:700;display:grid}.publication-steps li[aria-current=step] span{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-on-primary)}.publication-steps small{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;overflow:hidden}.publication-dialog-body,.publication-composer-body{overscroll-behavior:contain;min-height:0;padding:24px;overflow-y:auto}.publication-options{border:0;min-width:0;margin:0;padding:0}.publication-options legend{font-family:var(--font-display);letter-spacing:-.01em;padding:0;font-size:20px;font-weight:700}.publication-options>p{color:var(--text-muted);margin:4px 0 18px;font-size:14px;line-height:1.5}.publication-option-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.publication-option{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);cursor:pointer;min-height:96px;transition:background var(--transition-fast), border-color var(--transition-fast), box-shadow var(--transition-fast);grid-template-columns:42px minmax(0,1fr);align-items:start;gap:12px;padding:16px;display:grid;position:relative}.publication-option:hover{background:var(--canvas-soft)}.publication-option:has(input:checked){background:var(--color-primary-wash);border-color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary)}.publication-option:has(input:focus-visible){outline:2px solid var(--color-primary);outline-offset:2px}.publication-option>input{opacity:0;width:1px;height:1px;position:absolute}.publication-option-icon{background:var(--canvas-soft);border:1px solid var(--border-hairline);border-radius:var(--radius-md);width:42px;height:42px;color:var(--text-secondary);place-items:center;display:grid}.publication-option:has(input:checked) .publication-option-icon{background:var(--surface-card);border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.publication-option:has(input:checked) .publication-option-icon{border-color:color-mix(in srgb, var(--color-primary) 30%, white)}}.publication-option:has(input:checked) .publication-option-icon{color:var(--color-primary)}.publication-option>span:last-child{gap:5px;display:grid}.publication-option strong{font-size:15px;font-weight:600;line-height:1.35}.publication-option small{color:var(--text-muted);text-wrap:pretty;font-size:13px;font-weight:400;line-height:1.45}.editor-options{grid-template-columns:repeat(3,minmax(0,1fr))}.editor-options .publication-option{grid-template-columns:minmax(0,1fr)}.publication-remember{background:var(--canvas-soft);border-radius:var(--radius-md);cursor:pointer;grid-template-columns:20px minmax(0,1fr);align-items:start;gap:10px;margin-top:16px;padding:14px 16px;display:grid}.publication-remember input{width:18px;height:18px;accent-color:var(--color-primary);margin-top:1px}.publication-remember label{cursor:pointer;gap:3px;font-size:14px;font-weight:600;display:grid}.publication-remember small{color:var(--text-muted);font-size:12px;line-height:1.4}.publication-destination{gap:22px;display:grid}.publication-destination>label,.publication-composer-body>label,.publication-composer-row>label{color:var(--text-secondary);gap:7px;font-size:14px;font-weight:600;display:grid}.publication-destination>label>span{align-items:center;gap:7px;display:inline-flex}.publication-destination select,.publication-composer-body input,.publication-composer-body select{background:var(--surface-card);border:1px solid var(--border-control);border-radius:var(--radius-xs);width:100%;min-height:44px;color:var(--text-body);padding:8px 10px;font-size:15px;font-weight:400}.notification-options .publication-option{min-height:88px}.publication-dialog-footer{background:var(--surface-card);border-top:1px solid var(--border-hairline);justify-content:flex-end;align-items:center;gap:8px;padding:14px 24px;display:flex}.publication-dialog-footer button{border-radius:var(--radius-full);cursor:pointer;min-height:44px;transition:background var(--transition-fast), color var(--transition-fast);justify-content:center;align-items:center;gap:7px;padding:0 17px;font-size:14px;font-weight:600;display:inline-flex}.publication-dialog-footer button:disabled{opacity:.5;cursor:progress}.publication-back{border:1px solid var(--border-hairline);color:var(--text-secondary);background:0 0;margin-right:auto}.publication-cancel{border:1px solid var(--border-hairline);color:var(--text-secondary);background:0 0}.publication-back:hover,.publication-cancel:hover{background:var(--canvas-soft)}.publication-continue{background:var(--color-primary);border:1px solid var(--color-primary);color:var(--color-on-primary)}.publication-continue:hover{background:var(--color-primary-active);border-color:var(--color-primary-active)}.publication-composer>form{grid-template-rows:auto auto minmax(0,1fr) auto}.publication-composer-toolbar{background:var(--canvas-soft);border-bottom:1px solid var(--border-hairline);justify-content:space-between;align-items:center;gap:12px;padding:10px 24px;display:flex}.publication-composer-toolbar>span{color:var(--color-primary);font-size:13px;font-weight:700}.publication-composer-toolbar button{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-md);min-height:36px;color:var(--text-secondary);cursor:pointer;align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:600;display:inline-flex}.publication-composer-body{gap:16px;display:grid}.publication-composer-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.publication-notification-choice{border:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;padding:0;display:grid}.publication-notification-choice legend{color:var(--text-secondary);grid-column:1/-1;margin-bottom:2px;font-size:14px;font-weight:600}.publication-notification-choice>label{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-md);cursor:pointer;grid-template-columns:18px 20px minmax(0,1fr);align-items:start;gap:8px;min-height:72px;padding:12px;display:grid}.publication-notification-choice>label:has(input:checked){background:var(--color-primary-wash);border-color:var(--color-primary)}.publication-notification-choice input{width:17px;height:17px;min-height:0;accent-color:var(--color-primary);margin-top:2px;padding:0}.publication-notification-choice svg{color:var(--color-primary);margin-top:1px}.publication-notification-choice span{gap:3px;display:grid}.publication-notification-choice strong{font-size:13px;font-weight:600}.publication-notification-choice small{color:var(--text-muted);font-size:12px;font-weight:400;line-height:1.4}@media (max-width:700px){.publication-section-title{flex-direction:column;align-items:stretch}.publication-split-wrap,.publication-split{width:100%}.publication-menu{width:100%;left:0;right:auto}.publication-dialog,.publication-composer{border-radius:var(--radius-lg);width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}.publication-dialog>form{max-height:calc(100dvh - 18px)}.publication-dialog-head,.publication-dialog-body,.publication-composer-body,.publication-dialog-footer{padding-left:16px;padding-right:16px}.publication-steps{gap:5px;padding:12px 16px}.publication-steps li{gap:5px}.publication-steps li+li:before{display:none}.publication-steps small{white-space:normal;font-size:10px}.publication-option-grid,.editor-options,.publication-composer-row,.publication-notification-choice{grid-template-columns:minmax(0,1fr)}.editor-options .publication-option{grid-template-columns:42px minmax(0,1fr)}.publication-option{min-height:88px;padding:14px}.publication-dialog-footer{flex-wrap:wrap}.publication-back{margin-right:0}.publication-cancel{margin-left:auto}.publication-composer-toolbar{align-items:flex-start;padding-left:16px;padding-right:16px}}.progress-view{gap:var(--space-md);flex-direction:column;display:flex}.personal-progress{align-items:center;gap:var(--space-lg);padding:var(--space-lg);background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-xl);grid-template-columns:auto minmax(0,1fr);display:grid}.personal-progress>strong{font-family:var(--font-display);font-variant-numeric:var(--num);letter-spacing:-.02em;color:var(--color-primary);font-size:46px;font-weight:700;line-height:1}.personal-progress>div{flex-direction:column;gap:6px;display:flex}.personal-progress h3{letter-spacing:-.125px;font-size:20px;font-weight:600;line-height:1.4}.personal-progress p{color:var(--text-muted);font-size:15px}.progress-table,.admin-table,.grades-table,.grades-matrix{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);overflow:hidden}.progress-table-head,.progress-table-row{gap:var(--space-md);padding:var(--space-sm) var(--space-md);grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);align-items:center;display:grid}.progress-table-head,.admin-head,.grades-head,.grades-matrix-head{background:var(--canvas-soft);border-bottom:1px solid var(--border-hairline);letter-spacing:.7px;text-transform:uppercase;color:var(--text-muted);font-size:12px;font-weight:600}.progress-table-row{border-top:1px solid var(--border-hairline);font-size:15px}.progress-table-row:first-of-type{border-top:0}.progress-table-row b,.progress-table-row small{display:block}.progress-table-row b{font-size:15px;font-weight:500}.progress-table-row small{color:var(--text-faint);font-size:13px}.progress-table-row i{border-radius:var(--radius-full);background:var(--canvas-soft);height:6px;margin-top:6px;display:block;overflow:hidden}.progress-table-row em{background:var(--color-primary);transform-origin:0;width:100%;height:100%;display:block}.people-view{gap:var(--space-lg);flex-direction:column;display:flex}.enrollment-import{gap:var(--space-md);padding:var(--space-lg);background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-xl);box-shadow:var(--shadow-1);flex-direction:column;display:flex}.enrollment-import-head,.enrollment-import-title,.enrollment-import-actions,.enrollment-pagination,.enrollment-notice{align-items:center;display:flex}.enrollment-import-head{justify-content:space-between;gap:var(--space-lg)}.enrollment-import-title{align-items:flex-start;gap:var(--space-sm);min-width:0}.enrollment-import-icon{width:44px;height:44px;color:var(--text-secondary);background:var(--canvas-soft);border:1px solid var(--border-hairline);border-radius:var(--radius-md);flex:0 0 44px;place-items:center;display:grid}.enrollment-import h2{font-family:var(--font-display);letter-spacing:-.025em;text-wrap:balance;margin:0;font-size:21px;line-height:1.25}.enrollment-import-title p,.enrollment-file-field p{color:var(--text-muted);text-wrap:pretty;margin:4px 0 0;font-size:14px;line-height:1.45}.enrollment-template{min-height:44px;color:var(--text-link);border-radius:var(--radius-md);background:0 0;border:0;justify-content:center;align-items:center;gap:6px;padding:8px 12px;font-size:14px;font-weight:600;display:inline-flex}.enrollment-template:hover{background:var(--color-primary-wash)}.enrollment-file-field{gap:4px var(--space-md);padding:var(--space-md);background:var(--canvas-soft);border:1px dashed var(--border-hairline);border-radius:var(--radius-lg);grid-template-columns:minmax(0,1fr) auto;display:grid}.enrollment-file-field label{color:var(--text-body);font-size:15px;font-weight:650}.enrollment-file-field p{grid-column:1}.enrollment-file-field input{min-height:44px;margin-top:var(--space-xs);color:var(--text-secondary);background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-md);font-family:var(--font-core);grid-column:1/-1;padding:5px;font-size:14px}.enrollment-file-field input::file-selector-button{min-height:32px;margin-right:var(--space-sm);color:var(--text-body);background:var(--canvas-soft);border:1px solid var(--border-hairline);border-radius:var(--radius-sm);font-family:var(--font-core);cursor:pointer;padding:4px 12px;font-weight:600}.enrollment-file-field input:focus-visible,.enrollment-template:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.enrollment-file-name{max-width:280px;color:var(--text-faint);overflow-wrap:anywhere;grid-area:1/2/span 2;align-self:center;font-size:13px}.enrollment-import-actions{justify-content:flex-end;gap:var(--space-xs)}.enrollment-import-actions .primary-button,.enrollment-import-actions .secondary-button,.enrollment-pagination .secondary-button{min-height:44px;padding-inline:var(--space-md);font-size:14px}.enrollment-notice{gap:var(--space-xs);color:var(--text-secondary);background:var(--canvas-soft);border:1px solid var(--border-hairline);border-radius:var(--radius-md);margin:0;padding:10px 12px;font-size:14px;line-height:1.45}.enrollment-notice.ok{color:#047857;background:#ecfdf5;border-color:#a7f3d0}.enrollment-notice.warning{color:#78350f;background:#fffbeb;border-color:#fde68a}.enrollment-notice.bad{color:var(--shield-red-deep);background:#fef2f2;border-color:#fecaca}.enrollment-preview{gap:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid var(--border-hairline);flex-direction:column;display:flex}.enrollment-summary{background:var(--canvas-soft);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);grid-template-columns:repeat(4,minmax(0,1fr));margin:0;display:grid;overflow:hidden}.enrollment-summary>div{padding:12px var(--space-md);border-left:1px solid var(--border-hairline)}.enrollment-summary>div:first-child{border-left:0}.enrollment-summary dt{color:var(--text-muted);font-size:12px;font-weight:650}.enrollment-summary dd{color:var(--text-body);margin:2px 0 0;font-size:23px;font-weight:650;line-height:1.2}.enrollment-table-wrap{border:1px solid var(--border-hairline);border-radius:var(--radius-lg);width:100%;overflow-x:auto}.enrollment-table{border-collapse:collapse;width:100%;min-width:650px;font-family:var(--font-core);font-size:14px}.enrollment-table th,.enrollment-table td{padding:11px var(--space-md);text-align:left;vertical-align:middle;border-bottom:1px solid var(--border-hairline)}.enrollment-table th{color:var(--text-muted);background:var(--canvas-soft);font-size:12px;font-weight:700}.enrollment-table tr:last-child td{border-bottom:0}.enrollment-table th:first-child,.enrollment-table td:first-child{width:72px;color:var(--text-faint)}.enrollment-table td:nth-child(2),.enrollment-table td:nth-child(3){min-width:240px}.enrollment-table td strong,.enrollment-table td small{display:block}.enrollment-table td strong{color:var(--text-body);font-size:14px;font-weight:650}.enrollment-table td small{color:var(--text-faint);overflow-wrap:anywhere;margin-top:2px;font-size:12px}.enrollment-status{border:1px solid var(--border-hairline);border-radius:var(--radius-full);align-items:center;min-height:25px;padding:3px 8px;font-size:11px;font-weight:700;display:inline-flex}.enrollment-status.activate,.enrollment-status.reactivate{color:#047857;background:#ecfdf5;border-color:#a7f3d0}.enrollment-status.pending{color:#78350f;background:#fffbeb;border-color:#fde68a}.enrollment-status.unchanged{color:var(--text-secondary);background:var(--canvas-soft)}.enrollment-status.invalid{color:var(--shield-red-deep);background:#fef2f2;border-color:#fecaca}.enrollment-pagination{justify-content:flex-end;gap:var(--space-sm)}.enrollment-pagination>span{min-width:120px;color:var(--text-muted);text-align:center;font-size:13px}.people-grid{gap:var(--space-sm);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.people-grid article{align-items:center;gap:var(--space-sm);padding:var(--space-md);background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);display:flex}.avatar.large{flex:0 0 44px;width:44px;height:44px;font-size:15px}.participants-directory{gap:var(--space-lg);flex-direction:column;width:min(100%,980px);margin-inline:auto;display:flex}.participants-overview{justify-content:space-between;align-items:flex-start;gap:var(--space-lg);padding-bottom:var(--space-md);border-bottom:1px solid var(--border-hairline);display:flex}.participants-overview h2{font-family:var(--font-display);letter-spacing:-.02em;font-size:clamp(21px,2.5vw,26px);font-weight:700}.participants-overview p{max-width:620px;color:var(--text-muted);margin-top:5px;font-size:14px}.participant-total{border:1px solid var(--border-hairline);border-radius:var(--radius-md);background:var(--surface-card);color:var(--text-muted);white-space:nowrap;flex:none;align-items:baseline;gap:5px;padding:7px 10px;font-size:13px;display:inline-flex}.participant-total strong{color:var(--text-body);font-family:var(--font-display);font-size:19px}.participants-toolbar{align-items:center;gap:var(--space-sm);display:flex}.participant-search{border:1px solid var(--border-control);border-radius:var(--radius-xs);background:var(--surface-card);min-width:min(100%,330px);min-height:46px;color:var(--text-muted);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;padding:0 8px 0 12px;display:grid}.participant-search:focus-within{border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.participant-search input{width:100%;min-width:0;height:44px;color:var(--text-body);background:0 0;border:0;outline:0;padding:0;font-size:14px}.participant-search input::placeholder{color:var(--text-faint);opacity:1}.participant-search input::-webkit-search-cancel-button{display:none}.participant-search button{border-radius:var(--radius-md);width:34px;height:34px;color:var(--text-muted);place-items:center;display:inline-grid}.participant-search button:hover{background:var(--canvas-soft);color:var(--text-body)}.participant-search button:focus-visible,.participant-filters button:focus-visible,.participant-contact:focus-visible,.participant-error button:focus-visible,.participant-group-shortcut:focus-visible,.participant-load-more:focus-visible,.participant-empty button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.participant-filters{scrollbar-width:thin;align-items:center;gap:6px;min-width:0;display:flex;overflow-x:auto}.participant-filters button{border:1px solid var(--border-hairline);border-radius:var(--radius-md);background:var(--surface-card);min-height:42px;color:var(--text-secondary);white-space:nowrap;transition:border-color var(--transition-fast), background var(--transition-fast), color var(--transition-fast);align-items:center;gap:7px;padding:7px 10px;font-size:13px;font-weight:500;display:inline-flex}.participant-filters button:hover{border-color:var(--text-faint)}.participant-filters button.active{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.participant-filters button.active{border-color:color-mix(in srgb, var(--color-primary) 40%, var(--border-hairline))}}.participant-filters button.active{background:var(--color-primary-wash);color:var(--color-primary)}.participant-filters button span{border-radius:var(--radius-sm);background:var(--canvas-soft);min-width:23px;height:23px;color:var(--text-muted);place-items:center;padding-inline:5px;font-size:12px;display:inline-grid}.participant-filters button.active span{background:var(--surface-card);color:var(--color-primary)}.participant-error,.participant-loading{border:1px solid var(--border-hairline);border-radius:var(--radius-md);align-items:center;gap:10px;min-height:44px;padding:9px 12px;font-size:13px;display:flex}.participant-loading{color:var(--text-muted);border-style:dashed}.participant-error{border-color:var(--shield-red)}@supports (color:color-mix(in lab, red, red)){.participant-error{border-color:color-mix(in srgb, var(--shield-red) 28%, var(--border-hairline))}}.participant-error{background:var(--shield-red)}@supports (color:color-mix(in lab, red, red)){.participant-error{background:color-mix(in srgb, var(--shield-red) 5%, var(--surface-card))}}.participant-error{color:var(--text-secondary)}.participant-error>svg{color:var(--shield-red-deep);flex:none}.participant-error span{flex:1}.participant-error button,.participant-empty button{border:1px solid var(--border-hairline);border-radius:var(--radius-md);background:var(--surface-card);min-height:34px;color:var(--text-body);padding-inline:10px;font-size:13px;font-weight:600}.participant-groups{gap:var(--space-xl);flex-direction:column;display:flex}.participant-group-heading{align-items:center;gap:9px;margin-bottom:9px;display:flex}.participant-group-heading h3{font-family:var(--font-display);letter-spacing:-.015em;font-size:18px;font-weight:700}.participant-group-heading>span{border-radius:var(--radius-md);background:var(--canvas-soft);min-width:27px;height:27px;color:var(--text-muted);place-items:center;padding-inline:6px;font-size:12px;font-weight:600;display:inline-grid}.participant-list{border:1px solid var(--border-hairline);border-radius:var(--radius-lg);background:var(--surface-card);overflow:hidden}.participant-row{align-items:center;gap:var(--space-sm);content-visibility:auto;contain-intrinsic-size:auto 72px;grid-template-columns:44px minmax(0,1fr) auto auto;min-height:72px;padding:10px 12px;display:grid}.participant-row+.participant-row{border-top:1px solid var(--border-hairline)}.participant-row[data-current=true]{background:var(--color-primary-wash)}.participant-identity{flex-direction:column;min-width:0;display:flex}.participant-identity strong{min-width:0;color:var(--text-body);align-items:center;gap:7px;font-size:14px;font-weight:600;display:flex}.participant-you{border-radius:var(--radius-sm);background:var(--surface-card);color:var(--color-primary);flex:none;padding:1px 5px;font-size:11px;font-weight:700}.participant-email{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.participant-role{border-radius:var(--radius-full);background:var(--canvas-soft);color:var(--text-secondary);white-space:nowrap;padding:4px 7px;font-size:11px;font-weight:600}.participant-role[data-role=teacher],.participant-role[data-role=coordinator]{background:var(--color-primary-wash);color:var(--color-primary)}.participant-role[data-role=assistant]{background:var(--shield-gold)}@supports (color:color-mix(in lab, red, red)){.participant-role[data-role=assistant]{background:color-mix(in srgb, var(--shield-gold) 16%, var(--surface-card))}}.participant-role[data-role=assistant]{color:var(--academic-bronze)}.participant-contact{border:1px solid var(--border-hairline);border-radius:var(--radius-md);background:var(--surface-card);min-width:94px;min-height:42px;color:var(--color-primary);transition:border-color var(--transition-fast), background var(--transition-fast), color var(--transition-fast);justify-content:center;align-items:center;gap:7px;padding:7px 10px;font-size:13px;font-weight:600;display:inline-flex}.participant-contact:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.participant-contact:hover{border-color:color-mix(in srgb, var(--color-primary) 35%, var(--border-hairline))}}.participant-contact:hover{background:var(--color-primary-wash);color:var(--color-primary-active)}.participant-contact.unavailable{color:var(--text-faint);cursor:default}.participant-group-shortcut{border:1px dashed var(--border-control);border-radius:var(--radius-lg);width:100%;min-height:52px;color:var(--color-primary);text-align:left;justify-content:space-between;align-items:center;padding:10px 13px;display:flex}.participant-group-shortcut:hover{background:var(--color-primary-wash)}.participant-empty{padding:var(--space-xxl) var(--space-md);border:1px dashed var(--border-control);border-radius:var(--radius-lg);color:var(--text-muted);text-align:center;justify-items:center;gap:5px;display:grid}.participant-empty>svg{color:var(--text-faint);margin-bottom:3px}.participant-empty strong{color:var(--text-body)}.participant-empty p{font-size:14px}.participant-empty button{min-height:42px;margin-top:8px}.participant-load-more{border:1px solid var(--border-hairline);border-radius:var(--radius-md);background:var(--surface-card);min-height:44px;color:var(--text-body);justify-content:center;align-self:center;align-items:center;gap:8px;padding:8px 14px;font-size:14px;font-weight:600;display:inline-flex}.participant-load-more:hover{border-color:var(--text-faint);background:var(--canvas-soft)}.participant-load-more:disabled{color:var(--text-faint);cursor:wait}@media (max-width:700px){.participants-directory{gap:var(--space-md)}.participants-overview,.participants-toolbar{flex-direction:column;align-items:stretch}.participant-total{align-self:flex-start}.participant-search{width:100%}.participant-filters{width:100%;padding-bottom:2px}.participant-filters button{min-height:44px}.participant-row{grid-template-columns:44px minmax(0,1fr) 44px;gap:8px 10px;min-height:78px}.participant-role{grid-column:2;justify-self:start}.participant-contact{grid-area:1/3/span 2;width:44px;min-width:44px;min-height:44px;padding:0}.participant-contact span{display:none}.participant-error{flex-wrap:wrap;align-items:flex-start}.participant-error button{min-height:42px;margin-left:30px}}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.planner{gap:var(--space-md);flex-direction:column;display:flex}.portal-main>.planner>.page-head{margin-bottom:0}.planner-lead p{flex-wrap:wrap;gap:4px 10px;display:flex}.planner-lead p b{color:var(--text-secondary);font-weight:600}.page-head>.planner-controls{align-items:center;gap:var(--space-xs);flex-flow:wrap;display:flex}.planner-step{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-md);align-items:center;display:inline-flex;overflow:hidden}.planner-step button{min-width:36px;height:34px;color:var(--text-secondary);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:0;justify-content:center;align-items:center;padding:0 10px;display:inline-flex}.planner-step button:hover{background:var(--color-primary-wash);color:var(--color-primary)}.planner-now-button{font-size:14px;font-weight:500;border-inline:1px solid var(--border-hairline)!important}.planner-jump input{background:var(--surface-card);border:1px solid var(--border-control);border-radius:var(--radius-md);height:34px;color:var(--text-secondary);font-variant-numeric:var(--num);padding:0 10px;font-size:14px}.planner-create{background:var(--color-primary);height:34px;color:var(--color-on-primary);border-radius:var(--radius-full);cursor:pointer;transition:background var(--transition-fast);border:0;align-items:center;gap:6px;padding:0 16px;font-size:14px;font-weight:500;display:inline-flex}.planner-create:hover{background:var(--color-primary-active)}.planner-filters{gap:var(--space-xs);flex-wrap:wrap;display:flex}.planner-pill{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-full);color:var(--text-secondary);cursor:pointer;transition:border-color var(--transition-fast), color var(--transition-fast), background var(--transition-fast), transform var(--transition-fast);align-items:center;gap:7px;padding:5px 13px 5px 10px;font-size:14px;display:inline-flex}.planner-pill:hover{border-color:var(--course-tone)}@supports (color:color-mix(in lab, red, red)){.planner-pill:hover{border-color:color-mix(in srgb, var(--course-tone) 42%, var(--hairline))}}.planner-pill:active{transform:scale(.97)}.planner-pill[aria-pressed=true]{border-color:var(--course-tone)}@supports (color:color-mix(in lab, red, red)){.planner-pill[aria-pressed=true]{border-color:color-mix(in srgb, var(--course-tone) 30%, var(--border-hairline))}}.planner-pill-dot{background:var(--course-tone);width:8px;height:8px;transition:background var(--transition-fast);border-radius:50%}.planner-pill[aria-pressed=false]{color:var(--text-faint);background:0 0}.planner-pill[aria-pressed=false] .planner-pill-dot{background:var(--border-hairline)}.planner-alert{background:var(--shield-red);padding:10px 14px}@supports (color:color-mix(in lab, red, red)){.planner-alert{background:color-mix(in srgb, var(--shield-red) 7%, white)}}.planner-alert{border:1px solid var(--shield-red)}@supports (color:color-mix(in lab, red, red)){.planner-alert{border:1px solid color-mix(in srgb, var(--shield-red) 22%, white)}}.planner-alert{border-radius:var(--radius-md);color:var(--shield-red-deep);font-size:14px}.planner-daybar{display:none}.planner-daychip{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast);flex-direction:column;align-items:center;gap:1px;padding:7px 2px;display:flex}.planner-daychip small{letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);font-size:10px;font-weight:600}.planner-daychip b{font-variant-numeric:var(--num);font-size:15px;font-weight:600}.planner-daychip[data-today=true] b{color:var(--color-primary)}.planner-daychip[aria-current=date]{background:var(--color-primary);border-color:var(--color-primary)}.planner-daychip[aria-current=date] small,.planner-daychip[aria-current=date] b{color:var(--color-on-primary)}.planner-frame{--planner-gutter:68px;--planner-row:56px;--planner-line:var(--hairline)}@supports (color:color-mix(in lab, red, red)){.planner-frame{--planner-line:color-mix(in srgb, var(--hairline) 62%, white)}}.planner-frame{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-xl);flex-direction:column;display:flex;overflow:hidden}.planner-head,.planner-ribbon,.planner-grid{grid-template-columns:var(--planner-gutter) repeat(7, minmax(0, 1fr));display:grid}.planner-head,.planner-ribbon{scrollbar-gutter:stable;overflow-y:auto}.planner-head{border-bottom:1px solid var(--border-hairline)}.planner-zone{color:var(--text-faint);font-variant-numeric:var(--num);justify-content:center;align-items:center;font-size:11px;display:flex}.planner-headday{border-left:1px solid var(--border-hairline);flex-direction:column;align-items:center;gap:4px;padding:8px 4px;display:flex}.planner-headday small{letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin-inline-end:-.06em;font-size:11px;font-weight:600}.planner-headday b{font-family:var(--font-display);letter-spacing:-.02em;font-variant-numeric:var(--num);font-size:20px;font-weight:700;line-height:1}.planner-headday[data-today=true] small{color:var(--color-primary)}.planner-headday[data-today=true] b{background:var(--color-primary);width:34px;height:34px;color:var(--color-on-primary);font-family:var(--font-display);letter-spacing:-.01em;font-variant-numeric:normal;border-radius:50%;justify-content:center;align-items:center;margin:-3px auto;padding-top:1.5px;font-size:18.5px;font-weight:700;line-height:1;display:flex}.planner-ribbon{background:var(--paper);min-height:44px}@supports (color:color-mix(in lab, red, red)){.planner-ribbon{background:color-mix(in srgb, var(--paper) 55%, white)}}.planner-ribbon{border-bottom:1px solid var(--border-hairline)}.planner-ribbon-label{text-transform:uppercase;color:var(--text-faint);justify-content:flex-end;align-items:center;padding:0 8px;font-size:10px;font-weight:600;display:flex;overflow:hidden}.planner-ribbon-cell{border-left:1px solid var(--border-hairline);flex-direction:column;gap:3px;min-width:0;padding:6px 5px;display:flex}.planner-due{text-align:left;background:var(--course-tone);grid-template-columns:6px minmax(0,1fr);align-items:center;gap:0 7px;padding:5px 8px;display:grid}@supports (color:color-mix(in lab, red, red)){.planner-due{background:color-mix(in srgb, var(--course-tone) 12%, white)}}.planner-due{border:1px solid var(--course-tone)}@supports (color:color-mix(in lab, red, red)){.planner-due{border:1px solid color-mix(in srgb, var(--course-tone) 26%, white)}}.planner-due{border-radius:var(--radius-sm);cursor:pointer;transition:border-color var(--transition-fast), box-shadow var(--transition-fast)}.planner-due:hover{border-color:var(--course-tone)}@supports (color:color-mix(in lab, red, red)){.planner-due:hover{border-color:color-mix(in srgb, var(--course-tone) 52%, white)}}.planner-due:hover{box-shadow:var(--shadow-1)}.planner-due-dot{background:var(--course-tone);border-radius:50%;width:6px;height:6px}.planner-due-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--course-tone);font-size:12px;font-weight:600;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.planner-due-title{color:color-mix(in srgb, var(--course-tone) 38%, #0f172a)}}.planner-due small{text-overflow:ellipsis;white-space:nowrap;color:var(--course-tone);grid-column:2;font-size:11px;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.planner-due small{color:color-mix(in srgb, var(--course-tone) 26%, #334155)}}.planner-grid{max-height:min(58vh, calc(var(--planner-rows,13) * var(--planner-row)));scrollbar-gutter:stable;position:relative;overflow-y:auto}@keyframes planner-week{0%{opacity:0;transform:translate3d(calc(var(--planner-dir,0) * 30px), 0, 0)}to{opacity:1;transform:none}}.planner-frame[data-moved] .planner-head,.planner-frame[data-moved] .planner-ribbon,.planner-frame[data-moved] .planner-grid{animation:.26s cubic-bezier(.16,1,.3,1) planner-week}.planner-hours,.planner-col{height:calc(var(--planner-rows,13) * var(--planner-row));position:relative}.planner-hours span{color:var(--text-faint);font-variant-numeric:var(--num);font-size:11px;position:absolute;right:10px;transform:translateY(6px)}.planner-hours-now{z-index:1;border-radius:var(--radius-full);background:var(--shield-red);color:var(--white);font-variant-numeric:var(--num);transition:transform var(--duration-fast) var(--ease-spring);padding:1px 5px;font-size:10px;font-weight:600;position:absolute;right:6px;transform:translateY(-50%)}.planner-col{border-left:1px solid var(--border-hairline);background-image:repeating-linear-gradient(to bottom, var(--planner-line) 0 1px, transparent 1px var(--planner-row))}.planner-col[data-weekend=true]{background-color:var(--paper)}@supports (color:color-mix(in lab, red, red)){.planner-col[data-weekend=true]{background-color:color-mix(in srgb, var(--paper) 78%, white)}}.planner-col[data-today=true]{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.planner-col[data-today=true]{background-color:color-mix(in srgb, var(--color-primary) 4%, white)}}.planner-spent{z-index:0;transform-origin:top;height:100%;transform:scaleY(var(--planner-spent,0));background:var(--paper);inset-inline:0;position:absolute;top:0}@supports (color:color-mix(in lab, red, red)){.planner-spent{background:color-mix(in srgb, var(--paper) 68%, transparent)}}.planner-spent{pointer-events:none;transition:transform .6s cubic-bezier(.2,0,0,1)}.planner-slot{z-index:1;width:100%;height:var(--planner-row);color:var(--color-primary);opacity:0;cursor:pointer;transition:opacity var(--transition-fast), background var(--transition-fast);background:0 0;border:0;justify-content:center;align-items:center;display:flex;position:relative}.planner-slot:hover,.planner-slot:focus-visible{opacity:1;background:var(--color-primary-wash)}.planner-slot svg{transition:transform var(--transition-fast);transform:scale(.7)}.planner-slot:hover svg,.planner-slot:focus-visible svg{transform:none}.planner-block{z-index:2;background:var(--course-tone);grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:5px;padding:5px 7px;display:grid;position:absolute;overflow:hidden;container-type:size}@supports (color:color-mix(in lab, red, red)){.planner-block{background:color-mix(in srgb, var(--course-tone) 13%, white)}}.planner-block{border:1px solid var(--course-tone)}@supports (color:color-mix(in lab, red, red)){.planner-block{border:1px solid color-mix(in srgb, var(--course-tone) 38%, white)}}.planner-block{border-radius:var(--radius-md);transition:box-shadow var(--transition-fast), border-color var(--transition-fast);box-shadow:0 1px 2px #0f172a0d}.planner-block:hover{box-shadow:var(--shadow-1);border-color:var(--course-tone)}@supports (color:color-mix(in lab, red, red)){.planner-block:hover{border-color:color-mix(in srgb, var(--course-tone) 62%, white)}}.planner-block[data-done=true] .planner-block-open{opacity:.5}.planner-block[data-done=true] .planner-block-open strong{text-decoration:line-through}.planner-check{background:var(--white);border:1.5px solid var(--course-tone);place-items:center;width:14px;height:14px;margin-top:2px;padding:0;display:grid}@supports (color:color-mix(in lab, red, red)){.planner-check{border:1.5px solid color-mix(in srgb, var(--course-tone) 55%, white)}}.planner-check{color:var(--color-on-primary);cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast);border-radius:50%}.planner-check span{place-items:center;display:grid}.planner-block-remove{border-radius:var(--radius-xs);width:15px;height:15px;color:var(--course-tone);background:0 0;border:0;place-items:center;margin-top:1px;padding:0;display:grid}@supports (color:color-mix(in lab, red, red)){.planner-block-remove{color:color-mix(in srgb, var(--course-tone) 46%, #334155)}}.planner-block-remove{cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast), opacity var(--transition-fast)}.planner-block-remove:hover{background:var(--shield-red)}@supports (color:color-mix(in lab, red, red)){.planner-block-remove:hover{background:color-mix(in srgb, var(--shield-red) 12%, transparent)}}.planner-block-remove:hover{color:var(--shield-red)}@media (hover:hover){.planner-block-remove{opacity:0}.planner-block:hover .planner-block-remove,.planner-block-remove:focus-visible{opacity:1}}@container (max-width:104px){.planner-block-remove{display:none}}.planner-block[data-done=true] .planner-check{background:var(--course-tone);border-color:var(--course-tone)}.planner-block-open{text-align:left;cursor:pointer;min-width:0;transition:opacity var(--transition-base);background:0 0;border:0;flex-direction:column;gap:1px;padding:0;display:flex}.planner-block-open strong,.planner-block-open small{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.planner-block-open strong{color:var(--course-tone);font-size:12px;font-weight:600;line-height:1.25}@supports (color:color-mix(in lab, red, red)){.planner-block-open strong{color:color-mix(in srgb, var(--course-tone) 38%, #0f172a)}}.planner-block-open small{font-variant-numeric:var(--num);color:var(--course-tone);font-size:11px;line-height:1.2}@supports (color:color-mix(in lab, red, red)){.planner-block-open small{color:color-mix(in srgb, var(--course-tone) 26%, #334155)}}@container (max-width:104px){.planner-block-open small{display:none}}@container (min-height:74px){.planner-block-open strong,.planner-block-open small{white-space:normal}}.planner-now{z-index:3;border-top:2px solid var(--shield-red);pointer-events:none;height:0;position:absolute;left:0;right:0}.planner-now:before{content:"";background:var(--shield-red);border-radius:50%;width:8px;height:8px;position:absolute;top:-5px;left:-3px}.planner-blank{z-index:4;padding:56px var(--space-lg) var(--space-lg);pointer-events:none;background:linear-gradient(#ffffff80 0%,#fffc 46%);align-content:start;justify-items:center;animation:.24s cubic-bezier(.16,1,.3,1) planner-blank;display:grid;position:absolute;inset:0}@keyframes planner-blank{0%{opacity:0}to{opacity:1}}.planner-blank>div{align-items:center;gap:var(--space-sm);max-width:46ch;padding:var(--space-lg) var(--space-xl);text-align:center;pointer-events:auto;background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);flex-direction:column;display:flex}.planner-blank strong{font-family:var(--font-display);letter-spacing:-.01em;font-size:21px;font-weight:700}.planner-blank p{color:var(--text-muted);font-size:14px;line-height:1.55}.planner-dialog{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-xl);width:min(540px,100vw - 32px);max-height:calc(100dvh - 48px);box-shadow:var(--shadow-2);color:var(--text-body);margin:auto;padding:0}.planner-dialog::backdrop{background:#0f172a80}@media (min-width:768px){.planner-dialog::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172a66}}.planner-dialog form{gap:var(--space-sm);padding:var(--space-lg);flex-direction:column;display:flex}.planner-dialog header{justify-content:space-between;align-items:center;gap:var(--space-md);display:flex}.planner-dialog h2{font-family:var(--font-display);letter-spacing:-.015em;font-size:23px;font-weight:700}.planner-dialog header button{border:1px solid var(--border-hairline);border-radius:var(--radius-md);width:30px;height:30px;color:var(--text-muted);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;place-items:center;display:grid}.planner-dialog header button:hover{background:var(--canvas-soft);color:var(--text-body)}.planner-dialog label{min-width:0;color:var(--text-secondary);flex-direction:column;gap:5px;font-size:14px;font-weight:500;display:flex}.planner-dialog input,.planner-dialog select,.planner-dialog textarea{background:var(--canvas);border:1px solid var(--border-control);border-radius:var(--radius-md);width:100%;color:var(--text-body);padding:8px 10px;font-size:15px;font-weight:400}.planner-dialog textarea{resize:vertical}.planner-dialog-row{gap:var(--space-sm);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.planner-dialog-row.three{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr)}.planner-dialog-error{background:var(--shield-red);padding:8px 10px}@supports (color:color-mix(in lab, red, red)){.planner-dialog-error{background:color-mix(in srgb, var(--shield-red) 7%, white)}}.planner-dialog-error{border-radius:var(--radius-md);color:var(--shield-red-deep);font-size:14px}.planner-dialog footer{justify-content:flex-end;align-items:center;gap:var(--space-xs);margin-top:var(--space-xxs);display:flex}.planner-dialog footer button{border-radius:var(--radius-full);cursor:pointer;height:36px;transition:background var(--transition-fast), color var(--transition-fast);padding:0 16px;font-size:14px;font-weight:500}.planner-dialog-delete{border:1px solid var(--border-hairline);color:var(--shield-red-deep);background:0 0;align-items:center;gap:6px;margin-right:auto;display:inline-flex}.planner-dialog-delete:hover{background:var(--shield-red)}@supports (color:color-mix(in lab, red, red)){.planner-dialog-delete:hover{background:color-mix(in srgb, var(--shield-red) 7%, white)}}.planner-dialog-cancel{border:1px solid var(--border-hairline);color:var(--text-secondary);background:0 0}.planner-dialog-cancel:hover{background:var(--canvas-soft)}.planner-dialog-save{background:var(--color-primary);color:var(--color-on-primary);border:0}.planner-dialog-save:hover{background:var(--color-primary-active)}.planner-dialog-save:disabled{opacity:.6;cursor:progress}.planner :focus-visible,.planner-dialog :focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.field-hint{color:var(--text-faint);font-size:12px;font-weight:400;line-height:1.4}.resources-hub{gap:var(--space-xxl);display:grid}.portal-main>.resources-hub>.page-head{margin-bottom:0}.res-top{gap:var(--space-sm);display:grid}.library-panel{gap:var(--space-xl);padding:var(--space-xl) var(--space-lg);background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-xl);grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);display:grid}.library-lead{gap:var(--space-xs);align-content:start;display:grid}.library-icon{margin-bottom:var(--space-xxs);border-radius:var(--radius-md);background:var(--color-primary-wash);width:46px;height:46px;color:var(--color-primary);place-items:center;display:inline-grid}.library-panel h2{letter-spacing:-.02em;text-wrap:balance;font-size:clamp(23px,2.6vw,30px);line-height:1.15}.library-panel p{max-width:52ch;color:var(--text-muted);font-size:15px;line-height:1.5}.library-cta{justify-self:start;align-items:center;gap:var(--space-xs);margin-top:var(--space-xs);min-height:44px;padding:0 var(--space-lg);background:var(--color-primary);border-radius:var(--radius-full);color:var(--color-on-primary);transition:background var(--transition-fast);font-size:15px;font-weight:500;display:inline-flex}.library-cta:hover{background:var(--color-primary-active);color:var(--color-on-primary)}.library-points{padding:0 0 0 var(--space-xl);gap:var(--space-sm);border-left:1px solid var(--border-hairline);align-content:center;margin:0;list-style:none;display:grid}.library-points li{align-items:flex-start;gap:var(--space-xs);color:var(--text-secondary);font-size:14.5px;line-height:1.5;display:flex}.library-points svg{color:var(--academic-teal);flex:none;margin-top:4px}.mobile-strip{align-items:center;gap:var(--space-sm) var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--canvas-soft);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);flex-wrap:wrap;display:flex}.mobile-strip-icon{border-radius:var(--radius-md);background:var(--surface-card);border:1px solid var(--border-hairline);width:34px;height:34px;color:var(--text-secondary);flex:none;place-items:center;display:inline-grid}.mobile-strip-text{flex:200px;gap:1px;display:grid}.mobile-strip-text b{font-size:14.5px;font-weight:600}.mobile-strip-text small{color:var(--text-muted);font-size:12.5px;line-height:1.45}.mobile-strip .store-badges{gap:var(--space-xs)}.mobile-strip .store-badge,.mobile-strip .store-badge img{height:30px}.mobile-strip-action{min-height:44px;padding:0 var(--space-sm);border-radius:var(--radius-md);color:var(--color-primary);transition:background var(--transition-fast);align-items:center;gap:6px;font-size:14.5px;font-weight:600;display:inline-flex}.mobile-strip-action:hover{background:var(--color-primary-wash);color:var(--color-primary)}.res-group{gap:var(--space-sm);display:grid}.res-group .section-title{margin-top:0}.res-group-count{color:var(--text-muted);font-size:14px;font-weight:600}.res-index{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));margin:0;padding:0;list-style:none;display:grid;overflow:hidden}.res-row{border-top:1px solid var(--border-hairline);border-left:1px solid var(--border-hairline);margin:-1px 0 0 -1px;display:flex}.res-row>a{align-items:center;gap:var(--space-sm);width:100%;min-height:64px;padding:12px var(--space-md);color:var(--text-body);transition:background var(--transition-fast);display:flex}.res-row>a:hover{background:var(--color-primary-wash);color:var(--text-body)}.res-row>a:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px;border-radius:0}.res-mark{flex:none;place-items:center;width:26px;height:26px;display:grid}.res-mark img{object-fit:contain;width:auto;height:22px}.brand-mark{object-fit:contain;flex:none;width:22px;height:22px}.brand-go{color:var(--text-faint);transition:color var(--transition-fast);flex:none}.res-row>a:hover .brand-go,.res-row>a:focus-visible .brand-go{color:var(--color-primary)}.res-body{flex:1;gap:2px;min-width:0;display:grid}.res-name{align-items:center;gap:var(--space-xs);min-width:0;display:flex}.res-name b{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:14.5px;font-weight:600;overflow:hidden}.res-body small{color:var(--text-muted);font-size:12.5px;line-height:1.45}.res-body small.res-host{font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.res-tag{border-radius:var(--radius-full);letter-spacing:.015em;white-space:nowrap;flex:none;padding:2px 8px;font-size:12px;font-weight:600}.res-tag.free{color:#004b25;color:lab(27.1585% -35.8804 18.6309);background:#d6f6e0;background:lab(94.2261% -13.9684 7.15902)}.res-tag.plan{color:#653e00;color:lab(30.1335% 17.0953 48.7876);background:#feedc9;background:lab(94.3657% 2.03729 19.5421)}.res-notes{gap:3px;margin:0;padding:0;list-style:none;display:grid}.res-notes li,.res-disclaimer{max-width:76ch;color:var(--text-muted);font-size:12.5px;line-height:1.55}@media (max-width:400px){.res-name{flex-wrap:wrap}.res-name b{white-space:normal}}.res-group-ubb .res-index{position:relative}.res-group-ubb .res-index:before{content:"";z-index:1;background:linear-gradient(90deg, var(--ubb-royal-blue) 0 40%, var(--shield-sky) 40% 64%, var(--shield-gold) 64% 84%, var(--shield-red) 84%);height:3px;position:absolute;inset:0 0 auto}.admin-head,.admin-row{gap:var(--space-md);padding:var(--space-sm) var(--space-md);grid-template-columns:minmax(0,1fr) 200px 220px;align-items:center;display:grid}.admin-row{border-top:1px solid var(--border-hairline)}.admin-row:first-of-type{border-top:0}.admin-row b,.admin-row small{display:block}.admin-row b{font-size:15px;font-weight:500}.admin-row small{color:var(--text-faint);overflow-wrap:anywhere;font-size:13px}.admin-row select{background:var(--surface-card);border:1px solid var(--border-control);border-radius:var(--radius-xs);min-height:34px;padding:4px 10px;font-size:14px}.role-chip{border-radius:var(--radius-full);letter-spacing:.125px;background:var(--canvas-soft);color:var(--text-secondary);justify-self:start;padding:4px 8px;font-size:12px;font-weight:600}.role-chip.owner{color:var(--academic-purple-deep);background:#8b5cf624}.role-chip.teacher{background:var(--color-primary-wash);color:var(--color-primary)}.role-chip.student{color:#047857;background:#10b9811f}.admin-periods{margin-bottom:var(--space-xl);background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);overflow:hidden}.admin-periods>div:first-child{padding:var(--space-md);border-bottom:1px solid var(--border-hairline)}.admin-periods h2{letter-spacing:-.01em;font-size:20px;line-height:1.35}.admin-periods p{color:var(--text-muted);margin-top:3px;font-size:14px;line-height:1.5}.admin-period-list article{align-items:center;gap:var(--space-md);min-height:68px;padding:10px var(--space-md);border-bottom:1px solid var(--border-hairline);grid-template-columns:minmax(0,1fr) auto minmax(150px,auto);display:grid}.admin-period-list article:last-child{border-bottom:0}.admin-period-list article>span:first-child{flex-direction:column;min-width:0;display:flex}.admin-period-list strong{font-size:15px}.admin-period-list small{color:var(--text-muted);font-size:13px}.admin-period-list .secondary-button{border-radius:var(--radius-md);justify-self:end;min-height:40px;padding:7px 14px;font-size:14px}.period-state{background:var(--canvas-soft);border-radius:var(--radius-full);color:var(--text-secondary);text-transform:capitalize;padding:4px 8px;font-size:12px;font-weight:600}.period-state.abierto{color:#047857;background:#10b9811f}.period-state.cerrado{color:#92400e;background:#f59e0b29}.period-archived-label{min-height:40px;color:var(--text-muted);justify-self:end;align-items:center;gap:6px;font-size:13px;font-weight:600;display:inline-flex}.admin-toolbar{margin-bottom:var(--space-md);justify-content:space-between;align-items:center;gap:var(--space-md);display:flex}.admin-search-box{align-items:center;width:100%;max-width:380px;display:flex;position:relative}.admin-search-icon{color:var(--text-faint);pointer-events:none;position:absolute;left:12px}.admin-search-input{background:var(--surface-card);border:1px solid var(--border-control);border-radius:var(--radius-sm);width:100%;min-height:38px;color:var(--text-body);outline:none;padding:6px 36px 6px 38px;font-size:14px;transition:border-color .15s,box-shadow .15s}.admin-search-input:focus{border-color:var(--ubb-royal-blue);box-shadow:0 0 0 2px var(--color-primary-wash)}.admin-search-clear{background:var(--canvas-soft);width:20px;height:20px;color:var(--text-faint);border-radius:var(--radius-full);cursor:pointer;border:none;justify-content:center;align-items:center;padding:0;transition:color .15s,background-color .15s;display:inline-flex;position:absolute;right:10px}.admin-search-clear:hover{background:var(--border-hairline);color:var(--ink)}.admin-pagination{justify-content:center;align-items:center;gap:var(--space-md);margin-top:var(--space-lg);padding-top:var(--space-sm);display:flex}.admin-page-btn{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-sm);min-height:34px;color:var(--ink);cursor:pointer;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:500;transition:background-color .15s,border-color .15s;display:inline-flex}.admin-page-btn:hover:not(:disabled){background:var(--canvas-soft);border-color:var(--text-faint)}.admin-page-btn:disabled{opacity:.4;cursor:not-allowed}.admin-page-info{color:var(--text-secondary);font-size:13px}.admin-page-info b{color:var(--ink)}.grades-view{gap:var(--space-lg);grid-template-columns:minmax(0,1fr) 320px;align-items:start;display:grid}.grades-closed{color:var(--text-muted);font-size:13px}.grades-teacher{gap:var(--space-md);flex-direction:column;display:flex}.grades-head,.grades-row{gap:var(--space-md);padding:var(--space-sm) var(--space-md);grid-template-columns:minmax(0,2fr) 84px 104px 104px minmax(148px,176px);align-items:center;display:grid}.grades-row{border-top:1px solid var(--border-hairline)}.grades-row:first-of-type{border-top:0}.grades-row b,.grades-row small{display:block}.grades-row b{font-size:15px;font-weight:500}.grades-row small{color:var(--text-faint);font-size:13px}.grades-weight,.grades-official{font-variant-numeric:var(--num);font-size:15px}.grades-official{font-weight:600}.grades-row input,.grades-editor input,.grades-matrix-row input{background:var(--surface-card);border:1px solid var(--border-control);border-radius:var(--radius-xs);font-variant-numeric:var(--num);width:100%;min-height:34px;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);padding:4px 8px;font-size:15px}.grades-row input:focus,.grades-editor input:focus,.grades-matrix-row input:focus{border-color:var(--color-primary);box-shadow:var(--shadow-focus);outline:none}.grades-row input:disabled{background:var(--canvas-soft);color:var(--text-faint);cursor:not-allowed}.grade-feedback-note{align-items:flex-start;gap:var(--space-sm);min-width:0;padding:var(--space-sm);background:var(--canvas-soft);border:1px solid var(--border-hairline);border-radius:var(--radius-md);color:var(--text-secondary);grid-column:1/-1;display:flex}.grade-feedback-note>svg{color:var(--color-primary);flex:none;margin-top:2px}.grade-feedback-note strong{color:var(--text-body);margin-bottom:3px;font-size:13px;font-weight:600;display:block}.grade-feedback-note p{overflow-wrap:anywhere;text-wrap:pretty;white-space:pre-wrap;font-size:14px;line-height:1.5}.grades-submission{gap:var(--space-xxs);flex-direction:column;min-width:0;display:flex}.grades-attach{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-md);min-height:32px;color:var(--text-body);cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast);justify-content:center;align-self:start;align-items:center;gap:6px;padding:4px 12px;font-size:13px;font-weight:500;display:inline-flex}.grades-attach:hover{background:var(--canvas-soft);border-color:var(--color-primary)}.grades-attach:focus-visible{border-color:var(--color-primary);box-shadow:var(--shadow-focus);outline:none}.grades-receipt{gap:var(--space-xxs);flex-direction:column;align-items:flex-start;min-width:0;display:flex}.grades-receipt b{max-width:100%;color:var(--text-body);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;font-size:13px;font-weight:500;display:flex;overflow:hidden}.grades-receipt b svg{color:var(--academic-emerald);flex:none}@supports (color:color-mix(in lab, red, red)){.grades-receipt b svg{color:color-mix(in srgb, var(--academic-emerald) 30%, var(--ink-900))}}.grades-receipt small{color:var(--text-faint);font-size:12px}.grades-upload{flex-direction:column;gap:6px;display:flex}.grades-upload-track{border-radius:var(--radius-full);background:var(--canvas-soft);height:3px;overflow:hidden}.grades-upload-fill{border-radius:inherit;background:var(--color-primary);transform-origin:0;width:100%;height:100%;transition:transform var(--transition-base);display:block}.grades-upload small{color:var(--text-muted);font-size:12px}@media (prefers-reduced-motion:reduce){.grades-upload-fill,.grades-attach{transition:none}}.grades-summary{gap:var(--space-md);padding:var(--space-lg);background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-xl);flex-direction:column;display:flex}.grades-average{align-items:center;gap:var(--space-md);display:flex}.grades-average>strong{font-family:var(--font-display);font-variant-numeric:var(--num);letter-spacing:-.02em;color:var(--color-primary);font-size:46px;font-weight:700;line-height:1}.grades-average>div{flex-direction:column;gap:2px;display:flex}.grades-average h3{font-size:16px;font-weight:600}.grades-average p{color:var(--text-muted);font-size:13px}.grades-targets{flex-direction:column;margin:0;display:flex}.grades-target{padding:var(--space-sm) 0;border-top:1px solid var(--border-hairline);flex-direction:column;gap:2px;display:flex}.grades-target:first-child{border-top:0}.grades-target dt{letter-spacing:.125px;text-transform:uppercase;color:var(--text-muted);font-size:12px;font-weight:600}.grades-target dd{color:var(--text-body);margin:0;font-size:15px;line-height:1.4}.grades-target.secured dd{color:#047857}.grades-target.impossible dd{color:var(--shield-red-deep)}.grades-note{color:var(--text-faint);font-size:13px;line-height:1.5}.grades-editor{gap:var(--space-sm);padding:var(--space-lg);background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-xl);flex-direction:column;display:flex}.grades-editor-row{gap:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid var(--border-hairline);grid-template-columns:minmax(0,2fr) 110px 160px auto;align-items:end;display:grid}.grades-editor-row:first-child{border-top:0;padding-top:0}.grades-editor label{letter-spacing:.125px;text-transform:uppercase;color:var(--text-muted);flex-direction:column;gap:6px;font-size:12px;font-weight:600;display:flex}.remove-row{border:1px solid var(--border-hairline);border-radius:var(--radius-md);min-height:34px;color:var(--text-secondary);transition:background var(--transition-fast), color var(--transition-fast);padding:4px 14px;font-size:14px}.remove-row:hover{color:var(--shield-red-deep);background:#e31b2314;border-color:#e31b2340}.grades-editor-foot{align-items:end;gap:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid var(--border-hairline);flex-wrap:wrap;display:flex}.grades-editor-foot label{flex:0 0 160px}.weight-total{border-radius:var(--radius-full);color:#92400e;letter-spacing:.125px;background:#f59e0b26;margin-right:auto;padding:4px 8px;font-size:12px;font-weight:600}.weight-total.ok{color:#047857;background:#10b9811f}.grades-matrix{overflow-x:auto}.grades-matrix-head,.grades-matrix-row{align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-md);min-width:max-content;display:flex}.grades-matrix-row{border-top:1px solid var(--border-hairline)}.grades-matrix-head>span,.grades-matrix-row>span{flex:0 0 110px}.grades-matrix-head>span:first-child,.grades-matrix-row>span:first-child{flex:0 0 220px}.grades-matrix-row b,.grades-matrix-row small{display:block}.grades-matrix-head>.grade-column,.grades-matrix-row>.grade-cell{flex-basis:142px}.grade-cell{grid-template-columns:minmax(0,1fr) 34px;align-items:center;gap:6px;display:grid}.grade-feedback-action{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-md);width:34px;height:34px;color:var(--text-muted);cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);place-items:center;display:grid}.grade-feedback-action:hover,.grade-feedback-action.has-feedback{background:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.grade-feedback-action:hover,.grade-feedback-action.has-feedback{background:color-mix(in srgb, var(--color-primary) 6%, white)}}.grade-feedback-action:hover,.grade-feedback-action.has-feedback{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.grade-feedback-action:hover,.grade-feedback-action.has-feedback{border-color:color-mix(in srgb, var(--color-primary) 45%, var(--border-hairline))}}.grade-feedback-action:hover,.grade-feedback-action.has-feedback{color:var(--color-primary)}.grade-feedback-action:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.grade-feedback-action:disabled{background:var(--canvas-soft);border-color:var(--border-hairline);color:var(--text-faint);cursor:not-allowed;opacity:.65}.grade-feedback-context{padding:var(--space-sm);background:var(--canvas-soft);border:1px solid var(--border-hairline);border-radius:var(--radius-md);flex-direction:column;gap:2px;display:flex}.grade-feedback-context strong{color:var(--text-body);font-size:15px;font-weight:600}.grade-feedback-context span,.grade-feedback-meta{color:var(--text-muted);font-size:13px}.grade-feedback-dialog textarea{min-height:168px;line-height:1.5}.grade-feedback-meta{justify-content:space-between;align-items:center;gap:var(--space-sm);display:flex}@media (hover:none){.grade-feedback-action{width:44px;height:44px}.grade-cell{grid-template-columns:minmax(0,1fr) 44px}}.grades-matrix-row b{font-size:15px;font-weight:500}.grades-matrix-row small{color:var(--text-faint);overflow-wrap:anywhere;font-size:12px}.communications-center{gap:var(--space-md);min-width:0;display:grid}.portal-main>.communications-center>.page-head{margin-bottom:0}.communications-heading{align-items:center}.communications-heading p{text-wrap:pretty;max-width:68ch}.communications-summary{min-width:96px;padding:10px var(--space-md);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);background:var(--surface-card);text-align:center;justify-content:center;align-items:center;gap:0}.communications-summary>span{font-family:var(--font-display);font-size:24px;font-weight:700;line-height:1}.communications-summary small{color:var(--text-muted);font-size:12px}.communications-toolbar{justify-content:space-between;align-items:center;gap:var(--space-md);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);background:var(--surface-card);padding:6px;display:flex}.communications-tabs{border-radius:var(--radius-md);background:var(--canvas-soft);align-items:center;gap:4px;padding:3px;display:flex}.communications-tabs button{min-height:44px;padding:0 var(--space-md);color:var(--text-muted);transition:background var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);border-radius:6px;justify-content:center;align-items:center;gap:7px;font-size:14px;font-weight:600;display:inline-flex}.communications-tabs button[aria-selected=true]{background:var(--surface-card);color:var(--color-primary);box-shadow:0 1px 3px #0f172a14}.communications-tab-count{border-radius:var(--radius-full);background:var(--color-primary);min-width:20px;height:20px;color:var(--color-on-primary);place-items:center;padding:0 5px;font-size:11px;line-height:1;display:inline-grid}.communications-read-all{min-height:44px;padding:0 var(--space-md);border-radius:var(--radius-md);color:var(--color-primary);transition:background var(--transition-fast);justify-content:center;align-items:center;gap:7px;font-size:14px;font-weight:600;display:inline-flex}.communications-read-all:hover{background:var(--color-primary-wash)}.communications-feedback,.communications-error{padding:10px var(--space-md);border-radius:var(--radius-md);margin:0;font-size:14px;line-height:1.45}.communications-feedback:empty{display:none}.communications-feedback{border:1px solid var(--academic-emerald)}@supports (color:color-mix(in lab, red, red)){.communications-feedback{border:1px solid color-mix(in srgb, var(--academic-emerald) 35%, var(--border-hairline))}}.communications-feedback{background:var(--academic-emerald)}@supports (color:color-mix(in lab, red, red)){.communications-feedback{background:color-mix(in srgb, var(--academic-emerald) 7%, var(--surface-card))}}.communications-feedback{color:var(--text-secondary)}.communications-error{border:1px solid var(--shield-red)}@supports (color:color-mix(in lab, red, red)){.communications-error{border:1px solid color-mix(in srgb, var(--shield-red) 35%, var(--border-hairline))}}.communications-error{background:var(--shield-red)}@supports (color:color-mix(in lab, red, red)){.communications-error{background:color-mix(in srgb, var(--shield-red) 6%, var(--surface-card))}}.communications-error{color:var(--shield-red-deep)}.communications-panel{outline-offset:4px;min-width:0}.announcement-list,.conversation-list,.message-list{margin:0;padding:0;list-style:none}.announcement-list{border:1px solid var(--border-hairline);border-radius:var(--radius-xl);background:var(--surface-card);overflow:hidden}.announcement-list li+li{border-top:1px solid var(--border-hairline)}.announcement-row{align-items:center;gap:var(--space-md);width:100%;min-height:82px;padding:14px var(--space-lg);color:var(--text-body);text-align:left;transition:background var(--transition-fast);grid-template-columns:44px minmax(0,1fr) auto;display:grid;position:relative}.announcement-row:hover{background:var(--canvas-soft)}.announcement-row[data-unread=true]{background:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.announcement-row[data-unread=true]{background:color-mix(in srgb, var(--color-primary) 4%, var(--surface-card))}}.announcement-row[data-unread=true]:hover{background:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.announcement-row[data-unread=true]:hover{background:color-mix(in srgb, var(--color-primary) 7%, var(--surface-card))}}.announcement-icon{border-radius:var(--radius-md);background:var(--course-tone);place-items:center;width:44px;height:44px;display:inline-grid}@supports (color:color-mix(in lab, red, red)){.announcement-icon{background:color-mix(in srgb, var(--course-tone) 13%, var(--surface-card))}}.announcement-icon{color:var(--course-tone)}@supports (color:color-mix(in lab, red, red)){.announcement-icon{color:color-mix(in srgb, var(--course-tone) 65%, var(--text-body))}}.announcement-copy{gap:4px;min-width:0;display:grid}.announcement-meta{align-items:center;gap:5px var(--space-sm);color:var(--text-muted);flex-wrap:wrap;font-size:12px;display:flex}.announcement-meta strong{color:var(--course-tone)}@supports (color:color-mix(in lab, red, red)){.announcement-meta strong{color:color-mix(in srgb, var(--course-tone) 46%, var(--text-body))}}.announcement-meta strong{font-weight:700}.announcement-meta>span{padding-left:var(--space-sm);border-left:1px solid var(--border-hairline)}.announcement-title{color:var(--text-body);text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:650;line-height:1.4;overflow:hidden}.announcement-copy time{color:var(--text-faint);font-size:12px}.announcement-unread{border-radius:var(--radius-full);background:var(--color-primary);width:9px;height:9px;box-shadow:0 0 0 4px var(--color-primary-wash)}.communications-empty{justify-content:center;align-items:center;gap:var(--space-xs);min-height:280px;padding:var(--space-xl);border:1px dashed var(--border-hairline);border-radius:var(--radius-xl);background:var(--surface-card);text-align:center;flex-direction:column;display:flex}.communications-empty svg,.conversation-placeholder svg,.message-empty svg{color:var(--color-primary)}.communications-empty h2,.communications-empty h3,.conversation-placeholder h2{font-family:var(--font-display);letter-spacing:-.015em;font-size:20px}.communications-empty p,.conversation-placeholder p,.message-empty p{max-width:48ch;color:var(--text-muted);text-wrap:pretty;font-size:14px;line-height:1.55}.communications-empty.compact{min-height:220px;margin:var(--space-sm);padding:var(--space-lg);background:var(--canvas-soft);border:0}.communications-messages{border:1px solid var(--border-hairline);border-radius:var(--radius-xl);background:var(--surface-card);grid-template-columns:minmax(280px,.88fr) minmax(0,1.45fr);min-height:590px;max-height:min(72vh,760px);display:grid;overflow:hidden}.conversation-list-panel{border-right:1px solid var(--border-hairline);background:var(--surface-card);flex-direction:column;min-width:0;display:flex}.conversation-list-heading{justify-content:space-between;align-items:flex-start;gap:var(--space-md);padding:var(--space-lg);border-bottom:1px solid var(--border-hairline);display:flex}.conversation-list-heading h2{font-family:var(--font-display);letter-spacing:-.015em;font-size:19px}.conversation-list-heading p{color:var(--text-muted);margin-top:3px;font-size:12.5px;line-height:1.45}.conversation-list-heading>span{border-radius:var(--radius-full);background:var(--canvas-soft);min-width:28px;height:28px;color:var(--text-secondary);place-items:center;padding:0 7px;font-size:12px;font-weight:700;display:inline-grid}.conversation-list{overscroll-behavior:contain;flex:auto;min-height:0;overflow-y:auto}.conversation-list li+li{border-top:1px solid var(--border-hairline)}.conversation-row{align-items:center;gap:var(--space-sm);width:100%;min-height:84px;padding:12px var(--space-md);color:var(--text-body);text-align:left;transition:background var(--transition-fast);grid-template-columns:42px minmax(0,1fr) auto;display:grid}.conversation-row:hover,.conversation-row[data-active=true]{background:var(--canvas-soft)}.conversation-row[data-active=true]{box-shadow:inset 3px 0 0 var(--color-primary)}.conversation-row[data-unread=true] .conversation-copy>strong,.conversation-row[data-unread=true] .conversation-copy>span{color:var(--text-body);font-weight:700}.conversation-avatar{border:1px solid var(--course-tone);place-items:center;width:42px;height:42px;display:inline-grid}@supports (color:color-mix(in lab, red, red)){.conversation-avatar{border:1px solid color-mix(in srgb, var(--course-tone) 30%, var(--border-hairline))}}.conversation-avatar{border-radius:var(--radius-full);background:var(--course-tone)}@supports (color:color-mix(in lab, red, red)){.conversation-avatar{background:color-mix(in srgb, var(--course-tone) 12%, var(--surface-card))}}.conversation-avatar{color:var(--course-tone)}@supports (color:color-mix(in lab, red, red)){.conversation-avatar{color:color-mix(in srgb, var(--course-tone) 65%, var(--text-body))}}.conversation-avatar{font-size:14px;font-weight:750}.conversation-copy{gap:2px;min-width:0;display:grid}.conversation-copy>strong,.conversation-copy>small,.conversation-copy>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.conversation-copy>strong{font-size:14px;font-weight:650}.conversation-copy>small{color:var(--text-faint);font-size:11.5px}.conversation-copy>span{color:var(--text-muted);font-size:12.5px}.conversation-unread{border-radius:var(--radius-full);background:var(--color-primary);width:8px;height:8px}.conversation-panel{background:var(--canvas-soft);grid-template-rows:auto minmax(0,1fr) auto;min-width:0;min-height:0;display:grid}.conversation-heading{align-items:center;gap:var(--space-sm);min-width:0;min-height:78px;padding:14px var(--space-lg);border-bottom:1px solid var(--border-hairline);background:var(--surface-card);display:flex}.conversation-heading-mark{border-radius:var(--radius-full);background:var(--course-tone);flex:0 0 4px;width:4px;height:38px}.conversation-heading>div{min-width:0}.conversation-heading h2,.conversation-heading p{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.conversation-heading h2{font-family:var(--font-display);letter-spacing:-.012em;font-size:18px}.conversation-heading p{color:var(--text-muted);margin-top:3px;font-size:12.5px}.conversation-back{border-radius:var(--radius-md);width:44px;height:44px;color:var(--text-secondary);flex:0 0 44px;place-items:center;display:none}.message-history{overscroll-behavior:contain;min-height:0;padding:var(--space-lg);scrollbar-gutter:stable;overflow-y:auto}.message-list{gap:var(--space-sm);flex-direction:column;display:flex}.message-list li{justify-content:flex-start;display:flex}.message-list li.own{justify-content:flex-end}.message-bubble{border:1px solid var(--border-hairline);border-radius:4px var(--radius-lg) var(--radius-lg) var(--radius-lg);background:var(--surface-card);gap:5px;max-width:min(76%,620px);padding:11px 13px;display:grid;box-shadow:0 1px 2px #0f172a0a}.own .message-bubble{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.own .message-bubble{border-color:color-mix(in srgb, var(--color-primary) 22%, var(--border-hairline))}}.own .message-bubble{border-radius:var(--radius-lg) 4px var(--radius-lg) var(--radius-lg);background:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.own .message-bubble{background:color-mix(in srgb, var(--color-primary) 7%, var(--surface-card))}}.message-bubble strong{color:var(--text-secondary);font-size:11.5px;font-weight:700}.message-bubble p{overflow-wrap:anywhere;color:var(--text-body);white-space:pre-wrap;font-size:14px;line-height:1.5}.message-bubble time{color:var(--text-faint);justify-self:end;font-size:10.5px}.message-loading,.message-empty,.conversation-placeholder{justify-content:center;align-items:center;gap:var(--space-xs);height:100%;padding:var(--space-lg);color:var(--text-muted);text-align:center;flex-direction:column;display:flex}.message-loading{font-size:14px}.message-composer{align-items:end;gap:var(--space-xs) var(--space-sm);padding:12px var(--space-md) var(--space-md);border-top:1px solid var(--border-hairline);background:var(--surface-card);grid-template-columns:minmax(0,1fr) auto;display:grid}.message-composer>label{color:var(--text-secondary);grid-column:1/-1;font-size:12px;font-weight:700}.message-composer-field{min-width:0;position:relative}.message-composer textarea{resize:vertical;border:1px solid var(--border-control);border-radius:var(--radius-md);background:var(--surface-card);width:100%;min-height:76px;max-height:180px;color:var(--text-body);font:inherit;padding:10px 12px 26px;font-size:15px;line-height:1.45}.message-composer textarea:focus{border-color:var(--color-primary)}.message-composer-field>span{color:var(--text-faint);pointer-events:none;font-size:10.5px;position:absolute;bottom:7px;right:9px}.message-send{min-width:148px;min-height:44px;padding:0 var(--space-md);border-radius:var(--radius-full);background:var(--color-primary);color:var(--color-on-primary);transition:background var(--transition-fast), transform var(--transition-fast);justify-content:center;align-items:center;gap:7px;font-size:14px;font-weight:700;display:inline-flex}.message-send:hover:not(:disabled){background:var(--color-primary-active)}.message-send:active:not(:disabled){transform:translateY(1px)}.message-send:disabled{opacity:.56;cursor:wait}@media (max-width:880px){.communications-messages{grid-template-columns:minmax(250px,.78fr) minmax(0,1.22fr)}.message-bubble{max-width:88%}}@media (max-width:700px){.communications-toolbar{flex-direction:column;align-items:stretch}.communications-tabs{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.communications-read-all{width:100%}.communications-messages{min-height:min(640px, calc(100svh - var(--header-offset) - 220px));max-height:none;display:block}.communications-messages[data-conversation-open=false] .conversation-panel,.communications-messages[data-conversation-open=true] .conversation-list-panel{display:none}.conversation-list-panel,.conversation-panel{min-height:inherit;border-right:0;height:100%}.conversation-back{display:inline-grid}.conversation-heading{padding-inline:var(--space-sm)}.message-history{min-height:300px;padding:var(--space-md)}.message-composer{grid-template-columns:minmax(0,1fr)}.message-send{width:100%}}@media (max-width:520px){.communications-heading{align-items:stretch}.communications-summary{justify-content:flex-start;gap:var(--space-xs);text-align:left;flex-direction:row;min-width:0}.communications-summary>span{font-size:20px}.announcement-row{gap:var(--space-sm);padding:13px var(--space-sm);grid-template-columns:40px minmax(0,1fr) auto}.announcement-icon{width:40px;height:40px}.announcement-title{white-space:normal}.communications-tabs button{padding-inline:var(--space-xs)}.message-bubble{max-width:94%}}.empty-state{padding:var(--space-xl) var(--space-lg);background:var(--canvas-soft);border:1px solid var(--border-hairline);border-radius:var(--radius-md);text-align:left;flex-direction:column;gap:6px;display:flex}.empty-state strong{font-size:16px;font-weight:600}.empty-state p{max-width:68ch;color:var(--text-muted);font-size:15px;line-height:1.55}.empty-state-action{align-items:center;gap:var(--space-xs);min-height:44px;margin:var(--space-xs) 0 -4px -10px;border-radius:var(--radius-md);color:var(--color-primary);align-self:flex-start;padding:6px 10px;font-size:15px;font-weight:600;display:inline-flex}.empty-state-action:hover{background:var(--color-primary-wash);color:var(--color-primary)}.empty-row{padding:var(--space-md);color:var(--text-muted);font-size:15px}@media (max-width:1240px){.app-shell{grid-template-columns:240px minmax(0,1fr)}}@media (max-width:1100px){.course-grid{grid-template-columns:repeat(2,1fr)}.live-class-editor{grid-template-columns:minmax(0,1fr) auto}.live-class-editor-copy,.live-class-editor>.tool-status{grid-column:1/-1}.classroom-columns,.materials-view,.grades-view{grid-template-columns:minmax(0,1fr)}.library-panel{gap:var(--space-lg);grid-template-columns:minmax(0,1fr)}.library-points{padding:var(--space-lg) 0 0;border-top:1px solid var(--border-hairline);border-left:0}.planner-frame{--planner-gutter:54px}.teacher-tools{position:static}.resources-hub{gap:var(--space-xxl)}}@media (max-width:900px){.access-page{grid-template-rows:auto 1fr;grid-template-columns:1fr}.access-brand{min-height:30svh;padding:2.6rem 1.4rem}.access-brand:before{background-position:50% 24%;transform:scale(2)}.access-brand:after{background:linear-gradient(90deg, var(--ubb-royal-blue) 0 40%, var(--shield-sky) 40% 64%, var(--shield-gold) 64% 84%, var(--shield-red) 84%);width:auto;height:.32rem;inset:auto 0 0}.access-brand-lockup{gap:1rem}.access-brand-lockup>img{width:clamp(3.5rem,14vw,6rem)}.access-brand h1{font-size:clamp(1.9rem,11.5vw,3.2rem)}.access-panel{padding:2.2rem 1.4rem 2.4rem}.access-panel-inner{gap:1.4rem}.store-block{padding-top:1.25rem}.app-shell,.app-shell[data-sidebar=closed]{grid-template-columns:minmax(0,1fr);grid-template-areas:"header""main"}.app-sidebar{top:var(--header-offset);z-index:45;width:284px;max-width:84vw;box-shadow:var(--shadow-2);position:fixed;left:0}.app-shell[data-sidebar=open] .sidebar-scrim{inset:var(--header-offset) 0 0;z-index:44;background:#0f172a6b;border:0;display:block;position:fixed}.planner-daybar{grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;display:grid}.planner-frame{--planner-gutter:48px}.planner-head,.planner-ribbon,.planner-grid{grid-template-columns:var(--planner-gutter) minmax(0, 1fr)}.planner-headday:not([data-focus=true]),.planner-ribbon-cell:not([data-focus=true]),.planner-col:not([data-focus=true]){display:none}.planner-grid{max-height:min(64vh, calc(var(--planner-rows,13) * var(--planner-row)))}.page-head>.planner-controls{justify-content:space-between;width:100%}.planner-ribbon-label{visibility:hidden}}@media (max-width:560px){.mobile-strip .store-badges{flex-wrap:wrap}}@media (max-width:520px){.header-context-sep{display:none}}@media (min-width:768px) and (max-width:1000px){.header-search{border-radius:var(--radius-md);flex:0 0 38px;justify-content:center;min-width:0;padding:0}.header-search>span,.header-search kbd{display:none}}@media (max-width:767px){.app-brand strong{display:none}.app-brand{padding:6px}.header-search{flex:auto;min-width:0;height:40px}.header-search kbd{display:none}.rich-editor textarea{min-height:220px;font-size:16px}.rich-code pre{font-size:12.5px}}@media (max-width:800px){.account-copy{display:none}.course-grid,.people-grid{grid-template-columns:minmax(0,1fr)}.enrollment-import{padding:var(--space-md)}.enrollment-import-head,.enrollment-import-actions{flex-direction:column;align-items:stretch}.enrollment-template{align-self:flex-start}.enrollment-file-field{grid-template-columns:minmax(0,1fr)}.enrollment-file-name{grid-area:auto/1;max-width:none}.enrollment-import-actions .primary-button,.enrollment-import-actions .secondary-button{width:100%}.enrollment-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.enrollment-summary>div:nth-child(3){border-top:1px solid var(--border-hairline);border-left:0}.enrollment-summary>div:nth-child(4){border-top:1px solid var(--border-hairline)}.enrollment-pagination{grid-template-columns:repeat(2,minmax(0,1fr));width:100%;display:grid}.enrollment-pagination>span{grid-area:1/1/auto/-1;justify-self:center}.enrollment-pagination .secondary-button{width:100%;min-width:0;padding-inline:12px}.progress-table-head,.progress-table-row,.admin-head,.admin-row{grid-template-columns:minmax(0,1fr) auto}.progress-table-head span:last-child,.admin-head span:last-child{display:none}.progress-table-row span:last-child{color:var(--text-faint);grid-column:1/-1;font-size:13px}.admin-row span:last-child{grid-column:1/-1}}@media (max-width:700px){.next-strip{grid-template-columns:auto minmax(0,1fr)}.next-strip-end{grid-column:1/-1;justify-content:space-between}.next-strip-detail{white-space:normal}}@media (max-width:520px){.portal-main,.classroom-layout{padding:var(--space-md) var(--space-md) var(--space-xxl)}.live-class-banner{padding:var(--space-md);grid-template-columns:auto minmax(0,1fr)}.live-class-join{grid-column:1/-1;width:100%}.live-class-editor{grid-template-columns:minmax(0,1fr)}.live-class-editor-copy,.live-class-editor>.tool-status{grid-column:1}.live-class-actions{flex-direction:column;align-items:stretch}.unit-grid article,.post-list article,.material-row{grid-template-columns:minmax(0,1fr)}.unit-grid article>strong,.unit-check{justify-self:start}.material-actions{justify-content:flex-start}.personal-progress,.grades-average{flex-wrap:wrap;grid-template-columns:minmax(0,1fr)}.grades-head,.grades-row{grid-template-columns:minmax(0,1fr) 70px 70px}.grades-head span:nth-child(n+4),.grades-row span:nth-child(n+4){grid-column:1/-1}.grades-head span:nth-child(n+4){display:none}.grades-editor-row{grid-template-columns:minmax(0,1fr) 1fr}.grades-editor-row>label:first-child,.remove-row{grid-column:1/-1}.planner-frame{--planner-row:50px}.planner-blank>div{padding:var(--space-md)}.planner-dialog-row,.planner-dialog-row.three{grid-template-columns:minmax(0,1fr)}.planner-dialog footer{flex-wrap:wrap}.planner-dialog-delete{order:3;justify-content:center;width:100%;margin-right:0}.empty-state,.policy-page article{padding:var(--space-lg)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.academic-prose{min-width:0;color:var(--text-body);font-family:var(--font-core);overflow-wrap:anywhere;text-wrap:pretty;font-size:1rem;line-height:1.72}.academic-prose>:first-child{margin-top:0}.academic-prose>:last-child{margin-bottom:0}.academic-prose :where(h1,h2,h3,h4){color:var(--text-body);font-family:var(--font-display);letter-spacing:-.02em;text-wrap:balance;margin:1.65em 0 .65em;font-weight:700;line-height:1.24}.academic-prose h1{font-size:clamp(1.85rem,4vw,2.35rem)}.academic-prose h2{font-size:clamp(1.45rem,3vw,1.75rem)}.academic-prose h3{font-size:clamp(1.16rem,2.4vw,1.32rem)}.academic-prose h4{font-size:1.05rem}.academic-prose :where(p,ul,ol,blockquote,table,.academic-code-block,.katex-display){margin-block:1em}.academic-prose :where(ul,ol){padding-inline-start:1.5rem}.academic-prose li+li{margin-top:.35em}.academic-prose a{color:var(--text-link);text-underline-offset:.16em;font-weight:600;text-decoration-thickness:.08em}.academic-prose a:hover{color:var(--ubb-royal-blue-active)}.academic-prose a:focus-visible,.academic-prose .academic-code-copy:focus-visible{border-radius:var(--radius-xs);outline-offset:3px;outline:3px solid #0055b847}.academic-prose blockquote{padding:var(--space-sm) var(--space-lg);border-inline-start:3px solid var(--border-hairline);color:var(--text-secondary);background:var(--canvas-soft);margin-inline:0}.academic-prose :where(img,video){border-radius:var(--radius-md);max-width:100%;height:auto}.academic-prose table{border-collapse:collapse;border-spacing:0;font-variant-numeric:var(--num);-webkit-overflow-scrolling:touch;width:100%;max-width:100%;display:block;overflow-x:auto}.academic-prose :where(th,td){border:1px solid var(--border-hairline);text-align:start;vertical-align:top;min-width:8rem;padding:.7rem .8rem}.academic-prose th{color:var(--text-secondary);background:var(--canvas-soft);font-size:.84rem;font-weight:700}.academic-prose :where(.callout-notice,.callout-assessment){margin-block:var(--space-lg);padding:var(--space-md) var(--space-lg);border:1px solid var(--border-hairline);border-radius:var(--radius-md);border-inline-start-width:4px}.academic-prose .callout-notice{border-inline-start-color:var(--shield-gold);background:var(--shield-gold)}@supports (color:color-mix(in lab, red, red)){.academic-prose .callout-notice{background:color-mix(in srgb, var(--shield-gold) 10%, var(--surface-card))}}.academic-prose .callout-assessment{border-inline-start-color:var(--shield-red);background:var(--shield-red)}@supports (color:color-mix(in lab, red, red)){.academic-prose .callout-assessment{background:color-mix(in srgb, var(--shield-red) 7%, var(--surface-card))}}.academic-prose :where(.callout-notice,.callout-assessment)>:first-child{margin-top:0}.academic-prose :where(.callout-notice,.callout-assessment)>:last-child{margin-bottom:0}.academic-prose :not(pre)>code{border:1px solid var(--border-hairline);border-radius:var(--radius-xs);color:var(--shield-red-deep);background:var(--canvas-soft);font-family:var(--font-mono);padding:.15em .36em;font-size:.88em}.academic-code-block{border:1px solid var(--border-hairline);border-radius:var(--radius-lg);background:var(--surface-card);max-width:100%;box-shadow:var(--shadow-1);overflow:hidden}.academic-code-toolbar{justify-content:space-between;align-items:center;gap:var(--space-sm);border-bottom:1px solid var(--border-hairline);background:var(--canvas-soft);min-height:44px;padding-inline-start:var(--space-md);display:flex}.academic-code-language{color:var(--text-muted);font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;font-size:.75rem;font-weight:650}.academic-code-copy{min-width:88px;padding:0 var(--space-md);border:0;border-inline-start:1px solid var(--border-hairline);color:var(--text-secondary);font-family:var(--font-core);cursor:pointer;transition:color var(--transition-fast), background-color var(--transition-fast);background:0 0;align-self:stretch;font-size:.82rem;font-weight:700}.academic-code-copy:hover{color:var(--ubb-royal-blue-active);background:var(--color-primary-wash)}.academic-code-copy[data-copy-state=success]{color:var(--academic-teal)}.academic-code-copy[data-copy-state=error]{color:var(--shield-red-deep)}.academic-code-block pre{max-width:100%;color:var(--text-body);background:var(--surface-card);font-family:var(--font-mono);font-variant-ligatures:none;tab-size:2;-webkit-overflow-scrolling:touch;margin:0;padding:1.15rem 1.25rem 1.3rem;font-size:.88rem;line-height:1.65;overflow:auto}.academic-code-block code{font-family:inherit}.academic-prose .hljs-comment,.academic-prose .hljs-quote{color:var(--text-muted);font-style:italic}.academic-prose :where(.hljs-keyword,.hljs-selector-tag,.hljs-built_in,.hljs-type){color:var(--academic-purple-deep);font-weight:650}.academic-prose :where(.hljs-string,.hljs-attr,.hljs-symbol,.hljs-bullet){color:var(--academic-teal)}.academic-prose :where(.hljs-number,.hljs-literal){color:var(--shield-red-deep)}.academic-prose :where(.hljs-title,.hljs-section,.hljs-function .hljs-title){color:var(--ubb-royal-blue-active);font-weight:700}.academic-prose :where(.hljs-variable,.hljs-template-variable,.hljs-params){color:var(--academic-bronze)}.academic-prose .katex-display{max-width:100%;padding-block:var(--space-xs);-webkit-overflow-scrolling:touch;overflow:auto hidden}.academic-prose .katex{font-size:1.04em}.academic-copy-status{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}@media (max-width:600px){.academic-prose{font-size:.96rem}.academic-prose :where(.callout-notice,.callout-assessment){padding:var(--space-md)}.academic-code-block pre{padding:1rem;font-size:.82rem}.archived-course-row{grid-template-columns:4px minmax(0,1fr)}.archived-course-row button{grid-column:2;justify-self:start}.admin-period-list article{grid-template-columns:minmax(0,1fr) auto}.admin-period-list .secondary-button,.period-archived-label{grid-column:1/-1;justify-self:start}}@media print{.academic-code-toolbar{display:none}.academic-code-block{box-shadow:none}.academic-code-block pre,.academic-prose .katex-display,.academic-prose table{overflow:visible}}.teacher-manager{gap:var(--space-lg);display:grid}.teacher-manager-hero{justify-content:space-between;align-items:flex-end;gap:var(--space-xl);border-radius:var(--radius-xl);background:var(--ubb-midnight-navy);color:var(--text-on-dark);box-shadow:var(--shadow-2);padding:30px 32px;display:flex;overflow:hidden}.teacher-manager-hero>div{max-width:700px}.teacher-manager-kicker{color:var(--shield-sky);letter-spacing:.09em;text-transform:uppercase;align-items:center;gap:7px;margin-bottom:10px;font-size:12px;font-weight:700;display:inline-flex}.teacher-manager-hero h1{color:var(--text-on-dark);font-family:var(--font-display);letter-spacing:-.035em;margin:0;font-size:clamp(28px,4vw,42px);line-height:1.08}.teacher-manager-hero p{color:#ffffffc7;max-width:620px;margin:10px 0 0;font-size:15px;line-height:1.55}.teacher-create-trigger{background:var(--ubb-royal-blue);flex:none}.teacher-manager-status,.teacher-inline-error{min-height:20px;color:var(--text-secondary);margin:-8px 2px 0;font-size:13px;line-height:1.5}.teacher-inline-error{color:var(--shield-red-deep);margin:0}.teacher-manager-loading,.teacher-manager-empty{align-content:center;place-items:center;gap:var(--space-sm);min-height:260px;padding:var(--space-xxl);border:1px solid var(--border-hairline);border-radius:var(--radius-xl);background:var(--surface-card);color:var(--text-muted);text-align:center;display:grid}.teacher-manager-empty svg{color:var(--ubb-royal-blue)}.teacher-manager-empty strong{color:var(--text-body);font-family:var(--font-display);font-size:21px}.teacher-manager-empty p{margin:0 0 var(--space-xs)}.teacher-manager-layout{align-items:start;gap:var(--space-lg);grid-template-columns:minmax(220px,275px) minmax(0,1fr);display:grid}.teacher-course-list{top:calc(var(--header-offset) + var(--space-lg));padding:var(--space-xs);border:1px solid var(--border-hairline);border-radius:var(--radius-xl);background:var(--surface-card);box-shadow:var(--shadow-1);gap:4px;display:grid;position:sticky}.teacher-course-list-head{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;align-items:center;padding:10px 12px 12px;font-size:12px;font-weight:700;display:flex}.teacher-course-list-head b{border-radius:var(--radius-full);background:var(--canvas-soft);min-width:25px;min-height:25px;color:var(--text-secondary);place-items:center;display:grid}.teacher-course-list>button{border-radius:var(--radius-lg);min-height:66px;color:var(--text-secondary);text-align:left;transition:border-color var(--transition-fast), background-color var(--transition-fast);border:1px solid #0000;grid-template-columns:4px minmax(0,1fr);align-items:stretch;gap:11px;padding:9px 11px 9px 7px;display:grid}.teacher-course-list>button:hover{background:var(--canvas-soft)}.teacher-course-list>button.active{border-color:var(--course-tone)}@supports (color:color-mix(in lab, red, red)){.teacher-course-list>button.active{border-color:color-mix(in srgb, var(--course-tone) 32%, var(--border-hairline))}}.teacher-course-list>button.active{background:var(--course-tone)}@supports (color:color-mix(in lab, red, red)){.teacher-course-list>button.active{background:color-mix(in srgb, var(--course-tone) 7%, var(--surface-card))}}.teacher-course-list>button.active{color:var(--text-body)}.teacher-course-mark{border-radius:var(--radius-full);background:var(--course-tone)}.teacher-course-list>button>span:last-child{align-content:center;gap:4px;min-width:0;display:grid}.teacher-course-list strong,.teacher-course-list small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.teacher-course-list strong{font-size:14px}.teacher-course-list small{color:var(--text-muted);font-size:11px}.teacher-course-workspace{border:1px solid var(--border-hairline);border-radius:var(--radius-xl);background:var(--surface-card);min-width:0;box-shadow:var(--shadow-1);overflow:hidden}.teacher-course-heading{justify-content:space-between;align-items:center;gap:var(--space-lg);padding:24px 26px 20px;display:flex}.teacher-course-heading span,.teacher-form-heading span{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:700}.teacher-course-heading h2,.teacher-form-heading h2{font-family:var(--font-display);letter-spacing:-.025em;margin:4px 0 0;font-size:clamp(21px,2.5vw,28px)}.teacher-course-heading p{color:var(--text-muted);margin:5px 0 0;font-size:13px}.teacher-manager-tabs{border-bottom:1px solid var(--border-hairline);scrollbar-width:none;padding:0 26px;display:flex;overflow-x:auto}.teacher-manager-tabs::-webkit-scrollbar{display:none}.teacher-manager-tabs button{min-height:48px;color:var(--text-muted);white-space:nowrap;padding:0 17px;font-size:14px;font-weight:600;position:relative}.teacher-manager-tabs button:after{border-radius:var(--radius-full) var(--radius-full) 0 0;content:"";background:0 0;height:2px;position:absolute;bottom:-1px;left:17px;right:17px}.teacher-manager-tabs button.active{color:var(--ubb-royal-blue-active)}.teacher-manager-tabs button.active:after{background:var(--ubb-royal-blue)}.teacher-config-panel{gap:var(--space-lg);padding:26px;display:grid}.teacher-panel-intro{align-items:flex-start;gap:var(--space-sm);display:flex}.teacher-panel-intro>svg{color:var(--ubb-royal-blue);flex:none;margin-top:2px}.teacher-panel-intro h3{font-family:var(--font-display);margin:0;font-size:19px}.teacher-panel-intro p{color:var(--text-muted);margin:5px 0 0;font-size:14px;line-height:1.5}.teacher-create-form{gap:var(--space-lg);border:1px solid var(--border-hairline);border-radius:var(--radius-xl);background:var(--surface-card);box-shadow:var(--shadow-1);padding:24px 26px;display:grid}.teacher-form-heading{justify-content:space-between;align-items:flex-start;gap:var(--space-md);display:flex}.teacher-period-pill{border-radius:var(--radius-full);background:var(--color-primary-wash);white-space:nowrap;padding:6px 10px;color:var(--ubb-royal-blue-active)!important}.teacher-form-grid{gap:var(--space-md);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.teacher-form-grid label,.teacher-assistant-label{color:var(--text-secondary);letter-spacing:.035em;gap:7px;font-size:12px;font-weight:700;display:grid}.teacher-form-grid input,.teacher-form-grid select,.teacher-form-grid textarea,.teacher-assistant-form input{border:1px solid var(--border-hairline);border-radius:var(--radius-md);background:var(--surface-card);width:100%;min-height:44px;color:var(--text-body);font:500 14px/1.4 var(--font-core);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);outline:none;padding:10px 12px}.teacher-form-grid textarea{resize:vertical;min-height:108px}.teacher-form-grid input:focus,.teacher-form-grid select:focus,.teacher-form-grid textarea:focus,.teacher-assistant-form input:focus{border-color:var(--ubb-royal-blue);box-shadow:var(--shadow-focus)}.teacher-field-wide{grid-column:span 1}.teacher-field-full{grid-column:1/-1}.teacher-form-actions{justify-content:flex-end;align-items:center;gap:var(--space-sm);padding-top:var(--space-md);border-top:1px solid var(--border-hairline);display:flex}.teacher-form-actions p{min-height:20px;color:var(--text-secondary);margin:0 auto 0 0;font-size:13px}.teacher-config-panel .grades-editor{box-shadow:none;border:0;border-radius:0;padding:0}.grades-editor .remove-row{justify-content:center;align-items:center;gap:6px;display:inline-flex}.grades-editor .tool-status{min-height:20px;margin:0}.teacher-assistant-form{gap:7px;display:grid}.teacher-assistant-field{gap:var(--space-sm);display:flex}.teacher-assistant-form input{flex:auto}.teacher-assistant-form button{flex:none}.teacher-assistant-list{border-top:1px solid var(--border-hairline);display:grid}.teacher-assistant-list>div{align-items:center;gap:var(--space-sm);border-bottom:1px solid var(--border-hairline);grid-template-columns:40px minmax(0,1fr) auto;min-height:70px;display:grid}.teacher-assistant-list>div>span:nth-child(2){gap:3px;min-width:0;display:grid}.teacher-assistant-list strong,.teacher-assistant-list small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.teacher-assistant-list strong{font-size:14px}.teacher-assistant-list small{color:var(--text-muted);font-size:12px}.teacher-assistant-avatar{border-radius:var(--radius-full);background:var(--color-primary-wash);width:38px;height:38px;color:var(--ubb-royal-blue-active);place-items:center;font-size:12px;font-weight:700;display:grid}.teacher-remove-assistant{border-radius:var(--radius-md);min-height:44px;color:var(--text-muted);align-items:center;gap:6px;padding:7px 10px;font-size:13px;display:inline-flex}.teacher-remove-assistant:hover{color:var(--shield-red-deep);background:#e31b2314}.course-empty-state{align-content:center;place-items:center;gap:var(--space-sm);min-height:230px;padding:var(--space-xl);border:1px dashed var(--border-hairline);border-radius:var(--radius-xl);color:var(--text-muted);text-align:center;grid-column:1/-1;display:grid}.course-empty-state svg{color:var(--ubb-royal-blue)}.course-empty-state strong{color:var(--text-body);font-family:var(--font-display);font-size:18px}.course-empty-state p{margin:0}@media (max-width:900px){.teacher-manager-layout{grid-template-columns:1fr}.teacher-course-list{padding:var(--space-xs);scrollbar-width:thin;display:flex;position:static;overflow-x:auto}.teacher-course-list-head{display:none}.teacher-course-list>button{flex:0 0 min(250px,75vw)}.teacher-config-panel .grades-editor-row{grid-template-columns:minmax(0,1fr) 100px}.teacher-config-panel .grades-editor-row label:nth-child(3){grid-column:1/2}}@media (max-width:600px){.teacher-manager{gap:var(--space-md)}.teacher-manager-hero{flex-direction:column;align-items:stretch;padding:24px 20px}.teacher-create-trigger{width:100%}.teacher-course-heading,.teacher-form-heading,.teacher-form-actions{flex-direction:column;align-items:stretch}.teacher-course-heading,.teacher-config-panel,.teacher-create-form{padding:20px 16px}.teacher-course-heading .secondary-button,.teacher-form-actions button{width:100%}.teacher-manager-tabs{padding:0 5px}.teacher-manager-tabs button{flex:1 0 auto;padding-inline:12px}.teacher-manager-tabs button:after{left:12px;right:12px}.teacher-form-grid{grid-template-columns:1fr}.teacher-field-full{grid-column:auto}.teacher-form-actions p{margin-right:0}.teacher-assistant-field{flex-direction:column}.teacher-config-panel .grades-editor-row{grid-template-columns:1fr}.teacher-config-panel .grades-editor-row label:nth-child(3){grid-column:auto}.teacher-config-panel .grades-editor-foot{flex-direction:column;align-items:stretch}.teacher-config-panel .grades-editor-foot label{flex-basis:auto}.teacher-config-panel .weight-total{margin-right:0}.teacher-assistant-list>div{padding-block:var(--space-sm);grid-template-columns:38px minmax(0,1fr)}.teacher-remove-assistant{grid-column:2;justify-self:start}}.materials-title-actions,.moodle-import-dialog__footer,.moodle-import-result .secondary-button,.moodle-import-trigger{align-items:center;gap:var(--space-xs);display:flex}.materials-title-actions{flex-wrap:wrap;justify-content:flex-end}.moodle-import-trigger{white-space:nowrap;min-height:44px}.moodle-import-dialog{width:min(720px,100vw - 32px);max-height:min(820px,100dvh - 32px);color:var(--ink);border:1px solid var(--border-hairline);background:var(--surface-card);border-radius:20px;margin:auto;padding:0;overflow:hidden;box-shadow:0 24px 80px #0f172a38}.moodle-import-dialog::backdrop{background:#002b5c5c}.moodle-import-dialog__header,.moodle-import-dialog__footer{padding:var(--space-lg)}.moodle-import-dialog__header{justify-content:space-between;align-items:flex-start;gap:var(--space-md);border-block-end:1px solid var(--border-hairline);display:flex}.moodle-import-dialog__header h2,.moodle-import-dialog__header p{margin:0}.moodle-import-dialog__header h2{margin-block:var(--space-xxs)}.moodle-import-dialog__header p,.moodle-import-file small,.moodle-import-source small,.moodle-import-participants small{color:var(--text-muted)}.moodle-import-dialog__header>button{background:var(--canvas-soft);border:0;border-radius:12px;place-items:center;min-width:44px;min-height:44px;display:grid}.moodle-import-dialog__body{gap:var(--space-lg);max-height:calc(100dvh - 240px);padding:var(--space-lg);display:grid;overflow-y:auto}.moodle-import-file{align-items:center;gap:var(--space-md);min-height:96px;padding:var(--space-lg);border:1px dashed var(--ubb-royal-blue);background:var(--ubb-royal-blue);border-radius:16px;display:flex}@supports (color:color-mix(in lab, red, red)){.moodle-import-file{background:color-mix(in srgb, var(--ubb-royal-blue) 5%, var(--surface-card))}}.moodle-import-file{cursor:pointer}.moodle-import-file span,.moodle-import-participants span{gap:var(--space-xxs);display:grid}.moodle-import-file input{max-width:220px;margin-inline-start:auto}.moodle-import-preview{gap:var(--space-md);display:grid}.moodle-import-source{gap:var(--space-xxs);display:grid}.moodle-import-preview dl{gap:var(--space-xs);grid-template-columns:repeat(4,minmax(0,1fr));margin:0;display:grid}.moodle-import-preview dl div{padding:var(--space-md);border:1px solid var(--border-hairline);background:var(--canvas-soft);border-radius:14px}.moodle-import-preview dt{color:var(--text-muted);font-size:.78rem}.moodle-import-preview dd{margin:var(--space-xxs) 0 0;font-size:1.45rem;font-weight:750}.moodle-import-preview details{padding:var(--space-md);border:1px solid var(--border-hairline);border-radius:14px}.moodle-import-preview summary{cursor:pointer;font-weight:650}.moodle-import-preview ul{gap:var(--space-xs);margin-block-end:0;padding-inline-start:20px;display:grid}.moodle-import-participants{align-items:flex-start;gap:var(--space-sm);padding:var(--space-md);background:var(--canvas-soft);border-radius:14px;display:flex}.moodle-import-participants input{width:20px;height:20px}.moodle-import-progress,.moodle-import-result{gap:var(--space-sm);padding:var(--space-lg);border:1px solid var(--border-hairline);background:var(--canvas-soft);border-radius:16px;display:grid}.moodle-import-progress>div{justify-content:space-between;gap:var(--space-md);display:flex}.moodle-import-progress progress{width:100%;accent-color:var(--ubb-royal-blue)}.moodle-import-result p{margin:0}.moodle-import-result .secondary-button{justify-self:start}.moodle-import-dialog__footer{border-block-start:1px solid var(--border-hairline);justify-content:flex-end}.moodle-import-dialog__footer button{min-height:44px}@media (max-width:600px){.moodle-import-dialog{border-radius:16px;width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}.moodle-import-dialog__header,.moodle-import-dialog__body,.moodle-import-dialog__footer{padding:var(--space-md)}.moodle-import-file{flex-wrap:wrap;align-items:flex-start}.moodle-import-file input{width:100%;max-width:none;margin-inline-start:0}.moodle-import-preview dl{grid-template-columns:repeat(2,minmax(0,1fr))}.moodle-import-dialog__footer{grid-template-columns:1fr;display:grid}}.policy-page .policy-lead{color:var(--text-secondary);text-wrap:pretty;font-size:20px;line-height:1.4}.policy-form{gap:var(--space-md);margin-top:var(--space-xs);padding-top:var(--space-md);border-top:1px solid var(--border-hairline);flex-direction:column;display:flex}.policy-field{gap:var(--space-xxs);flex-direction:column;display:flex}.policy-field-head{justify-content:space-between;align-items:baseline;gap:var(--space-xs);display:flex}.policy-field>label,.policy-field-head>label{color:var(--text-body);font-size:14px;font-weight:600;line-height:1.43}.policy-field-counter{color:var(--text-muted);font-variant-numeric:tabular-nums lining-nums;white-space:nowrap;font-size:12.5px}.policy-field input,.policy-field select,.policy-field textarea{border:1px solid var(--border-hairline);border-radius:var(--radius-xs);background:var(--surface-card);width:100%;color:var(--text-body);font-family:var(--font-core);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);padding:10px 12px;font-size:15px;line-height:1.4}.policy-field textarea{resize:vertical;min-height:9rem;line-height:1.5}.policy-field input::placeholder,.policy-field textarea::placeholder{color:var(--text-faint)}.policy-field input:hover,.policy-field select:hover,.policy-field textarea:hover{border-color:var(--border-control)}.policy-field input[aria-invalid=true],.policy-field textarea[aria-invalid=true],.policy-field select[aria-invalid=true]{border-color:var(--shield-red-deep)}.policy-page .policy-field-error{color:var(--shield-red-deep);align-items:flex-start;gap:6px;font-size:14px;line-height:1.43;display:flex}.policy-page .policy-field-error svg{flex:none;margin-top:2px}.policy-page .policy-field-note{color:var(--text-muted);align-items:flex-start;gap:6px;font-size:14px;line-height:1.43;display:flex}.policy-page .policy-field-note svg{color:var(--color-primary);flex:none;margin-top:2px}.policy-page .policy-field-hint{color:var(--text-muted);font-size:14px;line-height:1.43}.policy-honeypot{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.policy-form-actions{justify-content:center;align-items:center;gap:var(--space-md);flex-wrap:wrap;display:flex}.policy-page .policy-submit,.policy-submit{justify-content:center;align-items:center;gap:var(--space-xs);border-radius:var(--radius-full);background:var(--color-primary);min-height:44px;color:var(--color-on-primary);font-family:var(--font-core);cursor:pointer;transition:background var(--transition-fast);border:1px solid #0000;padding:10px 24px;font-size:16px;font-weight:500;line-height:1.5;display:inline-flex}.policy-page .policy-submit:hover:not(:disabled),.policy-page .policy-submit:active:not(:disabled),.policy-page .policy-submit:focus-visible:not(:disabled){background:var(--color-primary-active);color:var(--color-on-primary);text-decoration:none}.policy-page .policy-submit:disabled{background:var(--canvas-soft);border-color:var(--border-hairline);color:var(--text-muted);cursor:not-allowed}.policy-submit svg{flex:none}.policy-page .policy-status{min-height:1.43em;color:var(--text-muted);text-align:center;justify-content:center;align-items:flex-start;gap:6px;font-size:14px;line-height:1.43;display:flex}.policy-page .policy-status svg{flex:none;margin-top:2px}.policy-page .policy-status.bad{color:var(--shield-red-deep)}.policy-confirm{gap:var(--space-sm);margin-top:var(--space-xs);padding:var(--space-lg);border:1px solid var(--academic-emerald);flex-direction:column;display:flex}@supports (color:color-mix(in lab, red, red)){.policy-confirm{border:1px solid color-mix(in srgb, var(--academic-emerald) 45%, var(--border-hairline))}}.policy-confirm{border-radius:var(--radius-lg);background:var(--academic-emerald)}@supports (color:color-mix(in lab, red, red)){.policy-confirm{background:color-mix(in srgb, var(--academic-emerald) 7%, var(--surface-card))}}.policy-page .policy-confirm-head{align-items:center;gap:var(--space-xs);color:var(--text-body);font-size:20px;font-weight:600;display:flex}.policy-page .policy-confirm-head svg{color:var(--academic-emerald);flex:none}.policy-page .policy-confirm p{font-size:15px;line-height:1.5}.policy-page .policy-confirm dl{border-top:none;padding-top:0;font-size:15px}.policy-again{border:1px solid var(--border-hairline);border-radius:var(--radius-md);background:var(--surface-card);color:var(--text-body);font-family:var(--font-core);cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast);align-self:flex-start;padding:8px 14px;font-size:15px;font-weight:500}.policy-again:hover{background:var(--canvas-soft);border-color:var(--text-faint)}@media (pointer:coarse){.policy-again{min-height:44px}}.policy-filter{gap:var(--space-xxs);padding-top:var(--space-md);border-top:1px solid var(--border-hairline);flex-direction:column;display:flex}.policy-filter>label{color:var(--text-body);font-size:14px;font-weight:600}.policy-filter-control{align-items:center;display:flex;position:relative}.policy-filter-control svg{color:var(--text-faint);pointer-events:none;position:absolute;left:12px}.policy-filter input{border:1px solid var(--border-hairline);border-radius:var(--radius-xs);background:var(--surface-card);width:100%;color:var(--text-body);font-family:var(--font-core);transition:border-color var(--transition-fast);padding:10px 12px 10px 38px;font-size:15px;line-height:1.4}.policy-filter input:hover{border-color:var(--border-control)}.policy-filter input::placeholder{color:var(--text-faint)}.policy-page .policy-count{color:var(--text-muted);font-variant-numeric:var(--num);font-size:14px}.policy-page .policy-section{gap:var(--space-sm);margin-top:var(--space-md);flex-direction:column;display:flex}.policy-page .policy-section h2{margin-top:0}.policy-group{gap:var(--space-xs);flex-direction:column;display:flex}.policy-disclosure{border:1px solid var(--border-hairline);border-radius:var(--radius-md);background:var(--surface-card);overflow:hidden}.policy-disclosure>summary{align-items:flex-start;gap:var(--space-sm);cursor:pointer;min-height:48px;color:var(--text-body);font-family:var(--font-core);border-radius:calc(var(--radius-md) - 1px);transition:background var(--transition-fast);padding:12px 16px;font-size:16px;font-weight:600;line-height:1.4;list-style:none;display:flex}.policy-disclosure>summary::-webkit-details-marker{display:none}.policy-disclosure>summary:hover{background:var(--canvas-soft)}.policy-disclosure>summary svg{color:var(--text-muted);transition:transform var(--transition-fast);flex:none;margin-top:2px}.policy-disclosure[open]>summary svg{transform:rotate(90deg)}.policy-disclosure[open]>summary{border-bottom:1px solid var(--border-hairline);border-bottom-right-radius:0;border-bottom-left-radius:0}.policy-answer{padding:var(--space-md) 16px var(--space-md) 44px;gap:var(--space-sm);flex-direction:column;display:flex}.policy-page .policy-answer p,.policy-page .policy-answer ul{font-size:15px;line-height:1.6}@supports (interpolate-size:allow-keywords){.policy-disclosure{interpolate-size:allow-keywords}.policy-disclosure::details-content{opacity:0;block-size:0;transition:block-size .14s cubic-bezier(.2, 0, 0, 1), opacity .14s cubic-bezier(.2, 0, 0, 1), content-visibility .14s allow-discrete;overflow:hidden}.policy-disclosure[open]::details-content{opacity:1;block-size:auto}}.policy-empty{align-items:flex-start;gap:var(--space-sm);padding:var(--space-lg);border:1px dashed var(--border-hairline);border-radius:var(--radius-md);background:var(--canvas-soft);flex-direction:column;display:flex}.policy-page .policy-empty p{font-size:15px}@media (prefers-reduced-motion:reduce){.policy-field input,.policy-field select,.policy-field textarea,.policy-filter input,.policy-submit,.policy-again,.policy-disclosure>summary,.policy-disclosure>summary svg{transition:none}}@supports (interpolate-size:allow-keywords){@media (prefers-reduced-motion:reduce){.policy-disclosure::details-content{transition:none}}}@media (max-width:600px){.policy-answer{padding-left:16px}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}