*{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-progress{align-items:flex-start;background:#eef4ff;border:1px solid #c7d7fe;border-radius:8px;color:#344054;display:flex;font-size:.92rem;gap:.75rem;line-height:1.4;margin-bottom:1rem;padding:.75rem}.login-button-spinner,.login-progress-spinner{animation:login-spin .8s linear infinite;border:2px solid #ffffff59;border-radius:999px;border-top-color:#fff;flex-shrink:0}.login-progress-spinner{border-color:#667eea #667eea33 #667eea33;height:18px;margin-top:2px;width:18px}.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)}.login-button:disabled{align-items:center;cursor:wait;display:inline-flex;gap:.65rem;justify-content:center;opacity:.85;transform:none}.login-button-spinner{height:16px;width:16px}@keyframes login-spin{to{transform:rotate(1turn)}}.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}.login-progress{font-size:.88rem}}.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;position:relative;z-index:3}.header-row{align-items:center;display:flex;justify-content:space-between}.chat-list-header-actions{align-items:center;display:flex;gap:.5rem}.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}.chat-open-standalone-button{align-items:center;background:#0000;border:none;border-radius:10px;color:#444;cursor:pointer;display:none;height:36px;justify-content:center;padding:0;text-decoration:none;transition:background-color .2s,color .2s,opacity .2s;width:36px}.chat-open-standalone-button svg{height:20px;width:20px}.chat-open-standalone-button:hover{background:#7a57f714;color:#7a57f7}@media (max-width:768px){.chat-open-standalone-button{display:inline-flex}.chat-list-search-row.embedded .chat-open-standalone-button{flex-shrink:0}}.chat-list-search-row{display:block}.chat-list-search-row.embedded{align-items:center;display:flex;gap:.75rem;margin-top:.25rem}.chat-list-search-row.embedded .search-container{flex:1 1;margin-top:0;min-width:0}.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;cursor:grab;display:flex;gap:.5rem;margin-top:.75rem;overflow-x:auto;padding-bottom:.25rem;scroll-behavior:smooth;scrollbar-width:none;-webkit-user-select:none;user-select:none}.chat-folders.dragging{cursor:grabbing;scroll-behavior:auto}.chat-folders::-webkit-scrollbar{display:none}.chat-folder{align-items:center;background:#f8f9fa;border:1px solid #e1e5e9;border-radius:999px;color:#444;cursor:pointer;display:inline-flex;font-size:.8rem;gap:.4rem;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}.chat-folder-label{line-height:1}.chat-folder-badge{align-items:center;background:#9c78ff24;border-radius:999px;color:#7a57f7;display:inline-flex;font-size:.7rem;font-weight:700;height:18px;justify-content:center;line-height:1;min-width:18px;padding:0 .35rem}.chat-folder.active .chat-folder-badge{background:#ffffff2e;color:#fff}.chat-teacher-picker{margin-top:.75rem;position:relative;z-index:4}.chat-teacher-picker-row{align-items:stretch;display:flex;gap:.5rem}.chat-teacher-picker-trigger{align-items:flex-start;background:#fff;border:1px solid #e1e5e9;border-radius:16px;color:#111;cursor:pointer;display:flex;flex:1 1;gap:.85rem;justify-content:space-between;min-height:60px;min-width:0;padding:.75rem .95rem;text-align:left;transition:border-color .2s,box-shadow .2s,background-color .2s}.chat-teacher-picker-trigger:hover{border-color:#c9ced6}.chat-teacher-picker-trigger.active,.chat-teacher-picker-trigger[aria-expanded=true]{border-color:#9c78ff80;box-shadow:0 0 0 4px #9c78ff14}.chat-teacher-picker-trigger-copy{display:flex;flex-direction:column;gap:.28rem;min-width:0}.chat-teacher-picker-trigger-label{color:#7f8696;font-size:.76rem;font-weight:600;letter-spacing:.01em;line-height:1.1}.chat-teacher-picker-trigger-value{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:#182033;display:-webkit-box;font-size:.98rem;font-weight:700;line-height:1.25;overflow:hidden;white-space:normal;word-break:break-word}.chat-teacher-picker-trigger-icon{color:#7b8190;flex-shrink:0;margin-top:.15rem;transition:transform .2s ease,color .2s ease}.chat-teacher-picker-trigger-icon.open{color:#7a57f7;transform:rotate(180deg)}.chat-teacher-picker-clear{align-items:center;background:#f8f9fb;border:1px solid #e1e5e9;border-radius:16px;color:#6b7280;cursor:pointer;display:inline-flex;flex-shrink:0;height:auto;justify-content:center;min-height:60px;padding:0;transition:border-color .2s,color .2s,background-color .2s;width:52px}.chat-teacher-picker-clear svg{height:18px;width:18px}.chat-teacher-picker-clear:hover{background:#eef2f7;border-color:#c9ced6;color:#111}.chat-teacher-picker-popover{background:#fff;border:1px solid #e6e8ee;border-radius:18px;box-shadow:0 18px 36px #0f172a14;left:0;overflow:hidden;position:absolute;right:0;top:calc(100% + .5rem);z-index:12}.chat-teacher-picker-search{border-bottom:1px solid #eef1f5;padding:.75rem;position:relative}.chat-teacher-picker-search .search-icon{color:#a0a7b4;left:1.5rem;pointer-events:none}.chat-teacher-picker-search .search-input{margin:0}.chat-teacher-picker-options{max-height:260px;overflow-y:auto;padding:.35rem}.chat-teacher-picker-option{align-items:center;background:#0000;border:none;border-radius:14px;cursor:pointer;display:flex;gap:.75rem;justify-content:space-between;padding:.75rem .8rem;text-align:left;transition:background-color .2s,color .2s;width:100%}.chat-teacher-picker-option:hover{background:#f6f7fb}.chat-teacher-picker-option.active{background:#9c78ff1f}.chat-teacher-picker-option-name{color:#111827;flex:1 1;font-size:.92rem;font-weight:600;min-width:0}.chat-teacher-picker-option-meta{align-items:center;display:inline-flex;flex-shrink:0;gap:.45rem}.chat-teacher-picker-option-badge{align-items:center;background:#7a57f71f;border-radius:999px;color:#7a57f7;display:inline-flex;font-size:.72rem;font-weight:700;height:20px;justify-content:center;min-width:20px;padding:0 .42rem}.chat-teacher-picker-option-check{color:#7a57f7}.chat-teacher-picker-empty{color:#6b7280;font-size:.9rem;padding:1rem .85rem;text-align:center}@media (max-width:768px){.chat-teacher-picker-trigger{min-height:56px;padding:.72rem .85rem}.chat-teacher-picker-clear{min-height:56px;width:48px}}.chats{flex:1 1;overflow-y:auto}.chat-list-empty{align-items:center;background:#fff;display:flex;justify-content:center;min-height:100%;padding:1.5rem}.chat-list-empty-panel{background:#fff;border:1px solid #e6e8ee;border-radius:24px;box-shadow:0 18px 36px #0f172a14;padding:1.5rem 1.25rem;text-align:center;width:min(320px,100%)}.chat-list-empty-icon{align-items:center;background:#f4f6fb;border-radius:16px;color:#111;display:inline-flex;height:52px;justify-content:center;margin:0 auto .9rem;width:52px}.chat-list-empty-panel h3{color:#111;font-size:1.05rem;margin:0 0 .45rem}.chat-list-empty-panel p{color:#111111ad;font-size:.92rem;line-height:1.45;margin:0}.chat-list-search-loading{align-items:flex-start;background:#fff;display:flex;justify-content:center;min-height:100%;padding:1.5rem}.chat-list-search-loading-panel{align-items:center;background:#fff;border:1px solid #e6e8ee;border-radius:999px;box-shadow:0 12px 28px #0f172a0f;color:#4b5563;display:inline-flex;font-size:.92rem;font-weight:600;gap:.65rem;padding:.85rem 1rem}.chat-list-search-loading-spinner{animation:chatListSpin .8s linear infinite;border:2px solid #9c78ff2e;border-radius:50%;border-top-color:#9c78ff;height:16px;width:16px}.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{flex-shrink:0;height:50px;margin-right:.75rem;position:relative;width:50px}.chat-avatar-media{border-radius:50%;height:100%;overflow:hidden;width:100%}.chat-avatar img{height:100%;object-fit:cover;width:100%}.chat-avatar-online-indicator{background:#22c55e;border:2px solid #fff;border-radius:50%;bottom:1px;box-shadow:0 0 0 1px #0f172a14;height:12px;position:absolute;right:1px;width:12px}.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-header-actions{flex-shrink:0}.chat-header-actions,.chat-name-container{align-items:center;display:flex;gap:.35rem}.chat-name-container{flex:1 1;min-width:0}.group-icon{color:#333;flex-shrink:0}.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-pin-button{align-items:center;background:#0000;border:none;border-radius:999px;color:#a0a7b4;cursor:pointer;display:inline-flex;height:24px;justify-content:center;transition:background-color .2s,color .2s;width:24px}.chat-pin-button:hover{background:#eef2f7;color:#57667c}.chat-pin-button.active{background:#0000;color:#9c78ff}.chat-pin-button.active svg{fill:currentColor;stroke:currentColor}.chat-pin-button.active:hover{background:#0000;color:#9c78ff}.chat-pin-button:disabled{cursor:default;opacity:1}.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;position:relative}.empty{background:#fff}.chat-empty-slate,.empty{align-items:center;justify-content:center}.chat-empty-slate{display:flex;flex:1 1;min-height:100%;padding:1.5rem}.chat-empty-slate-panel{background:#fff;border:1px solid #e6e8ee;border-radius:28px;box-shadow:0 18px 36px #0f172a14;padding:1.6rem 1.35rem;text-align:center;width:min(360px,100%)}.chat-empty-slate-icon{align-items:center;background:#ffffff14;border:1px solid #11111138;border-radius:18px;box-shadow:inset 0 1px 0 #1111110a;color:#111;display:inline-flex;height:56px;justify-content:center;margin:0 auto 1rem;width:56px}.chat-empty-slate-panel h3{color:#111;font-size:1.08rem;font-weight:600;margin:0 0 .45rem}.chat-empty-slate-panel p{color:#111111bf;font-size:.93rem;line-height:1.5;margin:0}.chat-window-header{background:#fff;border-bottom:1px solid #e9ecef;gap:.5rem;overflow:visible;padding:1.2rem 6rem 1.2rem 3rem;position:relative}.chat-window-header,.file-drop-overlay{align-items:center;display:flex;justify-content:center}.file-drop-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#9c78ff1f;inset:0;padding:1.5rem;position:absolute;z-index:40}.file-drop-panel{align-items:center;background:#fffffff2;border:2px dashed #9c78ff8c;border-radius:24px;box-shadow:0 20px 48px #4022802e;color:#3f2a8c;display:flex;flex-direction:column;gap:.65rem;justify-content:center;max-width:420px;min-width:min(360px,100%);padding:1.35rem 1.5rem;text-align:center}.file-drop-panel span{font-size:.96rem;font-weight:600}.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:visible}.mobile-chat-header-avatar{display:none}.chat-avatar-fallback,.chat-header-avatar-fallback{align-items:center;background:linear-gradient(135deg,#9c78ff,#6aa9ff);color:#fff;display:flex;font-size:.9rem;font-weight:700;justify-content:center}.chat-avatar-fallback span{line-height:1}.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;font-size:.9rem}.presence-info,.teacher-info{font-weight:500;margin-top:6px;text-align:center}.presence-info{color:#6b7280;font-size:.85rem}.presence-info.online{color:#16a34a}.group-presence{display:flex;justify-content:center;margin-top:8px}.group-presence-badge{align-items:center;background:#eef6ff;border:1px solid #cfe3fb;border-radius:999px;color:#245a91;cursor:default;display:inline-flex;font-size:.82rem;font-weight:600;justify-content:center;padding:.35rem .75rem;position:relative}.group-presence-tooltip{background:linear-gradient(180deg,#fff,#fbfdff);border:1px solid #d6dfecf2;border-radius:20px;box-shadow:0 22px 48px #0f172a29;left:50%;max-width:min(460px,calc(100vw - 32px));opacity:0;padding:.8rem .85rem;pointer-events:none;position:absolute;top:calc(100% + 10px);transform:translateX(-50%);transition:opacity .15s ease,visibility .15s ease;visibility:hidden;width:min(460px,calc(100vw - 32px));z-index:25}.group-presence-badge:hover .group-presence-tooltip{opacity:1;pointer-events:auto;visibility:visible}.group-presence-item{align-items:center;border-radius:14px;display:flex;gap:1.1rem;justify-content:space-between;padding:.7rem .35rem}.group-presence-person{align-items:center;display:flex;flex:1 1 auto;gap:.8rem;min-width:0}.group-presence-avatar{background:#eef2f7;border:1px solid #d9e1ec;border-radius:50%;box-shadow:inset 0 1px 0 #ffffffbf;flex:0 0 auto;height:42px;overflow:hidden;width:42px}.group-presence-avatar .chat-avatar-fallback,.group-presence-avatar-image{height:100%;width:100%}.group-presence-avatar .chat-avatar-fallback{font-size:.8rem}.group-presence-item+.group-presence-item{border-top:1px solid #edf2f7}.group-presence-name{color:#111827;font-size:.95rem;font-weight:600;line-height:1.25;min-width:0;text-align:left}.group-presence-status{color:#6b7280;font-size:.83rem;font-weight:500;line-height:1.35;max-width:170px;text-align:right}.group-presence-status.online{color:#16a34a}.lesson-info{color:#9c78ff;font-size:.9rem;font-weight:500;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%;width:-webkit-fit-content;width:fit-content}.message.own .message-wrapper{flex-direction:row-reverse}.message-content{align-self:flex-start;border:2px solid #d4d7da;border-radius:12px;display:inline-flex;flex:0 1 auto;flex-direction:column;max-width:min(100%,38rem);min-width:0;overflow:visible;padding:.75rem;position:relative;width:-webkit-fit-content;width:fit-content}.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;overflow:visible;position:relative;transition:transform .15s ease,box-shadow .15s ease;width:32px;z-index:1}.message-avatar[data-copy-enabled=false]{cursor:default}.message-avatar[data-copy-enabled=true]:hover{transform:scale(1.05)}.message-avatar-image{border-radius:50%;display:block;height:100%;object-fit:cover;width:100%}.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;box-shadow:0 8px 18px #0000002e;color:#fff;content:"OK";font-size:.55rem;font-weight:700;padding:1px 4px;position:absolute;right:-6px;z-index:3}@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:#ffffff73;border:1px solid #94a3b859;border-radius:6px;display:flex;gap:.5rem;max-width:300px;overflow:hidden;padding:.5rem}.attachment-file-meta{display:flex;flex-direction:column;min-width:0}.attachment-file-name{font-size:.8em;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-file-size{color:#5f6b7a;font-size:.75em;font-weight:600;white-space:nowrap}.attachment-file-link{color:inherit;display:block;text-decoration:none}@media (min-width:768px){.attachment-file{max-width:600px}.attachment-file-name{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 .draft-mention{color:#9c78ff;font-weight:700}.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:14px;box-shadow:0 14px 30px #0f172a2e;display:flex;flex-direction:column;gap:8px;left:0;max-width:min(360px,calc(100vw - 32px));min-width:280px;overflow-y:auto;padding:8px;position:absolute;width:-webkit-max-content;width:max-content;z-index:6}.message.own .message-reaction-picker{left:auto;right:0}.message-reaction-picker.above{bottom:calc(100% + 10px);top:auto}.message-reaction-picker.below{bottom:auto;top:calc(100% + 10px)}.message-reaction-option{background:#fff;border:1px solid #e2e8f0;border-radius:10px;cursor:pointer;padding:6px 8px}.message-reaction-row{align-items:center;display:flex;flex-wrap:nowrap;gap:6px;min-width:0}.message-reaction-row.expanded{flex-wrap:wrap}.message-reaction-expand{color:#516074}.message-context-actions{border-top:1px solid #edf2f7;display:flex;flex-wrap:wrap;gap:6px;min-width:0;padding-top:2px}.message-context-actions:first-child{border-top:none;padding-top:0}.message-context-action{align-items:center;background:#f8fafc;border:none;border-radius:10px;color:#233044;cursor:pointer;display:inline-flex;flex:0 0 auto;font-size:.82rem;font-weight:600;gap:.4rem;padding:.45rem .7rem}.message-context-action:hover{background:#eef2f7}.reaction-emoji{font-size:18px}@media (max-width:768px){.chat-window-header{padding-right:3rem}.chat-window-header.with-mobile-avatar{gap:.75rem;justify-content:flex-start}.mobile-chat-header-avatar{background:#eef2f7;border:1px solid #dbe4ee;border-radius:50%;display:flex;flex:0 0 auto;height:42px;overflow:hidden;width:42px}.mobile-chat-header-avatar .chat-avatar-fallback,.mobile-chat-header-avatar-image{height:100%;width:100%}.mobile-chat-header-avatar-image{object-fit:cover}.mobile-chat-header-avatar .chat-avatar-fallback{font-size:.82rem}.chat-header-info.with-avatar{align-items:flex-start}.chat-header-info.with-avatar .presence-info,.chat-header-info.with-avatar .teacher-info,.chat-header-info.with-avatar h2{text-align:left;width:auto}.reports-toggle-button{right:1rem;top:calc(50% + 36px)}.reports-modal{height:90vh;max-height:90vh}.message-wrapper{max-width:96%}}.chat-pins-bar{align-items:stretch;background:linear-gradient(180deg,#fff8ea,#fffdf8);border-bottom:1px solid #ece4cf;display:flex;gap:.5rem;padding:.7rem .9rem}.chat-pins-nav{align-items:center;background:#fff;border:1px solid #dccfae;border-radius:12px;color:#7a6125;cursor:pointer;display:inline-flex;justify-content:center;width:2.25rem}.chat-pins-nav:disabled{cursor:default;opacity:.45}.chat-pins-card{background:#ffffffeb;border:1px solid #e7d7ad;border-radius:14px;cursor:pointer;flex:1 1;min-width:0;padding:.65rem .8rem;text-align:left}.chat-pins-meta{align-items:center;display:flex;gap:.75rem;justify-content:space-between}.chat-pins-title{align-items:center;color:#8a6700;display:inline-flex;font-size:.78rem;font-weight:700;gap:.35rem}.chat-pins-sender{color:#6d6a61;font-size:.78rem;min-width:0}.chat-pins-sender,.chat-pins-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-pins-text{color:#2f3033;font-size:.88rem;margin-top:.3rem}.message-pinned-indicator{align-items:center;color:#a06d00;display:inline-flex;justify-content:center}@media (max-width:768px){.chat-pins-bar{padding:.6rem .75rem}.chat-pins-meta{align-items:flex-start;flex-direction:column;gap:.2rem}}.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%}.app-loader{align-items:center;background:radial-gradient(circle at top,#9c78ff29,#0000 38%),linear-gradient(180deg,#f7f8fc,#eef2f8);display:flex;inset:0;justify-content:center;padding:1.5rem;position:fixed;z-index:1100}.app-loader-panel{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffeb;border:1px solid #7d91b929;border-radius:24px;box-shadow:0 20px 50px #27335929;padding:2rem 1.75rem;text-align:center;width:min(420px,100%)}.app-loader-panel h2{color:#1f2a44;font-size:1.4rem;margin:0 0 .6rem}.app-loader-panel p{color:#5f6f8f;line-height:1.5;margin:0}.app-loader-spinner{animation:app-loader-spin .9s linear infinite;border-color:#9c78ff #5aa9ff #9c78ff29 #9c78ff29;border-radius:50%;border-style:solid;border-width:4px;height:52px;margin:0 auto 1rem;width:52px}@keyframes app-loader-spin{to{transform:rotate(1turn)}}.site-notice{left:50%;pointer-events:none;position:fixed;top:1rem;transform:translateX(-50%);width:min(560px,calc(100vw - 2rem));z-index:1200}.site-notice-content{align-items:flex-start;background:#1f2430;border:1px solid #ffffff14;border-radius:14px;box-shadow:0 14px 32px #0f172a47;color:#fff;display:flex;gap:.75rem;justify-content:space-between;padding:.95rem 1rem;pointer-events:auto}.site-notice-content span{line-height:1.45;white-space:pre-line}.site-notice-close{background:#0000;border:none;color:#ffffffd1;cursor:pointer;flex-shrink:0;font-size:1.2rem;line-height:1;padding:0}.site-notice-close:hover{color:#fff}.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}}
/*# sourceMappingURL=main.ff7f7e33.css.map*/