:root{--steel-50:#eef3fa;--steel-100:#e8eef5;--steel-200:#d2e0f5;--steel-500:#4a72b2;--steel-600:#3d6299;--steel-700:#34547f;--ice-50:#f8f9fb;--ice-100:#f4f7fb;--ice-200:#eef3fa;--ice-300:#e8eef5;--slate-900:#0f172a;--slate-700:#334155;--slate-600:#475569;--slate-500:#64748b;--slate-400:#94a3b8;--white:#fff;--neutral-100:#eceef2;--neutral-200:#e8eaee;--neutral-300:#d2d6de;--success-700:#2f6f4e;--success-200:#cfe4d6;--success-100:#e8f4ec;--warning-700:#9a6b12;--warning-200:#ead9a8;--warning-100:#f8f1de;--error-800:#9b1c14;--error-700:#b42318;--error-200:#f0c7c3;--error-100:#f8e8e6;--color-primary:var(--steel-500);--color-primary-hover:var(--steel-600);--color-primary-active:var(--steel-700);--color-primary-soft:var(--steel-50);--color-primary-light:var(--steel-100);--color-primary-subtle:var(--color-primary-light);--color-primary-border:var(--steel-200);--color-bg:var(--ice-50);--color-background:var(--color-bg);--color-bg-subtle:var(--ice-200);--color-surface:var(--white);--color-surface-soft:var(--ice-100);--color-surface-muted:var(--neutral-100);--color-surface-ice:var(--color-primary-soft);--color-surface-primary:var(--color-surface-ice);--color-surface-hover:var(--color-primary-light);--color-surface-active:var(--color-primary-soft);--color-neutral-hover:var(--color-surface-soft);--color-text-primary:var(--slate-900);--color-text-secondary:var(--slate-700);--color-text-muted:var(--slate-600);--color-text-disabled:var(--slate-400);--color-text-on-primary:var(--white);--color-border:var(--neutral-300);--color-border-subtle:var(--neutral-200);--color-border-primary:var(--steel-200);--color-border-focus:var(--steel-500);--color-success:var(--success-700);--color-success-soft:var(--success-100);--color-success-border:var(--success-200);--color-warning:var(--warning-700);--color-warning-soft:var(--warning-100);--color-warning-border:var(--warning-200);--color-error:var(--error-700);--color-error-soft:var(--error-100);--color-error-border:var(--error-200);--color-info:var(--steel-500);--color-info-soft:var(--steel-50);--color-info-border:var(--steel-200);--color-guidance:var(--color-info);--color-guidance-soft:var(--color-info-soft);--color-guidance-border:var(--color-info-border);--color-link:var(--color-primary);--color-link-hover:var(--color-primary-hover);--color-disabled-bg:var(--color-surface-muted);--color-disabled-text:var(--color-text-disabled);--color-disabled-border:var(--color-border);--color-overlay:color-mix(in srgb, var(--slate-900) 40%, transparent);--color-selection:color-mix(in srgb, var(--steel-500) 18%, transparent);--overlay-blur:4px;--color-tooltip-bg:var(--color-text-primary);--color-tooltip-text:var(--color-text-on-primary);--color-scrollbar-track:var(--color-surface-soft);--color-scrollbar-thumb:var(--color-border);--color-button-primary:var(--color-primary);--color-button-primary-hover:var(--color-primary-hover);--color-button-primary-active:var(--color-primary-active);--color-button-secondary:var(--color-surface);--color-button-secondary-hover:var(--color-primary-soft);--color-button-ghost-hover:var(--color-primary-soft);--color-button-danger:var(--color-error-soft);--color-button-danger-hover:var(--color-error);--color-danger:var(--color-error);--color-danger-hover:var(--error-800);--color-input-bg:var(--color-surface);--color-input-border:var(--color-border);--color-input-hover:var(--color-border-primary);--color-input-focus:var(--color-border-focus);--color-input-disabled:var(--color-disabled-bg);--color-input-error:var(--color-error);--color-input-success:var(--color-success);--color-modal-overlay:color-mix(in srgb, var(--slate-900) 32%, transparent);--color-modal-bg:var(--color-surface);--color-modal-border:var(--color-border);--color-modal-shadow:var(--shadow-md);--color-ai:var(--color-primary);--color-ai-soft:var(--color-primary-soft);--color-ai-border:var(--color-border-primary);--color-ai-icon:var(--color-primary);--color-tutor-mark:var(--color-ai);--color-tutor-mark-soft:var(--color-ai-soft);--color-chat-user:var(--color-surface-ice);--color-chat-user-bg:var(--color-chat-user);--color-chat-user-text:var(--color-text-primary);--color-chat-assistant:var(--color-surface-muted);--color-chat-assistant-bg:var(--color-chat-assistant);--color-chat-assistant-text:var(--color-text-primary);--color-chat-avatar:var(--color-surface-ice);--color-chat-avatar-icon:var(--color-primary);--color-chat-thinking:var(--color-text-muted);--color-chat-thinking-bg:var(--color-surface-ice);--color-chat-thinking-dot:var(--color-primary);--color-chat-thinking-icon:var(--color-primary);--color-citation:var(--color-primary);--color-citation-soft:var(--color-surface-ice);--color-citation-border:var(--color-border-primary);--color-citation-bg:var(--color-citation-soft);--color-citation-accent:var(--color-citation);--color-document-icon:var(--color-primary);--color-document-surface:var(--color-surface-ice);--color-document-border:var(--color-border-primary);--color-nav-text:var(--color-text-primary);--color-nav-text-active:var(--color-primary);--color-nav-background:var(--color-surface);--color-nav-hover:var(--color-surface-hover);--color-nav-active:var(--color-primary-soft);--color-nav-active-background:var(--color-nav-active);--color-nav-active-indicator:var(--color-primary);--color-card:var(--color-surface);--color-card-border:var(--color-border-subtle);--color-progress:var(--color-primary);--color-progress-current:var(--color-progress);--color-progress-complete:var(--color-success);--color-progress-track:var(--color-primary-light);--color-progress-future:var(--color-border);--color-icon-well-bg:var(--color-surface-ice);--color-icon-well-fg:var(--color-primary);--icon-size-sm:1rem;--icon-size-md:1.25rem;--icon-well-size:2.25rem;--avatar-size-sm:2rem;--avatar-size-md:2.5rem;--tutor-mark-size-sm:2.25rem;--tutor-mark-size-md:3.5rem;--tutor-mark-size-lg:5.5rem;--color-avatar-bg:var(--color-primary);--color-avatar-text:var(--color-text-on-primary);--font-family-sans:"Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-family:var(--font-family-sans);--font-family-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-size-display:clamp(1.75rem, 4vw, 2.25rem);--font-size-h1:clamp(1.5rem, 3vw, 2rem);--font-size-heading-xl:var(--font-size-h1);--font-size-h2:clamp(1.375rem, 2.2vw, 1.5rem);--font-size-heading-lg:var(--font-size-h2);--font-size-h3:1.125rem;--font-size-heading-md:var(--font-size-h3);--font-size-heading-sm:1rem;--font-size-body-lg:1rem;--font-size-body:.9375rem;--font-size-body-small:.875rem;--font-size-body-sm:var(--font-size-body-small);--font-size-label:.875rem;--font-size-caption:.8125rem;--font-size-metadata:.75rem;--line-height-tight:1.2;--line-height-snug:1.35;--line-height-normal:1.5;--line-height-relaxed:1.7;--letter-spacing-tight:-.02em;--letter-spacing-normal:0;--letter-spacing-wide:.04em;--content-measure:42rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--radius-sm:.5rem;--radius-md:.75rem;--radius-lg:1rem;--radius-xl:1.25rem;--radius-pill:9999px;--radius-control:.5rem;--radius-card:.75rem;--radius-panel:1rem;--radius-avatar:9999px;--shadow-xs:0 1px 2px color-mix(in srgb, var(--slate-900) 4%, transparent);--shadow-sm:0 4px 12px color-mix(in srgb, var(--slate-900) 5%, transparent);--shadow-md:0 8px 24px color-mix(in srgb, var(--slate-900) 6%, transparent);--shadow-lg:0 16px 40px color-mix(in srgb, var(--slate-900) 8%, transparent);--shadow-card:0 4px 14px color-mix(in srgb, var(--slate-900) 4%, transparent);--shadow-drawer:8px 0 24px color-mix(in srgb, var(--slate-900) 12%, transparent);--shadow-primary:0 4px 14px color-mix(in srgb, var(--steel-500) 18%, transparent);--shadow-focus:0 0 0 3px color-mix(in srgb, var(--steel-500) 15%, transparent);--shadow-modal:var(--color-modal-shadow);--transition-fast:.12s ease;--transition-normal:.18s ease;--transition-slow:.28s ease;--z-base:0;--z-dropdown:8;--z-drawer:8;--z-sticky:10;--z-overlay:15;--z-modal:20;--z-toast:30;--breakpoint-mobile:767px;--breakpoint-tablet:768px;--breakpoint-desktop:1023px;--container-max:64rem;--container-max-wide:90rem;--page-padding-mobile:1rem;--page-padding-tablet:1.25rem;--page-padding-desktop:1.5rem;--sidebar-width:13.125rem;--sidebar-width-collapsed:4.5rem;--chat-content-max:52rem}.text-display,.text-h1,.text-heading-xl,.text-h2,.text-heading-lg,.text-h3,.text-heading-md,.text-heading-sm,.text-body-lg,.text-body,.text-body-small,.text-body-sm,.text-label,.text-caption,.text-metadata,.text-metric{overflow-wrap:anywhere}.text-display{font-size:var(--font-size-display);font-weight:var(--font-weight-extrabold);line-height:var(--line-height-tight);letter-spacing:var(--letter-spacing-tight)}.text-h1,.text-heading-xl{font-size:var(--font-size-h1);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);letter-spacing:var(--letter-spacing-tight)}.text-h2,.text-heading-lg{font-size:var(--font-size-h2);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight)}.text-h3,.text-heading-md{font-size:var(--font-size-h3);font-weight:var(--font-weight-semibold);line-height:var(--line-height-snug)}.text-heading-sm{font-size:var(--font-size-heading-sm);font-weight:var(--font-weight-semibold);line-height:var(--line-height-snug)}.text-body-lg{font-size:var(--font-size-body-lg);font-weight:var(--font-weight-regular);line-height:var(--line-height-relaxed)}.text-body{font-size:var(--font-size-body);font-weight:var(--font-weight-regular);line-height:var(--line-height-relaxed)}.text-body-small,.text-body-sm{font-size:var(--font-size-body-sm);font-weight:var(--font-weight-regular);line-height:var(--line-height-normal)}.text-label{font-size:var(--font-size-label);font-weight:var(--font-weight-medium);line-height:var(--line-height-normal)}.text-caption{font-size:var(--font-size-caption);font-weight:var(--font-weight-regular);color:var(--color-text-muted);line-height:var(--line-height-normal)}.text-metadata{font-size:var(--font-size-metadata);font-weight:var(--font-weight-regular);color:var(--color-text-muted);line-height:var(--line-height-normal)}.text-metric{font-size:var(--font-size-h3);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);letter-spacing:var(--letter-spacing-tight);color:var(--color-text-primary)}.text-error,.text-success{font-size:var(--font-size-label);font-weight:var(--font-weight-medium);line-height:var(--line-height-normal)}.text-error{color:var(--color-error)}.text-success{color:var(--color-success)}.text-code{font-family:var(--font-family-mono)}.ds-tooltip{font-size:var(--font-size-metadata);font-weight:var(--font-weight-regular);line-height:var(--line-height-normal);color:var(--color-tooltip-text);background:var(--color-tooltip-bg)}.markdown-content{max-width:var(--content-measure);font-size:var(--font-size-body);font-weight:var(--font-weight-regular);line-height:var(--line-height-relaxed);overflow-wrap:anywhere}.markdown-content>:first-child{margin-top:0}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4{color:var(--color-text-primary)}.markdown-content h1{margin:var(--space-5) 0 var(--space-3);font-size:var(--font-size-h3);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight)}.markdown-content h2{margin:var(--space-5) 0 var(--space-2);font-size:var(--font-size-heading-sm);font-weight:var(--font-weight-semibold);line-height:var(--line-height-snug)}.markdown-content h3,.markdown-content h4{margin:var(--space-4) 0 var(--space-2);font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);line-height:var(--line-height-snug)}.markdown-content strong{font-weight:var(--font-weight-semibold)}.markdown-content em{font-style:italic}.markdown-content p{margin:0 0 var(--space-3)}.markdown-content p:last-child,.markdown-content ul:last-child,.markdown-content ol:last-child,.markdown-content pre:last-child,.markdown-content blockquote:last-child,.markdown-content .markdown-table-wrap:last-child,.markdown-content hr:last-child{margin-bottom:0}.markdown-content ul,.markdown-content ol{margin:0 0 var(--space-3);padding-left:var(--space-5)}.markdown-content ul{list-style:outside}.markdown-content ol{list-style:decimal}.markdown-content ul ul,.markdown-content ol ol,.markdown-content ul ol,.markdown-content ol ul{margin-top:var(--space-1);margin-bottom:0}.markdown-content li{margin:0 0 var(--space-1)}.markdown-content li+li{margin-top:var(--space-1)}.markdown-content a{color:var(--color-link)}.markdown-content a:hover{color:var(--color-link-hover);text-decoration:underline}.markdown-content a:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px}.markdown-content code{font-family:var(--font-family-mono);border-radius:var(--radius-sm);background:var(--color-primary-subtle);overflow-wrap:anywhere;padding:.1em .35em;font-size:.9em}.markdown-content pre{margin:0 0 var(--space-3);padding:var(--space-4);border-radius:var(--radius-md);background:var(--color-surface-muted);border:1px solid var(--color-border-subtle);overflow-x:auto}.markdown-content pre:focus-visible,.markdown-table-wrap:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px;box-shadow:var(--shadow-focus)}.markdown-content pre code{background:0 0;padding:0}.markdown-content blockquote{margin:0 0 var(--space-3);padding:var(--space-3) var(--space-4);border-left:3px solid var(--color-info-border);background:var(--color-info-soft);color:var(--color-text-secondary)}.markdown-content table{border-collapse:collapse;width:100%;min-width:max-content;margin:0}.markdown-table-wrap{max-width:100%;margin:0 0 var(--space-3);overflow-x:auto}.markdown-content th,.markdown-content td{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);text-align:left;font-size:var(--font-size-body-small)}.markdown-content th{background:var(--color-surface-soft);color:var(--color-text-primary);font-weight:var(--font-weight-semibold)}.markdown-content hr{margin:var(--space-4) 0;border:0;border-top:1px solid var(--color-border-subtle)}.markdown-content img{border-radius:var(--radius-md);max-width:100%;height:auto}body{font-family:var(--font-family-sans);font-size:var(--font-size-body);font-weight:var(--font-weight-regular);line-height:var(--line-height-normal);letter-spacing:var(--letter-spacing-normal);color:var(--color-text-primary);background:var(--color-bg);overflow-wrap:anywhere;overflow-x:hidden}::selection{background:var(--color-selection);color:var(--color-text-primary)}::placeholder{color:var(--color-text-muted);opacity:1}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}button:disabled,input:disabled,textarea:disabled,select:disabled{cursor:not-allowed}a{color:var(--color-link);text-decoration:none}a:hover{color:var(--color-link-hover)}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px;box-shadow:var(--shadow-focus)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.ds-button{appearance:none;width:auto;max-width:100%;min-height:var(--space-10);padding:var(--space-2) var(--space-3);border-radius:var(--radius-control);font-family:inherit;font-size:var(--font-size-body-small);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);letter-spacing:var(--letter-spacing-normal);text-align:center;cursor:pointer;transition:background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);border:1px solid #0000;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.ds-button-sm{min-height:var(--space-8);padding:var(--space-1) var(--space-3);font-size:var(--font-size-body-small)}.ds-button-md{min-height:var(--space-10);padding:var(--space-2) var(--space-4);font-size:var(--font-size-body-small)}.ds-button-lg{min-height:calc(var(--space-10) + var(--space-1));padding:var(--space-3) var(--space-5);font-size:var(--font-size-body)}.ds-button-full{width:100%}.ds-button-icon-only{width:var(--space-10);padding:0}.ds-button-sm.ds-button-icon-only{width:var(--space-8)}.ds-button-lg.ds-button-icon-only{width:calc(var(--space-10) + var(--space-1))}.ds-button-content{justify-content:center;align-items:center;gap:var(--space-2);min-width:0;max-width:100%;display:inline-flex}.ds-button-label{overflow-wrap:anywhere;min-width:0}.ds-button-icon,.ds-button-icon-trailing{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.ds-button-icon svg{width:var(--icon-size-sm);height:var(--icon-size-sm);display:block}.ds-button-spinner{border-radius:var(--radius-avatar);border:2px solid;border-right-color:#0000;flex-shrink:0;width:1em;height:1em;animation:.7s linear infinite ds-button-spin;display:inline-block}.ds-button-primary{background:var(--color-button-primary);color:var(--color-text-on-primary);border-color:var(--color-button-primary)}.ds-button-primary:hover:not(:disabled){background:var(--color-button-primary-hover);border-color:var(--color-button-primary-hover);color:var(--color-text-on-primary);box-shadow:var(--shadow-primary)}.ds-button-primary:active:not(:disabled){background:var(--color-button-primary-active);border-color:var(--color-button-primary-active);color:var(--color-text-on-primary);box-shadow:none}.ds-button-secondary{background:var(--color-button-secondary);color:var(--color-text-primary);border-color:var(--color-border-primary)}.ds-button-secondary:hover:not(:disabled){background:var(--color-button-secondary-hover);border-color:var(--color-primary);color:var(--color-text-primary)}.ds-button-secondary:active:not(:disabled){background:var(--color-primary-soft);border-color:var(--color-primary)}.ds-button-ghost{color:var(--color-text-secondary);background:0 0;border-color:#0000}.ds-button-ghost:hover:not(:disabled){background:var(--color-surface-hover);color:var(--color-primary)}.ds-button-ghost:active:not(:disabled){background:var(--color-primary-soft);color:var(--color-primary)}.ds-button-danger{background:var(--color-button-danger);color:var(--color-danger);border-color:var(--color-error-border)}.ds-button-danger:hover:not(:disabled){background:var(--color-error-soft);border-color:var(--color-error);color:var(--color-error)}.ds-button-danger:active:not(:disabled){background:var(--color-error-soft);border-color:var(--color-danger-hover);color:var(--color-danger-hover)}.ds-button:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px;box-shadow:var(--shadow-focus)}.ds-button:disabled{cursor:not-allowed}.ds-button:disabled:not(.ds-button-loading){background:var(--color-disabled-bg);color:var(--color-disabled-text);border-color:var(--color-disabled-border);box-shadow:none}.ds-button-loading:disabled{cursor:wait;opacity:.85}.ds-button-primary.ds-button-loading:disabled{background:var(--color-button-primary);color:var(--color-text-on-primary);border-color:var(--color-button-primary)}.ds-button-secondary.ds-button-loading:disabled{background:var(--color-button-secondary);color:var(--color-text-primary);border-color:var(--color-border-primary)}.ds-button-ghost.ds-button-loading:disabled{color:var(--color-text-secondary);background:0 0;border-color:#0000}.ds-button-danger.ds-button-loading:disabled{background:var(--color-button-danger);color:var(--color-danger);border-color:var(--color-error-border)}.ds-card{background:var(--color-card);border:1px solid var(--color-card-border);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:var(--space-4)}.ds-card h2,.ds-card .text-heading-sm{margin:0 0 var(--space-2);font-size:var(--font-size-heading-sm);font-weight:var(--font-weight-semibold);line-height:var(--line-height-snug)}.ds-field{gap:var(--space-2);flex-direction:column;display:flex}.ds-label{color:var(--color-text-primary)}.ds-label-mark{color:var(--color-text-secondary)}.ds-helper{color:var(--color-text-muted);margin:0}.ds-error{color:var(--color-error);margin:0}.ds-input-group{align-items:stretch;gap:var(--space-2);min-width:0;display:flex}.ds-input-group .ds-input,.ds-input-group .ds-select,.ds-input-group .ds-textarea{flex:1 1 0;width:auto;min-width:0}.ds-input,.ds-select,.ds-textarea{width:100%;min-width:0;max-width:100%;min-height:var(--space-10);padding:var(--space-2) var(--space-3);border:1px solid var(--color-input-border);border-radius:var(--radius-control);background:var(--color-input-bg);color:var(--color-text-primary);font-family:inherit;font-size:var(--font-size-body);line-height:var(--line-height-normal);transition:border-color var(--transition-fast), box-shadow var(--transition-fast)}.ds-input-sm{min-height:var(--space-8);padding:var(--space-1) var(--space-3);font-size:var(--font-size-body-small)}.ds-input-md{min-height:var(--space-10);padding:var(--space-2) var(--space-3);font-size:var(--font-size-body)}.ds-input-lg{min-height:calc(var(--space-10) + var(--space-1));padding:var(--space-3) var(--space-4);font-size:var(--font-size-body)}.ds-input:hover:not(:disabled):not(:read-only),.ds-select:hover:not(:disabled),.ds-textarea:hover:not(:disabled):not(:read-only){border-color:var(--color-input-hover)}.ds-input:focus,.ds-select:focus,.ds-textarea:focus{border-color:var(--color-input-focus);box-shadow:var(--shadow-focus);outline:none}.ds-input:focus-visible,.ds-select:focus-visible,.ds-textarea:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px;border-color:var(--color-input-focus);box-shadow:var(--shadow-focus)}.ds-input[aria-invalid=true],.ds-select[aria-invalid=true],.ds-textarea[aria-invalid=true]{border-color:var(--color-input-error);background:var(--color-input-bg)}.ds-input[aria-invalid=true]:focus,.ds-select[aria-invalid=true]:focus,.ds-textarea[aria-invalid=true]:focus,.ds-input[aria-invalid=true]:focus-visible,.ds-select[aria-invalid=true]:focus-visible,.ds-textarea[aria-invalid=true]:focus-visible{border-color:var(--color-input-error);outline-color:var(--color-error)}.ds-input-success{border-color:var(--color-input-success);background:var(--color-input-bg)}.ds-input:disabled,.ds-select:disabled,.ds-textarea:disabled{background:var(--color-input-disabled);color:var(--color-disabled-text);border-color:var(--color-disabled-border)}.ds-input:read-only:not(:disabled),.ds-textarea:read-only:not(:disabled){background:var(--color-surface-soft);color:var(--color-text-primary);cursor:default}.ds-input[type=file]{padding:var(--space-2);cursor:pointer}.ds-input:-webkit-autofill{-webkit-text-fill-color:var(--color-text-primary);caret-color:var(--color-text-primary);box-shadow:0 0 0 1000px var(--color-input-bg) inset;border-color:var(--color-input-border)}.ds-input:-webkit-autofill:hover{-webkit-text-fill-color:var(--color-text-primary);caret-color:var(--color-text-primary);box-shadow:0 0 0 1000px var(--color-input-bg) inset;border-color:var(--color-input-border)}.ds-input:-webkit-autofill:focus{-webkit-text-fill-color:var(--color-text-primary);caret-color:var(--color-text-primary);box-shadow:0 0 0 1000px var(--color-input-bg) inset;border-color:var(--color-input-border)}.ds-textarea{min-height:var(--space-16);resize:vertical}.ds-select{cursor:pointer;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.ds-select option{background:var(--color-surface);color:var(--color-text-primary)}@keyframes ds-button-spin{to{transform:rotate(360deg)}}@media (width<=767px){.ds-input,.ds-select,.ds-textarea{font-size:var(--font-size-body-lg)}.ds-button-sm{min-height:2.5rem}.ds-button-sm.ds-button-icon-only{width:2.5rem}}.ds-status{padding:var(--space-4);border-radius:var(--radius-card);border:1px solid var(--color-border)}.ds-status-error{background:var(--color-error-soft);border-color:var(--color-error-border);color:var(--color-error)}.ds-status-success{background:var(--color-success-soft);border-color:var(--color-success-border);color:var(--color-success)}.ds-status-warning{background:var(--color-warning-soft);border-color:var(--color-warning-border);color:var(--color-warning)}.ds-status-info,.ds-guidance{background:var(--color-guidance-soft);border-color:var(--color-guidance-border);color:var(--color-text-secondary)}.ds-guidance{padding:var(--space-4);border-radius:var(--radius-card);border:1px solid var(--color-guidance-border)}.ds-icon-well{width:var(--icon-well-size);height:var(--icon-well-size);border-radius:var(--radius-md);background:var(--color-icon-well-bg);color:var(--color-icon-well-fg);justify-content:center;align-items:center;display:inline-flex}.ds-avatar{width:var(--avatar-size-sm);height:var(--avatar-size-sm);border-radius:var(--radius-avatar);background:var(--color-avatar-bg);color:var(--color-avatar-text);font-size:var(--font-size-metadata);font-weight:var(--font-weight-semibold);justify-content:center;align-items:center;display:inline-flex}.vroed-tutor-mark{--tutor-mark-size:var(--tutor-mark-size-md);width:var(--tutor-mark-size);height:var(--tutor-mark-size);color:var(--color-ai-icon);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.vroed-tutor-mark-sm{--tutor-mark-size:var(--tutor-mark-size-sm)}.vroed-tutor-mark-md{--tutor-mark-size:var(--tutor-mark-size-md)}.vroed-tutor-mark-lg{--tutor-mark-size:var(--tutor-mark-size-lg)}.vroed-tutor-mark-disc{border-radius:var(--radius-avatar);background:var(--color-ai-soft);border:1px solid var(--color-ai-border);width:100%;height:100%;box-shadow:var(--shadow-primary);justify-content:center;align-items:center;display:flex;overflow:hidden}.vroed-tutor-mark-face{justify-content:center;align-items:center;width:62%;height:62%;display:flex}.vroed-tutor-mark-glyph{fill:currentColor;width:100%;height:100%;display:block}.vroed-tutor-mark-dots{justify-content:center;align-items:center;gap:calc(var(--tutor-mark-size) * .08);width:100%;height:calc(var(--tutor-mark-size) * .28);display:flex}.vroed-tutor-mark-dot{width:calc(var(--tutor-mark-size) * .11);height:calc(var(--tutor-mark-size) * .11);border-radius:var(--radius-avatar);background:var(--color-ai);opacity:.55;flex-shrink:0}.vroed-tutor-mark-idle .vroed-tutor-mark-disc,.vroed-tutor-mark-responding .vroed-tutor-mark-disc{animation:3.6s ease-in-out infinite vroed-tutor-float}.vroed-tutor-mark-responding .vroed-tutor-mark-glyph{animation:3.2s ease-in-out infinite vroed-tutor-breathe}.vroed-tutor-mark-thinking .vroed-tutor-mark-dot{animation:1.05s ease-in-out infinite vroed-tutor-dot}.vroed-tutor-mark-thinking .vroed-tutor-mark-dot:nth-child(2){animation-delay:.16s}.vroed-tutor-mark-thinking .vroed-tutor-mark-dot:nth-child(3){animation-delay:.32s}.vroed-tutor-mark-disabled{color:var(--color-text-disabled)}.vroed-tutor-mark-disabled .vroed-tutor-mark-disc{background:var(--color-disabled-bg);border-color:var(--color-disabled-border);box-shadow:none;animation:none}.vroed-tutor-mark-disabled .vroed-tutor-mark-dot{background:var(--color-text-disabled);animation:none}@keyframes vroed-tutor-float{0%,to{transform:translate(0,0)}50%{transform:translateY(-3px)}}@keyframes vroed-tutor-breathe{0%,to{opacity:1}50%{opacity:.72}}@keyframes vroed-tutor-dot{0%,to{opacity:.4;transform:translate(0,0)}50%{opacity:1;transform:translateY(-2px)}}@media (prefers-reduced-motion:reduce){.ds-button-spinner{opacity:.7;border-right-color:currentColor;animation:none}.vroed-tutor-mark-disc,.vroed-tutor-mark-idle .vroed-tutor-mark-disc,.vroed-tutor-mark-responding .vroed-tutor-mark-disc,.vroed-tutor-mark-thinking .vroed-tutor-mark-dot,.vroed-tutor-mark-responding .vroed-tutor-mark-glyph{animation:none!important}.vroed-tutor-mark-thinking .vroed-tutor-mark-dot{opacity:.85;transform:none}}.ds-modal-root{z-index:var(--z-modal);padding:max(var(--space-4), env(safe-area-inset-top)) max(var(--space-4), env(safe-area-inset-right)) max(var(--space-4), env(safe-area-inset-bottom)) max(var(--space-4), env(safe-area-inset-left));animation:ds-modal-in var(--transition-fast);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.ds-modal-backdrop{background:var(--color-modal-overlay);-webkit-backdrop-filter:none;backdrop-filter:none;border:0;position:absolute;inset:0}.ds-modal{z-index:1;background:var(--color-modal-bg);border:1px solid var(--color-modal-border);border-radius:var(--radius-panel);width:min(32rem,100%);min-width:0;max-height:100%;box-shadow:var(--shadow-modal);flex-direction:column;display:flex;position:relative;overflow:hidden}.ds-modal-sm{width:min(24rem,100%)}.ds-modal-md{width:min(32rem,100%)}.ds-modal-lg{width:min(40rem,100%)}.ds-modal-xl{width:min(48rem,100%)}.ds-modal-header{justify-content:space-between;align-items:flex-start;gap:var(--space-3);padding:var(--space-4) var(--space-4) var(--space-3);display:flex}.ds-modal-heading{min-width:0}.ds-modal-title{color:var(--color-text-primary);overflow-wrap:anywhere;margin:0}.ds-modal-description{margin:var(--space-2) 0 0;color:var(--color-text-secondary);overflow-wrap:anywhere}.ds-modal-close{color:var(--color-text-muted);flex:none}.ds-modal-close:hover:not(:disabled){color:var(--color-text-primary)}.ds-modal-body{min-height:0;padding:0 var(--space-4) var(--space-4);overflow-wrap:anywhere;flex:auto;overflow:auto}.ds-modal-footer{justify-content:flex-end;gap:var(--space-2);padding:var(--space-3) var(--space-4) var(--space-4);border-top:1px solid var(--color-border-subtle);flex-wrap:wrap;display:flex}.ds-modal-footer .ds-button{overflow-wrap:anywhere;min-width:0}@keyframes ds-modal-in{0%{opacity:0}to{opacity:1}}@media (width<=767px){.ds-modal-root{padding:max(var(--space-3), env(safe-area-inset-top)) max(var(--space-3), env(safe-area-inset-right)) max(var(--space-3), env(safe-area-inset-bottom)) max(var(--space-3), env(safe-area-inset-left))}.ds-modal,.ds-modal-sm,.ds-modal-md,.ds-modal-lg,.ds-modal-xl{width:100%;max-height:100%}.ds-modal-title{font-size:var(--font-size-heading-sm)}.ds-modal-footer{flex-direction:column-reverse;align-items:stretch}.ds-modal-footer .ds-button{width:100%}}@media (prefers-reduced-motion:reduce){.ds-modal-root{animation:none}}.skip-link{left:var(--space-4);top:var(--space-4);z-index:var(--z-toast);padding:var(--space-2) var(--space-3);border-radius:var(--radius-control);background:var(--color-primary);color:var(--color-text-on-primary);font-size:var(--font-size-label);font-weight:var(--font-weight-semibold);position:absolute;transform:translateY(-200%)}.skip-link:hover,.skip-link:focus,.skip-link:focus-visible{color:var(--color-text-on-primary)}.skip-link:focus,.skip-link:focus-visible{transform:none}html.is-nav-open,html.is-nav-open body,html.is-modal-open,html.is-modal-open body{overflow:hidden}.app-shell,.student-shell,.teacher-shell,.admin-shell{background:var(--color-bg);flex-direction:column;width:100%;max-width:100%;height:100dvh;min-height:100dvh;display:flex;position:relative;overflow:hidden}.app-shell-body,.student-body,.teacher-body,.admin-body{flex:1;min-width:0;min-height:0;display:flex;position:relative}.app-shell-nav{flex:0 0 var(--sidebar-width);width:var(--sidebar-width);min-width:0;min-height:0;transition:width var(--transition-normal), flex-basis var(--transition-normal);flex-direction:column;display:flex}.app-shell-nav .student-sidebar,.app-shell-nav .teacher-sidebar,.app-shell-nav .admin-sidebar,.app-shell-nav .app-sidebar{flex:auto;width:100%;min-height:0}.app-shell-main,.student-content,.teacher-content,.admin-content{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden auto}:is(.app-shell-main:has(.page-container-full),.app-shell-main:has(.student-chat),.app-shell-main:has(.teacher-chat),.student-content:has(.student-chat),.teacher-content:has(.teacher-chat)),.app-shell.is-nav-open .app-shell-main{overflow:hidden}.student-shell:has(.student-backdrop) .student-content{overflow:hidden}.teacher-shell:has(.teacher-backdrop) .teacher-content{overflow:hidden}.admin-shell:has(.admin-backdrop) .admin-content{overflow:hidden}.page-container{width:100%;min-width:0}.page-container-content{max-width:var(--container-max);padding:var(--page-padding-mobile);padding-left:max(var(--page-padding-mobile), env(safe-area-inset-left));padding-right:max(var(--page-padding-mobile), env(safe-area-inset-right));padding-bottom:max(var(--page-padding-mobile), env(safe-area-inset-bottom));margin-inline:auto}.page-container-wide{width:100%;max-width:var(--container-max-wide);padding:var(--page-padding-mobile);padding-left:max(var(--page-padding-mobile), env(safe-area-inset-left));padding-right:max(var(--page-padding-mobile), env(safe-area-inset-right));padding-bottom:max(var(--page-padding-mobile), env(safe-area-inset-bottom));margin-inline:auto}.page-container-full{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}@media (width>=768px){.page-container-content,.page-container-wide{padding:var(--page-padding-tablet);padding-left:max(var(--page-padding-tablet), env(safe-area-inset-left));padding-right:max(var(--page-padding-tablet), env(safe-area-inset-right));padding-bottom:var(--page-padding-tablet)}.app-shell.is-nav-collapsed .app-shell-nav,.app-shell.is-nav-collapsed .student-sidebar,.app-shell.is-nav-collapsed .teacher-sidebar,.app-shell.is-nav-collapsed .admin-sidebar,.app-shell.is-nav-collapsed .app-sidebar{width:var(--sidebar-width-collapsed);flex:0 0 var(--sidebar-width-collapsed)}}@media (width>=1024px){.page-container-content,.page-container-wide{padding:var(--page-padding-desktop);padding-left:max(var(--page-padding-desktop), env(safe-area-inset-left));padding-right:max(var(--page-padding-desktop), env(safe-area-inset-right));padding-bottom:var(--page-padding-desktop)}}@media (width<=767px){.app-shell-nav{flex:none;width:auto;display:contents}.app-shell.is-nav-collapsed .app-shell-nav,.app-shell.is-nav-collapsed .student-sidebar,.app-shell.is-nav-collapsed .teacher-sidebar,.app-shell.is-nav-collapsed .admin-sidebar,.app-shell.is-nav-collapsed .app-sidebar{width:min(var(--sidebar-width), 88%);flex:none}}@media (prefers-reduced-motion:reduce){.app-shell-nav,.app-sidebar,.student-sidebar,.teacher-sidebar,.admin-sidebar,.app-nav-item,.app-sidebar-collapse{transition:none}}.academic-selector{gap:var(--space-3);flex-direction:column;min-width:0;display:flex}.academic-selector-title{color:var(--color-text-primary);margin:0}.academic-card-list{gap:var(--space-4);grid-template-columns:minmax(0,1fr);margin:0;padding:0;list-style:none;display:grid}.academic-item{min-width:0}.academic-card{align-items:flex-start;gap:var(--space-1);width:100%;min-width:0;min-height:var(--space-10);text-align:left;cursor:pointer;color:var(--color-text-primary);overflow-wrap:break-word;flex-direction:column;display:flex}.academic-card.ds-card{box-shadow:var(--shadow-xs)}.academic-card-title{color:inherit;overflow-wrap:break-word;margin:0}.academic-card-meta,.academic-card-state{color:var(--color-text-secondary)}.academic-card.is-selected{border-color:var(--color-border-primary);background:var(--color-surface-ice);box-shadow:var(--shadow-xs)}.academic-card.is-selected .academic-card-state{font-weight:var(--font-weight-medium);color:var(--color-primary)}.academic-card:hover:not(:disabled):not(.is-selected){background:var(--color-surface-hover)}.academic-card:disabled{cursor:not-allowed;background:var(--color-disabled-bg);color:var(--color-disabled-text);border-color:var(--color-disabled-border);box-shadow:none}.academic-breadcrumb{min-width:0}.academic-breadcrumb-list{align-items:baseline;gap:var(--space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.academic-breadcrumb-list li{align-items:baseline;gap:var(--space-2);flex-wrap:wrap;min-width:0;display:flex}.academic-breadcrumb-action,.academic-breadcrumb-current{min-width:0;font:inherit;overflow-wrap:anywhere;word-break:break-word;background:0 0;border:0;padding:0;display:inline}.academic-breadcrumb-action{color:var(--color-link);cursor:pointer;text-decoration:none}.academic-breadcrumb-action:hover{color:var(--color-link-hover);text-decoration:underline}.academic-breadcrumb-current{color:var(--color-text-primary);font-weight:var(--font-weight-medium)}.academic-breadcrumb-sep{color:var(--color-text-muted)}@media (width>=768px){.academic-card-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1024px){.academic-card-list{grid-template-columns:repeat(3,minmax(0,1fr))}}.admin-academic-layout .academic-card-list{grid-template-columns:minmax(0,1fr)}@media (width<=767px){.academic-card{padding:var(--space-4)}}*,:before,:after{box-sizing:border-box}html,body,#root{max-width:100%;height:100%;min-height:100dvh;margin:0}html{overflow-x:clip}body{font-family:var(--font-family-sans);font-size:var(--font-size-body);line-height:var(--line-height-normal);color:var(--color-text-primary);background:var(--color-bg);overflow-x:hidden}img{max-width:100%;height:auto}.layout{min-height:100dvh}.page{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:100dvh;padding:1.5rem;display:flex}.page h1{font-size:var(--font-size-display);font-weight:var(--font-weight-extrabold);line-height:var(--line-height-tight);letter-spacing:var(--letter-spacing-tight);margin:0 0 .5rem}.page p{font-size:var(--font-size-body);line-height:var(--line-height-relaxed);color:var(--color-text-secondary);overflow-wrap:anywhere;margin:0}.page a{color:var(--color-link);text-decoration:none}.page a:hover{color:var(--color-link-hover);text-decoration:underline}.layout-auth{background:var(--color-bg);min-height:100dvh}.auth-page{isolation:isolate;width:100%;min-width:0;max-width:100%;min-height:100dvh;padding:var(--space-6) var(--space-5);padding-top:max(var(--space-6), env(safe-area-inset-top));padding-bottom:max(var(--space-6), env(safe-area-inset-bottom));background:var(--color-bg);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden auto}.auth-page:before,.auth-page:after{content:"";border-radius:var(--radius-avatar);pointer-events:none;z-index:-1;position:absolute}.auth-page:before{background:var(--color-surface-ice);opacity:.72;width:min(28rem,90%);height:28rem;top:4%;left:50%;transform:translate(-50%)}.auth-page:after{background:var(--color-primary-light);opacity:.4;width:min(16rem,55%);height:16rem;bottom:6%;right:max(4%,1rem)}.auth-card{width:100%;min-width:0;max-width:26.25rem;padding:var(--space-8) var(--space-6);background:var(--color-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-panel);box-shadow:var(--shadow-card)}.auth-intro{margin:0 0 var(--space-6);text-align:center;flex-direction:column;align-items:center;display:flex}.auth-brand,.auth-brand-meta,.auth-subtitle,.auth-footer{text-align:center;margin:0}.auth-brand{font-size:var(--font-size-label);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);color:var(--color-text-primary)}.auth-brand-meta{margin-top:var(--space-1)}.auth-tutor-mark{width:100%;min-height:var(--tutor-mark-size-md);margin:var(--space-5) 0 var(--space-5);justify-content:center;align-items:center;display:flex}.auth-card h1,.auth-intro .text-h1,.auth-intro .text-display{margin:0 0 var(--space-2);text-align:center;color:var(--color-text-primary)}.auth-subtitle{max-width:22rem;font-size:var(--font-size-body-small);line-height:var(--line-height-normal);color:var(--color-text-secondary);overflow-wrap:anywhere}.auth-form{gap:var(--space-4);flex-direction:column;display:flex}.field{gap:var(--space-2);text-align:left;flex-direction:column;display:flex}.field label,.ds-field .ds-label{font-size:var(--font-size-label);font-weight:var(--font-weight-medium);line-height:var(--line-height-normal);color:var(--color-text-primary)}.field input,.password-toggle,.auth-submit{font:inherit}.auth-form .ds-input,.field input{background:var(--color-input-bg);width:100%;min-width:0;max-width:100%;min-height:2.5rem;color:var(--color-text-primary)}.auth-form .ds-input:-webkit-autofill{-webkit-text-fill-color:var(--color-text-primary);caret-color:var(--color-text-primary);box-shadow:0 0 0 1000px var(--color-input-bg) inset;border-color:var(--color-input-border)}.auth-form .ds-input:-webkit-autofill:hover{-webkit-text-fill-color:var(--color-text-primary);caret-color:var(--color-text-primary);box-shadow:0 0 0 1000px var(--color-input-bg) inset;border-color:var(--color-input-border)}.auth-form .ds-input:-webkit-autofill:focus{-webkit-text-fill-color:var(--color-text-primary);caret-color:var(--color-text-primary);box-shadow:0 0 0 1000px var(--color-input-bg) inset;border-color:var(--color-input-border)}.password-row{align-items:stretch;gap:var(--space-2);min-width:0;display:flex}.password-row .ds-input,.password-row input{flex:1 1 0;width:auto;min-width:0}.password-toggle,.auth-submit{border-radius:var(--radius-control);cursor:pointer;min-height:2.5rem}.password-toggle{padding:0 var(--space-3);white-space:nowrap;flex:none}.auth-submit{width:100%;min-height:2.75rem;margin-top:var(--space-2)}.password-toggle:disabled,.field input:disabled,.auth-form .ds-input:disabled{cursor:not-allowed}.field-error{color:var(--color-error);font-size:var(--font-size-label);font-weight:var(--font-weight-medium);line-height:var(--line-height-normal);overflow-wrap:anywhere;margin:0}.form-error{padding:var(--space-3);border-radius:var(--radius-control);border:1px solid var(--color-error-border);background:var(--color-error-soft);color:var(--color-error);font-size:var(--font-size-label);line-height:var(--line-height-normal);overflow-wrap:anywhere;margin:0}.form-success{color:var(--color-success);font-size:var(--font-size-label);margin:0}.auth-footer{margin-top:var(--space-5)}.auth-footer a{color:var(--color-link);font-size:var(--font-size-label);text-decoration:none}.auth-footer a:hover{color:var(--color-link-hover);text-decoration:underline}.session-status{flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem 1rem;margin-top:1rem;display:flex}.layout>.session-status{justify-content:flex-end;margin:0;padding:.75rem 1rem}.session-logout:not(.ds-button){font:inherit;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);cursor:pointer;min-height:2.25rem;padding:.35rem .8rem}.session-logout:disabled{opacity:.7;cursor:not-allowed}.student-header,.teacher-header,.admin-header{min-width:0;padding:.75rem 1rem;padding-top:max(.75rem, env(safe-area-inset-top));padding-left:max(1rem, env(safe-area-inset-left));padding-right:max(1rem, env(safe-area-inset-right));background:var(--color-surface);border-bottom:1px solid var(--color-border);flex:none;align-items:center;gap:.75rem;display:flex}.student-menu-button,.teacher-menu-button,.admin-menu-button,.student-logout,.teacher-logout,.admin-logout,.student-retry,.teacher-retry,.admin-retry,.student-backdrop,.teacher-backdrop,.admin-backdrop,.app-shell-overlay{font:inherit;cursor:pointer}.student-menu-button,.teacher-menu-button,.admin-menu-button{min-height:2.5rem;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-text-primary);align-items:center;display:inline-flex}.student-brand,.teacher-brand,.admin-brand{flex:1;min-width:0}.student-brand-name,.teacher-brand-name,.admin-brand-name,.student-brand-title,.teacher-brand-title,.admin-brand-title,.student-header-name,.teacher-header-name,.admin-header-name{text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.student-brand-name,.teacher-brand-name,.admin-brand-name{font-size:var(--font-size-body-small);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.student-brand-title,.teacher-brand-title,.admin-brand-title{font-size:var(--font-size-caption);color:var(--color-text-secondary)}.student-header-user,.teacher-header-user,.admin-header-user{align-items:center;gap:.5rem;min-width:0;display:flex}.admin-header-role{color:var(--color-text-secondary);margin:0}.student-avatar,.teacher-avatar,.admin-avatar{width:var(--avatar-size-sm);height:var(--avatar-size-sm);border-radius:var(--radius-avatar);background:var(--color-avatar-bg);color:var(--color-avatar-text);font-size:var(--font-size-metadata);font-weight:var(--font-weight-semibold);justify-content:center;align-items:center;display:inline-flex}.student-header-name,.teacher-header-name,.admin-header-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:10rem;font-size:var(--font-size-body-small);font-weight:var(--font-weight-medium);overflow:hidden}.app-sidebar,.student-sidebar,.teacher-sidebar,.admin-sidebar{width:var(--sidebar-width);flex-direction:column;flex:0 0 var(--sidebar-width);min-width:0;min-height:0;padding:var(--space-3);background:var(--color-nav-background);border-right:1px solid var(--color-border);display:flex;overflow:hidden auto}.app-sidebar-top{gap:var(--space-3);margin-bottom:var(--space-4);flex-direction:column;display:flex}.app-sidebar-brand-row{justify-content:space-between;align-items:center;gap:var(--space-2);min-width:0;display:flex}.app-sidebar-brand{align-items:center;gap:var(--space-2);min-width:0;display:flex}.app-sidebar-mark{width:var(--space-8);height:var(--space-8);border-radius:var(--radius-avatar);background:var(--color-surface-ice);color:var(--color-primary);font-size:var(--font-size-heading-sm);font-weight:var(--font-weight-bold);border:1px solid var(--color-ai-border);flex:none;justify-content:center;align-items:center;line-height:1;display:inline-flex}.app-sidebar-brand-name,.app-sidebar-brand-title,.app-sidebar-user-name,.app-sidebar-user-email,.app-sidebar-user-role{overflow-wrap:anywhere;margin:0}.app-sidebar-brand-name{font-size:var(--font-size-body-small);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.app-sidebar-brand-title{font-size:var(--font-size-caption);color:var(--color-text-secondary)}.app-sidebar-collapse{align-self:flex-start}.app-nav,.student-nav,.teacher-nav,.admin-nav{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.app-nav-item,.student-nav-link,.teacher-nav-link,.admin-nav-link{align-items:center;gap:var(--space-2);min-height:var(--space-10);padding:var(--space-2) var(--space-3);border-radius:var(--radius-control);color:var(--color-nav-text);font-size:var(--font-size-body-small);font-weight:var(--font-weight-medium);line-height:var(--line-height-normal);transition:background-color var(--transition-fast), color var(--transition-fast);text-decoration:none;display:flex;position:relative}.app-nav-icon{width:var(--space-8);height:var(--space-8);color:inherit;flex:none;justify-content:center;align-items:center;display:inline-flex}.app-nav-glyph{width:var(--icon-size-md);height:var(--icon-size-md);fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;display:block}.app-nav-label{min-width:0}.app-nav-item-tutor .app-nav-icon{border-radius:var(--radius-sm);background:var(--color-ai-soft);color:var(--color-ai-icon)}.app-nav-item:hover,.student-nav-link:hover,.teacher-nav-link:hover,.admin-nav-link:hover{background:var(--color-nav-hover);color:var(--color-nav-text)}.app-nav-item.is-active,.student-nav-link.is-active,.teacher-nav-link.is-active,.admin-nav-link.is-active{background:var(--color-nav-active-background);color:var(--color-nav-text-active);font-weight:var(--font-weight-semibold)}.app-nav-item.is-active:before,.student-nav-link.is-active:before,.teacher-nav-link.is-active:before,.admin-nav-link.is-active:before{content:"";left:0;top:var(--space-2);bottom:var(--space-2);border-radius:var(--radius-pill);background:var(--color-nav-active-indicator);width:3px;position:absolute}.app-nav-item-tutor.is-active .app-nav-icon{background:var(--color-primary-soft);color:var(--color-nav-text-active)}.app-sidebar-footer,.student-sidebar-footer,.teacher-sidebar-footer,.admin-sidebar-footer{padding-top:var(--space-4);border-top:1px solid var(--color-border-subtle);gap:var(--space-3);flex-direction:column;margin-top:auto;display:flex}.app-sidebar-user{align-items:center;gap:var(--space-2);min-width:0;display:flex}.app-sidebar-avatar{flex:none}.app-sidebar-user-name{font-size:var(--font-size-body-small);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.app-sidebar-user-email,.app-sidebar-user-role{font-size:var(--font-size-caption);color:var(--color-text-secondary)}.app-sidebar-logout,.student-logout,.teacher-logout{justify-content:flex-start}.sidebar-close{align-self:flex-end;display:none}.student-retry,.teacher-retry,.admin-retry{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);min-height:2.25rem;color:var(--color-text-primary);padding:.35rem .8rem}.student-logout:disabled,.teacher-logout:disabled,.admin-logout:disabled,.student-retry:disabled,.teacher-retry:disabled,.admin-retry:disabled,.student-menu-button:disabled,.teacher-menu-button:disabled,.admin-menu-button:disabled{opacity:.7;cursor:not-allowed}.student-page,.teacher-page,.admin-page{width:100%;min-width:0}.admin-academic-page{gap:var(--space-5);flex-direction:column;display:flex}.admin-academic-layout{gap:var(--space-6);grid-template-columns:1fr;width:100%;min-width:0;display:grid}.admin-academic-section-action{margin:0 0 var(--space-3)}.admin-academic-item{min-width:0}.admin-academic-card{gap:var(--space-3);flex-direction:column;min-width:0;display:flex}.admin-academic-select{align-items:flex-start;gap:var(--space-1);width:100%;min-width:0;color:inherit;text-align:left;cursor:pointer;overflow-wrap:break-word;background:0 0;border:0;flex-direction:column;padding:0;display:flex}.admin-academic-select .academic-card-title,.admin-academic-select .academic-card-meta{overflow-wrap:break-word;word-break:normal}.admin-academic-select:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px}.admin-academic-item-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.admin-academic-form{gap:var(--space-4);flex-direction:column;min-width:0;display:flex}@media (width>=768px){.admin-academic-layout{grid-template-columns:repeat(2,1fr);align-items:start}.admin-academic-layout .academic-card-list{grid-template-columns:repeat(auto-fill,minmax(min(100%,14rem),1fr))}}@media (width>=1024px){.admin-academic-layout-chapters{grid-template-columns:repeat(3,1fr);align-items:start}}@media (width>=1280px){.admin-academic-layout-content{grid-template-columns:repeat(4,1fr);align-items:start}}.admin-academic-layout>.dashboard-section{min-width:0;min-height:8rem;padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-card)}.admin-user-filters{gap:var(--space-2);flex-wrap:wrap;display:flex}.teacher-class-students{gap:var(--space-3);margin-bottom:var(--space-5);flex-direction:column;display:flex}.admin-user-assignment-add{gap:var(--space-3);flex-direction:column;display:flex}.academic-card.is-inactive{opacity:.72}.student-academic-page .academic-breadcrumb,.teacher-academic-page .academic-breadcrumb,.admin-academic-page .academic-breadcrumb{margin:0 0 var(--space-5)}.chapter-workspace{gap:var(--space-6);flex-direction:column;min-width:0;display:flex}.chapter-workspace-meta{gap:var(--space-3);grid-template-columns:minmax(0,1fr);margin:0;display:grid}.chapter-workspace-meta>div{min-width:0}.chapter-workspace-meta dt{color:var(--color-text-muted)}.chapter-workspace-meta dd{margin:var(--space-1) 0 0;overflow-wrap:anywhere}.chapter-workspace-description{margin:var(--space-4) 0 0;overflow-wrap:anywhere}@media (width>=768px){.chapter-workspace-meta{grid-template-columns:repeat(3,minmax(0,1fr))}}.page-container-content.dashboard-page{max-width:var(--container-max-wide)}.dashboard-page{flex-direction:column;display:flex}.student-page h1,.teacher-page h1,.admin-page h1{margin:0 0 var(--space-1);font-size:var(--font-size-h2);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);overflow-wrap:anywhere}.student-welcome p,.teacher-welcome p,.admin-welcome p,.student-page>p,.teacher-page>p,.admin-page>p,.dashboard-card p,.student-status,.teacher-status,.admin-status,.student-error p,.teacher-error p,.admin-error p{font-size:var(--font-size-body-small);line-height:var(--line-height-normal);color:var(--color-text-secondary);margin:0}.dashboard-header,.student-welcome,.teacher-welcome,.admin-welcome{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-5);flex-wrap:wrap;display:flex}.dashboard-header-copy{flex:12rem;min-width:0}.dashboard-header-text{min-width:0}.dashboard-header-text h1,.dashboard-header-text p{overflow-wrap:anywhere}.dashboard-header-text p{color:var(--color-text-secondary)}.dashboard-header-identity{align-items:flex-start;gap:var(--space-3);min-width:0;display:flex}.dashboard-header-action{flex:none;min-width:0}.user-summary{gap:var(--space-2);margin-bottom:var(--space-5);padding:var(--space-3) var(--space-4);background:var(--color-surface-soft);border:1px solid var(--color-border-subtle);border-radius:var(--radius-card);display:grid}.user-summary p{gap:var(--space-1) var(--space-3);overflow-wrap:anywhere;flex-wrap:wrap;min-width:0;margin:0;display:flex}.user-summary-label{min-width:4.5rem;font-size:var(--font-size-label);font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.user-summary p>span:last-child{overflow-wrap:anywhere;flex:8rem;min-width:0}.student-status,.teacher-status,.student-error,.teacher-error{margin:0 0 var(--space-5)}.student-error,.teacher-error{align-items:flex-start;gap:var(--space-3);padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-error-border);border-radius:var(--radius-card);flex-direction:column;display:flex}.ui-status{align-items:flex-start;gap:var(--space-3);overflow-wrap:anywhere;flex-direction:column;max-width:100%;display:flex}.ui-empty{max-width:36rem}.ui-loading{align-items:center;gap:var(--space-2);flex-direction:row}.ui-spinner{width:var(--icon-size-sm);height:var(--icon-size-sm);border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;flex:none;animation:.7s linear infinite ui-spin}@keyframes ui-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.ui-spinner{animation:none}}.ui-status-title{font-size:var(--font-size-heading-sm);font-weight:var(--font-weight-semibold);line-height:var(--line-height-snug);color:var(--color-text-primary);overflow-wrap:anywhere;margin:0}.ui-status p{font-size:var(--font-size-body-small);line-height:var(--line-height-normal);margin:0}.ui-error{color:var(--color-error);background:var(--color-error-soft);border:1px solid var(--color-error-border);border-radius:var(--radius-card)}.dashboard-card .ui-empty{background:0 0;border:0;gap:.2rem;padding:0}.ui-error button:disabled,.chat-history-retry:disabled{opacity:.7;cursor:not-allowed}.ui-error button:focus-visible,.ui-empty button:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px;box-shadow:var(--shadow-focus)}.dashboard-layout{gap:var(--space-6);flex-direction:column;min-width:0;display:flex}.dashboard-section{min-width:0}.dashboard-section-title,.quick-actions-heading{margin:0 0 var(--space-3);font-size:var(--font-size-heading-sm);font-weight:var(--font-weight-semibold);line-height:var(--line-height-snug);color:var(--color-text-primary);overflow-wrap:break-word}.dashboard-section-description{margin:0 0 var(--space-3);color:var(--color-text-secondary);overflow-wrap:anywhere}.dashboard-grid,.quick-actions-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));display:grid}.dashboard-card,.quick-action{min-width:0;padding:var(--space-4);background:var(--color-card);border:1px solid var(--color-card-border);border-radius:var(--radius-card);box-shadow:var(--shadow-xs);overflow-wrap:break-word}.dashboard-card.ds-card{box-shadow:var(--shadow-xs)}.dashboard-card-continue{border-color:var(--color-ai-border)}.dashboard-card-header{align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-3);min-width:0;display:flex}.dashboard-card-heading{min-width:0}.dashboard-card-header h3,.dashboard-card-header .text-heading-sm{overflow-wrap:break-word;word-break:normal;margin:0}.dashboard-card-subtitle{margin:var(--space-1) 0 0;color:var(--color-text-secondary);overflow-wrap:break-word}.dashboard-card-icon{width:var(--icon-well-size);height:var(--icon-well-size);color:var(--color-icon-well-fg);background:var(--color-icon-well-bg);border:1px solid var(--color-border-subtle);border-radius:var(--radius-control);flex:none;justify-content:center;align-items:center;display:inline-flex}.dashboard-card-icon:has(.vroed-tutor-mark){background:0 0;border:0;width:auto;height:auto;padding:0}.dashboard-card-body{min-width:0}.dashboard-card-body p{margin:0 0 var(--space-2);color:var(--color-text-secondary);overflow-wrap:anywhere}.dashboard-card-body p:last-child{margin-bottom:0}.dashboard-card-footer{gap:var(--space-2);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.dashboard-card h2,.dashboard-card h3,.quick-action h2,.quick-action h3{margin:0 0 var(--space-2);font-size:var(--font-size-heading-sm);font-weight:var(--font-weight-semibold);line-height:var(--line-height-snug);color:var(--color-text-primary)}.dashboard-count{font-size:var(--font-size-h3);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);overflow-wrap:anywhere;color:var(--color-text-primary)!important}.dashboard-list,.dashboard-item-list{margin:var(--space-3) 0 0;overflow-wrap:anywhere;padding:0;list-style:none}.dashboard-item{gap:var(--space-1);min-width:0;padding:var(--space-2) 0;border-top:1px solid var(--color-border-subtle);flex-direction:column;display:flex}.dashboard-item-link{align-items:flex-start;gap:var(--space-1);width:100%;min-width:0;color:inherit;flex-direction:column;text-decoration:none;display:flex}.dashboard-item-link:hover .dashboard-item-title{color:var(--color-link)}.dashboard-item-title{color:var(--color-text-primary);overflow-wrap:anywhere}.dashboard-item-meta{font-size:var(--font-size-caption);color:var(--color-text-muted);overflow-wrap:anywhere}.dashboard-path{min-width:0}.dashboard-journey{padding:var(--space-4);background:var(--color-card);border:1px solid var(--color-card-border);border-radius:var(--radius-card);box-shadow:var(--shadow-xs);flex-direction:column;gap:0;margin:0;list-style:none;display:flex}.dashboard-journey-step{min-width:0;position:relative}.dashboard-journey-step:not(:last-child):after{content:"";left:.4rem;top:calc(var(--space-2) + .2rem + .8rem);background:var(--color-progress-future);width:1px;position:absolute;bottom:-.15rem}.dashboard-journey-step.is-completed:not(:last-child):after{background:var(--color-progress-complete)}.dashboard-journey-step.is-current:not(:last-child):after{background:var(--color-progress-current)}.dashboard-journey-link,.dashboard-journey-static{align-items:flex-start;gap:var(--space-3);min-width:0;padding:var(--space-2) 0;color:inherit;text-decoration:none;display:flex}.dashboard-journey-link{border-radius:var(--radius-control);transition:background-color var(--transition-fast)}.dashboard-journey-link:hover{background:var(--color-surface-hover)}.dashboard-journey-step.is-current .dashboard-journey-link,.dashboard-journey-step.is-current .dashboard-journey-static{background:var(--color-surface-ice);border-radius:var(--radius-control)}.dashboard-journey-step.is-unavailable .dashboard-journey-static{cursor:not-allowed}.dashboard-journey-link:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px;box-shadow:var(--shadow-focus)}.dashboard-journey-marker{border:2px solid var(--color-progress-future);border-radius:var(--radius-avatar);background:var(--color-surface);flex:none;width:.8rem;height:.8rem;margin-top:.2rem;display:block}.is-completed .dashboard-journey-marker{border-color:var(--color-progress-complete);background:var(--color-progress-complete)}.is-current .dashboard-journey-marker{border-color:var(--color-progress-current);background:var(--color-progress-current)}.is-upcoming .dashboard-journey-marker,.is-unavailable .dashboard-journey-marker{border-color:var(--color-progress-future);background:var(--color-surface)}.is-unavailable .dashboard-journey-copy{color:var(--color-text-disabled)}.dashboard-journey-copy{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.dashboard-journey-label{font-size:var(--font-size-label);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);overflow-wrap:anywhere}.dashboard-journey-status{font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.is-completed .dashboard-journey-status{color:var(--color-success)}.is-current .dashboard-journey-status{color:var(--color-primary)}.dashboard-journey-detail{font-size:var(--font-size-caption);color:var(--color-text-muted);overflow-wrap:anywhere}.quick-actions{margin-top:var(--space-6)}.dashboard-layout .quick-actions{margin-top:0}.quick-action{align-items:flex-start;gap:var(--space-3);color:inherit;transition:border-color var(--transition-fast), background-color var(--transition-fast);text-decoration:none;display:flex}.quick-action-copy{min-width:0}.quick-action p{color:var(--color-text-secondary);margin:0}.quick-action:hover{border-color:var(--color-primary);background:var(--color-surface-hover)}.quick-action:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px;box-shadow:var(--shadow-focus)}@media (width<=767px){.dashboard-overview .dashboard-grid{grid-template-columns:minmax(0,1fr)}}@media (width>=768px){.dashboard-overview .dashboard-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-primary{gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;display:grid}.dashboard-primary>.dashboard-section-title,.dashboard-primary>.dashboard-section-description{grid-column:1/-1}.dashboard-primary>.dashboard-card{height:100%}}@media (width>=1280px){.quick-actions-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width>=1024px){.dashboard-journey{align-items:stretch;gap:var(--space-2);flex-direction:row}.dashboard-journey-step{flex:1 1 0}.dashboard-journey-step:not(:last-child):after{left:.8rem;right:calc(var(--space-2) * -1);top:calc(var(--space-1) + .2rem + .4rem);width:auto;height:1px;bottom:auto}.dashboard-journey-link,.dashboard-journey-static{height:100%;padding:var(--space-1);flex-direction:column;align-items:flex-start}}@media (width<=767px){.dashboard-header,.student-welcome,.teacher-welcome,.admin-welcome{margin-bottom:var(--space-4);flex-direction:column;align-items:stretch}.dashboard-header-action .ds-button,.dashboard-card-footer .ds-button,.admin-academic-item-actions .ds-button,.ui-empty .ds-button,.ui-error .ds-button{width:100%}.dashboard-layout{gap:var(--space-5)}.dashboard-journey{padding:var(--space-3)}}@media (prefers-reduced-motion:reduce){.quick-action,.dashboard-journey-link{transition:none}}.student-backdrop,.teacher-backdrop,.admin-backdrop,.app-shell-overlay{background:var(--color-overlay);-webkit-backdrop-filter:blur(var(--overlay-blur));backdrop-filter:blur(var(--overlay-blur));z-index:var(--z-overlay);border:0;position:absolute;inset:0}.student-menu-button:focus-visible,.teacher-menu-button:focus-visible,.admin-menu-button:focus-visible,.student-nav-link:focus-visible,.teacher-nav-link:focus-visible,.admin-nav-link:focus-visible,.app-nav-item:focus-visible,.app-sidebar-collapse:focus-visible,.app-sidebar-logout:focus-visible,.student-logout:focus-visible,.teacher-logout:focus-visible,.admin-logout:focus-visible,.student-retry:focus-visible,.teacher-retry:focus-visible,.admin-retry:focus-visible,.quick-action:focus-visible,.student-backdrop:focus-visible,.teacher-backdrop:focus-visible,.admin-backdrop:focus-visible,.app-shell-overlay:focus-visible,.sidebar-close:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px;box-shadow:var(--shadow-focus)}@media (width>=768px){.student-menu-button,.teacher-menu-button,.admin-menu-button,.student-backdrop,.teacher-backdrop,.admin-backdrop,.app-shell-overlay{display:none}.chat-header,.student-chat-header,.teacher-chat-header{flex-wrap:nowrap}.app-sidebar.is-collapsed{width:var(--sidebar-width-collapsed,4.5rem);flex:0 0 var(--sidebar-width-collapsed,4.5rem);padding-inline:var(--space-2);align-items:center}.app-sidebar.is-collapsed .app-sidebar-top,.app-sidebar.is-collapsed .app-nav,.app-sidebar.is-collapsed .app-sidebar-footer{align-items:center;width:100%}.app-sidebar.is-collapsed .app-sidebar-text{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-sidebar.is-collapsed .app-sidebar-brand,.app-sidebar.is-collapsed .app-sidebar-user,.app-sidebar.is-collapsed .app-nav-item,.app-sidebar.is-collapsed .student-nav-link,.app-sidebar.is-collapsed .teacher-nav-link,.app-sidebar.is-collapsed .admin-nav-link,.app-sidebar.is-collapsed .app-sidebar-logout,.app-sidebar.is-collapsed .app-sidebar-theme-toggle{justify-content:center;width:100%}.app-sidebar.is-collapsed .app-sidebar-brand-row{flex-direction:column;align-items:center;width:100%}.app-sidebar.is-collapsed .app-nav-item,.app-sidebar.is-collapsed .student-nav-link,.app-sidebar.is-collapsed .teacher-nav-link,.app-sidebar.is-collapsed .admin-nav-link{justify-content:center;width:100%;padding-inline:0}.app-sidebar.is-collapsed .app-sidebar-collapse,.app-sidebar.is-collapsed .app-sidebar-logout,.app-sidebar.is-collapsed .app-sidebar-theme-toggle{justify-content:center;width:100%}.app-sidebar.is-collapsed .app-nav-item.is-active,.app-sidebar.is-collapsed .student-nav-link.is-active,.app-sidebar.is-collapsed .teacher-nav-link.is-active,.app-sidebar.is-collapsed .admin-nav-link.is-active{background-color:var(--color-nav-active-background);color:var(--color-nav-text-active)}.app-sidebar.is-collapsed .app-nav-item.is-active:before,.app-sidebar.is-collapsed .student-nav-link.is-active:before,.app-sidebar.is-collapsed .teacher-nav-link.is-active:before,.app-sidebar.is-collapsed .admin-nav-link.is-active:before{display:none}.app-sidebar.is-collapsed .app-sidebar-logout .ds-button-label{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}}@media (width<=767px){.student-header,.teacher-header,.admin-header{padding:.65rem .75rem;padding-top:max(.65rem, env(safe-area-inset-top));padding-left:max(.75rem, env(safe-area-inset-left));padding-right:max(.75rem, env(safe-area-inset-right));gap:.5rem}.student-menu-button,.teacher-menu-button,.admin-menu-button,.sidebar-close{min-height:2.5rem}.student-menu-button,.teacher-menu-button,.admin-menu-button{flex:0 0 2.5rem;width:2.5rem;padding:0}.student-menu-button .ds-button-label,.teacher-menu-button .ds-button-label,.admin-menu-button .ds-button-label{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.student-header-name,.teacher-header-name,.admin-header-name,.app-sidebar-collapse{display:none}.app-sidebar,.student-sidebar,.teacher-sidebar,.admin-sidebar{z-index:var(--z-modal);width:min(var(--sidebar-width), 88%);padding-top:max(var(--space-3), env(safe-area-inset-top));padding-bottom:max(var(--space-3), env(safe-area-inset-bottom));padding-left:max(var(--space-3), env(safe-area-inset-left));visibility:hidden;pointer-events:none;box-shadow:var(--shadow-drawer);transition:transform var(--transition-normal), visibility var(--transition-normal);flex:none;position:absolute;inset:0 auto 0 0;transform:translate(-100%)}.app-nav-item,.student-nav-link,.teacher-nav-link,.admin-nav-link{min-height:2.75rem}.app-sidebar.is-open,.student-sidebar.is-open,.teacher-sidebar.is-open,.admin-sidebar.is-open{visibility:visible;pointer-events:auto;transform:none}.sidebar-close{align-items:center;display:inline-flex}}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.chat-workspace,.student-chat,.teacher-chat{background:var(--color-bg);flex-direction:row;flex:1;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}.chat-main{background:var(--color-bg);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.chat-header,.student-chat-header,.teacher-chat-header{justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-3);min-height:3.75rem;padding:var(--space-2) var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-wrap:wrap;flex:none;display:flex}.chat-header-identity{align-items:center;gap:var(--space-3);flex:10rem;min-width:0;display:flex}.chat-header-mark{flex:none}.chat-header-copy{min-width:0}.chat-header-title,.student-chat-header h1,.teacher-chat-header h1{font-size:var(--font-size-heading-sm);font-weight:var(--font-weight-semibold);line-height:var(--line-height-snug);color:var(--color-text-primary);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.chat-header-subtitle,.student-chat-header p,.teacher-chat-header p{color:var(--color-text-secondary);margin:0}.chat-header-actions{justify-content:flex-end;align-items:center;gap:var(--space-2);flex-wrap:wrap;min-width:0;display:flex}.chat-history{background:var(--color-surface);border-right:1px solid var(--color-border);flex-direction:column;width:16rem;min-width:12rem;max-width:18rem;min-height:0;display:flex}.chat-history-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding:.9rem .85rem .6rem;display:flex}.chat-history-toolbar h2{font-size:var(--font-size-heading-sm);font-weight:var(--font-weight-semibold);line-height:var(--line-height-snug);margin:0}.chat-history-new,.chat-history-retry,.chat-history-toggle,.chat-history-select,.chat-history-delete{font:inherit;cursor:pointer}.chat-history-new:not(.ds-button),.chat-history-retry:not(.ds-button),.chat-history-toggle:not(.ds-button){border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);min-height:2.25rem;padding:.35rem .7rem}.chat-history-status,.chat-history-error{color:var(--color-text-secondary);margin:.5rem .85rem}.chat-history-error{color:var(--color-error)}.chat-history-list{flex:1;min-height:0;margin:0;padding:.25rem .5rem .75rem;list-style:none;overflow-y:auto}.chat-history-item{align-items:stretch;gap:.25rem;margin-bottom:.25rem;display:flex}.chat-history-select{text-align:left;border-radius:var(--radius-control);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--font-size-body-small);font-weight:var(--font-weight-medium);line-height:var(--line-height-normal);background:0 0;border:0;flex:1;padding:.5rem .55rem;overflow:hidden}.chat-history-item.is-active .chat-history-select{background:var(--color-primary-soft);font-weight:var(--font-weight-semibold)}.chat-history-delete{border-radius:var(--radius-control);min-width:2.25rem;min-height:2.25rem;color:var(--color-text-muted);background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:.35rem;transition:color .15s,background-color .15s;display:inline-flex}.chat-history-delete:hover:not(:disabled){color:var(--color-error);background:#dc262614}.chat-history-toggle,.chat-history-backdrop{display:none}.chat-history-new:focus-visible,.chat-history-retry:focus-visible,.chat-history-toggle:focus-visible,.chat-history-select:focus-visible,.chat-history-delete:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px;box-shadow:var(--shadow-focus)}.student-chat-header>div:first-child,.teacher-chat-header>div:first-child{flex:8rem;min-width:0}.student-chat-copy:not(.ds-button),.student-chat-composer button:not(.ds-button),.teacher-chat-copy:not(.ds-button),.teacher-chat-composer button:not(.ds-button){font:inherit;cursor:pointer;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);min-height:2.25rem;padding:.35rem .8rem}.student-chat-composer button:not(.ds-button),.teacher-chat-composer button:not(.ds-button){background:var(--color-primary);border-color:var(--color-primary);color:var(--color-text-on-primary);font-size:var(--font-size-body-small);font-weight:var(--font-weight-semibold)}.student-chat-composer button:disabled,.student-chat-new:disabled,.student-chat-suggestion:disabled,.teacher-chat-composer button:disabled,.teacher-chat-new:disabled,.teacher-chat-suggestion:disabled{opacity:.7;cursor:not-allowed}.student-chat-context,.teacher-chat-context,.chat-context{gap:var(--space-3);width:100%;max-width:var(--chat-content-max);padding:var(--space-3) var(--space-4) var(--space-2);background:var(--color-surface);border-bottom:1px solid var(--color-border-subtle);grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));margin:0 auto;display:grid}.student-chat-context label,.teacher-chat-context label{font-size:var(--font-size-label);font-weight:var(--font-weight-medium);flex-direction:column;gap:.3rem;display:flex}.student-chat-academic,.teacher-chat-academic{flex-direction:column;justify-content:center;gap:.2rem;min-width:0;display:flex}.student-chat-academic .text-label,.student-chat-academic-path,.teacher-chat-academic .text-label,.teacher-chat-academic-path{overflow-wrap:anywhere;word-break:break-word;min-width:0;margin:0}.student-chat-academic-path,.teacher-chat-academic-path{-webkit-line-clamp:2;color:var(--color-text-secondary);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.student-chat-context select,.teacher-chat-context select{width:100%;min-width:0;max-width:100%;font:inherit;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);min-height:2.25rem;padding:.3rem .5rem}.chat-messages,.student-chat-messages,.teacher-chat-messages{min-height:0;padding:var(--space-4) var(--space-5) var(--space-5);flex-direction:column;flex:1;display:flex;overflow:hidden auto}.chat-conversation{gap:var(--space-4);width:100%;max-width:var(--chat-content-max);flex-direction:column;flex:1 0 auto;min-width:0;margin:0 auto;display:flex}.chat-conversation>*,.chat-conversation .markdown-content,.chat-conversation .markdown-content pre,.chat-conversation .markdown-content table,.chat-conversation .markdown-table-wrap{min-width:0;max-width:100%}.chat-conversation .markdown-content pre,.chat-conversation .markdown-table-wrap{overflow-x:auto}.chat-empty,.student-chat-empty,.student-chat-status,.teacher-chat-empty,.teacher-chat-status{justify-content:center;align-items:center;gap:var(--space-3);padding:var(--space-6) var(--space-4);text-align:center;max-width:36rem;color:var(--color-text-secondary);flex-direction:column;margin:auto;display:flex}.chat-empty{background:var(--color-surface);border:1px solid var(--color-ai-border);border-radius:var(--radius-lg)}.chat-empty-mark{margin-bottom:var(--space-1)}.chat-empty-message{margin:0}.chat-empty-hint{color:var(--color-text-muted);margin:0}.chat-empty-suggestions,.student-chat-suggestions,.teacher-chat-suggestions{justify-content:center;gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.chat-empty-suggestion,.student-chat-suggestion,.teacher-chat-suggestion{text-align:left;overflow-wrap:anywhere;white-space:normal;max-width:100%}.chat-message,.student-chat-bubble,.teacher-chat-bubble{overflow-wrap:anywhere;word-break:break-word;min-width:0;max-width:100%;font-size:var(--font-size-body);font-weight:var(--font-weight-regular);line-height:var(--line-height-relaxed)}.chat-message-user,.student-chat-bubble.is-user,.teacher-chat-bubble.is-user{align-self:flex-end;width:fit-content;max-width:min(100%,42rem)}.chat-message-assistant,.student-chat-bubble.is-assistant,.teacher-chat-bubble.is-assistant{width:100%;max-width:100%;color:var(--color-chat-assistant-text);background:0 0;border:0;align-self:flex-start;padding:0}.chat-message-kicker{margin:0 0 var(--space-1);text-align:right}.chat-user-content{padding:var(--space-3) var(--space-4);border-radius:var(--radius-card);background:var(--color-chat-user);color:var(--color-chat-user-text);border:1px solid var(--color-border-primary);box-shadow:none}.chat-user-prose{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;margin:0}.chat-assistant-prose{max-width:none;margin:0}.student-chat-bubble.is-assistant .markdown-content,.teacher-chat-bubble.is-assistant .markdown-content{max-width:none}.chat-assistant-header{justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.chat-assistant-header .chat-message-actions{margin-top:0}.chat-assistant-identity{align-items:center;gap:var(--space-2);margin-bottom:0;display:flex}.chat-assistant-mark{flex:none}.chat-assistant-label{color:var(--color-text-secondary);font-weight:var(--font-weight-medium);margin:0}.chat-assistant-body{min-width:0}.student-chat-bubble.is-pending .chat-assistant-prose,.teacher-chat-bubble.is-pending .chat-assistant-prose{color:var(--color-chat-thinking)}.student-chat-bubble.is-error .chat-user-content,.teacher-chat-bubble.is-error .chat-user-content{border-color:var(--color-error-border)}.student-chat-bubble.is-error .chat-assistant-body,.teacher-chat-bubble.is-error .chat-assistant-body{padding:var(--space-3);border:1px solid var(--color-error-border);border-radius:var(--radius-card);background:var(--color-error-soft)}.student-chat-bubble.is-error .chat-assistant-prose,.teacher-chat-bubble.is-error .chat-assistant-prose{color:var(--color-text-primary)}.chat-message-actions{align-items:center;gap:var(--space-2);margin-top:var(--space-3);opacity:1;flex-wrap:wrap;display:flex}.chat-message-user .chat-message-actions{justify-content:flex-end}.student-chat-copy,.student-chat-bubble .student-retry,.teacher-chat-copy,.teacher-chat-bubble .teacher-retry{margin-top:0}.student-chat-copy,.teacher-chat-copy{height:auto;min-height:2.75rem;padding:.35rem .65rem}.student-chat-copy .ds-button-content,.teacher-chat-copy .ds-button-content{flex-direction:column;align-items:center;gap:2px}.student-chat-copy .ds-button-label,.teacher-chat-copy .ds-button-label{font-size:.7rem;line-height:1}.citation-list{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--color-border-subtle);max-width:100%}.citation-summary{cursor:pointer;font-size:var(--font-size-label);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);border-radius:var(--radius-sm)}.citation-entries{margin:var(--space-3) 0 0;gap:var(--space-2);max-height:16rem;padding:0;list-style:none;display:grid;overflow-y:auto}.citation-item{gap:var(--space-3);padding:var(--space-3);border:1px solid var(--color-citation-border);border-radius:var(--radius-md);background:var(--color-citation-bg);min-width:0;transition:background-color var(--transition-fast), border-color var(--transition-fast);align-items:flex-start;display:flex}@media (prefers-reduced-motion:reduce){.citation-item{transition:none}}.citation-item:hover{background:var(--color-surface);border-color:var(--color-ai-border)}.citation-icon{color:var(--color-citation);flex:none}.citation-thumb{object-fit:cover;object-position:top center;border-radius:var(--radius-sm);border:1px solid var(--color-border-subtle);background:var(--color-surface);width:4.5rem;height:6rem;display:block}.citation-body{flex:1;min-width:0}.citation-title,.citation-meta,.citation-error{overflow-wrap:anywhere;margin:0}.citation-title{font-size:var(--font-size-label);font-weight:var(--font-weight-semibold);line-height:var(--line-height-snug);color:var(--color-text-primary)}.citation-meta{margin-top:var(--space-1);color:var(--color-text-muted);font-size:var(--font-size-metadata);line-height:var(--line-height-normal)}.citation-open:not(.ds-button){margin-top:var(--space-2);min-height:2.25rem;padding:var(--space-1) 0;color:var(--color-primary);font:inherit;font-weight:var(--font-weight-medium);cursor:pointer;text-align:left;overflow-wrap:anywhere;background:0 0;border:0;display:inline-block}.citation-open.ds-button{margin-top:var(--space-2)}.citation-open:disabled{cursor:wait;color:var(--color-text-muted)}.source-figure-gallery{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--color-border-subtle)}.source-figure-heading{margin:0 0 var(--space-3);color:var(--color-text-primary)}.source-figure-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));display:grid}.source-figure-card{min-width:0;margin:0}.source-figure-link{border-radius:var(--radius-md);border:1px solid var(--color-border-subtle);background:var(--color-surface);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);display:block;overflow:hidden}.source-figure-link:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.source-figure-link:hover{border-color:var(--color-ai-border);box-shadow:var(--shadow-sm)}.source-figure-image{object-fit:contain;object-position:top center;background:var(--color-surface);width:100%;max-height:18rem;display:block}.source-figure-caption{margin:var(--space-2) 0 0;color:var(--color-text-muted);overflow-wrap:anywhere}@media (width<=767px){.source-figure-grid{grid-template-columns:1fr}.source-figure-image{max-height:14rem}}.citation-error{margin-top:var(--space-2);color:var(--color-error);font-size:var(--font-size-label);font-weight:var(--font-weight-medium);line-height:var(--line-height-normal)}.student-chat-error,.student-chat-banner,.teacher-chat-error,.teacher-chat-banner{margin:0 auto var(--space-3);width:100%;max-width:var(--chat-content-max);padding:0 var(--space-4);color:var(--color-error);font-size:var(--font-size-label);font-weight:var(--font-weight-medium);line-height:var(--line-height-normal);overflow-wrap:anywhere}.chat-composer-slot{background:var(--color-bg);border-top:1px solid var(--color-border-subtle);flex:none}.chat-composer,.student-chat-composer,.teacher-chat-composer{width:100%;max-width:var(--chat-content-max);padding:var(--space-3) var(--space-4) max(var(--space-4), env(safe-area-inset-bottom));margin:0 auto}.chat-composer-shell{align-items:flex-end;gap:var(--space-2);width:100%;min-width:0;padding:var(--space-2) var(--space-2) var(--space-2) var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);box-shadow:var(--shadow-sm);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);display:flex}.chat-composer-shell:focus-within{border-color:var(--color-border-focus);box-shadow:var(--shadow-focus)}.chat-composer.is-disabled .chat-composer-shell{background:var(--color-surface-soft);border-color:var(--color-border-subtle);box-shadow:none}.chat-composer .ds-textarea,.student-chat-composer textarea,.teacher-chat-composer textarea{field-sizing:content;resize:none;overflow-wrap:anywhere;min-width:0;min-height:2.75rem;max-height:8rem;box-shadow:none;color:var(--color-text-primary);font-size:var(--font-size-body);line-height:var(--line-height-relaxed);padding:var(--space-2) var(--space-1);background:0 0;border:0;flex:1;overflow-y:auto}.chat-composer .ds-textarea:focus,.chat-composer .ds-textarea:focus-visible,.student-chat-composer textarea:focus-visible,.teacher-chat-composer textarea:focus-visible{box-shadow:none;outline:none}.chat-composer .ds-textarea:disabled,.student-chat-composer textarea:disabled,.teacher-chat-composer textarea:disabled{color:var(--color-text-muted);background:0 0}.chat-composer-send{white-space:nowrap;flex:none;min-width:auto}.chat-composer-diagrams-toggle{height:2.5rem;font-size:var(--font-size-label);white-space:nowrap;flex:none;align-self:flex-end;padding:0 .6rem}.student-chat-composer button,.teacher-chat-composer button{white-space:nowrap;flex:none}.chat-send-glyph{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.thinking-indicator{align-items:flex-start;gap:var(--space-3);width:100%;max-width:100%;display:flex}.thinking-indicator-mark{flex:none}.thinking-indicator-copy{gap:var(--space-2);min-width:0;padding-top:var(--space-1);flex-direction:column;display:flex}.thinking-indicator-label{color:var(--color-text-secondary);margin:0}.thinking-indicator-dots{align-items:center;gap:var(--space-1);display:flex}.thinking-indicator-dot{border-radius:var(--radius-avatar);background:var(--color-ai);opacity:.55;width:.375rem;height:.375rem;animation:1.05s ease-in-out infinite vroed-tutor-dot}.thinking-indicator-dot:nth-child(2){animation-delay:.16s}.thinking-indicator-dot:nth-child(3){animation-delay:.32s}@media (prefers-reduced-motion:reduce){.thinking-indicator-dot{opacity:.85;animation:none;transform:none}.chat-composer-shell{transition:none}}.student-chat-new:focus-visible,.student-chat-copy:focus-visible,.student-chat-suggestion:focus-visible,.student-chat-composer button:focus-visible,.student-chat-composer textarea:focus-visible,.student-chat-context select:focus-visible,.teacher-chat-new:focus-visible,.teacher-chat-copy:focus-visible,.teacher-chat-suggestion:focus-visible,.teacher-chat-composer button:focus-visible,.teacher-chat-composer textarea:focus-visible,.teacher-chat-context select:focus-visible,.citation-summary:focus-visible,.citation-open:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px;box-shadow:var(--shadow-focus)}@media (width<=1023px){.chat-history-toggle{align-items:center;min-height:2.5rem;display:inline-flex}.chat-history{z-index:var(--z-drawer);visibility:hidden;pointer-events:none;width:min(18rem,86%);min-width:0;max-width:none;box-shadow:var(--shadow-drawer);position:absolute;inset:0 auto 0 0;transform:translate(-100%)}.chat-history.is-open{visibility:visible;pointer-events:auto;transform:none}.chat-history-backdrop{z-index:7;cursor:pointer;background:var(--color-modal-overlay);border:0;display:block;position:absolute;inset:0}}@media (width<=767px){.auth-page{padding:var(--space-5) var(--space-4);padding-top:max(var(--space-5), env(safe-area-inset-top));padding-right:max(var(--space-4), env(safe-area-inset-right));padding-bottom:max(var(--space-5), env(safe-area-inset-bottom));padding-left:max(var(--space-4), env(safe-area-inset-left));align-items:flex-start}.page{padding:1rem;padding-bottom:max(1rem, env(safe-area-inset-bottom))}.auth-card{padding:var(--space-6) var(--space-4)}.field input,.auth-form .ds-input,.password-toggle,.auth-submit,.student-chat-composer textarea,.teacher-chat-composer textarea,.student-chat-context select,.teacher-chat-context select{font-size:var(--font-size-body-lg)}.chat-header,.student-chat-header,.teacher-chat-header{padding:var(--space-2) var(--space-3);min-height:3.25rem}.chat-header-identity{flex:100%}.chat-header-actions{justify-content:stretch;width:100%}.chat-header-actions .ds-button{flex:1 1 0;min-width:0}.student-chat-context,.teacher-chat-context,.chat-context{padding-left:var(--space-3);padding-right:var(--space-3)}.chat-messages,.student-chat-messages,.teacher-chat-messages{padding:var(--space-3)}.chat-empty,.student-chat-empty,.teacher-chat-empty{padding:var(--space-4) var(--space-2)}.chat-user-content{padding:var(--space-3)}.chat-assistant-identity{margin-bottom:var(--space-2)}.citation-item{padding:var(--space-3) var(--space-2)}.student-chat-error,.student-chat-banner,.teacher-chat-error,.teacher-chat-banner{padding-left:var(--space-3);padding-right:var(--space-3)}.student-chat-composer,.teacher-chat-composer,.chat-composer{padding:var(--space-2) var(--space-3) max(var(--space-3), env(safe-area-inset-bottom))}.student-chat-composer button,.teacher-chat-composer button,.student-chat-new,.teacher-chat-new,.chat-history-new,.chat-composer-send{min-height:2.5rem}.chat-composer-send{min-width:0}.student-chat-composer textarea,.teacher-chat-composer textarea,.chat-composer .ds-textarea{max-height:6.5rem}.library-page{gap:var(--space-4)}}@media (width<=1023px) and (height<=500px){.student-chat-header,.teacher-chat-header{padding-top:.45rem;padding-bottom:.4rem}.student-chat-context,.teacher-chat-context{padding-bottom:.4rem}}.library-page{gap:var(--space-5);flex-direction:column;min-width:0;display:flex}.library-toolbar{gap:var(--space-4);grid-template-columns:minmax(0,1fr);display:grid}.library-summary{justify-content:space-between;align-items:center;gap:var(--space-2);flex-wrap:wrap;min-width:0;display:flex}.library-summary p{color:var(--color-text-secondary);margin:0}.library-grid{gap:var(--space-4);grid-template-columns:minmax(0,1fr);display:grid}.library-card{overflow-wrap:anywhere;min-width:0}.library-card.ds-card{box-shadow:var(--shadow-xs)}.library-card-header{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.library-card-view{color:var(--color-text-secondary)}.library-card-view:hover{color:var(--color-primary)}.document-view-details{gap:var(--space-3);padding:var(--space-1) 0;flex-direction:column;display:flex}.document-view-row{gap:var(--space-1);flex-direction:column;display:flex}.document-view-row .text-label{color:var(--color-text-muted);font-size:var(--font-size-caption);font-weight:var(--font-weight-medium)}.document-viewer-tabs{gap:var(--space-2);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-4);padding-bottom:var(--space-2);display:flex}.document-viewer-tab{padding:var(--space-2) var(--space-3);font-size:var(--font-size-body-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);border-radius:var(--radius-control);cursor:pointer;background:0 0;border:0}.document-viewer-tab.is-active{color:var(--color-primary);background:var(--color-primary-soft);font-weight:var(--font-weight-semibold)}.document-pdf-container{gap:var(--space-3);flex-direction:column;display:flex}.document-pdf-actions{justify-content:flex-end;display:flex}.document-pdf-iframe{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-bg-subtle,#f8fafc);width:100%;height:60vh;min-height:400px}.document-pages-list{gap:var(--space-4);max-height:60vh;padding-right:var(--space-2);flex-direction:column;display:flex;overflow-y:auto}.document-page-card{padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface)}.document-page-number{font-weight:var(--font-weight-semibold);margin-bottom:var(--space-2);color:var(--color-primary)}.document-page-text{white-space:pre-wrap;font-size:var(--font-size-body-sm);line-height:var(--line-height-normal);color:var(--color-text-primary)}.document-page-image{border-radius:var(--radius-sm);max-width:100%;height:auto;margin-top:var(--space-2);border:1px solid var(--color-border)}.library-card-type{width:auto;min-width:var(--icon-well-size);padding:0 var(--space-2);font-size:var(--font-size-caption);font-weight:var(--font-weight-semibold);color:var(--color-document-icon);background:var(--color-document-surface);border:1px solid var(--color-document-border)}.library-card-title{color:var(--color-text-primary);overflow-wrap:anywhere;word-break:break-word;margin:0}.library-card-chapter,.library-card-filename,.library-card-meta{margin:var(--space-1) 0 0;color:var(--color-text-secondary)}.library-card-filename,.library-card-meta{color:var(--color-text-muted)}.library-card-status{margin:var(--space-3) 0 0;font-size:var(--font-size-caption);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.library-card-status.is-ready{color:var(--color-success)}.library-card-status.is-processing,.library-card-status.is-uploaded{color:var(--color-primary)}.library-card-status.is-failed{color:var(--color-error)}.library-toolbar .ds-select.is-filtered{background:var(--color-surface-ice);border-color:var(--color-border-primary)}@media (width>=768px){.library-toolbar{grid-template-columns:minmax(0,1.6fr) minmax(10rem,14rem);align-items:end}}@media (width>=1024px){.library-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1280px){.library-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (prefers-reduced-motion:reduce){.library-card{transition:none}}.chat-composer-prompts{gap:var(--space-2);padding:0 var(--space-2) var(--space-2);scrollbar-width:thin;display:flex;overflow-x:auto}.chat-composer-prompt-chip{background:var(--color-surface-subtle,#f3f4f6);border:1px solid var(--color-border-subtle,#e5e7eb);color:var(--color-text-secondary);font-size:var(--font-size-body-sm);cursor:pointer;white-space:nowrap;border-radius:9999px;flex:none;padding:.25rem .75rem;transition:all .2s}.chat-composer-prompt-chip:hover{background:var(--color-primary-light,#e0f2fe);border-color:var(--color-primary);color:var(--color-primary)}.chat-composer-mic{flex:none}.chat-composer-mic.is-listening{background:var(--color-error,#ef4444);color:#fff;animation:1.5s infinite pulseMic}@keyframes pulseMic{0%{box-shadow:0 0 #ef444466}70%{box-shadow:0 0 0 8px #ef444400}to{box-shadow:0 0 #ef444400}}.chat-composer-footer{padding:var(--space-1) var(--space-2) 0;justify-content:flex-end;display:flex}.chat-composer-shortcut{font-size:var(--font-size-caption,.75rem);color:var(--color-text-tertiary,#9ca3af)}.markdown-code-block{margin:var(--space-3) 0;border-radius:var(--radius-md,8px);border:1px solid var(--color-border-subtle,#e5e7eb);background:var(--color-surface-dark,#1e293b);overflow:hidden}.markdown-code-header{padding:var(--space-2) var(--space-3);color:#94a3b8;background:#0003;border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;display:flex}.markdown-code-lang{text-transform:lowercase;font-family:monospace;font-size:.75rem;font-weight:600}.markdown-code-copy-btn{color:#cbd5e1;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:.35rem;padding:.2rem .4rem;display:inline-flex}.markdown-code-copy-btn:hover{color:#fff;background:#ffffff1a}.markdown-code-block pre{padding:var(--space-3);color:#e2e8f0;margin:0;font-family:monospace;font-size:.875rem;overflow-x:auto}.markdown-math-block{margin:var(--space-3) 0;padding:var(--space-3);background:var(--color-surface-subtle,#f8fafc);border-left:3px solid var(--color-primary);border-radius:var(--radius-sm,4px);text-align:center;overflow-x:auto}.math-display{color:var(--color-text-primary);font-family:Cambria Math,KaTeX_Math,Times New Roman,serif;font-size:1.1rem;font-weight:600}.markdown-math-inline{padding:0 .25rem;font-family:Cambria Math,KaTeX_Math,Times New Roman,serif;font-weight:600;display:inline-block}.source-figure-button{cursor:pointer;border-radius:var(--radius-md,6px);background:0 0;border:none;width:100%;padding:0;display:block;position:relative;overflow:hidden}.source-figure-button:hover .source-figure-overlay{opacity:1}.source-figure-overlay{color:#fff;opacity:0;background:#00000080;justify-content:center;align-items:center;font-weight:600;transition:opacity .2s;display:flex;position:absolute;inset:0}.figure-lightbox-overlay{z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:var(--space-4);background:#000000d9;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.figure-lightbox-content{background:var(--color-surface,#fff);border-radius:var(--radius-lg,12px);flex-direction:column;max-width:90vw;max-height:90vh;display:flex;overflow:hidden;box-shadow:0 20px 25px -5px #0000004d}.figure-lightbox-header{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border-subtle,#e5e7eb);justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.figure-lightbox-toolbar{align-items:center;gap:var(--space-2);display:flex}.figure-lightbox-body{padding:var(--space-4);background:var(--color-surface-subtle,#f9fafb);flex:1;justify-content:center;align-items:center;display:flex;overflow:auto}.figure-lightbox-image{object-fit:contain;max-width:100%;max-height:70vh;transition:transform .2s}.chat-breadcrumbs-pill{border-radius:var(--radius-md,8px);background:var(--color-surface-subtle,#f3f4f6);border:1px solid var(--color-border-subtle,#e5e7eb);max-width:100%;color:var(--color-text-secondary);font-size:var(--font-size-caption,.75rem);margin-bottom:var(--space-1);flex-wrap:wrap;align-items:center;gap:.25rem .35rem;padding:.25rem .6rem;line-height:1.3;display:inline-flex}.chat-breadcrumb-item{white-space:nowrap;flex-shrink:0}.chat-breadcrumb-item.is-active{color:var(--color-primary);text-overflow:ellipsis;flex-shrink:1;min-width:0;max-width:16rem;font-weight:600;overflow:hidden}.chat-breadcrumb-sep{color:var(--color-text-tertiary);flex-shrink:0}.chat-status-badge{white-space:nowrap;background:var(--color-primary-light,#e0f2fe);color:var(--color-primary);border-radius:4px;flex-shrink:0;margin-left:.25rem;padding:.1rem .4rem;font-size:.7rem;font-weight:600}.chat-workspace.has-split-view{gap:var(--space-3);padding:var(--space-2);flex-direction:row;display:flex}.chat-workspace.has-split-view .chat-main{border:1px solid var(--color-border);border-radius:var(--radius-lg,12px);flex:50%;min-width:320px;overflow:hidden}.chat-workspace.has-split-view .chat-split-pane{border:1px solid var(--color-border-primary,#cbd5e1);border-radius:var(--radius-lg,12px);background:var(--color-surface,#fff);flex-direction:column;flex:50%;min-width:320px;height:100%;display:flex;overflow:hidden}.chat-split-header{padding:var(--space-2) var(--space-3);background:var(--color-surface-subtle,#f8fafc);border-bottom:1px solid var(--color-border-subtle,#e5e7eb);justify-content:space-between;align-items:center;display:flex}.chat-split-controls{align-items:center;gap:var(--space-1);display:flex}.chat-split-body{flex:1;overflow:hidden}.chat-split-iframe{border:none;width:100%;height:100%}@media (width<=1023px){.chat-workspace.has-split-view{flex-direction:column;overflow-y:auto}.chat-workspace.has-split-view .chat-main,.chat-workspace.has-split-view .chat-split-pane{flex:none;height:50vh;min-height:400px}}.chat-toast-notification{margin-left:var(--space-2);background:var(--color-slate-900,#0f172a);color:#fff;border-radius:4px;padding:.25rem .6rem;font-size:.75rem;animation:2s forwards fadeInOut;display:inline-block}@keyframes fadeInOut{0%{opacity:0;transform:translateY(4px)}15%{opacity:1;transform:translateY(0)}85%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-4px)}}[data-theme=dark],html.dark{--color-bg:#0f172a;--color-background:#0f172a;--color-bg-subtle:#1e293b;--color-surface:#1e293b;--color-surface-subtle:#0f172a;--color-surface-soft:#0f172a;--color-surface-ice:#334155;--color-text-primary:#f8fafc;--color-text-secondary:#cbd5e1;--color-text-tertiary:#94a3b8;--color-text-muted:#64748b;--color-border:#334155;--color-border-primary:#334155;--color-border-subtle:#334155;--color-primary-soft:#1e293b;--color-primary-light:#334155}[data-theme=dark] .user-summary,html.dark .user-summary{color:#f8fafc;background:#0f172a;border-color:#334155}[data-theme=dark] .app-sidebar,html.dark .app-sidebar{background:#1e293b;border-right-color:#334155}[data-theme=dark] .ds-card,html.dark .ds-card{color:#f8fafc;background:#1e293b;border-color:#334155}[data-theme=dark] .chat-workspace,html.dark .chat-workspace{background:#0f172a}[data-theme=dark] .chat-header,html.dark .chat-header{background:#1e293b;border-bottom-color:#334155}[data-theme=dark] .chat-composer-shell,html.dark .chat-composer-shell{background:#1e293b;border-color:#334155}@media (width<=768px){.ds-button,.chat-composer-send,.chat-composer-diagrams-toggle,.chat-composer-mic{min-height:44px}}
