@layer theme{:root,:host{--font-sans:-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-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--font-weight-semibold:600;--font-weight-bold:700;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@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{.visible{visibility:visible}.hidden{display:none}.table{display:table}.resize{resize:both}.text-sm{font-size:var(--font-size-secondary);line-height:var(--tw-leading,var(--line-height-body))}}:root{--color-primary:#4658d6;--color-primary-hover:#3747b8;--color-primary-soft:#e9edff;--color-violet:#7150cf;--color-lavender:#b67cea;--color-cyan:#55bfea;--color-background:#f6f7fc;--color-surface:#fff;--color-surface-secondary:#eff2f9;--color-surface-selected:var(--color-primary-soft);--color-surface-message:#edf0ff;--color-text:#19233b;--color-text-primary:var(--color-text);--color-text-secondary:#526079;--color-text-muted:#5d6b83;--color-accent:var(--color-primary);--color-accent-hover:var(--color-primary-hover);--color-accent-soft:var(--color-primary-soft);--color-on-accent:#fff;--color-border:#dce1ed;--color-border-subtle:#e5e9f2;--color-control-border:#8290aa;--color-border-selected:#6475d6;--color-error:#a63748;--color-error-surface:#fff1f2;--color-success:#216950;--color-success-surface:#eaf7ef;--color-warning:#835316;--color-warning-surface:#fff7e8;--color-focus:var(--color-primary);--color-entry-tint:#e9edff;--color-glass:#ffffffe0;--color-glass-border:#fffffff2;--gradient-primary:linear-gradient(115deg, var(--color-primary), var(--color-violet));--gradient-primary-hover:linear-gradient(115deg, var(--color-primary-hover), #5c3ab8);--gradient-brand:linear-gradient(135deg, var(--color-primary), var(--color-violet) 72%, var(--color-lavender));--gradient-selected:linear-gradient(100deg, var(--color-primary-soft), #f1edfc);--gradient-entry:radial-gradient(ellipse at 15% 15%, var(--color-entry-tint), transparent 55%), radial-gradient(ellipse at 90% 80%, #f0eafb, transparent 50%);--gradient-image-loading:linear-gradient(100deg, transparent 20%, var(--color-primary-soft) 42%, #efe8fb 58%, transparent 80%);--glass-blur:12px;--space-1:4px;--space-1-5:6px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:28px;--space-8:32px;--space-9:36px;--space-10:40px;--space-12:48px;--font-family:"Segoe UI Variable Text", "Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, Arial, sans-serif;--font-family-mono:Consolas, "Courier New", monospace;--font-size-reading:17px;--font-size-page-title:clamp(28px, 3vw, 40px);--font-size-page-title-compact:28px;--font-size-section-title:20px;--font-size-component-title:15px;--font-size-body:15px;--font-size-secondary:14px;--font-size-metadata:13px;--font-weight-regular:400;--font-weight-semibold:600;--font-weight-bold:700;--line-height-title:1.2;--line-height-control:1.5;--line-height-body:1.6;--line-height-message:1.7;--tracking-title:-.035em;--tracking-brand:.05em;--tracking-label:.08em;--radius-sm:8px;--radius-md:14px;--radius-lg:20px;--radius-xl:24px;--radius-brand:20px;--radius-pill:999px;--shadow-none:none;--shadow-control:0 2px 6px #19233b08;--shadow-raised:0 4px 20px #19233b0d;--shadow-composer:0 8px 32px #2d387114, inset 0 1px 0 var(--color-glass-border);--shadow-primary:0 3px 8px #4658d62e;--shadow-focus:0 0 0 4px #4658d61a;--border-width:1px;--focus-width:3px;--focus-offset:3px;--disabled-opacity:.6;--transition-control:.16s;--transition-surface:.22s;--composer-input-max-height:192px;--composer-input-mobile-max-height:144px;--font-size-input:16px;--control-height:44px;--control-height-primary:48px;--control-height-compact:36px;--control-height-icon:44px;--control-icon-size:24px;--brand-size:62px;--brand-size-small:35px;--brand-size-compact:28px;--brand-glyph-size:44px;--brand-glyph-size-small:28px;--width-form-field:160px;--width-group-item:130px;--width-login:460px;--width-admin:520px;--width-conversation:760px;--width-composer:820px;--width-role-content:1100px;--width-generated-image:560px;--width-student-sidebar:248px;--width-teacher-groups:248px;--width-teacher-chats:280px;--width-navigation-drawer:320px;--color-backdrop:#19233b66;--width-sidebar:248px;--width-sidebar-tablet:180px;--width-sidebar-mobile:126px;--height-header:78px;--height-header-compact:65px;font-family:var(--font-family);font-size:var(--font-size-body);color:var(--color-text-primary);background:var(--color-background);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer;line-height:var(--line-height-control);transition:background-color var(--transition-control), border-color var(--transition-control), color var(--transition-control), box-shadow var(--transition-control)}button:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}h1{font-size:var(--font-size-page-title);line-height:var(--line-height-title);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-title);margin:var(--space-4) 0}h2{font-size:var(--font-size-section-title);line-height:var(--line-height-title);font-weight:var(--font-weight-semibold)}h3{font-size:var(--font-size-component-title);line-height:var(--line-height-control);font-weight:var(--font-weight-semibold)}p{line-height:var(--line-height-body)}.muted{color:var(--color-text-muted)}.eyebrow{font-size:var(--font-size-metadata);letter-spacing:var(--tracking-label);font-weight:var(--font-weight-bold);color:var(--color-accent);margin:var(--space-6) 0 var(--space-3)}.primary{min-height:var(--control-height-primary);background:var(--gradient-primary);color:var(--color-on-accent);border-radius:var(--radius-md);padding:var(--space-3) var(--space-5);font-weight:var(--font-weight-semibold);box-shadow:var(--shadow-primary);border:0}.primary:hover:not(:disabled){background:var(--gradient-primary-hover)}.primary:active:not(:disabled){transform:translateY(1px)}.stack input,.role-form input,.role-form select{width:100%;min-height:var(--control-height);border:var(--border-width) solid var(--color-control-border);background:var(--color-surface);color:var(--color-text-primary);border-radius:var(--radius-md);padding:var(--space-3);line-height:var(--line-height-control);font-size:var(--font-size-component-title);font-weight:var(--font-weight-regular)}input::placeholder,textarea::placeholder{color:var(--color-text-muted);opacity:1}.quiet{text-align:left;color:var(--color-text-secondary);padding:var(--space-2);min-height:var(--control-height);border-radius:var(--radius-sm);font-size:var(--font-size-secondary);background:0 0;border:0}.quiet:hover:not(:disabled){color:var(--color-accent);background:var(--color-accent-soft)}.quiet.danger{color:var(--color-error)}.quiet.danger:hover:not(:disabled){background:var(--color-error-surface);color:var(--color-error)}.badge{font-size:var(--font-size-metadata);line-height:var(--line-height-control);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-pill);padding:var(--space-1-5) var(--space-3);color:var(--color-text-secondary);background:var(--color-surface-secondary);font-weight:var(--font-weight-semibold)}.brand-icon{border-radius:var(--radius-brand);width:var(--brand-size);height:var(--brand-size);background:var(--gradient-brand);color:var(--color-on-accent);font-size:var(--brand-glyph-size);place-items:center;display:grid}.brand-icon.small{width:var(--brand-size-small);height:var(--brand-size-small);border-radius:var(--radius-md);font-size:var(--brand-glyph-size-small)}.entry{min-height:100dvh;padding:var(--space-7);background:var(--gradient-entry), var(--color-background);place-items:center;display:grid}.login-panel{max-width:var(--width-login);width:100%;padding:var(--space-8);background:var(--color-surface);border:var(--border-width) solid var(--color-border-subtle);border-radius:var(--radius-xl);box-shadow:var(--shadow-raised)}.stack{gap:var(--space-5);margin:var(--space-8) 0 var(--space-4);display:grid}.stack label{gap:var(--space-2);font-size:var(--font-size-component-title);font-weight:var(--font-weight-semibold);display:grid}.stack small{font-size:var(--font-size-metadata);color:var(--color-text-muted);font-weight:var(--font-weight-regular)}.footnote{font-size:var(--font-size-metadata);text-align:center;color:var(--color-text-muted);margin:var(--space-3) 0}.workspace{height:100dvh;display:flex}.workspace aside{width:var(--width-sidebar);background:var(--color-surface-secondary);border-right:var(--border-width) solid var(--color-border);padding:var(--space-7) var(--space-5);flex-direction:column;flex-shrink:0;display:flex}.brand{align-items:center;gap:var(--space-3);font-weight:var(--font-weight-bold);font-size:var(--font-size-secondary);letter-spacing:var(--tracking-brand);margin-bottom:var(--space-6);display:flex}.section-label{font-size:var(--font-size-metadata);letter-spacing:var(--tracking-label);color:var(--color-text-muted);margin:var(--space-8) 0 var(--space-3)}nav{flex:1;overflow-y:auto}.chat-link{gap:var(--space-2);padding:var(--space-3);text-align:left;border-radius:var(--radius-sm);width:100%;color:var(--color-text-secondary);margin:var(--space-1) 0;font-size:var(--font-size-secondary);background:0 0;border:0;display:flex}.chat-link:hover:not(:disabled){background:var(--color-surface-selected);color:var(--color-text-primary)}.chat-link span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.chat-link.selected{background:var(--gradient-selected);color:var(--color-accent);font-weight:var(--font-weight-semibold);box-shadow:inset 3px 0 0 var(--color-accent)}.profile{font-size:var(--font-size-secondary);padding-top:var(--space-6);gap:var(--space-1);border-top:var(--border-width) solid var(--color-border);flex-direction:column;margin-top:auto;display:flex}.main-panel{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}header{height:var(--height-header);border-bottom:var(--border-width) solid var(--color-border-subtle);padding:0 var(--space-9);color:var(--color-text-muted);font-size:var(--font-size-secondary);background:var(--color-surface);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.messages{padding:var(--space-7) max(var(--space-6), calc((100% - var(--width-conversation)) / 2));scroll-behavior:smooth;flex:1;overflow-y:auto}.welcome{text-align:center;min-height:90%;padding:var(--space-8) 0;flex-direction:column;justify-content:center;align-items:center;display:flex}.welcome .primary{margin-top:var(--space-6)}.empty-state-icon{width:var(--brand-size);height:var(--brand-size);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-lg);color:var(--color-accent);background:var(--gradient-selected);font-size:var(--brand-glyph-size-small);margin-bottom:var(--space-2);place-items:center;display:grid}.welcome p{max-width:38ch;margin:var(--space-2) 0}.message{min-width:0;max-width:100%;margin:0 0 var(--space-8);overflow-wrap:anywhere;font-size:var(--font-size-reading);line-height:var(--line-height-body)}.message.user{width:fit-content;max-width:calc(100% - var(--space-6));background:var(--color-surface-message);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:var(--border-width) solid var(--color-border-subtle);margin-left:auto}.message.assistant{padding:var(--space-1) 0}.message.assistant .message-content,.message.assistant .message-plain{line-height:var(--line-height-message)}.message-plain{white-space:pre-wrap}.message-meta{align-items:baseline;gap:var(--space-2);color:var(--color-text-muted);font-size:var(--font-size-metadata);line-height:var(--line-height-control);margin:0 0 var(--space-2);flex-wrap:wrap;display:flex}.message-author{font-weight:var(--font-weight-semibold);color:var(--color-text-secondary)}.message.assistant .message-author{color:var(--color-accent)}.message small{font-size:var(--font-size-metadata);margin-top:var(--space-2);display:block}.message .message-content>:first-child{margin-top:0}.message .message-content>:last-child{margin-bottom:0}.message-content p,.message-content ul,.message-content ol,.message-content blockquote,.message-content pre{margin:0 0 var(--space-4)}.message .message-content :is(h1,h2,h3,h4,h5,h6){margin:var(--space-6) 0 var(--space-3);color:var(--color-text-primary);font-weight:var(--font-weight-semibold);line-height:var(--line-height-control);letter-spacing:normal}.message-content h1,.message-content h2{font-size:var(--font-size-section-title)}.message-content :is(h3,h4,h5,h6){font-size:var(--font-size-reading)}.message-content strong{font-weight:var(--font-weight-bold)}.message-content em{font-style:italic}.message-content ul{padding-left:var(--space-6);list-style:outside}.message-content ol{padding-left:var(--space-6);list-style:decimal}.message-content li{padding-left:var(--space-1);margin:var(--space-1) 0}.message-content li>:is(ul,ol){margin:var(--space-1) 0}.message-content li>p{margin:var(--space-2) 0}.message-content blockquote{border-left:3px solid var(--color-border-selected);padding-left:var(--space-4);color:var(--color-text-secondary)}.message-content blockquote>:last-child{margin-bottom:0}.message-content a{color:var(--color-accent);text-underline-offset:.2em;text-decoration:underline}.message-content a:hover{color:var(--color-accent-hover)}.message-content code{font-family:var(--font-family-mono);font-size:var(--font-size-component-title)}.message-content :not(pre)>code{background:var(--color-surface-secondary);border-radius:var(--radius-sm);padding:0 var(--space-1);white-space:break-spaces;overflow-wrap:anywhere}.message-content pre{white-space:pre;overflow-wrap:normal;background:var(--color-surface-secondary);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-sm);min-width:0;max-width:100%;padding:var(--space-4);line-height:var(--line-height-body);tab-size:2;overflow-x:auto}.message-content pre code{white-space:inherit;overflow-wrap:normal;background:0 0;padding:0}.message-content hr{border:0;border-top:var(--border-width) solid var(--color-border);margin:var(--space-6) 0}.message.message-image_prompt{margin-bottom:var(--space-3)}.message-image{width:fit-content;max-width:100%;margin:0}.message-image figcaption{margin-top:var(--space-2);color:var(--color-text-muted);font-size:var(--font-size-metadata)}.message-state{margin:0}.message-state-failed{border-left:3px solid var(--color-error);padding:var(--space-2) var(--space-4);color:var(--color-error);background:var(--color-error-surface);border-radius:0 var(--radius-md) var(--radius-md) 0}.message-state-failed p{margin:0}.message-state-failed .muted{margin-top:var(--space-1);font-size:var(--font-size-secondary)}.failed{color:var(--color-error)}.composer-wrap{width:100%;max-width:var(--width-composer);padding:var(--space-3) var(--space-8) var(--space-4);flex-shrink:0;align-self:center}.composer{background:var(--color-surface);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-3);gap:var(--space-2);box-shadow:var(--shadow-composer);display:grid}.composer:focus-within{border-color:var(--color-border-selected)}@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.composer{background:var(--color-glass);-webkit-backdrop-filter:blur(var(--glass-blur))}}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.composer{background:var(--color-surface)}}.composer-input-row{align-items:flex-end;gap:var(--space-1);min-width:0;display:flex}.composer-input-row textarea{flex:1;min-width:0}.composer-attach{flex:0 0 var(--control-height-icon);width:var(--control-height-icon);height:var(--control-height-icon);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-secondary);color:var(--color-text-primary);font-size:var(--font-size-input)}.composer-attach svg{width:var(--control-icon-size);height:var(--control-icon-size);margin:auto}.composer-reference{align-items:center;gap:var(--space-2);min-width:0;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);background:var(--color-surface-secondary);color:var(--color-text-secondary);font-size:var(--font-size-secondary);display:flex}.composer-reference img{width:var(--control-height);height:var(--control-height);object-fit:cover;border-radius:var(--radius-sm)}.composer-reference span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.composer-reference button{flex:0 0 var(--control-height);height:var(--control-height);border-radius:var(--radius-sm);color:var(--color-text-primary);font-size:var(--font-size-input);background:0 0;border:0}.composer-reference button:hover:not(:disabled),.composer-attach:hover:not(:disabled){background:var(--color-accent-soft)}.composer textarea{resize:none;border-radius:var(--radius-sm);width:100%;color:var(--color-text-primary);padding:var(--space-2);min-width:0;min-height:var(--control-height);max-height:min(var(--composer-input-max-height), 22dvh);font-size:var(--font-size-input);line-height:var(--line-height-control);background:0 0;border:0}.composer textarea[readonly]{color:var(--color-text-secondary)}.composer-actions{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.composer-help{min-width:0;font-size:var(--font-size-metadata);flex:1;margin:0}.composer-submit{min-height:var(--control-height);padding:var(--space-2) var(--space-3);font-size:var(--font-size-secondary);flex-shrink:0}.error,.notice{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-secondary);margin:var(--space-3) 0;background:var(--color-error-surface);color:var(--color-error)}.notice{background:var(--color-success-surface);color:var(--color-success)}.admin-panel{max-width:var(--width-admin);width:100%;margin:var(--space-12) auto;padding:0 var(--space-8);overflow-y:auto}.role-panel{width:100%;min-width:0;min-height:0;padding:var(--space-6) var(--space-8) var(--space-12);max-width:var(--width-role-content);flex:1;margin:0 auto;overflow-y:auto}.role-panel h1{margin:var(--space-2) 0 var(--space-6)}.role-panel h2{margin:0 0 var(--space-4)}.role-card{background:var(--color-surface);border:var(--border-width) solid var(--color-border-subtle);border-radius:var(--radius-lg);padding:var(--space-6);margin:0 0 var(--space-6);box-shadow:var(--shadow-raised)}.role-card>h2{padding-bottom:var(--space-3);border-bottom:var(--border-width) solid var(--color-border-subtle)}.role-panel>h1{letter-spacing:var(--tracking-title)}.role-panel .role-form~.role-form .primary{background:var(--color-surface);color:var(--color-accent);border:var(--border-width) solid var(--color-control-border);box-shadow:none}.role-panel .role-form~.role-form .primary:hover:not(:disabled){background:var(--color-accent-soft)}.role-form{align-items:end;gap:var(--space-3);margin:var(--space-4) 0;flex-wrap:wrap;display:flex}.role-form label{gap:var(--space-1-5);font-size:var(--font-size-secondary);font-weight:var(--font-weight-semibold);min-width:var(--width-form-field);flex:1;display:grid}.role-form input,.role-form select{padding:var(--space-2) var(--space-3)}.role-form .primary{min-height:var(--control-height);padding-block:var(--space-2)}.teacher-ai-settings label{margin-bottom:var(--space-2);font-weight:var(--font-weight-semibold);display:block}.teacher-ai-settings textarea{width:100%;min-height:calc(4 * var(--control-height));padding:var(--space-4);border:var(--border-width) solid var(--color-control-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-primary);resize:vertical;display:block}.teacher-ai-settings .badge{margin:0 0 var(--space-3);display:inline-block}.teacher-ai-settings .muted{margin:var(--space-3) 0}.teacher-ai-actions{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.teacher-ai-actions button{min-height:var(--control-height)}.table-wrap{border:var(--border-width) solid var(--color-border);border-radius:var(--radius-md);max-width:100%;overflow-x:auto}.role-card table{border-collapse:collapse;width:100%;font-size:var(--font-size-secondary)}.role-card th{background:var(--color-surface-secondary);color:var(--color-text-secondary);font-weight:var(--font-weight-semibold);white-space:nowrap}.role-card tbody tr:hover{background:var(--color-background)}.role-card th,.role-card td{text-align:left;border-bottom:var(--border-width) solid var(--color-border-subtle);padding:var(--space-3);vertical-align:middle}.status-badge{gap:var(--space-1-5);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-2);font-size:var(--font-size-metadata);font-weight:var(--font-weight-semibold);background:var(--color-success-surface);color:var(--color-success);white-space:nowrap;align-items:center;display:inline-flex}.status-badge.inactive{background:var(--color-surface-secondary);color:var(--color-text-secondary)}.role-empty{color:var(--color-text-muted);padding:var(--space-4) 0;margin:0}.group-row{gap:var(--space-3);padding:var(--space-3) 0;border-bottom:var(--border-width) solid var(--color-border-subtle);font-size:var(--font-size-secondary);flex-wrap:wrap;display:flex}.group-row>*{min-width:var(--width-group-item)}.list-button{text-align:left;border:var(--border-width) solid var(--color-border);background:var(--color-background);border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);margin:var(--space-2) 0;width:100%;color:var(--color-accent);min-height:var(--control-height);overflow-wrap:anywhere;display:block}.list-button:hover:not(:disabled){background:var(--color-accent-soft)}.list-button[aria-pressed=true]{background:var(--gradient-selected);border-color:var(--color-border-selected);box-shadow:inset 3px 0 0 var(--color-accent);font-weight:var(--font-weight-semibold)}.observer-panel .message{margin:var(--space-4) 0 var(--space-6);max-width:var(--width-conversation)}.observer-panel .message.user{margin-left:0}.observer-conversations{overscroll-behavior:contain;max-height:min(320px,40dvh);overflow-y:auto}.observer-conversations:focus-visible{outline-offset:calc(-1 * var(--focus-width))}.mode-switch{justify-self:start;align-items:center;gap:var(--space-1);border-radius:var(--radius-md);background:var(--color-surface-secondary);padding:var(--space-1);display:inline-flex}.mode-switch button{align-items:center;gap:var(--space-1-5);min-height:var(--control-height);border:var(--border-width) solid transparent;color:var(--color-text-secondary);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:var(--font-size-secondary);background:0 0;display:inline-flex}.mode-switch svg{width:var(--space-4);height:var(--space-4);flex-shrink:0}.mode-switch button[aria-pressed=true]{background:var(--color-surface);border-color:var(--color-accent);color:var(--color-accent);font-weight:var(--font-weight-semibold);box-shadow:var(--shadow-control)}.mode-switch button:hover:not(:disabled){background:var(--color-accent-soft)}@media (max-width:700px){.composer textarea{max-height:min(var(--composer-input-mobile-max-height), 22dvh)}.composer .keyboard-hint{display:none}}@media (max-height:560px){.composer-wrap .footnote{display:none}}.generated-image{max-width:min(100%, var(--width-generated-image));object-fit:contain;border-radius:var(--radius-md);border:var(--border-width) solid var(--color-border-subtle);background:var(--color-surface-secondary);width:auto;height:auto;max-height:65dvh;box-shadow:var(--shadow-raised);display:block}@media (max-width:700px){.workspace aside{width:var(--width-sidebar-tablet);padding:var(--space-4) var(--space-3)}.brand{font-size:var(--font-size-metadata);gap:var(--space-1-5)}.brand-icon.small{width:var(--brand-size-compact);height:var(--brand-size-compact);flex-shrink:0}header{padding:0 var(--space-4);height:var(--height-header-compact);font-size:var(--font-size-metadata);gap:var(--space-2)}.messages{padding:var(--space-5) var(--space-4)}.composer-wrap{padding:var(--space-3)}.welcome h1{font-size:var(--font-size-page-title-compact)}.welcome p{font-size:var(--font-size-metadata)}.message.user{max-width:calc(100% - var(--space-3))}.profile{font-size:var(--font-size-metadata)}.role-panel{padding:var(--space-4) var(--space-3)}.role-card{padding:var(--space-4)}.role-form label,.group-row>*{min-width:100%}}@media (max-width:460px){.workspace aside{width:var(--width-sidebar-mobile);padding:var(--space-4) var(--space-2)}.brand{letter-spacing:0;flex-direction:column;align-items:flex-start}.workspace aside .primary{min-height:var(--control-height);padding:var(--space-3) var(--space-1);font-size:var(--font-size-metadata)}.chat-link{padding:var(--space-2) var(--space-1)}header>span:first-child{display:none}.login-panel{padding:var(--space-3)}}:focus-visible{outline:var(--focus-width) solid var(--color-focus);outline-offset:var(--focus-offset)}:is(.stack input,.role-form input,.role-form select,.teacher-ai-settings textarea):focus-visible{border-color:var(--color-focus);box-shadow:var(--shadow-focus)}:is(input,select,textarea):disabled{opacity:1;background:var(--color-surface-secondary);color:var(--color-text-muted);cursor:not-allowed}:is(input,select,textarea)[aria-invalid=true]{border-color:var(--color-error)}.chat-link:focus-visible,.composer textarea:focus-visible{outline-offset:calc(-1 * var(--focus-width))}.student-shell{overflow:hidden}.student-shell .main-panel{min-height:0}.student-shell .student-sidebar{width:var(--width-student-sidebar);min-height:0}.student-shell nav{min-height:0}.student-shell .chat-link{min-height:var(--control-height);align-items:center}.student-shell .chat-link span{min-width:0}.student-shell .profile strong{overflow-wrap:anywhere}.student-header{gap:var(--space-3)}.conversation-context{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.conversation-title{white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-primary);font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);display:block;overflow:hidden}.conversation-status{font-size:var(--font-size-metadata)}.conversation-status:before{content:"";width:var(--space-1-5);height:var(--space-1-5);border-radius:var(--radius-pill);margin-right:var(--space-2);background:var(--color-accent);vertical-align:middle;display:inline-block}.shell-button{width:var(--control-height);height:var(--control-height);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-accent);font-size:var(--control-icon-size);flex-shrink:0;place-items:center;display:grid}.shell-button:hover{background:var(--color-accent-soft)}.navigation-toggle{display:none}.student-drawer{max-width:none;max-height:none;width:min(var(--width-navigation-drawer), calc(100% - var(--space-12)));background:var(--color-surface-secondary);height:100dvh;color:var(--color-text-primary);border:0;margin:0;padding:0}.student-drawer[open]{flex-direction:column;display:flex}.student-drawer::backdrop{background:var(--color-backdrop)}.student-drawer{box-shadow:var(--shadow-raised)}.drawer-heading{justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-4);display:flex}.drawer-heading h2{font-size:var(--font-size-body);margin:0}.student-shell .student-drawer aside{width:100%;min-height:0;padding:var(--space-4);border:0;flex:1}.student-drawer .brand{font-size:var(--font-size-secondary);flex-direction:row;align-items:center}.student-drawer .eyebrow{margin-top:var(--space-3)}.student-drawer .section-label{margin-top:var(--space-6)}.student-drawer .profile{padding-top:var(--space-3)}.student-drawer .quiet{min-height:var(--control-height)}@media (max-width:1023px){.student-shell .student-sidebar{display:none}.student-header{height:var(--height-header-compact);padding:0 var(--space-4);justify-content:flex-start}.navigation-toggle{display:grid}.student-shell .messages{padding:var(--space-5) max(var(--space-4), calc((100% - var(--width-conversation)) / 2));min-height:0}.student-shell .composer-wrap{padding-left:var(--space-4);padding-right:var(--space-4)}}@media (max-width:460px){.student-header{padding:0 var(--space-3)}.student-shell .messages,.student-shell .composer-wrap{padding-left:var(--space-3);padding-right:var(--space-3)}.student-shell .welcome{padding:var(--space-2) 0}.student-shell .welcome .eyebrow{margin:var(--space-3) 0 var(--space-2)}.student-shell .welcome h1{margin:var(--space-2) 0}.student-shell .welcome .muted{font-size:var(--font-size-secondary)}}.student-shell .messages{scroll-behavior:auto}.history-placeholder{text-align:center;justify-content:center;align-items:center;gap:var(--space-3);flex-direction:column;min-height:70%;display:flex}.history-placeholder h2,.history-placeholder p{margin:0}.history-placeholder h2{font-size:var(--font-size-section-title)}.activity-mark{color:var(--color-accent);font-size:var(--control-icon-size);flex-shrink:0}.generation-state{align-items:flex-start;gap:var(--space-3);display:flex}.generation-state p{margin:0}.image-generation-state{background:var(--color-surface-secondary);padding:var(--space-4);border-radius:var(--radius-md);max-width:var(--width-generated-image)}.image-generation-state .muted{font-size:var(--font-size-secondary);margin-top:var(--space-1)}.recovery-notice{align-items:center;gap:var(--space-3);overflow-wrap:anywhere;flex-wrap:wrap;display:flex}.recovery-notice>div{flex:260px;min-width:0}.recovery-notice p{margin:var(--space-1) 0 0}.recovery-button{min-height:var(--control-height);border:var(--border-width) solid currentColor;border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);color:var(--color-accent);background:var(--color-surface);font-size:var(--font-size-secondary);max-width:100%}.recovery-button:hover:not(:disabled){background:var(--color-accent-soft)}.message-state-failed .recovery-button{margin-top:var(--space-3)}.latest-button{margin-bottom:var(--space-2)}@media (max-width:460px){.recovery-notice{padding:var(--space-3);margin:0 0 var(--space-2)}.composer-wrap .recovery-notice+.composer~.footnote{display:none}}.text-recovery .recovery-button{margin-top:var(--space-2)}@media (max-height:560px){.composer-wrap .recovery-notice{align-items:flex-start;gap:var(--space-2);margin:0 0 var(--space-2)}.composer-wrap .recovery-notice>div{flex-basis:0}.composer-wrap .recovery-notice p{max-height:2em;overflow-y:auto}.composer-wrap:has(.recovery-notice) .composer textarea{max-height:max(var(--control-height), 14dvh)}.student-shell .composer-wrap{padding-block:var(--space-2);max-height:calc(100dvh - var(--height-header-compact));overflow-y:auto}.student-shell .composer{padding:var(--space-2);gap:var(--space-1)}.student-shell .mode-switch{padding:0}.student-shell .composer-wrap .recovery-notice{padding:var(--space-2)}}.student-shell .conversation-context{flex:1}@media (max-width:460px){.student-header{gap:var(--space-2)}}.teacher-workspace{background:var(--color-background);flex-direction:column;height:100dvh;min-height:0;display:flex}.teacher-topbar{min-height:var(--height-header-compact);justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-6);border-bottom:var(--border-width) solid var(--color-border);background:var(--color-surface);display:flex}.teacher-topbar .brand{min-width:0;margin:0}.teacher-account{align-items:center;gap:var(--space-4);min-width:0;display:flex}.teacher-account>span{overflow-wrap:anywhere;min-width:0;font-size:var(--font-size-secondary)}.teacher-account small{font-size:var(--font-size-metadata);display:block}.teacher-account button{min-height:var(--control-height);flex-shrink:0}.teacher-workspace>.error,.teacher-workspace>.notice{margin:var(--space-2) var(--space-4)}.teacher-panels{grid-template-columns:var(--width-teacher-groups) var(--width-teacher-chats) minmax(0, 1fr);flex:1;min-height:0;display:grid}.teacher-panel{flex-direction:column;min-width:0;min-height:0;display:flex}.teacher-groups,.teacher-chats{border-right:var(--border-width) solid var(--color-border)}.teacher-groups{background:var(--color-surface-secondary)}.teacher-chats,.teacher-viewer{background:var(--color-surface)}.teacher-panel-heading{padding:var(--space-5) var(--space-4) var(--space-3)}.teacher-panel h2{font-size:var(--font-size-section-title);line-height:var(--line-height-title);overflow-wrap:anywhere;margin:0}.teacher-panel-heading>p{margin:var(--space-2) 0 0;font-size:var(--font-size-secondary)}.teacher-panel-scroll{overscroll-behavior:contain;min-height:0;padding:var(--space-3);overflow-wrap:anywhere;flex:1;overflow-y:auto}.teacher-panel-scroll:focus-visible,.table-wrap:focus-visible{outline-offset:calc(-1 * var(--focus-width))}.teacher-panel-scroll p{font-size:var(--font-size-secondary)}.teacher-group-toggle,.teacher-student-link,.teacher-chat-link{width:100%;min-height:var(--control-height);align-items:center;gap:var(--space-2);text-align:left;padding:var(--space-3);border:var(--border-width) solid transparent;border-radius:var(--radius-sm);color:var(--color-text-primary);background:0 0;display:flex}.teacher-group-toggle{font-weight:var(--font-weight-semibold)}.teacher-group-toggle>span:last-child{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.teacher-group-toggle:hover,.teacher-student-link:hover,.teacher-chat-link:hover{background:var(--color-accent-soft)}.teacher-students{padding-left:var(--space-3);margin-left:var(--space-3);border-left:var(--border-width) solid var(--color-border)}.teacher-student-link{justify-content:space-between}.teacher-student-link>span:first-child{min-width:0}.teacher-student-link strong{font-size:var(--font-size-component-title);overflow-wrap:anywhere;display:block}.teacher-student-link small{color:var(--color-text-secondary);font-size:var(--font-size-metadata);overflow-wrap:anywhere;display:block}.teacher-student-link[aria-pressed=true],.teacher-chat-link[aria-pressed=true],.teacher-view-switch button[aria-pressed=true]{background:var(--gradient-selected);border-color:var(--color-border-selected);color:var(--color-accent);font-weight:var(--font-weight-semibold)}.teacher-student-link[aria-pressed=true],.teacher-chat-link[aria-pressed=true]{box-shadow:inset 3px 0 0 var(--color-accent)}.teacher-chat-link{margin-bottom:var(--space-1);justify-content:space-between}.teacher-chat-link>span:first-child{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.teacher-chat-link>span:last-child,.teacher-student-link>span:last-child{flex-shrink:0}.teacher-back{text-align:left;padding:var(--space-2) 0;min-height:var(--control-height);color:var(--color-accent);background:0 0;border:0;align-items:center;display:inline-flex}.teacher-viewer-heading{padding:var(--space-5) var(--space-6) var(--space-4);border-bottom:var(--border-width) solid var(--color-border-subtle)}.teacher-view-switch{gap:var(--space-1);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.teacher-view-switch button,.teacher-settings-link{min-height:var(--control-height);padding:var(--space-2) var(--space-3);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.teacher-conversation-title{margin:var(--space-3) 0 0;font-size:var(--font-size-secondary);color:var(--color-text-secondary);overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.teacher-history{padding:var(--space-6)}.teacher-message-content{max-width:var(--width-conversation);min-width:0;margin:0 auto}.teacher-message-content .message{max-width:100%}.teacher-empty{margin:var(--space-6) 0;padding:var(--space-6);background:var(--color-background);border-radius:var(--radius-lg);border:var(--border-width) dashed var(--color-control-border);text-align:center}.teacher-history .teacher-ai-settings{max-width:var(--width-conversation);margin:0 auto}.teacher-workspace .compact-only,.teacher-workspace .mobile-only,.teacher-workspace [hidden]{display:none}@media (min-width:768px) and (max-width:1199px){.teacher-panels{grid-template-columns:var(--width-teacher-groups) minmax(0, 1fr)}.teacher-workspace .compact-only{display:inline-flex}.teacher-panels[data-stage=groups] .teacher-chats,.teacher-panels[data-stage=students] .teacher-chats,.teacher-panels[data-stage=chats] .teacher-groups,.teacher-panels[data-stage=viewer] .teacher-groups{display:none}.teacher-history,.teacher-viewer-heading{padding:var(--space-4)}}@media (max-width:767px){.teacher-topbar{padding:var(--space-2) var(--space-3);gap:var(--space-2)}.teacher-topbar .brand{font-size:var(--font-size-metadata);gap:var(--space-2)}.teacher-topbar .brand-icon{display:none}.teacher-account{gap:var(--space-2)}.teacher-account>span{max-width:28vw}.teacher-panels{grid-template-columns:minmax(0,1fr)}.teacher-panel{border:0;display:none}.teacher-panels[data-stage=groups] .teacher-groups,.teacher-panels[data-stage=students] .teacher-groups,.teacher-panels[data-stage=chats] .teacher-chats,.teacher-panels[data-stage=viewer] .teacher-viewer{display:flex}.teacher-workspace .not-mobile{display:none}.teacher-workspace .mobile-only,.teacher-workspace .compact-only{display:inline-flex}.teacher-workspace [hidden],.teacher-panels[data-stage=groups] .teacher-students,.teacher-panels[data-stage=students] .teacher-group[data-expanded=false],.teacher-panels[data-stage=students] .teacher-group-toggle{display:none}.teacher-students{border:0;margin-left:0;padding-left:0}.teacher-history,.teacher-viewer-heading,.teacher-panel-heading{padding:var(--space-3)}.teacher-panel h2{font-size:var(--font-size-section-title)}.teacher-settings-link{margin-top:var(--space-3)}.teacher-history .teacher-ai-settings{padding:var(--space-3)}}.ai-waiting{align-items:center;gap:var(--space-3);color:var(--color-text-secondary);min-height:var(--control-height);display:flex}.waiting-dots{align-items:center;gap:var(--space-1);display:inline-flex}.waiting-dots i{width:var(--space-1-5);height:var(--space-1-5);border-radius:var(--radius-pill);background:var(--color-accent);animation:1.4s ease-in-out infinite ai-wait}.waiting-dots i:nth-child(2){animation-delay:.18s}.waiting-dots i:nth-child(3){animation-delay:.36s}@keyframes ai-wait{0%,to{opacity:.35;transform:translateY(0)}50%{opacity:.85;transform:translateY(-2px)}}.response-reveal-viewport{min-width:0;overflow:clip}.response-reveal-viewport [data-reveal-word]{visibility:hidden;opacity:0;transition:opacity .12s ease-out}.response-reveal-viewport [data-revealed=true]{visibility:visible;opacity:1}.response-reveal-controls{align-items:center;gap:var(--space-3);padding-top:var(--space-3);flex-wrap:wrap;display:flex}.response-reveal-controls>span{align-items:center;gap:var(--space-2);color:var(--color-text-secondary);font-size:var(--font-size-secondary);display:flex}.reveal-mark{background:var(--color-accent);opacity:.7;width:2px;height:1em;display:inline-block}.image-generation-placeholder{isolation:isolate;text-align:center;border:var(--border-width) solid var(--color-border-subtle);flex-direction:column;justify-content:center;align-items:center;width:100%;height:clamp(160px,30vw,280px);display:flex;position:relative;overflow:hidden}.image-generation-placeholder:before{content:"";z-index:-1;background:var(--gradient-image-loading);animation:2.4s ease-in-out infinite image-shimmer;position:absolute;inset:0}.image-placeholder-icon{color:var(--color-accent);font-size:var(--brand-glyph-size-small);margin-bottom:var(--space-3)}@keyframes image-shimmer{0%{opacity:.4;transform:translate(-100%)}50%{opacity:.8}to{opacity:.4;transform:translate(100%)}}.image-arrival{animation:.28s ease-out both image-arrival}@keyframes image-arrival{0%{opacity:.3}to{opacity:1}}.markdown-table-scroll{max-width:100%;margin-bottom:var(--space-4);overflow-x:auto}.markdown-table-scroll table{border-collapse:collapse;font-size:var(--font-size-body)}.markdown-table-scroll th,.markdown-table-scroll td{border:var(--border-width) solid var(--color-border);padding:var(--space-2) var(--space-3);text-align:left}.markdown-table-scroll th{background:var(--color-surface-secondary)}@media (prefers-reduced-motion:reduce){button{transition:none}.primary:active:not(:disabled){transform:none}.waiting-dots i,.image-generation-placeholder:before,.image-arrival{animation:none}.response-reveal-viewport [data-reveal-word]{transition:none}.reveal-mark{display:none}}@media (max-width:1023px){.role-shell{flex-direction:column;overflow:hidden}.role-shell>aside{justify-content:space-between;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-2) var(--space-4);border-right:0;border-bottom:var(--border-width) solid var(--color-border);flex-direction:row}.role-shell>aside>.brand{letter-spacing:var(--tracking-brand);min-width:0;font-size:var(--font-size-secondary);flex-direction:row;align-items:center;margin:0}.role-shell>aside>.eyebrow{display:none}.role-shell>aside>.profile{align-items:center;gap:var(--space-2);border:0;flex-direction:row;min-width:0;margin:0;padding:0}.role-shell .profile strong{text-overflow:ellipsis;white-space:nowrap;max-width:18ch;overflow:hidden}.role-shell .profile>.muted{display:none}.role-shell>.main-panel{overflow:hidden}.role-shell .role-panel{padding:var(--space-4)}.role-shell .role-form label{flex-basis:180px;min-width:0}.role-shell .group-row>*{overflow-wrap:anywhere;flex-basis:100%;min-width:0}}@media (max-width:460px){.teacher-account small{display:none}.role-shell>aside{padding:var(--space-2) var(--space-3);gap:var(--space-2)}.role-shell .brand-icon.small{display:none}.role-shell>aside>.brand{font-size:var(--font-size-metadata);letter-spacing:0}.role-shell .profile strong{max-width:10ch;font-size:var(--font-size-metadata)}.role-shell .role-panel{padding:var(--space-3)}.role-shell .role-card{padding:var(--space-4)}.role-shell .role-form label{flex-basis:100%}.role-shell .role-form .primary{width:100%}.role-shell .main-panel>header{height:var(--control-height)}.role-shell .main-panel>header>span:first-child{display:block}.role-shell .main-panel>header .badge{display:none}.empty-state-icon{width:var(--control-height);height:var(--control-height);margin-bottom:0}}
