.auth-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-paper);padding:var(--space-4)}.auth-card{width:100%;max-width:440px}.auth-logo{display:flex;justify-content:center;margin-bottom:40px}.auth-logo-text{font-size:30px;font-weight:var(--font-bold);color:var(--color-accent)}.auth-title{font-size:32px;line-height:40px;font-weight:var(--font-bold);color:var(--color-ink);text-align:center;margin-bottom:var(--space-2)}.auth-subtitle{font-size:var(--text-base);line-height:24px;font-weight:var(--font-normal);color:#64748b;text-align:center;margin-bottom:var(--space-8)}.auth-oauth-button{width:100%;height:48px;display:flex;align-items:center;justify-content:center;border:1px solid #E2E8F0;border-radius:var(--radius-md);background:var(--color-paper);margin-bottom:12px;cursor:pointer;transition:all .15s ease;font-weight:var(--font-medium);color:var(--color-ink)}.auth-oauth-button:hover{background:#f8fafc;border-color:#cbd5e1;transform:translateY(-1px);box-shadow:0 2px 8px #0000000f}.auth-oauth-button:active{transform:translateY(0);box-shadow:none}.auth-oauth-button:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.auth-oauth-icon{width:20px;height:20px;margin-right:12px}.auth-divider{display:flex;align-items:center;margin:32px 0 24px}.auth-divider-line{flex:1;height:1px;background:#e2e8f0}.auth-divider-text{padding:0 var(--space-4);font-size:var(--text-sm);color:#94a3b8}.auth-form{width:100%}.auth-form-group{margin-bottom:var(--space-4)}.auth-label{display:block;font-size:var(--text-sm);line-height:20px;font-weight:var(--font-medium);color:#475569;margin-bottom:var(--space-2)}.auth-input{width:100%;height:48px;padding:12px var(--space-4);border:1px solid #E2E8F0;border-radius:var(--radius-md);font-size:15px;font-weight:var(--font-normal);color:var(--color-ink);background:var(--color-paper);transition:all .15s ease}.auth-input::placeholder{color:#94a3b8}.auth-input:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px #3b82f61a}.auth-input.error{border-color:#ef4444;background:#fef2f2}.auth-input.success{border-color:#10b981}.auth-input-wrapper{position:relative}.auth-password-toggle{position:absolute;right:var(--space-4);top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:var(--space-1);color:#64748b;transition:color .15s ease}.auth-password-toggle:hover{color:var(--color-ink)}.auth-password-toggle:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}.auth-password-toggle svg{width:20px;height:20px;display:block}.auth-error-banner{margin-bottom:var(--space-4);padding:12px var(--space-4);background:#fef2f2;border-left:4px solid #EF4444;border-radius:var(--radius-md)}.auth-error-banner-text{font-size:var(--text-sm);color:#991b1b}.auth-error-text{margin-top:var(--space-1);font-size:var(--text-sm);color:#dc2626}.auth-button{width:100%;height:48px;padding:0 var(--space-4);border:none;border-radius:var(--radius-md);font-size:15px;font-weight:var(--font-semibold);cursor:pointer;transition:all .15s ease}.auth-button-primary{background:var(--color-accent);color:#fff}.auth-button-primary:hover{background:#2563eb;transform:translateY(-1px);box-shadow:0 4px 12px #3b82f64d}.auth-button-primary:active{background:#1d4ed8;transform:translateY(0)}.auth-button-primary:disabled{background:#cbd5e1;color:#94a3b8;cursor:not-allowed;transform:none;box-shadow:none}.auth-button-primary:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.auth-checkbox-wrapper{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.auth-checkbox-label{display:flex;align-items:center;cursor:pointer}.auth-checkbox{width:16px;height:16px;border:1px solid #E2E8F0;border-radius:var(--radius-sm);margin-right:var(--space-2);cursor:pointer}.auth-checkbox:checked{background:var(--color-accent);border-color:var(--color-accent)}.auth-checkbox-text{font-size:var(--text-sm);color:#475569}.auth-link{color:var(--color-accent);text-decoration:none;transition:text-decoration .15s ease}.auth-link:hover{text-decoration:underline}.auth-link:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:2px}.auth-legal-text{margin-top:24px;font-size:13px;line-height:20px;color:#94a3b8;text-align:center}.auth-footer-text{margin-top:var(--space-4);font-size:var(--text-sm);color:#64748b;text-align:center}.onboarding-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:40}.onboarding-modal-container{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.onboarding-modal{background:var(--color-paper);border-radius:12px;padding:40px;max-width:560px;width:100%;box-shadow:0 20px 60px #0000004d}.onboarding-title{font-size:28px;line-height:36px;font-weight:var(--font-bold);color:var(--color-ink);text-align:center;margin-bottom:var(--space-4)}.onboarding-subtitle{font-size:var(--text-base);line-height:24px;color:#475569;text-align:center;margin-bottom:24px}.onboarding-features{list-style:none;margin-bottom:var(--space-8)}.onboarding-feature{display:flex;align-items:center;margin-bottom:var(--space-2);font-size:var(--text-base);font-weight:var(--font-medium);color:var(--color-ink)}.onboarding-checkmark{color:#10b981;font-size:var(--text-xl);margin-right:12px}.onboarding-button{width:100%;height:48px;background:var(--color-accent);color:#fff;border:none;border-radius:var(--radius-md);font-size:15px;font-weight:var(--font-semibold);cursor:pointer;margin-bottom:var(--space-4);transition:all .15s ease}.onboarding-button:hover{background:#2563eb}.onboarding-button:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.onboarding-skip{width:100%;background:none;border:none;color:#64748b;font-size:var(--text-sm);font-weight:var(--font-medium);text-align:center;cursor:pointer;padding:var(--space-2)}.onboarding-skip:hover{text-decoration:underline}.auth-loading-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-paper)}.auth-spinner{width:48px;height:48px;border:2px solid #E2E8F0;border-top-color:var(--color-accent);border-radius:50%;animation:spin .8s linear infinite}@media (max-width: 768px){.auth-container{padding:0}.auth-card{max-width:none}.auth-title{font-size:28px;line-height:36px}.auth-input,.auth-button,.auth-oauth-button{height:56px}.auth-input{font-size:16px}.onboarding-modal{padding:24px}.onboarding-title{font-size:24px;line-height:32px}}.theme-toggle{width:32px;height:32px;border-radius:var(--radius-md);background:var(--color-muted);color:var(--color-ink);border:none;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease,transform .1s ease;cursor:pointer}.theme-toggle:hover{background:var(--color-accent);color:var(--color-paper)}.theme-toggle:active{transform:scale(.95)}.theme-toggle:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.theme-toggle svg{width:20px;height:20px}.dashboard-page{min-height:100vh;background:var(--color-bg-primary, #ffffff);padding:32px 24px}.dashboard-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px 32px;gap:16px;color:var(--color-text-secondary, #6b7280)}.dashboard-header{display:flex;justify-content:space-between;align-items:center;max-width:1200px;margin:0 auto 32px}.dashboard-header-left{flex:1}.dashboard-header-right{display:flex;align-items:center;gap:16px}.dashboard-title{font-size:28px;font-weight:600;color:var(--color-text-primary, #1f2937);margin:0}.dashboard-nav-link{font-size:14px;font-weight:500;color:#3b82f6;text-decoration:none;padding:8px 12px;border-radius:6px;transition:background-color .15s ease}.dashboard-nav-link:hover{background:#eff6ff}.dashboard-nav-link:focus{outline:2px solid #3b82f6;outline-offset:2px}.dashboard-logout-button{font-size:14px;font-weight:500;color:var(--color-text-secondary, #6b7280);background:transparent;border:none;padding:8px 12px;cursor:pointer;border-radius:6px;transition:color .15s ease}.dashboard-logout-button:hover{color:var(--color-text-primary, #1f2937)}.dashboard-logout-button:focus{outline:2px solid #3b82f6;outline-offset:2px}.dashboard-error{max-width:1200px;margin:0 auto 16px;padding:12px 16px;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#dc2626;font-size:14px}.dashboard-section{max-width:1200px;margin:0 auto 48px}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.section-title{font-size:20px;font-weight:600;color:var(--color-text-primary, #1f2937);margin:0}.section-link{font-size:14px;font-weight:500;color:#3b82f6;text-decoration:none}.section-link:hover{text-decoration:underline}.section-link:focus{outline:2px solid #3b82f6;outline-offset:2px}.enrolled-classes-list{display:flex;flex-direction:column;gap:12px}.enrolled-class-card{padding:16px 20px;background:var(--color-bg-primary, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:8px;transition:border-color .15s ease,box-shadow .15s ease}.enrolled-class-card:hover{border-color:#d1d5db;box-shadow:0 2px 8px #0000000d}.enrolled-class-content{display:flex;flex-direction:column;gap:4px}.enrolled-class-name{font-size:16px;font-weight:600;color:var(--color-text-primary, #1f2937);margin:0}.enrolled-class-teacher{font-size:14px;font-weight:500;color:var(--color-text-secondary, #6b7280);margin:0}.enrolled-class-metadata{font-size:13px;color:var(--color-text-muted, #9ca3af);margin:0}.dashboard-actions{display:flex;gap:12px;margin-top:20px}.join-class-button{height:44px;padding:0 24px;font-size:16px;font-weight:600;color:#fff;background:#3b82f6;border:none;border-radius:8px;cursor:pointer;transition:background-color .15s ease}.join-class-button:hover{background:#2563eb}.join-class-button:focus{outline:2px solid #3b82f6;outline-offset:2px}.create-class-button-secondary{height:44px;padding:0 24px;font-size:16px;font-weight:500;color:#3b82f6;background:transparent;border:1px solid #3b82f6;border-radius:8px;cursor:pointer;transition:background-color .15s ease}.create-class-button-secondary:hover{background:#eff6ff}.create-class-button-secondary:focus{outline:2px solid #3b82f6;outline-offset:2px}.recent-sessions-list{list-style:none;padding:0;margin:0;border:1px solid var(--color-border, #e5e7eb);border-radius:8px;overflow:hidden}.recent-session-item{border-bottom:1px solid var(--color-border, #e5e7eb)}.recent-session-item:last-child{border-bottom:none}.recent-session-link{display:flex;align-items:center;gap:16px;padding:12px 16px;text-decoration:none;color:var(--color-text-primary, #1f2937);transition:background-color .15s ease}.recent-session-link:hover{background:var(--color-bg-secondary, #f9fafb)}.recent-session-link:focus{outline:2px solid #3b82f6;outline-offset:-2px}.recent-session-title{flex:1;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recent-session-date{font-size:13px;color:var(--color-text-secondary, #6b7280);white-space:nowrap}.recent-session-class{font-size:12px;color:var(--color-text-muted, #9ca3af);background:var(--color-bg-secondary, #f3f4f6);padding:2px 8px;border-radius:4px;white-space:nowrap}.no-recent-sessions{font-size:14px;color:var(--color-text-secondary, #6b7280);text-align:center;padding:24px;margin:0}.modal-description{font-size:14px;color:var(--color-text-secondary, #6b7280);margin:0 0 20px;line-height:1.5}.class-card-session-button{padding:8px 12px;font-size:14px;font-weight:500;color:#fff;background:#10b981;border:none;border-radius:6px;cursor:pointer;transition:background-color .15s ease}.class-card-session-button:hover{background:#059669}.class-card-session-button:focus{outline:2px solid #10b981;outline-offset:2px}@media (prefers-color-scheme: dark){.dashboard-page{background:#111827}.dashboard-title{color:#f9fafb}.dashboard-logout-button{color:#9ca3af}.dashboard-logout-button:hover{color:#f9fafb}.dashboard-error{background:#7f1d1d;border-color:#991b1b;color:#fecaca}.section-title{color:#f9fafb}.enrolled-class-card{background:#1f2937;border-color:#374151}.enrolled-class-card:hover{border-color:#4b5563}.enrolled-class-name{color:#f9fafb}.enrolled-class-teacher{color:#d1d5db}.recent-sessions-list,.recent-session-item{border-color:#374151}.recent-session-link{color:#f9fafb}.recent-session-link:hover{background:#1f2937}.recent-session-class{background:#374151;color:#d1d5db}.no-recent-sessions,.modal-description{color:#9ca3af}}@media (max-width: 768px){.dashboard-header{flex-direction:column;align-items:flex-start;gap:16px}.dashboard-header-right{width:100%;justify-content:flex-start}.dashboard-title{font-size:24px}.dashboard-actions{flex-direction:column}.recent-session-link{flex-wrap:wrap}.recent-session-class{width:100%;margin-top:4px}}.onboarding-container{max-width:800px;margin:0 auto}.onboarding-actions{display:flex;align-items:stretch;gap:24px;margin-top:32px}.onboarding-option{flex:1;padding:32px;background:var(--color-bg-secondary, #f9fafb);border-radius:12px;text-align:center}.onboarding-option h3{font-size:18px;font-weight:600;color:var(--color-text-primary, #1f2937);margin:0 0 8px}.onboarding-option p{font-size:14px;color:var(--color-text-secondary, #6b7280);margin:0 0 20px;line-height:1.5}.onboarding-divider{display:flex;align-items:center;padding:0 16px}.onboarding-divider span{font-size:14px;font-weight:500;color:var(--color-text-tertiary, #9ca3af);text-transform:uppercase}@media (max-width: 640px){.onboarding-actions{flex-direction:column;gap:16px}.onboarding-divider{padding:8px 0;justify-content:center}}.classes-page{min-height:100vh;background:var(--color-bg-primary, #ffffff);padding:32px 24px}.classes-container{max-width:1200px;margin:0 auto}.classes-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.classes-title{font-size:32px;font-weight:600;color:var(--color-text-primary, #1f2937);margin:0}.create-class-button{height:44px;padding:0 24px;font-size:16px;font-weight:600;color:#fff;background:#3b82f6;border:none;border-radius:8px;cursor:pointer;transition:background-color .15s ease}.create-class-button:hover{background:#2563eb}.create-class-button:focus{outline:2px solid #3b82f6;outline-offset:2px}.classes-error{padding:12px 16px;margin-bottom:16px;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#dc2626;font-size:14px}.classes-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px 32px;gap:16px;color:var(--color-text-secondary, #6b7280)}.classes-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}@media (max-width: 1200px){.classes-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.classes-grid{grid-template-columns:1fr}}.class-card{width:100%;padding:20px;background:var(--color-bg-primary, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:8px;transition:border-color .15s ease,box-shadow .15s ease}.class-card:hover{border-color:#d1d5db;box-shadow:0 2px 8px #0000000d}.class-card-content{margin-bottom:16px}.class-card-name{font-size:18px;font-weight:600;color:var(--color-text-primary, #1f2937);margin:0 0 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.class-card-metadata{font-size:14px;font-weight:400;color:var(--color-text-secondary, #6b7280);margin:0}.class-card-actions{display:flex;gap:8px}.class-card-view-button{padding:8px 12px;font-size:14px;font-weight:500;color:#3b82f6;background:transparent;border:1px solid #3b82f6;border-radius:6px;cursor:pointer;transition:background-color .15s ease}.class-card-view-button:hover{background:#eff6ff}.class-card-view-button:focus{outline:2px solid #3b82f6;outline-offset:2px}.class-card-copy-button{display:flex;align-items:center;gap:6px;padding:8px 12px;font-size:14px;font-weight:500;color:var(--color-text-secondary, #6b7280);background:transparent;border:1px solid var(--color-border, #e5e7eb);border-radius:6px;cursor:pointer;transition:border-color .15s ease,color .15s ease}.class-card-copy-button:hover{border-color:#3b82f6;color:#3b82f6}.class-card-copy-button:focus{outline:2px solid #3b82f6;outline-offset:2px}.modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.modal-container{position:relative;width:100%;max-width:480px;padding:32px;background:var(--color-bg-primary, #ffffff);border-radius:12px;box-shadow:0 4px 16px #00000026}.modal-close-button{position:absolute;top:16px;right:16px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;padding:0;background:transparent;border:none;border-radius:4px;color:var(--color-text-secondary, #6b7280);cursor:pointer;transition:color .15s ease}.modal-close-button:hover{color:var(--color-text-primary, #1f2937)}.modal-close-button:focus{outline:2px solid #3b82f6;outline-offset:2px}.modal-title{font-size:24px;font-weight:600;color:var(--color-text-primary, #1f2937);margin:0 0 24px}.form-field{margin-bottom:20px}.form-label{display:block;font-size:14px;font-weight:500;color:var(--color-text-primary, #374151);margin-bottom:6px}.required-marker{color:#ef4444}.form-input{width:100%;height:44px;padding:12px 16px;font-size:16px;color:var(--color-text-primary, #1f2937);background:var(--color-bg-primary, #ffffff);border:1px solid var(--color-border, #d1d5db);border-radius:8px;box-sizing:border-box;transition:border-color .15s ease,box-shadow .15s ease}.form-input::placeholder{color:var(--color-text-muted, #9ca3af)}.form-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f633}.form-input.input-error{border-color:#ef4444}.form-input.input-error:focus{box-shadow:0 0 0 3px #ef444433}.form-textarea{width:100%;min-height:88px;padding:12px 16px;font-size:16px;font-family:inherit;color:var(--color-text-primary, #1f2937);background:var(--color-bg-primary, #ffffff);border:1px solid var(--color-border, #d1d5db);border-radius:8px;box-sizing:border-box;resize:vertical;transition:border-color .15s ease,box-shadow .15s ease}.form-textarea::placeholder{color:var(--color-text-muted, #9ca3af)}.form-textarea:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f633}.form-error{font-size:14px;color:#ef4444;margin:4px 0 0}.modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.modal-cancel-button{height:44px;padding:0 20px;font-size:16px;font-weight:500;color:var(--color-text-secondary, #6b7280);background:transparent;border:1px solid var(--color-border, #d1d5db);border-radius:8px;cursor:pointer;transition:border-color .15s ease,color .15s ease}.modal-cancel-button:hover{border-color:#3b82f6;color:#3b82f6}.modal-cancel-button:disabled{opacity:.5;cursor:not-allowed}.modal-cancel-button:focus{outline:2px solid #3b82f6;outline-offset:2px}.modal-submit-button{height:44px;padding:0 24px;font-size:16px;font-weight:600;color:#fff;background:#3b82f6;border:none;border-radius:8px;cursor:pointer;transition:background-color .15s ease}.modal-submit-button:hover:not(:disabled){background:#2563eb}.modal-submit-button:disabled{opacity:.5;cursor:not-allowed}.modal-submit-button:focus{outline:2px solid #3b82f6;outline-offset:2px}@media (prefers-color-scheme: dark){.classes-page{background:#111827}.classes-title{color:#f9fafb}.classes-error{background:#7f1d1d;border-color:#991b1b;color:#fecaca}.class-card{background:#1f2937;border-color:#374151}.class-card:hover{border-color:#4b5563}.class-card-name{color:#f9fafb}.class-card-metadata{color:#9ca3af}.modal-container{background:#1f2937}.modal-title,.form-label{color:#f9fafb}.form-input,.form-textarea{background:#374151;border-color:#4b5563;color:#f9fafb}.form-input::placeholder,.form-textarea::placeholder{color:#6b7280}}.resizable-divider{width:6px;height:100%;background:var(--color-muted);cursor:col-resize;display:flex;align-items:center;justify-content:center;position:relative;-webkit-user-select:none;user-select:none;transition:background-color .2s ease}.resizable-divider:hover{background:#2f7af833}.resizable-divider--dragging{background:#2f7af866}.resizable-divider:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;box-shadow:var(--shadow-focus)}.resizable-divider__grip{color:var(--color-ink);opacity:.4;font-size:16px;pointer-events:none;-webkit-user-select:none;user-select:none}:root[data-theme=dark] .resizable-divider:hover{background:#4a90ff40}:root[data-theme=dark] .resizable-divider--dragging{background:#4a90ff73}.two-pane-layout{display:flex;height:100%;width:100%;overflow:hidden}.two-pane-layout--mobile{flex-direction:column}.pane{height:100%;overflow-y:auto;overflow-x:hidden;padding:var(--space-6);background:var(--color-paper);color:var(--color-ink)}.pane:focus-within{outline:2px solid var(--color-accent);outline-offset:-2px;box-shadow:var(--shadow-focus)}.two-pane-layout--mobile .pane{height:50vh;width:100%}.two-pane-layout--mobile .pane--workspace{border-bottom:2px solid var(--color-muted)}.pane--workspace,.pane--chat{min-width:300px}@media (max-width: 1023px) and (min-width: 768px){.pane--workspace,.pane--chat{min-width:250px}}.session-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid #e5e7eb;background:var(--color-paper);flex-shrink:0}:root[data-theme=dark] .session-header{border-bottom-color:#374151}.session-header__content{display:flex;align-items:center;gap:var(--space-3);min-width:0}.session-header__icon{font-size:20px;flex-shrink:0}.session-header__title-block{display:flex;flex-direction:column;min-width:0}.session-header__title{font-size:var(--text-base);font-weight:var(--font-semibold);margin:0;color:var(--color-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-header__timestamp{font-size:var(--text-xs);color:#6b7280;margin:0}:root[data-theme=dark] .session-header__timestamp{color:#9ca3af}.session-header__settings{background:none;border:none;cursor:pointer;font-size:18px;padding:4px 8px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;transition:background-color .15s ease}.session-header__settings:hover{background-color:#0000000d}:root[data-theme=dark] .session-header__settings:hover{background-color:#ffffff1a}.session-header__settings:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.session-header__settings:active{background-color:#0000001a}:root[data-theme=dark] .session-header__settings:active{background-color:#ffffff26}.document-list{display:flex;flex-direction:column;padding:var(--space-3);gap:var(--space-3);height:100%;overflow:hidden}.document-list__create{display:flex;align-items:center;gap:var(--space-2);background:var(--color-accent);color:#fff;border:none;border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);font-weight:var(--font-medium);cursor:pointer;min-height:44px;transition:all .15s ease;flex-shrink:0}.document-list__create:hover{filter:brightness(.9)}.document-list__create:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.document-list__create:active{transform:scale(.98)}.document-list__create-icon{font-weight:700;font-size:var(--text-base)}.document-list__items{list-style:none;padding:0;margin:0;flex:1;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:var(--space-1)}.document-list__empty{list-style:none;padding:var(--space-3);text-align:center;color:#6b7280}:root[data-theme=dark] .document-list__empty{color:#9ca3af}.document-list__empty-text{font-size:var(--text-sm);line-height:1.5}.document-list__item{display:flex;align-items:center;gap:var(--space-2);border-radius:var(--radius-md);transition:all .15s ease}.document-list__button{flex:1;display:flex;align-items:center;gap:var(--space-2);background:transparent;border:none;color:#6b7280;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);cursor:pointer;min-height:36px;text-align:left;transition:all .15s ease;overflow:hidden}:root[data-theme=dark] .document-list__button{color:#9ca3af}.document-list__button:hover{background-color:#0000000d}:root[data-theme=dark] .document-list__button:hover{background-color:#ffffff1a}.document-list__button:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.document-list__item--active .document-list__button{background:var(--color-accent);color:#fff;font-weight:var(--font-medium)}.document-list__item--active .document-list__button:hover{filter:brightness(.9)}.document-list__icon{font-size:16px;flex-shrink:0}.document-list__name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.document-list__delete{background:none;border:none;color:#6b7280;cursor:pointer;font-size:20px;padding:4px 8px;border-radius:var(--radius-md);min-width:32px;min-height:32px;display:flex;align-items:center;justify-content:center;transition:all .15s ease;flex-shrink:0}:root[data-theme=dark] .document-list__delete{color:#9ca3af}.document-list__delete:hover{background-color:#ef44441a;color:#ef4444}:root[data-theme=dark] .document-list__delete:hover{background-color:#ef444433;color:#fca5a5}.document-list__delete:focus-visible{outline:2px solid #ef4444;outline-offset:2px}.document-list__items::-webkit-scrollbar{width:8px}.document-list__items::-webkit-scrollbar-track{background:transparent}.document-list__items::-webkit-scrollbar-thumb{background:#0003;border-radius:4px}.document-list__items::-webkit-scrollbar-thumb:hover{background:#0000004d}:root[data-theme=dark] .document-list__items::-webkit-scrollbar-thumb{background:#fff3}:root[data-theme=dark] .document-list__items::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.work-item-list{display:flex;flex-direction:column;padding:var(--space-3);gap:var(--space-3);height:100%;overflow:hidden}.work-item-list__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);flex-shrink:0}.work-item-list__title{font-size:var(--text-sm);font-weight:var(--font-semibold);margin:0;color:var(--color-ink)}.work-item-list__create{background:none;border:1px solid var(--color-accent);color:var(--color-accent);cursor:pointer;font-size:16px;padding:2px 8px;border-radius:var(--radius-md);min-width:32px;min-height:32px;display:flex;align-items:center;justify-content:center;transition:all .15s ease;font-weight:700}.work-item-list__create:hover{background-color:var(--color-accent);color:#fff}.work-item-list__create:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.work-item-list__input-wrapper{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-2);background:#00000005;border-radius:var(--radius-md);flex-shrink:0}:root[data-theme=dark] .work-item-list__input-wrapper{background:#ffffff0d}.work-item-list__input-container{display:flex;gap:var(--space-2);align-items:center}:root[data-theme=dark] .work-item-list__input-container{background:#ffffff0d}.work-item-list__input{flex:1;padding:6px 8px;border:1px solid #e5e7eb;border-radius:var(--radius-md);font-size:var(--text-sm);font-family:var(--font-sans);background:var(--color-paper);color:var(--color-ink);outline:none;transition:border-color .15s ease}:root[data-theme=dark] .work-item-list__input{border-color:#374151}.work-item-list__input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #2f7af81a}:root[data-theme=dark] .work-item-list__input:focus{box-shadow:0 0 0 3px #4a90ff33}.work-item-list__input::placeholder{color:#9ca3af}.work-item-list__save,.work-item-list__cancel{background:var(--color-accent);color:#fff;border:none;cursor:pointer;padding:6px 8px;border-radius:var(--radius-md);min-width:32px;min-height:32px;font-weight:700;transition:filter .15s ease}.work-item-list__cancel{background:#ef4444}.work-item-list__save:hover,.work-item-list__cancel:hover{filter:brightness(.9)}.work-item-list__save:focus-visible,.work-item-list__cancel:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.work-item-list__tag-selector{display:flex;gap:6px;flex-wrap:wrap;padding:0;margin:0}.work-item-list__tag-button{padding:4px 10px;border:2px solid;border-radius:3px;font-size:11px;font-weight:var(--font-medium);cursor:pointer;background:transparent;transition:all .15s ease;white-space:nowrap}.work-item-list__tag-button:hover{opacity:.8}.work-item-list__tag-button:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.work-item-list__tag-button--selected{font-weight:var(--font-bold)}.work-item-list__items{list-style:none;padding:0;margin:0;flex:1;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:var(--space-2)}.work-item-list__empty{list-style:none;padding:var(--space-3);text-align:center;color:#6b7280}:root[data-theme=dark] .work-item-list__empty{color:#9ca3af}.work-item-list__empty-text{font-size:var(--text-xs);line-height:1.5}.work-item-list__item{display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-2);border-radius:var(--radius-md);background:#00000005;transition:all .15s ease}:root[data-theme=dark] .work-item-list__item{background:#ffffff0d}.work-item-list__item:hover{background:#0000000d}:root[data-theme=dark] .work-item-list__item:hover{background:#ffffff14}.work-item-list__item-content{display:flex;align-items:flex-start;gap:var(--space-2);flex:1;min-width:0}.work-item-list__checkbox{width:18px;height:18px;margin-top:2px;flex-shrink:0;cursor:pointer;accent-color:var(--color-accent)}.work-item-list__checkbox:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.work-item-list__item-text{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.work-item-list__item-title{font-size:var(--text-sm);color:var(--color-ink);word-break:break-word;transition:all .15s ease}.work-item-list__item-title--completed{text-decoration:line-through;color:#9ca3af;opacity:.7}.work-item-list__tags{display:flex;gap:4px;flex-wrap:wrap}.work-item-list__tag{display:inline-block;padding:2px 6px;border-radius:3px;font-size:11px;font-weight:var(--font-medium);color:#fff;white-space:nowrap;text-transform:capitalize}.work-item-list__delete{background:none;border:none;color:#6b7280;cursor:pointer;font-size:18px;padding:0;min-width:24px;min-height:24px;display:flex;align-items:center;justify-content:center;transition:all .15s ease;flex-shrink:0}:root[data-theme=dark] .work-item-list__delete{color:#9ca3af}.work-item-list__delete:hover{color:#ef4444}.work-item-list__delete:focus-visible{outline:2px solid #ef4444;outline-offset:2px}.work-item-list__items::-webkit-scrollbar{width:8px}.work-item-list__items::-webkit-scrollbar-track{background:transparent}.work-item-list__items::-webkit-scrollbar-thumb{background:#0003;border-radius:4px}.work-item-list__items::-webkit-scrollbar-thumb:hover{background:#0000004d}:root[data-theme=dark] .work-item-list__items::-webkit-scrollbar-thumb{background:#fff3}:root[data-theme=dark] .work-item-list__items::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.document-editor{display:flex;flex-direction:column;flex:1;overflow:hidden;background:var(--color-paper)}.document-editor__header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid #e5e7eb;gap:var(--space-4);flex-shrink:0}:root[data-theme=dark] .document-editor__header{border-bottom-color:#374151}.document-editor__title{font-size:var(--text-lg);font-weight:var(--font-semibold);margin:0;color:var(--color-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.document-editor__title--editing{border:2px solid var(--color-accent);border-radius:4px;padding:4px 8px;outline:none;background:var(--color-paper);font-family:var(--font-sans)}.document-editor__title--editing:focus{box-shadow:0 0 0 3px #2f7af81a}.document-editor__status{display:flex;align-items:center;gap:6px;white-space:nowrap;flex-shrink:0}.document-editor__status-icon{font-size:14px;display:inline-block}.document-editor__status-icon--saving{color:var(--color-accent);animation:spin 1s linear infinite}.document-editor__status-icon--saved{color:#10b981}.document-editor__status-icon--error{color:#f59e0b}.document-editor__status-text{font-size:var(--text-xs);color:#6b7280}:root[data-theme=dark] .document-editor__status-text{color:#9ca3af}.document-editor__status-text--error{color:#f59e0b}.document-editor__empty{display:flex;align-items:center;justify-content:center;flex:1;color:#6b7280;text-align:center;padding:var(--space-6)}:root[data-theme=dark] .document-editor__empty{color:#9ca3af}.document-editor__empty p{margin:0;font-size:var(--text-base);max-width:400px;line-height:1.6}.document-editor__textarea{flex:1;padding:var(--space-4);border:none;outline:none;font-family:var(--font-sans);font-size:var(--text-sm);color:var(--color-ink);background:var(--color-paper);resize:none;line-height:1.6;word-break:break-word;overflow-y:auto}.document-editor__textarea::placeholder{color:#9ca3af}.document-editor__textarea:focus{outline:1px solid var(--color-accent);outline-offset:-1px}.document-editor__textarea::-webkit-scrollbar{width:10px}.document-editor__textarea::-webkit-scrollbar-track{background:transparent}.document-editor__textarea::-webkit-scrollbar-thumb{background:#0003;border-radius:5px}.document-editor__textarea::-webkit-scrollbar-thumb:hover{background:#0000004d}:root[data-theme=dark] .document-editor__textarea::-webkit-scrollbar-thumb{background:#fff3}:root[data-theme=dark] .document-editor__textarea::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.document-editor__textarea::selection{background-color:#2f7af833}:root[data-theme=dark] .document-editor__textarea::selection{background-color:#4a90ff4d}.workspace{width:100%;height:100%;display:flex;flex-direction:column;background:var(--color-paper);color:var(--color-ink);outline:none}.workspace:focus{outline:none}.workspace__layout{display:flex;flex-direction:row;flex:1;overflow:hidden}.workspace__sidebar{width:280px;flex-shrink:0;background:var(--color-muted);border-right:1px solid #e5e7eb;overflow:hidden;display:flex;flex-direction:column}:root[data-theme=dark] .workspace__sidebar{border-right-color:#374151}.workspace__sidebar-content{display:flex;flex-direction:column;flex:1;overflow-y:auto;overflow-x:hidden}.workspace__documents-section{flex:1;min-height:0}.workspace__divider{height:1px;background:#e5e7eb;margin:var(--space-4) 0}:root[data-theme=dark] .workspace__divider{background:#374151}.workspace__work-items-section{flex:0 1 auto;max-height:50%;min-height:0}.workspace__main{display:flex;flex-direction:column;flex:1;overflow:hidden}.workspace__editor-container{flex:1;overflow:hidden;display:flex;flex-direction:column}@media (max-width: 1024px){.workspace__sidebar{width:240px}}@media (max-width: 768px){.workspace__layout{flex-direction:column}.workspace__sidebar{width:100%;height:40%;border-right:none;border-bottom:1px solid #e5e7eb}:root[data-theme=dark] .workspace__sidebar{border-bottom-color:#374151}.workspace__main{height:60%}}.message{border-radius:var(--radius-md);padding:var(--space-4);animation:fade-slide-up .3s ease-out}.message--user{background:var(--color-muted)}.message--assistant{background:transparent;border:1px solid var(--color-muted);border-left:3px solid var(--color-accent)}.message__header{display:flex;align-items:center;margin-bottom:var(--space-2);font-size:var(--text-sm)}.message__role{font-weight:var(--font-medium);color:var(--color-ink);opacity:.7}.message__separator{color:var(--color-ink);opacity:.6}.message__timestamp{font-weight:var(--font-normal);color:var(--color-ink);opacity:.6}.message__content{color:var(--color-ink);font-size:var(--text-base);font-weight:var(--font-normal);line-height:1.5}.message__content p{margin:0}.message__content p+p{margin-top:var(--space-3)}.message__content strong{font-weight:var(--font-semibold)}.message__content em{font-style:italic}.message__code-inline{background:var(--color-muted);border-radius:var(--radius-sm);padding:2px 6px;font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-accent)}.message__pre{background:var(--color-muted);border:1px solid rgba(var(--color-ink-rgb, 10, 10, 10),.1);border-radius:var(--radius-md);padding:var(--space-4);margin:var(--space-3) 0;overflow-x:auto}.message__code-block{font-family:var(--font-mono);font-size:var(--text-sm);line-height:1.5;color:var(--color-ink)}.message__list{margin:var(--space-3) 0;margin-left:var(--space-6);line-height:1.6}.message__list--ordered{list-style-type:decimal}.message__list-item{margin-bottom:var(--space-2)}.message__list-item:last-child{margin-bottom:0}.message__list .message__list{margin-top:var(--space-2);margin-bottom:var(--space-2);padding-left:var(--space-3)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}@keyframes fade-slide-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.loading-indicator{background:transparent;border:1px solid var(--color-muted);border-left:3px solid var(--color-accent);border-radius:var(--radius-md);padding:var(--space-4)}.loading-indicator__header{display:flex;align-items:center;margin-bottom:var(--space-2);font-size:var(--text-sm)}.loading-indicator__role{font-weight:var(--font-medium);color:var(--color-ink);opacity:.7}.loading-indicator__separator{color:var(--color-ink);opacity:.6}.loading-indicator__text{font-style:italic;font-weight:var(--font-normal);color:var(--color-ink);opacity:.6}.loading-indicator__dots{display:flex;gap:var(--space-2);align-items:center}.loading-indicator__dot{width:6px;height:6px;border-radius:50%;background:var(--color-accent);animation:pulse-dot 1.4s ease-in-out infinite}.loading-indicator__dot:nth-child(2){animation-delay:.2s}.loading-indicator__dot:nth-child(3){animation-delay:.4s}@keyframes pulse-dot{0%,to{opacity:.3}50%{opacity:1}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;max-width:400px;margin:0 auto;padding:var(--space-8)}.empty-state__icon{font-size:48px;margin-bottom:var(--space-4)}.empty-state__heading{font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--color-ink);margin:0 0 var(--space-3) 0}.empty-state__body{font-size:var(--text-base);font-weight:var(--font-normal);color:var(--color-ink);opacity:.7;line-height:1.5;margin:0}.message-list{flex:1;overflow-y:auto;overflow-x:hidden;padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4)}.message-list{scroll-behavior:smooth}.message-list::-webkit-scrollbar{width:8px}.message-list::-webkit-scrollbar-track{background:transparent}.message-list::-webkit-scrollbar-thumb{background:var(--color-muted);border-radius:4px}.message-list::-webkit-scrollbar-thumb:hover{background:var(--color-ink);opacity:.3}.message-input{position:relative;background:var(--color-paper);border-top:1px solid var(--color-muted);padding:var(--space-4);display:flex;gap:var(--space-3)}.message-input__textarea{flex:1;min-height:44px;max-height:120px;background:var(--color-muted);border:1px solid transparent;border-radius:var(--radius-md);padding:var(--space-3);font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-ink);line-height:1.5;resize:none;transition:border-color .2s ease,box-shadow .2s ease}.message-input__textarea::placeholder{color:var(--color-ink);opacity:.4}.message-input__textarea:focus{outline:none;border-color:var(--color-accent);box-shadow:var(--shadow-focus)}.message-input__textarea:disabled{background:var(--color-muted);opacity:.5;cursor:not-allowed}.message-input__send{display:flex;align-items:center;gap:var(--space-2);min-width:80px;height:44px;padding:var(--space-3) var(--space-4);background:var(--color-accent);color:var(--color-paper);border:none;border-radius:var(--radius-md);font-family:var(--font-sans);font-size:var(--text-base);font-weight:var(--font-medium);cursor:pointer;transition:background-color .2s ease,transform .1s ease}.message-input__send:hover:not(:disabled){background:var(--color-accent);filter:brightness(.9);transform:translateY(-1px)}.message-input__send:active:not(:disabled){transform:scale(.98)}.message-input__send:disabled{background:var(--color-muted);color:var(--color-ink);opacity:.6;cursor:not-allowed}.message-input__send:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.message-input__send-icon,.message-input__send-text{flex-shrink:0}@media (max-width: 640px){.message-input__send{min-width:44px;padding:var(--space-3)}.message-input__send-text{display:none}}.error-banner{background:#b453091a;border:1px solid var(--color-warning);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-3);display:flex;align-items:center;gap:var(--space-3);animation:slide-down .2s ease-out}:root[data-theme=dark] .error-banner{background:#ff980026}.error-banner__icon{flex-shrink:0;width:20px;height:20px;border-radius:50%;background:var(--color-warning);color:var(--color-paper);display:flex;align-items:center;justify-content:center;font-weight:var(--font-bold);font-size:var(--text-sm)}.error-banner__message{flex-grow:1;font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-warning)}.error-banner__dismiss{flex-shrink:0;width:20px;height:20px;padding:var(--space-1);background:transparent;border:none;border-radius:var(--radius-sm);color:var(--color-warning);font-size:20px;line-height:1;cursor:pointer;transition:background-color .15s ease}.error-banner__dismiss:hover{background:#b453091a}.error-banner__dismiss:focus-visible{outline:2px solid var(--color-warning);outline-offset:2px}@keyframes slide-down{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.chat-pane{width:100%;height:100%;display:flex;flex-direction:column;outline:none}.chat-pane:focus{outline:2px solid var(--color-accent);outline-offset:-2px;box-shadow:var(--shadow-focus)}.chat-pane__header{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-muted);background:var(--color-paper)}.chat-pane__title{font-size:var(--text-base);font-weight:var(--font-semibold);color:var(--color-ink);margin:0}.chat-pane__content{flex:1;overflow:hidden;display:flex;flex-direction:column}.chat-pane__input-container{flex-shrink:0}.participants-sidebar{width:280px;background-color:var(--color-surface);border-left:1px solid var(--color-border);display:flex;flex-direction:column;height:100%;overflow-y:auto}.participants-header{display:flex;justify-content:space-between;align-items:center;padding:16px;border-bottom:1px solid var(--color-border)}.participants-title{font-size:14px;font-weight:600;color:var(--color-text);margin:0}.connection-status{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:500;padding:4px 8px;border-radius:12px}.connection-status.connected{color:var(--color-success);background-color:color-mix(in srgb,var(--color-success) 10%,transparent)}.connection-status.disconnected{color:var(--color-error);background-color:color-mix(in srgb,var(--color-error) 10%,transparent)}.connection-status .status-indicator{width:6px;height:6px;border-radius:50%;background-color:currentColor}.connection-status.connected .status-indicator{animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.participants-section{padding:12px 16px}.section-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin:0 0 12px}.participants-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.participant-item{display:flex;align-items:center;gap:12px;padding:8px;border-radius:8px;transition:background-color .15s ease}.participant-item:hover{background-color:var(--color-surface-hover)}.participant-item.current-user{background-color:color-mix(in srgb,var(--color-accent) 5%,transparent)}.participant-avatar{position:relative;flex-shrink:0}.avatar-image{width:36px;height:36px;border-radius:50%;object-fit:cover}.avatar-placeholder{width:36px;height:36px;border-radius:50%;background-color:var(--color-accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600}.status-dot{position:absolute;bottom:0;right:0;width:10px;height:10px;border-radius:50%;border:2px solid var(--color-surface)}.participant-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.participant-name{font-size:13px;font-weight:500;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.you-label{font-weight:400;color:var(--color-text-muted)}.participant-status{font-size:11px;color:var(--color-text-muted)}.last-activity{color:var(--color-text-muted)}.participants-empty{padding:24px 16px;text-align:center}.participants-empty p{font-size:13px;color:var(--color-text-muted);margin:0}@media (max-width: 1200px){.participants-sidebar{width:240px}}@media (max-width: 900px){.participants-sidebar{display:none}}[data-theme=dark] .avatar-placeholder{background-color:var(--color-accent-dark, var(--color-accent))}[data-theme=dark] .connection-status.connected{background-color:color-mix(in srgb,var(--color-success) 15%,transparent)}[data-theme=dark] .connection-status.disconnected{background-color:color-mix(in srgb,var(--color-error) 15%,transparent)}.teaching-mode-selector{display:flex;align-items:center;gap:8px;padding:8px 0}.mode-label{font-size:14px;font-weight:500;color:var(--text-secondary, #666)}.mode-select{padding:6px 32px 6px 10px;font-size:14px;border:1px solid var(--border-color, #ddd);border-radius:6px;background-color:var(--bg-primary, #fff);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.mode-select:hover:not(:disabled){border-color:var(--border-hover, #999)}.mode-select:focus{outline:2px solid var(--focus-ring, #0066cc);outline-offset:2px}.mode-select:disabled{opacity:.5;cursor:not-allowed}.mode-info-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:1px solid var(--border-color, #ddd);border-radius:50%;background:transparent;color:var(--text-secondary, #666);font-size:14px;cursor:help;transition:all .2s}.mode-info-btn:hover{background-color:var(--bg-hover, #f5f5f5);border-color:var(--border-hover, #999)}.mode-saving{font-size:12px;color:var(--text-secondary, #666);font-style:italic}.mode-error{font-size:12px;color:var(--error-color, #d32f2f)}.session-history-page{min-height:100vh;background-color:#f9fafb;padding:24px}.session-history-container{max-width:800px;margin:0 auto}.session-history-title{font-size:32px;font-weight:600;color:#1f2937;margin-bottom:24px}.session-history-error{padding:12px 16px;background-color:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#dc2626;font-size:14px;margin-bottom:16px}.session-history-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px;color:#6b7280;font-size:14px}.loading-spinner{width:32px;height:32px;border:3px solid #e5e7eb;border-top-color:#3b82f6;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:12px}.loading-spinner.small{width:20px;height:20px;border-width:2px}.search-input-container{position:relative;width:100%;max-width:600px;margin-bottom:24px}.search-icon{position:absolute;left:16px;top:50%;transform:translateY(-50%);font-size:20px;pointer-events:none}.search-input{width:100%;height:48px;padding:12px 44px;border:1px solid #d1d5db;border-radius:8px;font-size:16px;outline:none;transition:border-color .2s,box-shadow .2s}.search-input::placeholder{color:#9ca3af}.search-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f633}.search-clear-button{position:absolute;right:12px;top:50%;transform:translateY(-50%);width:24px;height:24px;border:none;background:none;color:#9ca3af;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px}.search-clear-button:hover{color:#6b7280;background-color:#f3f4f6}.session-list{display:flex;flex-direction:column;gap:12px;max-height:calc(100vh - 300px);overflow-y:auto;padding-right:4px}.session-list-item{display:flex;align-items:flex-start;gap:12px;padding:16px;background-color:#fff;border:1px solid #e5e7eb;border-radius:8px;cursor:pointer;transition:border-color .2s,box-shadow .2s;position:relative}.session-list-item:hover{border-color:#3b82f6;box-shadow:0 2px 8px #0000001a}.session-list-item:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f633}.session-list-item.archived{background-color:#f9fafb;opacity:.9}.session-icon{font-size:20px;color:#6b7280;flex-shrink:0;margin-top:2px}.session-content{flex:1;min-width:0}.session-title{font-size:18px;font-weight:600;color:#1f2937;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.archived-tag{font-size:14px;font-weight:400;color:#6b7280;margin-left:8px}.session-last-edited{font-size:14px;color:#6b7280;margin-bottom:4px}.session-metadata{font-size:14px;color:#9ca3af}.archive-button{position:absolute;right:16px;top:16px;width:32px;height:32px;border:none;background:none;font-size:20px;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center;color:#6b7280;transition:color .2s,background-color .2s}.archive-button:hover{color:#3b82f6;background-color:#f3f4f6}.archive-button:focus{outline:none;box-shadow:0 0 0 2px #3b82f680}.archived-divider{padding:16px 0;text-align:center;color:#6b7280;font-size:14px;font-weight:500}.loading-more{display:flex;align-items:center;justify-content:center;gap:8px;padding:16px;color:#6b7280;font-size:14px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.empty-state-icon{font-size:48px;margin-bottom:16px}.empty-state-title{font-size:20px;font-weight:600;color:#6b7280;margin:0 0 8px}.empty-state-subtitle{font-size:16px;color:#9ca3af;margin:0 0 24px}.empty-state-action{padding:12px 32px;font-size:16px;font-weight:600;color:#fff;background-color:#3b82f6;border:none;border-radius:8px;cursor:pointer;transition:background-color .2s}.empty-state-action:hover{background-color:#2563eb}.empty-state-action:focus{outline:none;box-shadow:0 0 0 3px #3b82f633}.show-archived-toggle{display:block;margin:16px 0;padding:0;border:none;background:none;font-size:14px;font-weight:500;color:#3b82f6;cursor:pointer;text-decoration:none}.show-archived-toggle:hover{text-decoration:underline;color:#2563eb}.new-session-button{display:block;width:100%;padding:12px 32px;margin-top:24px;font-size:16px;font-weight:600;color:#fff;background-color:#3b82f6;border:none;border-radius:8px;cursor:pointer;transition:background-color .2s}.new-session-button:hover{background-color:#2563eb}.new-session-button:focus{outline:none;box-shadow:0 0 0 3px #3b82f633}.new-session-button:active{background-color:#1d4ed8}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (max-width: 640px){.session-history-page{padding:16px}.session-history-title{font-size:24px;margin-bottom:16px}.search-input-container{max-width:100%}.session-list{max-height:calc(100vh - 350px)}.session-list-item{padding:12px}.session-title{font-size:16px}.archive-button{width:32px;height:32px}.new-session-button{position:fixed;bottom:16px;left:16px;right:16px;width:auto;margin-top:0}}.class-detail-page{min-height:100vh;background:var(--color-bg-primary, #ffffff);padding:32px 24px}.class-detail-container{max-width:800px;margin:0 auto}.back-button{display:inline-flex;align-items:center;gap:4px;padding:8px 0;font-size:14px;font-weight:500;color:var(--color-text-secondary, #6b7280);background:transparent;border:none;cursor:pointer;margin-bottom:24px;transition:color .15s ease}.back-button:hover{color:#3b82f6}.back-button:focus{outline:2px solid #3b82f6;outline-offset:2px}.class-detail-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.class-detail-info{flex:1}.class-detail-title{font-size:28px;font-weight:600;color:var(--color-text-primary, #1f2937);margin:0 0 8px}.class-detail-description{font-size:16px;color:var(--color-text-secondary, #6b7280);margin:0;line-height:1.5}.invite-link-section{margin-bottom:24px;padding:16px;background:var(--color-bg-muted, #f9fafb);border-radius:8px}.invite-link-label{display:block;font-size:14px;font-weight:500;color:var(--color-text-primary, #374151);margin-bottom:8px}.invite-link-row{display:flex;gap:8px}.invite-link-input{flex:1;height:40px;padding:8px 12px;font-size:14px;font-family:monospace;color:var(--color-text-primary, #1f2937);background:var(--color-bg-primary, #ffffff);border:1px solid var(--color-border, #d1d5db);border-radius:6px;cursor:text}.invite-link-input:focus{outline:2px solid #3b82f6;outline-offset:-2px}.invite-link-copy-button{display:flex;align-items:center;gap:6px;height:40px;padding:0 16px;font-size:14px;font-weight:500;color:#3b82f6;background:var(--color-bg-primary, #ffffff);border:1px solid #3b82f6;border-radius:6px;cursor:pointer;transition:background-color .15s ease}.invite-link-copy-button:hover{background:#eff6ff}.invite-link-copy-button:focus{outline:2px solid #3b82f6;outline-offset:2px}.class-tabs{display:flex;border-bottom:1px solid var(--color-border, #e5e7eb);margin-bottom:24px}.class-tab{padding:12px 16px;font-size:14px;font-weight:500;color:var(--color-text-secondary, #6b7280);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color .15s ease,border-color .15s ease}.class-tab:hover{color:var(--color-text-primary, #1f2937)}.class-tab.active{color:#3b82f6;border-bottom-color:#3b82f6;font-weight:600}.class-tab:focus{outline:2px solid #3b82f6;outline-offset:-2px}.tab-content{min-height:200px}.roster-tab .search-input-wrapper{margin-bottom:16px}.student-list{display:flex;flex-direction:column}.student-row{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--color-border, #e5e7eb);transition:background-color .15s ease}.student-row:hover{background:var(--color-bg-muted, #f9fafb)}.student-row:last-child{border-bottom:none}.student-info{flex:1}.student-name{font-size:16px;font-weight:500;color:var(--color-text-primary, #1f2937);margin-bottom:2px}.student-email{font-size:14px;color:var(--color-text-secondary, #6b7280);margin-bottom:2px}.student-joined{font-size:12px;color:var(--color-text-muted, #9ca3af)}.remove-student-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:transparent;border:none;border-radius:4px;color:var(--color-text-muted, #9ca3af);cursor:pointer;transition:color .15s ease}.remove-student-button:hover{color:#ef4444}.remove-student-button:focus{outline:2px solid #3b82f6;outline-offset:2px}.sessions-tab{padding:0}.sessions-tab-header{display:flex;justify-content:flex-end;margin-bottom:16px}.new-session-button{height:40px;padding:0 20px;font-size:14px;font-weight:600;color:#fff;background:#3b82f6;border:none;border-radius:8px;cursor:pointer;transition:background-color .15s ease}.new-session-button:hover:not(:disabled){background:#2563eb}.new-session-button:disabled{opacity:.5;cursor:not-allowed}.new-session-button:focus{outline:2px solid #3b82f6;outline-offset:2px}.class-detail-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px 32px;gap:16px;color:var(--color-text-secondary, #6b7280)}.class-detail-error{padding:12px 16px;margin-bottom:16px;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#dc2626;font-size:14px}.confirm-modal{max-width:400px}.confirm-modal-title{font-size:20px;font-weight:600;color:var(--color-text-primary, #1f2937);margin:0 0 12px}.confirm-modal-message{font-size:14px;color:var(--color-text-secondary, #6b7280);line-height:1.5;margin:0 0 24px}.modal-confirm-button{height:44px;padding:0 24px;font-size:16px;font-weight:600;color:#fff;background:#3b82f6;border:none;border-radius:8px;cursor:pointer;transition:background-color .15s ease}.modal-confirm-button:hover{background:#2563eb}.modal-confirm-button.destructive{background:#ef4444}.modal-confirm-button.destructive:hover{background:#dc2626}.modal-confirm-button:focus{outline:2px solid currentColor;outline-offset:2px}@media (prefers-color-scheme: dark){.class-detail-page{background:#111827}.class-detail-title{color:#f9fafb}.class-detail-description{color:#9ca3af}.invite-link-section{background:#1f2937}.invite-link-input{background:#374151;border-color:#4b5563;color:#f9fafb}.student-row:hover{background:#1f2937}.student-name{color:#f9fafb}.class-detail-error{background:#7f1d1d;border-color:#991b1b;color:#fecaca}.confirm-modal-title{color:#f9fafb}.confirm-modal-message{color:#9ca3af}}.join-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-bg-primary, #ffffff);padding:24px}.join-container{width:100%;max-width:400px;text-align:center}.join-loading{display:flex;flex-direction:column;align-items:center;gap:16px;padding:48px 24px;color:var(--color-text-secondary, #6b7280)}.join-success-state,.join-error-state{display:flex;flex-direction:column;align-items:center;padding:48px 24px}.join-icon{font-size:48px;margin-bottom:24px}.join-title{font-size:24px;font-weight:600;color:var(--color-text-primary, #1f2937);margin:0 0 12px}.join-message{font-size:16px;color:var(--color-text-secondary, #6b7280);margin:0 0 8px;line-height:1.5}.join-message strong{color:var(--color-text-primary, #1f2937)}.join-subtitle{font-size:14px;color:var(--color-text-muted, #9ca3af);margin:0 0 24px}.join-action-button{height:44px;padding:0 24px;font-size:16px;font-weight:600;color:#fff;background:#3b82f6;border:none;border-radius:8px;cursor:pointer;transition:background-color .15s ease}.join-action-button:hover{background:#2563eb}.join-action-button:focus{outline:2px solid #3b82f6;outline-offset:2px}.join-invite-state{display:flex;flex-direction:column;align-items:center;padding:48px 24px}.join-class-name{font-size:28px;font-weight:700;color:var(--color-text-primary, #1f2937);margin:0 0 12px}.join-description{font-size:14px;color:var(--color-text-secondary, #6b7280);margin:0 0 8px;line-height:1.5}.join-teacher{font-size:14px;color:var(--color-text-muted, #9ca3af);margin:0 0 32px}.join-auth-actions{display:flex;flex-direction:column;gap:12px;width:100%}.join-action-button.primary{background:#3b82f6;color:#fff}.join-action-button.primary:hover{background:#2563eb}.join-action-button.secondary{background:transparent;color:#3b82f6;border:2px solid #3b82f6}.join-action-button.secondary:hover{background:#3b82f61a}.loading-spinner{width:32px;height:32px;border:3px solid var(--color-border, #e5e7eb);border-top-color:#3b82f6;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-color-scheme: dark){.join-page{background:#111827}.join-title{color:#f9fafb}.join-message{color:#9ca3af}.join-message strong{color:#f9fafb}.join-subtitle{color:#6b7280}}.teacher-dashboard{min-height:100vh;background-color:var(--color-bg-primary, #ffffff);color:var(--color-text-primary, #1a1a1a)}.teacher-dashboard__loading,.teacher-dashboard__error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;padding:2rem;text-align:center;gap:1rem}.teacher-dashboard__error h2{margin:0;color:var(--color-error, #dc2626)}.teacher-dashboard__header{border-bottom:1px solid var(--color-border, #e5e5e5);background-color:var(--color-bg-secondary, #f9fafb);padding:1rem 1.5rem}.teacher-dashboard__header-content{display:flex;align-items:center;justify-content:space-between;max-width:1400px;margin:0 auto;gap:1rem}.teacher-dashboard__header h1{margin:0;font-size:1.5rem;font-weight:600}.teacher-dashboard__breadcrumb{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.teacher-dashboard__breadcrumb a{color:var(--color-primary, #4f46e5);text-decoration:none}.teacher-dashboard__breadcrumb a:hover{text-decoration:underline}.teacher-dashboard__breadcrumb span{color:var(--color-text-secondary, #6b7280)}.teacher-dashboard__header-actions{display:flex;align-items:center;gap:.75rem}.teacher-dashboard__user{font-size:.875rem;color:var(--color-text-secondary, #6b7280)}.teacher-dashboard__stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;padding:1.5rem;max-width:1400px;margin:0 auto}.stat-card{background-color:var(--color-bg-secondary, #f9fafb);border:1px solid var(--color-border, #e5e5e5);border-radius:.5rem;padding:1.25rem;text-align:center}.stat-card--highlight{background-color:var(--color-primary-light, #eef2ff);border-color:var(--color-primary, #4f46e5)}.stat-card__value{display:block;font-size:2rem;font-weight:700;color:var(--color-text-primary, #1a1a1a)}.stat-card--highlight .stat-card__value{color:var(--color-primary, #4f46e5)}.stat-card__label{font-size:.875rem;color:var(--color-text-secondary, #6b7280)}.teacher-dashboard__section{padding:1.5rem;max-width:1400px;margin:0 auto}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.section-heading{margin:0 0 1rem;font-size:1.25rem;font-weight:600}.empty-state{text-align:center;padding:3rem 1.5rem;background-color:var(--color-bg-secondary, #f9fafb);border:2px dashed var(--color-border, #e5e5e5);border-radius:.5rem}.empty-state p{margin:0 0 1rem;color:var(--color-text-secondary, #6b7280)}.active-sessions-list{display:flex;flex-direction:column;gap:1rem}.session-card{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;background-color:var(--color-bg-secondary, #f9fafb);border:1px solid var(--color-border, #e5e5e5);border-left:4px solid var(--color-success, #10b981);border-radius:.5rem}.session-card__info{flex:1}.session-card__title{margin:0 0 .25rem;font-size:1rem;font-weight:600}.session-card__meta,.session-card__time{margin:0;font-size:.875rem;color:var(--color-text-secondary, #6b7280)}.class-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;margin-bottom:1rem}.class-card{display:block;padding:1.25rem;background-color:var(--color-bg-secondary, #f9fafb);border:1px solid var(--color-border, #e5e5e5);border-radius:.5rem;text-decoration:none;color:inherit;transition:border-color .15s,box-shadow .15s}.class-card:hover{border-color:var(--color-primary, #4f46e5);box-shadow:0 2px 8px #0000001a}.class-card__name{margin:0 0 .5rem;font-size:1.125rem;font-weight:600}.class-card__description{margin:0 0 .75rem;font-size:.875rem;color:var(--color-text-secondary, #6b7280);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.class-card__stats{display:flex;gap:.5rem;font-size:.875rem;color:var(--color-text-secondary, #6b7280);margin-bottom:.5rem}.class-card__activity{margin:0;font-size:.75rem;color:var(--color-text-tertiary, #9ca3af)}.teacher-dashboard__nav{display:flex;gap:1rem;padding:1.5rem;max-width:1400px;margin:0 auto;border-top:1px solid var(--color-border, #e5e5e5)}.nav-link{color:var(--color-primary, #4f46e5);text-decoration:none;font-size:.875rem}.nav-link:hover{text-decoration:underline}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1rem;font-size:.875rem;font-weight:500;border-radius:.375rem;border:1px solid transparent;cursor:pointer;transition:background-color .15s,border-color .15s}.btn-sm{padding:.375rem .75rem;font-size:.75rem}.btn-primary{background-color:var(--color-primary, #4f46e5);color:#fff}.btn-primary:hover{background-color:var(--color-primary-dark, #4338ca)}.btn-secondary{background-color:transparent;border-color:var(--color-border, #e5e5e5);color:var(--color-text-primary, #1a1a1a)}.btn-secondary:hover{background-color:var(--color-bg-secondary, #f9fafb)}.btn-danger{background-color:var(--color-error, #dc2626);color:#fff}.btn-danger:hover{background-color:#b91c1c}.class-detail__info{padding:1.5rem;max-width:1400px;margin:0 auto}.class-detail__info h1{margin:0 0 .5rem;font-size:1.5rem}.class-detail__description{margin:0 0 1rem;color:var(--color-text-secondary, #6b7280)}.class-detail__invite-code{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.class-detail__invite-code code{padding:.25rem .5rem;background-color:var(--color-bg-secondary, #f9fafb);border:1px solid var(--color-border, #e5e5e5);border-radius:.25rem;font-family:monospace}.class-detail__tabs{display:flex;gap:0;padding:0 1.5rem;max-width:1400px;margin:0 auto;border-bottom:1px solid var(--color-border, #e5e5e5)}.tab-button{padding:.75rem 1rem;background:none;border:none;border-bottom:2px solid transparent;color:var(--color-text-secondary, #6b7280);font-size:.875rem;font-weight:500;cursor:pointer}.tab-button.active{color:var(--color-primary, #4f46e5);border-bottom-color:var(--color-primary, #4f46e5)}.tab-button:hover:not(.active){color:var(--color-text-primary, #1a1a1a)}.class-detail__roster,.class-detail__sessions,.class-detail__workspaces{padding:1.5rem;max-width:1400px;margin:0 auto}.workspaces-header,.roster-header{margin-bottom:1rem}.search-input{width:100%;max-width:300px;padding:.5rem .75rem;font-size:.875rem;border:1px solid var(--color-border, #e5e5e5);border-radius:.375rem;background-color:var(--color-bg-primary, #ffffff);color:var(--color-text-primary, #1a1a1a)}.search-input:focus{outline:none;border-color:var(--color-primary, #4f46e5);box-shadow:0 0 0 2px var(--color-primary-light, #eef2ff)}.roster-table-container{overflow-x:auto}.roster-table{width:100%;border-collapse:collapse;font-size:.875rem}.roster-table th,.roster-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--color-border, #e5e5e5)}.roster-table th{background-color:var(--color-bg-secondary, #f9fafb);font-weight:600;color:var(--color-text-secondary, #6b7280)}.roster-table tbody tr:hover{background-color:var(--color-bg-secondary, #f9fafb)}.sessions-list{display:flex;flex-direction:column;gap:.75rem}.session-item{display:flex;align-items:center;justify-content:space-between;padding:1rem;background-color:var(--color-bg-secondary, #f9fafb);border:1px solid var(--color-border, #e5e5e5);border-radius:.5rem}.session-item.active{border-left:4px solid var(--color-success, #10b981)}.session-item__info h3{margin:0 0 .25rem;font-size:1rem;font-weight:600}.session-item__info p{margin:0;font-size:.875rem;color:var(--color-text-secondary, #6b7280)}.session-item__actions{display:flex;align-items:center;gap:.75rem}.status-badge{padding:.25rem .5rem;font-size:.75rem;font-weight:500;border-radius:.25rem}.status-badge--active{background-color:var(--color-success-light, #d1fae5);color:var(--color-success, #10b981)}.status-badge--idle{background-color:#fef3c7;color:#f59e0b}.status-badge--offline{background-color:#fee2e2;color:#dc2626}.status-badge--not-started{background-color:var(--color-bg-secondary, #f9fafb);color:var(--color-text-secondary, #6b7280)}.workspaces-table-container{overflow-x:auto}.workspaces-table{width:100%;border-collapse:collapse;font-size:.875rem}.workspaces-table th,.workspaces-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--color-border, #e5e5e5)}.workspaces-table th{background-color:var(--color-bg-secondary, #f9fafb);font-weight:600;color:var(--color-text-secondary, #6b7280)}.workspaces-table tbody tr:hover{background-color:var(--color-bg-secondary, #f9fafb)}.text-secondary{font-size:.8125rem;color:var(--color-text-secondary, #6b7280)}.monitor__session-info{padding:1.5rem;max-width:1400px;margin:0 auto}.monitor__session-info h1{margin:0 0 .5rem;font-size:1.5rem}.monitor__session-info p{margin:0;color:var(--color-text-secondary, #6b7280)}.monitor__layout{display:grid;grid-template-columns:250px 1fr;gap:0;min-height:500px;border-top:1px solid var(--color-border, #e5e5e5)}.monitor__sidebar{background-color:var(--color-bg-secondary, #f9fafb);border-right:1px solid var(--color-border, #e5e5e5);padding:1rem}.monitor__sidebar-title{margin:0 0 1rem;font-size:1rem;font-weight:600}.monitor__participants-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.monitor__participant-card{width:100%;padding:.75rem;text-align:left;background-color:var(--color-bg-primary, #ffffff);border:1px solid var(--color-border, #e5e5e5);border-radius:.375rem;cursor:pointer;transition:border-color .15s}.monitor__participant-card:hover{border-color:var(--color-primary, #4f46e5)}.monitor__participant-card.active{border-color:var(--color-primary, #4f46e5);background-color:var(--color-primary-light, #eef2ff)}.monitor__participant-name{display:block;font-weight:500;margin-bottom:.25rem}.monitor__participant-status{display:block;font-size:.75rem}.monitor__participant-status.status--editing{color:var(--color-success, #10b981)}.monitor__participant-status.status--viewing{color:var(--color-primary, #4f46e5)}.monitor__participant-status.status--idle{color:var(--color-warning, #f59e0b)}.monitor__participant-status.status--offline{color:var(--color-error, #dc2626)}.monitor__empty{color:var(--color-text-secondary, #6b7280);font-size:.875rem}.monitor__workspace{padding:1.5rem;overflow-y:auto}.monitor__workspace-empty,.monitor__workspace-loading{display:flex;align-items:center;justify-content:center;height:100%;color:var(--color-text-secondary, #6b7280)}.monitor__workspace-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;margin-bottom:1rem;background-color:var(--color-primary-light, #eef2ff);border:1px solid var(--color-primary, #4f46e5);border-radius:.5rem}.monitor__workspace-header p{margin:0;font-size:.875rem}.monitor__workspace-content{display:flex;flex-direction:column;gap:1.5rem}.monitor__section h3{margin:0 0 .75rem;font-size:1rem;font-weight:600}.monitor__documents{display:flex;flex-direction:column;gap:1rem}.monitor__document{padding:1rem;background-color:var(--color-bg-secondary, #f9fafb);border:1px solid var(--color-border, #e5e5e5);border-radius:.5rem}.monitor__document h4{margin:0 0 .5rem;font-size:.875rem;font-weight:600}.monitor__document-content{margin:0;padding:.75rem;background-color:var(--color-bg-primary, #ffffff);border:1px solid var(--color-border, #e5e5e5);border-radius:.375rem;font-size:.8125rem;font-family:monospace;white-space:pre-wrap;word-wrap:break-word;max-height:200px;overflow-y:auto}.monitor__work-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.monitor__work-item{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background-color:var(--color-bg-secondary, #f9fafb);border-radius:.375rem;font-size:.875rem}.monitor__work-item.status--completed{text-decoration:line-through;opacity:.7}.monitor__work-item-status{font-weight:700}.monitor__chat{display:flex;flex-direction:column;gap:.75rem;max-height:300px;overflow-y:auto}.monitor__chat-message{padding:.75rem;border-radius:.5rem;font-size:.875rem}.monitor__chat-message.role--user{background-color:var(--color-bg-secondary, #f9fafb)}.monitor__chat-message.role--assistant{background-color:var(--color-primary-light, #eef2ff)}.monitor__chat-message strong{display:block;margin-bottom:.25rem;font-size:.75rem;color:var(--color-text-secondary, #6b7280)}.monitor__chat-message p{margin:0}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (max-width: 768px){.teacher-dashboard__stats,.class-grid,.monitor__layout{grid-template-columns:1fr}.monitor__sidebar{border-right:none;border-bottom:1px solid var(--color-border, #e5e5e5)}.roster-table-container{margin:0 -1.5rem;padding:0 1.5rem}.teacher-dashboard__header-content{flex-direction:column;align-items:flex-start}}@media (prefers-color-scheme: dark){.teacher-dashboard{--color-bg-primary: #1a1a1a;--color-bg-secondary: #262626;--color-text-primary: #f5f5f5;--color-text-secondary: #a3a3a3;--color-text-tertiary: #737373;--color-border: #404040;--color-primary-light: #312e81}}.student-dashboard{max-width:1200px;margin:0 auto;padding:24px;min-height:100vh;background:var(--color-bg-primary, #ffffff)}.student-dashboard-loading{display:flex;align-items:center;justify-content:center;min-height:400px;color:var(--color-text-secondary, #6b7280)}.student-dashboard-error{padding:16px;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#dc2626;margin-bottom:24px}.student-dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:32px}.student-dashboard-header h1{font-size:28px;font-weight:700;color:var(--color-text-primary, #1f2937);margin:0}.student-dashboard-header p{color:var(--color-text-secondary, #6b7280);margin:4px 0 0;font-size:14px}.student-dashboard-header-actions{display:flex;align-items:center;gap:12px}.btn-secondary{height:40px;padding:0 16px;font-size:14px;font-weight:500;color:var(--color-text-primary, #374151);background:var(--color-bg-secondary, #f3f4f6);border:1px solid var(--color-border, #d1d5db);border-radius:8px;cursor:pointer;transition:background-color .15s ease}.btn-secondary:hover{background:var(--color-bg-tertiary, #e5e7eb)}.btn-primary{height:40px;padding:0 20px;font-size:14px;font-weight:600;color:#fff;background:#3b82f6;border:none;border-radius:8px;cursor:pointer;transition:background-color .15s ease}.btn-primary:hover{background:#2563eb}.btn-primary:focus{outline:2px solid #3b82f6;outline-offset:2px}.student-dashboard-empty{text-align:center;padding:64px 24px;background:var(--color-bg-secondary, #f9fafb);border-radius:12px}.student-dashboard-empty h2{font-size:20px;font-weight:600;color:var(--color-text-primary, #1f2937);margin:0 0 8px}.student-dashboard-empty p{color:var(--color-text-secondary, #6b7280);margin:0 0 24px}.student-active-sessions{margin-bottom:32px}.student-active-sessions h2{font-size:18px;font-weight:600;color:var(--color-text-primary, #1f2937);margin:0 0 16px}.active-sessions-list{display:flex;flex-direction:column;gap:12px}.active-session-card{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:#f0fdf4;border:2px solid #10b981;border-radius:12px;text-decoration:none;color:inherit;transition:all .15s ease}.active-session-card:hover{box-shadow:0 4px 12px #10b98133}.active-session-info h3{font-size:16px;font-weight:600;color:var(--color-text-primary, #1f2937);margin:4px 0}.active-session-info .session-class-name{font-size:14px;color:var(--color-text-secondary, #6b7280);margin:0 0 4px}.active-session-info .session-time{font-size:12px;color:var(--color-text-muted, #9ca3af);margin:0}.live-badge{display:inline-block;padding:2px 8px;font-size:10px;font-weight:700;color:#fff;background:#ef4444;border-radius:4px;animation:pulse 2s infinite}.live-badge-small{display:inline-block;padding:1px 6px;font-size:9px;font-weight:700;color:#fff;background:#ef4444;border-radius:3px;margin-right:8px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.btn-join{display:inline-flex;align-items:center;justify-content:center;padding:8px 20px;font-size:14px;font-weight:600;color:#fff;background:#10b981;border-radius:8px;text-decoration:none;transition:background-color .15s ease}.btn-join:hover{background:#059669}.student-recent-sessions{margin-bottom:32px}.student-recent-sessions h2{font-size:18px;font-weight:600;color:var(--color-text-primary, #1f2937);margin:0 0 16px}.recent-sessions-list{display:flex;flex-direction:column;gap:8px}.recent-session-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--color-bg-primary, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:8px;text-decoration:none;color:inherit;transition:all .15s ease}.recent-session-item:hover{border-color:#3b82f6;background:var(--color-bg-secondary, #f9fafb)}.recent-session-item.active{border-color:#10b981;background:#f0fdf4}.recent-session-info{display:flex;align-items:center;gap:8px}.recent-session-info .session-title{font-size:14px;font-weight:500;color:var(--color-text-primary, #1f2937)}.recent-session-info .session-class{font-size:12px;color:var(--color-text-muted, #9ca3af)}.recent-session-info .session-class:before{content:"·";margin-right:8px}.recent-session-item .session-time{font-size:12px;color:var(--color-text-muted, #9ca3af)}.student-classes-section{margin-bottom:32px}.student-classes-section h2{font-size:18px;font-weight:600;color:var(--color-text-primary, #1f2937);margin:0 0 16px}.student-classes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.student-class-card{display:block;position:relative;padding:20px;background:var(--color-bg-primary, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:12px;text-decoration:none;color:inherit;transition:all .15s ease;cursor:pointer}.student-class-card:hover,.student-class-card:focus{border-color:#3b82f6;box-shadow:0 4px 12px #0000001a;outline:none}.student-class-card .live-badge{position:absolute;top:12px;right:12px}.student-class-card h3{font-size:18px;font-weight:600;color:var(--color-text-primary, #1f2937);margin:0 0 4px}.student-class-card .class-teacher{color:var(--color-text-secondary, #6b7280);font-size:14px;margin:0 0 8px}.student-class-card .class-subject{color:var(--color-text-secondary, #6b7280);font-size:13px;margin:0 0 12px}.student-class-card .class-meta{display:flex;gap:16px;font-size:12px;color:var(--color-text-muted, #9ca3af)}.btn-join-session{display:block;margin-top:12px;padding:8px 16px;font-size:13px;font-weight:600;color:#fff;background:#10b981;border-radius:6px;text-decoration:none;text-align:center;transition:background-color .15s ease}.btn-join-session:hover{background:#059669}.student-class-detail{max-width:900px;margin:0 auto;padding:24px;min-height:100vh;background:var(--color-bg-primary, #ffffff)}.class-detail-header{margin-bottom:32px}.class-detail-header .back-link{display:inline-flex;align-items:center;color:var(--color-text-secondary, #6b7280);text-decoration:none;font-size:14px;margin-bottom:16px;background:none;border:none;cursor:pointer;padding:0}.class-detail-header .back-link:hover{color:var(--color-text-primary, #1f2937)}.class-detail-header h1{font-size:28px;font-weight:700;color:var(--color-text-primary, #1f2937);margin:0 0 4px}.class-detail-header .class-teacher-name{color:var(--color-text-secondary, #6b7280);font-size:16px;margin:0 0 8px}.class-detail-header .class-description{color:var(--color-text-secondary, #6b7280);font-size:14px;margin:0;line-height:1.5}.active-sessions,.past-sessions{margin-bottom:32px}.active-sessions h2,.past-sessions h2{font-size:18px;font-weight:600;color:var(--color-text-primary, #1f2937);margin:0 0 16px}.sessions-list{display:flex;flex-direction:column;gap:12px}.session-card{display:block;padding:16px;background:var(--color-bg-primary, #ffffff);border:1px solid var(--color-border, #e5e7eb);border-radius:8px;text-decoration:none;color:inherit;transition:all .15s ease}.session-card:hover{border-color:#3b82f6}.session-card.active{border-color:#10b981;background:#f0fdf4}.session-card .session-status{display:inline-block;padding:2px 8px;font-size:10px;font-weight:700;color:#10b981;background:#d1fae5;border-radius:4px;margin-bottom:8px}.session-card h3{font-size:16px;font-weight:600;color:var(--color-text-primary, #1f2937);margin:0 0 4px}.session-card p{font-size:14px;color:var(--color-text-secondary, #6b7280);margin:0}.no-sessions{color:var(--color-text-muted, #9ca3af);font-style:italic}[data-theme=dark] .student-dashboard,[data-theme=dark] .student-class-detail{background:#111827}[data-theme=dark] .student-dashboard-header h1,[data-theme=dark] .class-detail-header h1,[data-theme=dark] .student-dashboard-empty h2,[data-theme=dark] .student-class-card h3,[data-theme=dark] .session-card h3,[data-theme=dark] .active-sessions h2,[data-theme=dark] .past-sessions h2{color:#f9fafb}[data-theme=dark] .student-class-card{background:#1f2937;border-color:#374151}[data-theme=dark] .student-class-card:hover{border-color:#3b82f6}[data-theme=dark] .session-card{background:#1f2937;border-color:#374151}[data-theme=dark] .session-card.active{background:#064e3b;border-color:#10b981}[data-theme=dark] .student-dashboard-empty{background:#1f2937}[data-theme=dark] .student-dashboard-error{background:#7f1d1d;border-color:#991b1b;color:#fca5a5}[data-theme=dark] .active-session-card{background:#064e3b;border-color:#10b981}[data-theme=dark] .active-session-info h3,[data-theme=dark] .student-active-sessions h2,[data-theme=dark] .student-recent-sessions h2,[data-theme=dark] .student-classes-section h2{color:#f9fafb}[data-theme=dark] .recent-session-item{background:#1f2937;border-color:#374151}[data-theme=dark] .recent-session-item:hover{background:#374151;border-color:#3b82f6}[data-theme=dark] .recent-session-item.active{background:#064e3b;border-color:#10b981}[data-theme=dark] .recent-session-info .session-title{color:#f9fafb}@media (max-width: 640px){.student-dashboard,.student-class-detail{padding:16px}.student-dashboard-header{flex-direction:column;align-items:flex-start;gap:16px}.student-dashboard-header h1,.class-detail-header h1{font-size:24px}.student-classes-grid{grid-template-columns:1fr}.student-class-card .class-meta{flex-direction:column;gap:4px}}.app{height:100%;width:100%;position:relative;display:flex;flex-direction:column}.dashboard-header{position:fixed;top:1rem;right:1rem;z-index:50}.dashboard-header-content{display:flex;align-items:center;gap:1rem;background:#ffffffe6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:.5rem 1rem;border-radius:.5rem;box-shadow:0 1px 3px #0000001a;border:1px solid var(--color-border, #e2e8f0)}.dashboard-header-link{font-size:.875rem;font-weight:500;color:var(--color-primary, #2563eb);text-decoration:none;transition:color .15s ease}.dashboard-header-link:hover{color:var(--color-primary-hover, #1d4ed8)}.dashboard-header-user{font-size:.875rem;color:var(--color-text-secondary, #64748b)}.dashboard-header-logout{padding:.375rem .75rem;font-size:.875rem;font-weight:500;color:var(--color-text-primary, #334155);background:var(--color-surface-secondary, #f1f5f9);border:none;border-radius:.375rem;cursor:pointer;transition:background-color .15s ease}.dashboard-header-logout:hover{background:var(--color-surface-tertiary, #e2e8f0)}[data-theme=dark] .dashboard-header-content{background:#1e293be6;border-color:var(--color-border)}[data-theme=dark] .dashboard-header-logout{background:var(--color-surface-secondary);color:var(--color-text-primary)}[data-theme=dark] .dashboard-header-logout:hover{background:var(--color-surface-tertiary)}.workspace-nav-header{display:flex;align-items:center;height:48px;padding:0 16px;border-bottom:1px solid var(--color-border, #e2e8f0);background:var(--color-surface, #ffffff);flex-shrink:0}[data-theme=dark] .workspace-nav-header{background:var(--color-surface, #1e293b);border-color:var(--color-border, #334155)}.workspace-back-btn{display:flex;align-items:center;gap:4px;padding:6px 12px;font-size:14px;font-weight:500;color:var(--color-text-secondary, #64748b);background:none;border:none;border-radius:6px;cursor:pointer;transition:all .15s ease}.workspace-back-btn:hover{color:var(--color-text-primary, #334155);background:var(--color-surface-secondary, #f1f5f9)}[data-theme=dark] .workspace-back-btn:hover{background:var(--color-surface-tertiary, #334155)}.workspace-title{flex:1;margin:0 16px;font-size:16px;font-weight:600;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text-primary, #334155)}.workspace-header-actions{display:flex;align-items:center;gap:12px}@media (max-width: 640px){.workspace-nav-header{padding:0 12px}.workspace-title{font-size:14px;margin:0 8px}.workspace-header-actions .dashboard-header-user{display:none}}.observer-mode-banner{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#eff6ff;border-bottom:1px solid #3b82f6;color:#1e40af;font-size:14px;flex-shrink:0}.observer-mode-banner svg{flex-shrink:0}.observer-mode-banner strong{font-weight:600}[data-theme=dark] .observer-mode-banner{background:#1e3a8a;border-color:#3b82f6;color:#bfdbfe}.workspace-container{flex:1;display:flex;overflow:hidden}.workspace-container>:first-child{flex:1;min-width:0}:root{--color-ink: #0A0A0A;--color-paper: #FFFFFF;--color-accent: #2F7AF8;--color-muted: #F5F7FB;--color-success: #2E7D32;--color-warning: #B45309;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "Menlo", "Monaco", monospace;--text-xs: 12px;--text-sm: 14px;--text-base: 16px;--text-lg: 18px;--text-xl: 20px;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--shadow-focus: 0 0 0 3px rgba(47, 122, 248, .1)}:root[data-theme=dark]{--color-ink: #E8E8E8;--color-paper: #0F0F0F;--color-accent: #4A90FF;--color-muted: #1A1A1A;--color-success: #4CAF50;--color-warning: #FF9800;--shadow-focus: 0 0 0 3px rgba(74, 144, 255, .2)}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}body{font-family:var(--font-sans);font-size:var(--text-base);font-weight:var(--font-normal);color:var(--color-ink);background:var(--color-paper);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{height:100%;width:100%}*:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}button{font-family:inherit;font-size:inherit;border:none;background:none;cursor:pointer}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-muted)}::-webkit-scrollbar-thumb{background:var(--color-accent);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb:hover{background:var(--color-ink);opacity:.8}
