*{box-sizing:border-box}:root{--app-height:100vh}body,html{-webkit-overflow-scrolling:touch;height:100vh;height:var(--app-height);margin:0;min-height:100vh;min-height:var(--app-height);overflow:hidden;overscroll-behavior:none;padding:0;position:fixed;width:100vw}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}@media (max-width:768px){#root,body,html{height:100vh;height:var(--app-height);min-height:100vh;min-height:var(--app-height);overflow:hidden;position:fixed;width:100vw}}@supports (-webkit-touch-callout:none){#root,body,html{height:100vh;height:var(--app-height);min-height:100vh;min-height:var(--app-height)}}#root{height:100%;min-height:0;overflow:hidden;width:100vw}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.login-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;overflow-x:hidden;width:100%}.login-form{background:#fff;border-radius:12px;max-width:400px;padding:2rem;width:100%}.logo-container{margin-bottom:2rem;text-align:center}.logo{height:auto;max-width:200px;object-fit:contain}.form-group{margin-bottom:1.5rem}.form-group label{color:#555;font-weight:500;margin-bottom:.5rem}.form-group input{border:2px solid #e1e5e9;border-radius:8px;font-size:1rem;padding:.75rem;transition:border-color .2s;width:100%}.form-group input:focus{border-color:#667eea;outline:none}.password-input-container{position:relative}.password-input-container input{padding-right:40px}.password-toggle{align-items:center;background:none;border:none;color:#666;cursor:pointer;display:flex;justify-content:center;padding:2px;position:absolute;right:10px;top:50%;transform:translateY(-50%)}.password-toggle:hover{color:#333}.error-message{background:#fdf2f2;border-radius:4px;color:#e74c3c;font-size:.9rem;margin-bottom:1rem;padding:.5rem}.login-button{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:.75rem;transition:transform .2s;width:100%}.login-button:hover{transform:translateY(-2px)}.reset-button{background:#f8f9fa;border:1px solid #e1e5e9;border-radius:8px;color:#666;cursor:pointer;font-size:.9rem;margin-top:.5rem;padding:.5rem;transition:all .2s;width:100%}.reset-button:hover{background:#e9ecef;color:#333}.remember-group{margin-bottom:1.5rem}.checkbox-label{align-items:center;color:#555;cursor:pointer;display:flex;font-size:.95rem;transition:color .2s;-webkit-user-select:none;user-select:none}.checkbox-label:hover{color:#333}.checkbox-label input[type=checkbox]{cursor:pointer;opacity:0;position:absolute}.checkmark{align-items:center;background-color:#fff;border:2px solid #d1d5db;border-radius:6px;display:flex;height:20px;justify-content:center;margin-right:.75rem;position:relative;transition:all .3s ease;width:20px}.checkbox-label:hover .checkmark{border-color:#667eea;transform:scale(1.05)}.checkbox-label input[type=checkbox]:checked~.checkmark{background:linear-gradient(135deg,#667eea,#764ba2);border-color:#667eea;transform:scale(1.05)}.checkmark:after{color:#fff;content:"✓";font-size:12px;font-weight:700;opacity:0;position:absolute;transform:scale(.8);transition:all .2s ease}.checkbox-label input[type=checkbox]:checked~.checkmark:after{opacity:1;transform:scale(1)}@media (max-width:480px){.login-container{box-sizing:border-box;min-height:100vh;overflow-x:hidden;padding:1rem;width:100vw}.login-form{border-radius:16px;box-sizing:border-box;max-width:100%;padding:1.5rem;width:100%}.logo-container{margin-bottom:1.5rem}.logo{max-width:150px}.form-group{margin-bottom:1.25rem}.form-group input{font-size:1rem;padding:.875rem}.password-input-container input{padding-right:45px}.password-toggle{right:12px}.login-button{border-radius:10px;font-size:1rem;padding:.875rem}.remember-group{margin-bottom:1.25rem}.checkbox-label{font-size:.9rem}.checkmark{height:18px;margin-right:.5rem;width:18px}.error-message{font-size:.85rem;padding:.5rem}}.chat-list{background:#fff;border-right:1px solid #e9ecef;display:flex;flex-direction:column;height:100%;min-height:0;width:100%}@media (max-width:768px){.chat-list{border-right:none}}.chat-list-header{background:#fff;border-bottom:1px solid #e9ecef;padding:1rem 1rem .5rem}.header-row{align-items:center;display:flex;justify-content:space-between}.chat-list-refresh{align-items:center;color:#111;display:inline-flex;font-size:.95rem;font-weight:600;gap:.5rem}.chat-list-refresh-spinner{animation:chatListSpin .8s linear infinite;border:3px solid #9c78ff40;border-radius:50%;border-top-color:#9c78ff;height:20px;width:20px}@keyframes chatListSpin{to{transform:rotate(1turn)}}.chat-list-header h2{color:#333;font-size:1.2rem;margin:0}.logout-icon-button{align-items:center;background:none;border:none;color:#666;cursor:pointer;display:flex;justify-content:center;padding:.25rem;transition:color .2s}.logout-icon-button:hover{color:#9c78ff}.search-container{margin-top:.75rem;position:relative}.search-icon{color:#999;left:.75rem;position:absolute;top:50%;transform:translateY(-50%)}.search-input{border:1px solid #e1e5e9;border-radius:20px;font-size:.9rem;outline:none;padding:.5rem 2.25rem .5rem 2.5rem;transition:border-color .2s;width:100%}.search-input:focus{border-color:#9c78ff}.chat-search-clear-button{align-items:center;background:none;border:none;color:#999;cursor:pointer;display:flex;justify-content:center;position:absolute;right:.5rem;top:50%;transform:translateY(-50%)}.chat-search-clear-button:hover{color:#333}.chat-folders{-ms-overflow-style:none;display:flex;gap:.5rem;margin-top:.75rem;overflow-x:auto;padding-bottom:.25rem;scrollbar-width:none}.chat-folders::-webkit-scrollbar{display:none}.chat-folder{background:#f8f9fa;border:1px solid #e1e5e9;border-radius:999px;color:#444;cursor:pointer;font-size:.8rem;padding:.3rem .75rem;transition:border-color .2s,background-color .2s,color .2s;white-space:nowrap}.chat-folder:hover{border-color:#c9ced6}.chat-folder.active{background:#9c78ff;border-color:#9c78ff;color:#fff}.chats{flex:1 1;overflow-y:auto}.chat-item{align-items:center;border-bottom:1px solid #f1f3f4;cursor:pointer;display:flex;padding:.75rem 1rem;transition:background-color .2s}.chat-item.active,.chat-item:hover{background:#f8f9fa}.chat-item-skeleton{cursor:default;pointer-events:none}.chat-avatar{border-radius:50%;flex-shrink:0;height:50px;margin-right:.75rem;overflow:hidden;width:50px}.chat-avatar img{height:100%;object-fit:cover;width:100%}.avatar-placeholder{align-items:center;background:linear-gradient(135deg,#ff6b6b,#ff8e8e 50%,#ffa8a8);color:#fff;display:flex;font-size:.9rem;font-weight:600;height:100%;justify-content:center;width:100%}.chat-info{flex:1 1;min-width:0}.chat-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:.25rem}.chat-name-container{align-items:center;display:flex;flex:1 1;gap:.35rem;min-width:0}.group-icon{color:#333;flex-shrink:0}.status-circle{border:1px solid #0000000d;border-radius:50%;display:inline-block;flex-shrink:0;height:10px;width:10px}.status-circle.red{background-color:#ff4d4f;box-shadow:0 0 5px #ff4d4f66}.status-circle.yellow{background-color:#003dff;box-shadow:0 0 5px #ffec3d66}.status-circle.green{background-color:#52c41a;box-shadow:0 0 5px #52c41a66}.status-circle.grey{background-color:#bfbfbf}.chat-name{color:#000;font-size:.95rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.read-check{color:#4caf50;flex-shrink:0}.chat-time{color:#999;flex-shrink:0;font-size:.8rem;margin-left:.5rem}.chat-preview{gap:.5rem;justify-content:space-between}.chat-preview,.last-message{align-items:center;display:flex;min-width:0;overflow:hidden}.last-message{flex:1 1;font-size:.85rem;gap:.25rem;white-space:nowrap}.you-label{color:#9c78ff;flex-shrink:0;font-weight:500;margin-right:.25rem;white-space:nowrap}.chat-preview-text{color:#999;display:block;flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.draft-label{color:#e53935;flex-shrink:0;font-weight:600}.attachment-icon{color:#999;flex-shrink:0;margin:0 .3rem 0 .1rem}.skeleton-block{animation:skeletonPulse 1.2s ease-in-out infinite;background:#e9ecef;border-radius:12px}.chat-avatar.skeleton-block{border-radius:50%}.skeleton-line{animation:skeletonPulse 1.2s ease-in-out infinite;background:#e9ecef;border-radius:999px;display:inline-block;height:10px}.skeleton-line-title{height:12px;width:160px}.skeleton-line-time{height:10px;margin-left:.5rem;width:40px}.skeleton-line-message{height:10px;width:220px}@keyframes skeletonPulse{0%{opacity:.6}50%{opacity:1}to{opacity:.6}}.no-messages{color:#999;font-size:.85rem;font-style:italic}.unread-badge{border-radius:10px;font-weight:600;min-width:18px;padding:.15rem .4rem;text-align:center}.mention-badge,.unread-badge{background:#9c78ff;color:#fff;flex-shrink:0;font-size:.7rem}.mention-badge{align-items:center;border-radius:50%;display:inline-flex;font-weight:700;height:18px;justify-content:center;margin-right:6px;width:18px}.chat-window{display:flex;flex:1 1;flex-direction:column;height:100%;min-height:0;min-width:0}.empty{align-items:center;justify-content:center}.empty-state{color:#666;text-align:center}.empty-icon{font-size:4rem;margin-bottom:1rem}.empty-state h3{color:#333;margin:0 0 .5rem}.empty-state p{font-size:.9rem;margin:0}.chat-window-header{align-items:center;background:#fff;border-bottom:1px solid #e9ecef;display:flex;gap:.5rem;justify-content:center;padding:1.2rem 6rem 1.2rem 3rem;position:relative}.chat-window-header.searching{justify-content:flex-start;padding-left:.75rem;padding-right:.75rem}.chat-header-info{align-items:center;display:flex;flex:1 1;flex-direction:column;justify-content:center;min-width:0;overflow:hidden}.chat-window-header h2{color:#333;font-size:1.1rem;font-weight:600;margin:0;overflow:visible;text-align:center;text-overflow:clip;white-space:normal;width:100%;word-break:break-word}.teacher-info{color:#666;margin-top:6px;text-align:center}.lesson-info,.teacher-info{font-size:.9rem;font-weight:500}.lesson-info{color:#9c78ff;margin-top:8px}.search-toggle-button{align-items:center;background:none;border:none;color:#666;cursor:pointer;display:flex;justify-content:center;padding:.5rem;position:absolute;right:1rem;top:50%;transform:translateY(-50%);transition:color .2s}.search-toggle-button:hover{color:#333}.message-search-container{align-items:center;display:flex;flex:1 1;margin-left:0;position:relative}.chat-window-header.searching .message-search-container{margin-left:2.5rem}.message-search-icon{color:#999;left:.75rem;position:absolute}.message-search-input{border:1px solid #e1e5e9;border-radius:20px;font-size:.9rem;outline:none;padding:.5rem 6rem .5rem 2.25rem;width:100%}.message-search-input:focus{border-color:#9c78ff}.message-search-controls{align-items:center;display:flex;gap:.25rem;position:absolute;right:.5rem}.search-match-count{color:#7a7a7a;font-size:.75rem;min-width:2.5rem;text-align:right}.search-match-count.inactive{color:#b0b0b0}.search-nav-button{align-items:center;background:none;border:none;color:#888;cursor:pointer;display:flex;justify-content:center;padding:0}.search-nav-button:disabled{cursor:default;opacity:.4}.search-nav-button:hover:not(:disabled){color:#333}.clear-search-button{align-items:center;background:none;border:none;color:#999;cursor:pointer;display:flex;justify-content:center;padding:0}.clear-search-button:hover{color:#333}.participants{color:#666;font-size:.85rem}.chat-window-header .back-button{align-items:center;background:none;border:none;border-radius:50%;color:#666;cursor:pointer;display:flex;justify-content:center;left:.5rem;padding:.5rem;position:absolute;top:50%;transform:translateY(-50%);transition:background-color .2s}.back-button:hover{background:#f1f3f4}.messages-container{flex:1 1;overflow:hidden;position:relative}.messages{display:flex;flex-direction:column;gap:.5rem;height:100%;overflow-y:auto;padding:1rem}.messages.messages-hidden{pointer-events:none;visibility:hidden}.messages-loading-overlay{align-items:center;background:#fff;color:#666;display:flex;flex-direction:column;font-size:.95rem;gap:1rem;inset:0;justify-content:center;position:absolute;z-index:5}.messages-loading-spinner{animation:spin .8s linear infinite;border:3px solid #e9ecef;border-radius:50%;border-top-color:#9c78ff;height:32px;width:32px}.unread-divider{align-items:center;animation:unreadFadeIn .3s ease-out;display:flex;justify-content:center;margin:.75rem 0;position:relative}@keyframes unreadFadeIn{0%{opacity:0;transform:scaleX(.8)}to{opacity:1;transform:scaleX(1)}}.unread-divider:before{background:#dc4a4a59;content:"";height:1px;left:0;position:absolute;right:0}.unread-divider-text{background:#fff;border:1px solid #dc4a4a66;border-radius:999px;color:#c94343;font-size:.8rem;font-weight:600;padding:.1rem .6rem;z-index:1}.scroll-to-bottom{align-items:center;background:#9c78ff;border:none;border-radius:50%;bottom:1.25rem;box-shadow:0 6px 16px #00000040;color:#fff;cursor:pointer;display:flex;height:38px;justify-content:center;position:absolute;right:1rem;width:38px}.scroll-to-bottom:hover{background:#8c66e9}.message{align-items:flex-end;display:flex;margin-bottom:.75rem}.message.own{justify-content:flex-end}.message.other{justify-content:flex-start}.message-wrapper{align-items:flex-end;display:flex;gap:.5rem;max-width:70%}.message.own .message-wrapper{flex-direction:row-reverse}.message-content{border:2px solid #d4d7da;border-radius:12px;flex:1 1;min-width:0;overflow:visible;padding:.75rem;position:relative}.message-content.sending{border-style:dashed;opacity:.8}.sender-name{display:block;font-size:.8rem;font-weight:700;margin-bottom:.25rem}.message-avatar{align-items:center;border-radius:50%;color:#fff;cursor:pointer;display:flex;flex-shrink:0;font-size:.8rem;font-weight:600;height:32px;justify-content:center;position:relative;transition:transform .15s ease,box-shadow .15s ease;width:32px}.message-avatar:hover{transform:scale(1.05)}.message-avatar.copied{animation:avatarCopied .6s ease-out;box-shadow:0 0 0 3px #4caf5059}.message-avatar.copied:after{background:#4caf50;border-radius:8px;bottom:-6px;color:#fff;content:"OK";font-size:.55rem;font-weight:700;padding:1px 4px;position:absolute;right:-6px}@keyframes avatarCopied{0%{transform:scale(1)}40%{transform:scale(1.12)}to{transform:scale(1)}}.message.own .message-content{background:#e3f2fd;color:#000}.message.other .message-content{background:#f8f9fa;color:#000}.attachment,.attachments{margin-bottom:.5rem}.attachment-image{border-radius:8px;max-height:260px;max-width:260px}.image-error,.image-placeholder{align-items:center;background:#eef0f2;border-radius:8px;color:#777;display:flex;font-size:.85rem;height:260px;justify-content:center;padding:.5rem;text-align:center;width:260px}.attachment-file{align-items:center;background:#ffffff1a;border-radius:6px;display:flex;gap:.5rem;max-width:300px;overflow:hidden;padding:.5rem}.attachment-file-link{color:inherit;display:block;text-decoration:none}.attachment-file span{font-size:.8em;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (min-width:768px){.attachment-file{max-width:600px}.attachment-file span{font-size:.9em}}.message-text,.message-text-window{word-wrap:break-word;font-weight:500;line-height:1.4;white-space:pre-wrap}.message-text-window{color:#000}.message-code-block{background:#f3f4f6;border-radius:8px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.85em;line-height:1.4;margin:.35rem 0;overflow-x:auto;padding:.6rem .75rem;white-space:pre}.message-code-block code{font-family:inherit}.message-inline-code{background:#f3f4f6;border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.85em;padding:.05rem .3rem;white-space:pre-wrap}.mention-highlight{color:#9c78ff;font-weight:700}.search-highlight{background:#9c78ff40;border-radius:3px;color:#6c4ae0;padding:0 2px}.message-meta{align-items:center;display:flex;gap:.5rem;justify-content:flex-start;margin-top:.25rem}.message.own .message-meta{justify-content:flex-end}.message-time{font-size:.7rem;opacity:.7}.message-edited-label{font-size:.7rem;opacity:.6;text-transform:lowercase}.message-copy-button{align-items:center;background:#0000;border:none;color:#7a7a7a;cursor:pointer;display:inline-flex;font-size:.7rem;gap:.25rem;padding:0}.message-copy-button:hover{color:#4e4e4e;text-decoration:underline}.message-edit-button{color:#7a7a7a}.message-delete-button{color:#d9534f}.message-delete-button:disabled{cursor:default;opacity:.6}.delete-modal-overlay{align-items:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0a0c1473;display:flex;inset:0;justify-content:center;position:fixed;z-index:1200}.delete-modal{background:#fff;border-radius:16px;box-shadow:0 18px 40px #10182833;padding:1.5rem;text-align:left;width:min(420px,calc(100% - 2rem))}.delete-modal-header{align-items:center;display:flex;gap:.75rem;margin-bottom:.75rem}.delete-modal-icon{align-items:center;background:#d9534f1f;border-radius:12px;color:#d9534f;display:flex;height:36px;justify-content:center;width:36px}.delete-modal-header h3{color:#1f2937;font-size:1.05rem;margin:0}.delete-modal-text{color:#4b5563;font-size:.95rem;margin:0 0 1rem}.delete-modal-preview{background:#f7f7fb;border-radius:12px;color:#374151;font-size:.9rem;margin-bottom:1.25rem;max-height:120px;overflow:auto;padding:.75rem}.delete-modal-actions{display:flex;gap:.75rem;justify-content:flex-end}.delete-modal-cancel,.delete-modal-confirm{border:none;border-radius:999px;cursor:pointer;font-size:.9rem;padding:.55rem 1.25rem}.delete-modal-cancel{background:#f1f5f9;color:#374151}.delete-modal-confirm{background:#d9534f;color:#fff}.delete-modal-cancel:disabled,.delete-modal-confirm:disabled{cursor:default;opacity:.6}.attachments-preview{background:#f8f9fa;border-top:1px solid #e9ecef;display:flex;flex-wrap:wrap;gap:.5rem;padding:.5rem 1rem}.attachment-preview{align-items:center;background:#fff;border:1px solid #e9ecef;border-radius:6px;display:flex;gap:.5rem;padding:.5rem;position:relative}.attachment-preview img{border-radius:4px;height:40px;object-fit:cover;width:40px}.file-preview{align-items:center;display:flex;gap:.5rem}.remove-attachment{align-items:center;background:#ff5722;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;height:20px;justify-content:center;position:absolute;right:-5px;top:-5px;width:20px}.message-input{align-items:center;background:#fff;border-top:1px solid #e9ecef;box-sizing:border-box;display:flex;gap:.5rem;min-width:0;overflow:visible;padding:.7rem;position:relative;width:100%;z-index:20}.schedule-button{background:#3390ec;border:none;border-radius:1rem;color:#fff;cursor:pointer;font-size:.85rem;font-weight:600;padding:.45rem .75rem;transition:background-color .2s,opacity .2s;white-space:nowrap}.schedule-button:hover:not(:disabled){background:#297cd0}.schedule-button:disabled{background:#b8bcc2;cursor:not-allowed;opacity:.5}.schedule-button.compact{align-items:center;border-radius:50%;display:flex;height:36px;justify-content:center;padding:0;width:36px}.input-controls{display:flex;flex:0 0 auto;gap:.25rem}.attach-button{align-items:center;background:none;border:none;border-radius:50%;color:#666;cursor:pointer;display:flex;height:30px;justify-content:center;padding:0;transition:background-color .2s,color .2s;width:30px}.attach-button:hover{background:#f1f3f4}.emoji-toggle-button{align-items:center;background:none;border:none;border-radius:50%;color:#666;cursor:pointer;display:flex;height:40px;justify-content:center;padding:0;transition:background-color .2s,color .2s;width:40px}.emoji-toggle-button.active,.emoji-toggle-button:hover{background:#f1f3f4;color:#9c78ff}.input-field-wrapper{align-items:flex-end;display:flex;flex:1 1;min-width:0;overflow:visible;position:relative}.mention-suggestions{background:#fff;border:1px solid #e1e5e9;border-radius:12px;bottom:100%;box-shadow:0 8px 18px #00000014;left:0;margin-bottom:.5rem;max-height:220px;overflow-y:auto;padding:.25rem;position:absolute;right:0;z-index:1102}.formatting-menu{background:#fff;border:1px solid #e1e5e9;border-radius:8px;box-shadow:0 6px 20px #00000026;display:flex;gap:6px;padding:6px;position:fixed;z-index:1103}.formatting-menu button{background:#f1f3f5;border:1px solid #e1e5e9;border-radius:6px;cursor:pointer;font-size:14px;padding:4px 8px}.formatting-menu button:hover{background:#e9ecef}.mention-suggestion{align-items:center;background:none;border:none;border-radius:8px;color:#222;cursor:pointer;display:flex;font-size:.9rem;padding:.5rem .75rem;text-align:left;width:100%}.mention-suggestion.active,.mention-suggestion:hover{background:#eef2ff}.mention-name{font-weight:600}.emoji-picker-wrapper{bottom:2.5px;display:flex;position:absolute;right:5px;z-index:1000}.emoji-picker-container{animation:slideIn .2s ease-out;border-radius:8px;bottom:100%;box-shadow:0 5px 25px #00000026;margin-bottom:20px;overflow:hidden;position:absolute;right:0;z-index:1001}@keyframes slideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.message-input textarea,.message-input-editor{background:#f8f9fa;border:1px solid #e1e5e9;border-radius:24px;flex:1 1;font-family:inherit;font-size:1rem;line-height:1.4;max-height:150px;min-height:40px;min-width:0;outline:none;padding-right:48px!important;padding:10px 16px;resize:none;transition:border-color .2s,box-shadow .2s;white-space:pre-wrap;width:100%;word-break:break-word}.message-input textarea::placeholder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-input textarea:focus,.message-input-editor:focus{border-color:#9c78ff}.message-input-editor:empty:before{color:#999;content:attr(data-placeholder);display:block;max-width:100%;overflow:hidden;pointer-events:none;text-overflow:ellipsis;white-space:nowrap}.send-button{align-items:center;background:#9c78ff;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;flex:0 0 auto;height:40px;justify-content:center;transition:background-color .2s;width:40px}.send-button:hover:not(:disabled){background:#8c66e9}.send-button:disabled{background:#ccc;cursor:not-allowed}.send-button svg{margin-right:2.5px;margin-top:2.5px}.chat-window{transition:transform .3s ease-out}.chat-window.swipe-active{border-left:3px solid #9c78ff;box-shadow:inset -5px 0 15px #0000001a;transition:none}.chat-window:not(.swipe-active){transition:transform .3s ease-out}.message-input-container{background:#fff;border-top:1px solid #e9ecef;display:flex;flex-direction:column;min-width:0;padding-bottom:env(safe-area-inset-bottom);position:relative;z-index:20}.message-input{border-top:none}.schedule-overlay{align-items:center;background:#0006;display:flex;inset:0;justify-content:center;position:fixed;z-index:1000}.schedule-modal{background:#fff;border-radius:12px;box-shadow:0 12px 30px #0003;max-width:360px;padding:1.25rem;position:relative;text-align:center;width:calc(100% - 2rem)}.schedule-modal-wide{height:min(80vh,720px);max-width:900px;padding:0;width:calc(100% - 2rem)}.schedule-modal h3{color:#222;font-size:1.05rem;margin:0 0 .75rem}.schedule-students{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.75rem}.schedule-student-button{background:#f3f4f6;border:none;border-radius:10px;cursor:pointer;font-size:.9rem;padding:.55rem .75rem;transition:background-color .2s}.schedule-student-button:hover{background:#e5e7eb}.schedule-close{background:none;border:none;color:#666;cursor:pointer;font-size:.9rem}.schedule-modal-close{align-items:center;background:#0000000d;border:none;border-radius:50%;cursor:pointer;display:flex;height:32px;justify-content:center;position:absolute;right:8px;top:8px;width:32px}.schedule-modal-header{align-items:center;background:#f8f9fa;border-bottom:1px solid #e9ecef;border-top-left-radius:12px;border-top-right-radius:12px;cursor:move;display:flex;justify-content:space-between;padding:.75rem 1rem;-webkit-user-select:none;user-select:none}.schedule-modal-header span{color:#333;font-size:.95rem;font-weight:600}.schedule-modal-close-btn{align-items:center;background:none;border:none;border-radius:50%;color:#666;cursor:pointer;display:flex;justify-content:center;padding:4px;transition:background-color .2s}.schedule-modal-close-btn:hover{background-color:#e9ecef;color:#333}.schedule-modal.draggable{transition:transform .05s linear;will-change:transform}.schedule-modal.draggable.dragging{transition:none}.schedule-modal.safari-positioned{position:fixed;transform:none;will-change:left,top}.schedule-modal.draggable.dragging .schedule-iframe{pointer-events:none}.schedule-iframe{border:none;border-bottom-left-radius:12px;border-bottom-right-radius:12px;height:calc(100% - 45px);width:100%}@media (min-width:769px){.schedule-modal-wide{height:700px;max-height:85vh;max-width:90vw;min-height:320px;min-width:420px;overflow:hidden;resize:both;width:300px}}.reply-preview-bar{align-items:center;animation:slideUp .2s ease-out;background:#f8f9fa;border-bottom:1px solid #dae0e5;box-sizing:border-box;display:flex;justify-content:space-between;min-width:0;padding:.5rem 1rem;width:100%}.edit-preview-bar .reply-preview-content{border-left-color:#f0a500}.edit-preview-bar .edit-icon,.edit-preview-bar .reply-preview-title{color:#f0a500}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.reply-preview-content{border-left:3px solid #9c78ff;display:flex;flex:1 1;flex-direction:column;justify-content:center;max-width:100%;min-width:0;overflow:hidden;padding-left:.5rem}.reply-preview-header{align-items:center;display:flex;gap:.25rem;margin-bottom:.1rem}.reply-icon{color:#9c78ff}.reply-preview-title{color:#9c78ff;font-size:.8rem;font-weight:600}.reply-preview-text,.reply-preview-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reply-preview-text{color:#666;display:block;font-size:.85rem;max-width:100%}.reply-close-button{align-items:center;background:none;border:none;color:#999;cursor:pointer;display:flex;justify-content:center;padding:.5rem;transition:color .2s}.reply-close-button:hover{color:#666}.message-reply-context{background:#0000000d;border-left:3px solid #9c78ff;border-radius:4px;cursor:pointer;font-size:.85rem;margin-bottom:.5rem;max-width:100%;min-width:0;overflow:hidden;padding:.25rem .5rem}.message.own .message-reply-context{background:#fff3;border-left-color:#9c78ff}.reply-sender{color:#9c78ff;font-size:.75rem;font-weight:600;margin-bottom:.1rem;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message.own .reply-sender{color:#9c78ff;opacity:.9}.reply-text{max-width:100%;opacity:.8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes reply-highlight{0%{background-color:#9c78ff1f;box-shadow:0 0 0 0 #9c78ff73}to{background-color:initial;box-shadow:0 0 0 12px #9c78ff00}}.message.highlighted .message-content{animation:reply-highlight 1.4s ease-out}.fullscreen-overlay{animation:fadeIn .2s ease-out;background:#000000e6;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:1000}.fullscreen-content,.fullscreen-overlay{align-items:center;display:flex;justify-content:center}.fullscreen-content{height:100%;position:relative;width:100%}.fullscreen-image{border-radius:4px;box-shadow:0 0 20px #00000080;max-height:95%;max-width:95%;object-fit:contain}.fullscreen-close{align-items:center;background:#00000080;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;height:44px;justify-content:center;position:absolute;right:20px;top:20px;transition:background-color .2s,transform .2s;width:44px}.fullscreen-close:hover{background:#fff3;transform:scale(1.1)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.date-separator{align-items:center;display:flex;justify-content:center;margin:1.5rem 0;position:relative}.date-separator:before{background:#e9ecef;content:"";height:1px;left:0;position:absolute;right:0;top:50%;z-index:1}.date-separator-text{background:#fff;border:1px solid #e9ecef;border-radius:20px;color:#666;font-size:.85rem;font-weight:500;padding:.5rem 1rem;position:relative;z-index:2}.sticky-date-header{align-items:flex-start;animation:fadeIn .3s ease;background:#0000;display:flex;height:0;justify-content:center;overflow:visible;padding:0;pointer-events:none;position:-webkit-sticky;position:sticky;top:0;z-index:10}.sticky-date-text{background:#fff;border:1px solid #e9ecef;border-radius:15px;box-shadow:0 2px 4px #0000001a;color:#333;font-size:.9rem;font-weight:600;padding:.25rem .75rem;transform:translateY(.5rem)}.image-container{display:inline-block;position:relative}.attachment-image.sending{filter:blur(2px);opacity:.7}.image-sending-overlay{align-items:center;background:#0003;border-radius:12px;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.sending-spinner{animation:spin 1s linear infinite;border:3px solid #fff9;border-radius:50%;border-top-color:#fff;height:24px;width:24px}@keyframes spin{to{transform:rotate(1turn)}}.reports-toggle-button{align-items:center;background:none;border:none;color:#666;cursor:pointer;display:flex;justify-content:center;padding:.5rem;position:absolute;right:3.5rem;top:50%;transform:translateY(-50%);transition:color .2s}.reports-toggle-button:hover{color:#9c78ff}.reports-modal{background:#fff;border-radius:12px;box-shadow:0 12px 30px #0003;display:flex;flex-direction:column;height:min(80vh,700px);max-width:600px;overflow:hidden;width:calc(100% - 2rem)}.reports-modal.draggable{transition:transform .05s linear;will-change:transform}.reports-modal.draggable.dragging{transition:none}.reports-modal.safari-positioned{position:fixed;transform:none;will-change:left,top}.reports-modal-header{align-items:center;background:#f8f9fa;border-bottom:1px solid #e9ecef;cursor:move;display:flex;justify-content:space-between;padding:.75rem 1rem;-webkit-user-select:none;user-select:none}.reports-modal-header span{color:#333;font-size:.95rem;font-weight:600}.reports-tabs{background:#fff;border-bottom:1px solid #e9ecef;display:flex}.reports-tab{background:none;border:none;border-bottom:2px solid #0000;color:#666;cursor:pointer;flex:1 1;font-size:.9rem;font-weight:500;padding:.75rem 1rem;transition:color .2s,border-color .2s}.reports-tab:hover{color:#9c78ff}.reports-tab.active{border-bottom-color:#9c78ff;color:#9c78ff}.reports-content{flex:1 1;overflow-y:auto;padding:1rem}.reports-loading{align-items:center;color:#666;display:flex;flex-direction:column;gap:1rem;height:100%;justify-content:center}.reports-empty{color:#999;font-size:.95rem;padding:2rem;text-align:center}.reports-list{display:flex;flex-direction:column;gap:1rem}.report-item{background:#f8f9fa;border:1px solid #e9ecef;border-radius:10px;padding:1rem}.report-header{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem;justify-content:space-between;margin-bottom:.75rem}.report-title{color:#333;font-size:.95rem;font-weight:600}.report-teacher{color:#9c78ff;font-size:.8rem;font-weight:500}.report-text{color:#555;font-size:.9rem;line-height:1.5;white-space:pre-wrap}.program-table-container{overflow-x:auto}.program-table{border-collapse:collapse;font-size:.9rem;width:100%}.program-table td,.program-table th{border-bottom:1px solid #e9ecef;padding:.75rem;text-align:left}.program-table th{color:#333;font-weight:600;position:-webkit-sticky;position:sticky;top:0}.program-table tbody tr:hover,.program-table th{background:#f8f9fa}.program-table tbody tr.completed{background:#9c78ff0d}.program-table tbody tr.completed td{color:#666}.program-status{text-align:center;width:80px}.check-icon{color:#22c55e}@media (min-width:769px){.reports-modal{height:700px;max-height:85vh;max-width:90vw;min-height:400px;min-width:400px;overflow:hidden;resize:both;width:600px}}.reports-footer{background:#f8f9fa;border-top:1px solid #e9ecef;display:flex;justify-content:center;padding:.75rem 1rem}.copy-reports-button{align-items:center;background:#9c78ff;border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:.9rem;font-weight:500;gap:.5rem;padding:.6rem 1.25rem;transition:background-color .3s,transform .2s}.copy-reports-button:hover:not(:disabled){background:#8c66e9}.copy-reports-button:disabled{cursor:not-allowed}.copy-reports-button.success{animation:copySuccess .3s ease-out;background:#22c55e}.copy-reports-button.success:hover{background:#22c55e}@keyframes copySuccess{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.message-reactions{align-items:center;display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.message-reaction{align-items:center;background:#f8fafc;border:1px solid #e2e8f0;border-radius:999px;color:#1f2937;cursor:pointer;display:inline-flex;font-size:13px;gap:4px;line-height:1;padding:2px 8px}.message-reaction.active{background:#6d28d9;border-color:#6d28d9;color:#fff}.message-reaction:disabled{cursor:default;opacity:.6}.message-reaction-add{background:#0000;border-style:dashed}.message-reaction-picker{background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 10px 24px #0f172a26;display:flex;flex-wrap:wrap;gap:6px;left:0;padding:6px;position:absolute;top:-52px;z-index:3}.message-reaction-option{background:#fff;border:1px solid #e2e8f0;border-radius:10px;cursor:pointer;padding:6px 8px}.reaction-emoji{font-size:18px}@media (max-width:768px){.chat-window-header{padding-right:3rem}.reports-toggle-button{right:1rem;top:calc(50% + 36px)}.reports-modal{height:90vh;max-height:90vh}.message-wrapper{max-width:96%}}.App{left:0;overscroll-behavior:none;position:fixed;top:0;width:100vw}.App,.chat-app{height:100%;min-height:0;overflow:hidden}.chat-app{display:flex;position:relative;width:100%}.chat-list-container{display:flex;flex-shrink:0;height:100%}.modal-overlay{align-items:center;background:#00000059;display:flex;inset:0;justify-content:center;position:absolute;z-index:10}.modal{background:#fff;border-radius:12px;box-shadow:0 10px 30px #0003;max-width:360px;padding:1.25rem 1.5rem;text-align:center;width:calc(100% - 2rem)}.modal h3{color:#222;font-size:1.1rem;margin:0 0 .5rem}.modal p{color:#555;font-size:.95rem;margin:0 0 1rem}.modal-button{background:#9c78ff;border:none;border-radius:999px;color:#fff;cursor:pointer;font-size:.9rem;padding:.5rem 1.25rem}.modal-button:hover{background:#8c66e9}.logout-button{background:#9c78ff;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.9rem;padding:.5rem 1rem;position:absolute;right:1rem;top:1rem;z-index:1000}.logout-button:hover{background:#8c66e9}@media (max-width:768px){.App,.chat-app{overflow-x:hidden;width:100vw}.chat-app{position:relative}.chat-app>.chat-list-container{transform:translateX(0);z-index:1}.chat-app>.chat-list-container,.chat-app>.chat-window{height:100%;left:0;position:absolute;top:0;transition:transform .3s ease;width:100%}.chat-app>.chat-window{pointer-events:none;transform:translateX(100%);visibility:hidden;z-index:2}.chat-app.show-chat-window>.chat-list-container{transform:translateX(-100%);visibility:hidden}.chat-app.show-chat-window>.chat-window{pointer-events:auto;transform:translateX(0);visibility:visible}.chat-app:not(.show-chat-window)>.chat-window{pointer-events:none;visibility:hidden}.logout-button{display:none}}.sidebar-resizer{background:#0000;cursor:col-resize;flex-shrink:0;position:relative;transition:background .2s;width:4px;z-index:1001}.sidebar-resizer.is-resizing,.sidebar-resizer:hover{background:#9c78ff}.sidebar-resizer:after{bottom:0;content:"";left:-2px;position:absolute;right:-2px;top:0}body.mini-app-open .sidebar-resizer{display:none}@media (max-width:768px){.sidebar-resizer{display:none}}