*{box-sizing:border-box}:root{--app-height: 100vh}html,body{margin:0;padding:0;width:100vw;height:var(--app-height);min-height:var(--app-height);overflow:hidden;position:fixed;overscroll-behavior:none;-webkit-overflow-scrolling:touch}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5}@media(max-width:768px){html,body,#root{width:100vw;height:var(--app-height);min-height:var(--app-height);overflow:hidden;position:fixed}}@supports (-webkit-touch-callout: none){html,body,#root{height:var(--app-height);min-height:var(--app-height)}}#root{width:100vw;height:100%;min-height:0;overflow:hidden}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);overflow-x:hidden;width:100%}.login-form{background:#fff;padding:2rem;border-radius:12px;width:100%;max-width:400px}.logo-container{text-align:center;margin-bottom:2rem}.logo{max-width:200px;height:auto;object-fit:contain}.form-group{margin-bottom:1.5rem}.form-group label{margin-bottom:.5rem;color:#555;font-weight:500}.form-group input{width:100%;padding:.75rem;border:2px solid #e1e5e9;border-radius:8px;font-size:1rem;transition:border-color .2s}.form-group input:focus{outline:none;border-color:#667eea}.password-input-container{position:relative}.password-input-container input{padding-right:40px}.password-toggle{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:none;border:none;color:#666;cursor:pointer;padding:2px;display:flex;align-items:center;justify-content:center}.password-toggle:hover{color:#333}.error-message{color:#e74c3c;background:#fdf2f2;padding:.5rem;border-radius:4px;margin-bottom:1rem;font-size:.9rem}.login-progress{display:flex;align-items:flex-start;gap:.75rem;color:#344054;background:#eef4ff;border:1px solid #c7d7fe;padding:.75rem;border-radius:8px;margin-bottom:1rem;font-size:.92rem;line-height:1.4}.login-progress-spinner,.login-button-spinner{border-radius:999px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;animation:login-spin .8s linear infinite;flex-shrink:0}.login-progress-spinner{width:18px;height:18px;margin-top:2px;border-color:#667eea33;border-top-color:#667eea}.login-button{width:100%;padding:.75rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:transform .2s}.login-button:hover{transform:translateY(-2px)}.login-button:disabled{opacity:.85;cursor:wait;transform:none;display:inline-flex;align-items:center;justify-content:center;gap:.65rem}.login-button-spinner{width:16px;height:16px}@keyframes login-spin{to{transform:rotate(360deg)}}.reset-button{width:100%;padding:.5rem;background:#f8f9fa;color:#666;border:1px solid #e1e5e9;border-radius:8px;font-size:.9rem;cursor:pointer;transition:all .2s;margin-top:.5rem}.reset-button:hover{background:#e9ecef;color:#333}@media(max-width:480px){.login-container{padding:1rem;min-height:100vh;overflow-x:hidden;width:100vw;box-sizing:border-box}.login-form{padding:1.5rem;max-width:100%;width:100%;border-radius:16px;box-sizing:border-box}.logo-container{margin-bottom:1.5rem}.logo{max-width:150px}.form-group{margin-bottom:1.25rem}.form-group input{padding:.875rem;font-size:1rem}.password-input-container input{padding-right:45px}.password-toggle{right:12px}.login-button{padding:.875rem;font-size:1rem;border-radius:10px}.error-message{font-size:.85rem;padding:.5rem}.login-progress{font-size:.88rem}}.chat-list{width:100%;height:100%;min-height:0;background:#fff;border-right:1px solid #e9ecef;display:flex;flex-direction:column}@media(max-width:768px){.chat-list{border-right:none}}.chat-list-header{position:relative;z-index:3;padding:1rem 1rem .5rem;border-bottom:1px solid #e9ecef;background:#fff}.header-row{display:flex;justify-content:space-between;align-items:center}.chat-list-header-actions{display:flex;align-items:center;gap:.5rem}.chat-list-refresh{display:inline-flex;align-items:center;gap:.5rem;color:#111;font-size:.95rem;font-weight:600}.chat-list-refresh-spinner{width:20px;height:20px;border-radius:50%;border:3px solid rgba(156,120,255,.25);border-top-color:#9c78ff;animation:chatListSpin .8s linear infinite}@keyframes chatListSpin{to{transform:rotate(360deg)}}.chat-list-header h2{margin:0;font-size:1.2rem;color:#333}.logout-icon-button{background:none;border:none;cursor:pointer;color:#666;padding:.25rem;display:flex;align-items:center;justify-content:center;transition:color .2s}.logout-icon-button:hover{color:#9c78ff}.chat-open-standalone-button{display:none;width:36px;height:36px;padding:0;border:none;border-radius:10px;background:transparent;color:#444;align-items:center;justify-content:center;cursor:pointer;transition:background-color .2s,color .2s,opacity .2s;text-decoration:none}.chat-open-standalone-button svg{width:20px;height: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{display:flex;align-items:center;gap:.75rem;margin-top:.25rem}.chat-list-search-row.embedded .search-container{flex:1;min-width:0;margin-top:0}.search-container{position:relative;margin-top:.75rem}.search-icon{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:#999}.search-input{width:100%;padding:.5rem 2.25rem .5rem 2.5rem;border:1px solid #e1e5e9;border-radius:20px;font-size:.9rem;outline:none;transition:border-color .2s}.search-input:focus{border-color:#9c78ff}.chat-search-clear-button{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:#999;display:flex;align-items:center;justify-content:center}.chat-search-clear-button:hover{color:#333}.chat-folders{display:flex;gap:.5rem;margin-top:.75rem;overflow-x:auto;padding-bottom:.25rem;cursor:grab;user-select:none;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none}.chat-folders.dragging{cursor:grabbing;scroll-behavior:auto}.chat-folders::-webkit-scrollbar{display:none}.chat-folder{border:1px solid #e1e5e9;background:#f8f9fa;color:#444;border-radius:999px;padding:.3rem .75rem;font-size:.8rem;white-space:nowrap;cursor:pointer;transition:border-color .2s,background-color .2s,color .2s;display:inline-flex;align-items:center;gap:.4rem}.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{min-width:18px;height:18px;padding:0 .35rem;border-radius:999px;background:#9c78ff24;color:#7a57f7;display:inline-flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;line-height:1}.chat-folder.active .chat-folder-badge{background:#ffffff2e;color:#fff}.chat-teacher-picker{position:relative;margin-top:.75rem;z-index:4}.chat-teacher-picker-row{display:flex;align-items:stretch;gap:.5rem}.chat-teacher-picker-trigger{flex:1;min-width:0;min-height:60px;border:1px solid #e1e5e9;background:#fff;color:#111;border-radius:16px;padding:.75rem .95rem;display:flex;align-items:flex-start;justify-content:space-between;gap:.85rem;cursor:pointer;transition:border-color .2s,box-shadow .2s,background-color .2s;text-align:left}.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{min-width:0;display:flex;flex-direction:column;gap:.28rem}.chat-teacher-picker-trigger-label{font-size:.76rem;font-weight:600;letter-spacing:.01em;line-height:1.1;color:#7f8696}.chat-teacher-picker-trigger-value{font-size:.98rem;font-weight:700;line-height:1.25;color:#182033;white-space:normal;word-break:break-word;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.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{transform:rotate(180deg);color:#7a57f7}.chat-teacher-picker-clear{width:52px;min-height:60px;height:auto;padding:0;flex-shrink:0;border:1px solid #e1e5e9;border-radius:16px;background:#f8f9fb;color:#6b7280;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color .2s,color .2s,background-color .2s}.chat-teacher-picker-clear svg{width:18px;height:18px}.chat-teacher-picker-clear:hover{border-color:#c9ced6;color:#111;background:#eef2f7}.chat-teacher-picker-popover{position:absolute;top:calc(100% + .5rem);left:0;right:0;border:1px solid #e6e8ee;border-radius:18px;background:#fff;box-shadow:0 18px 36px #0f172a14;overflow:hidden;z-index:12}.chat-teacher-picker-search{position:relative;padding:.75rem;border-bottom:1px solid #eef1f5}.chat-teacher-picker-search .search-icon{left:1.5rem;color:#a0a7b4;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{width:100%;border:none;border-radius:14px;background:transparent;padding:.75rem .8rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem;cursor:pointer;text-align:left;transition:background-color .2s,color .2s}.chat-teacher-picker-option:hover{background:#f6f7fb}.chat-teacher-picker-option.active{background:#9c78ff1f}.chat-teacher-picker-option-name{flex:1;min-width:0;color:#111827;font-size:.92rem;font-weight:600}.chat-teacher-picker-option-meta{display:inline-flex;align-items:center;gap:.45rem;flex-shrink:0}.chat-teacher-picker-option-badge{min-width:20px;height:20px;padding:0 .42rem;border-radius:999px;background:#7a57f71f;color:#7a57f7;display:inline-flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700}.chat-teacher-picker-option-check{color:#7a57f7}.chat-teacher-picker-empty{padding:1rem .85rem;color:#6b7280;font-size:.9rem;text-align:center}@media(max-width:768px){.chat-teacher-picker-trigger{min-height:56px;padding:.72rem .85rem}.chat-teacher-picker-clear{width:48px;min-height:56px}}.chats{flex:1;overflow-y:auto}.chat-list-empty{min-height:100%;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:#fff}.chat-list-empty-panel{width:min(320px,100%);padding:1.5rem 1.25rem;border-radius:24px;border:1px solid #e6e8ee;background:#fff;box-shadow:0 18px 36px #0f172a14;text-align:center}.chat-list-empty-icon{width:52px;height:52px;margin:0 auto .9rem;border-radius:16px;display:inline-flex;align-items:center;justify-content:center;background:#f4f6fb;color:#111}.chat-list-empty-panel h3{margin:0 0 .45rem;color:#111;font-size:1.05rem}.chat-list-empty-panel p{margin:0;color:#111111ad;font-size:.92rem;line-height:1.45}.chat-list-search-loading{min-height:100%;display:flex;align-items:flex-start;justify-content:center;padding:1.5rem;background:#fff}.chat-list-search-loading-panel{display:inline-flex;align-items:center;gap:.65rem;padding:.85rem 1rem;border-radius:999px;border:1px solid #e6e8ee;background:#fff;color:#4b5563;font-size:.92rem;font-weight:600;box-shadow:0 12px 28px #0f172a0f}.chat-list-search-loading-spinner{width:16px;height:16px;border-radius:50%;border:2px solid rgba(156,120,255,.18);border-top-color:#9c78ff;animation:chatListSpin .8s linear infinite}.chat-item{display:flex;align-items:center;padding:.75rem 1rem;cursor:pointer;transition:background-color .2s;border-bottom:1px solid #f1f3f4}.chat-item:hover,.chat-item.active{background:#f8f9fa}.ai-quality-chat-item{border-bottom:1px solid #e5e0ef}.ai-quality-chat-item .chat-name{color:#315a86;font-weight:700}.ai-quality-avatar{display:flex;align-items:center;justify-content:center;background:#edf4ff;color:#315a86}.chat-item-skeleton{cursor:default;pointer-events:none}.chat-avatar{width:50px;height:50px;margin-right:.75rem;flex-shrink:0;position:relative}.chat-avatar-media{width:100%;height:100%;border-radius:50%;overflow:hidden;position:relative}.chat-avatar img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;transition:opacity .18s ease}.chat-avatar img.avatar-image-loading{opacity:0}.chat-avatar img.avatar-image-loaded{opacity:1}.avatar-placeholder-behind{position:absolute;inset:0}.chat-avatar-online-indicator{position:absolute;right:1px;bottom:1px;width:12px;height:12px;border-radius:50%;background:#22c55e;border:2px solid #fff;box-shadow:0 0 0 1px #0f172a14}.avatar-placeholder{width:100%;height:100%;background:linear-gradient(135deg,#9b79ff,#7a57f7);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:.9rem}.chat-info{flex:1;min-width:0}.chat-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.25rem}.chat-header-actions{display:flex;align-items:center;gap:.35rem;flex-shrink:0}.chat-name-container{display:flex;align-items:center;gap:.35rem;flex:1;min-width:0}.group-icon{color:#333;flex-shrink:0}.chat-name{font-weight:600;color:#000;font-size:.95rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-time{font-size:.8rem;color:#999;flex-shrink:0;margin-left:.5rem}.chat-pin-button{width:24px;height:24px;border:none;border-radius:999px;background:transparent;color:#a0a7b4;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .2s,color .2s}.chat-pin-button:hover{background:#eef2f7;color:#57667c}.chat-pin-button.active{color:#9c78ff;background:transparent}.chat-pin-button.active svg{fill:currentColor;stroke:currentColor}.chat-pin-button.active:hover{background:transparent;color:#9c78ff}.chat-pin-button:disabled{cursor:default;opacity:1}.chat-preview{display:flex;justify-content:space-between;align-items:center;gap:.5rem;min-width:0;overflow:hidden}.last-message{font-size:.85rem;flex:1;display:flex;align-items:center;gap:.25rem;min-width:0;white-space:nowrap;overflow:hidden}.chat-message-read-status{display:inline-flex;align-items:center;justify-content:center;color:#6b7280;flex:0 0 auto;line-height:1;transform:translateY(1px)}.chat-message-read-status.is-read{color:#2563eb}.you-label{color:#9c78ff;font-weight:500;flex-shrink:0;margin-right:.25rem;white-space:nowrap}.chat-preview-text{color:#999;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.chat-preview-typing{color:#8b5cf6;font-weight:600}.draft-label{color:#e53935;font-weight:600;flex-shrink:0}.attachment-icon{margin:0 .3rem 0 .1rem;color:#999;flex-shrink:0}.skeleton-block{background:#e9ecef;border-radius:12px;animation:skeletonPulse 1.2s ease-in-out infinite}.chat-avatar.skeleton-block{border-radius:50%}.skeleton-line{display:inline-block;height:10px;background:#e9ecef;border-radius:999px;animation:skeletonPulse 1.2s ease-in-out infinite}.skeleton-line-title{width:160px;height:12px}.skeleton-line-time{width:40px;height:10px;margin-left:.5rem}.skeleton-line-message{width:220px;height:10px}@keyframes skeletonPulse{0%{opacity:.6}50%{opacity:1}to{opacity:.6}}.no-messages{font-size:.85rem;color:#999;font-style:italic}.unread-badge{background:#9c78ff;color:#fff;border-radius:10px;padding:.15rem .4rem;font-size:.7rem;font-weight:600;flex-shrink:0;min-width:18px;text-align:center}.chat-unread-indicators{display:inline-flex;align-items:center;gap:.3rem;flex-shrink:0}.chat-unread-mention{color:#9c78ff;font-size:.95rem;font-weight:700;line-height:1}.assistant-avatar{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:50%;background:linear-gradient(135deg,#9b79ff,#7a57f7);color:#fff}.parent-report-modal{box-sizing:border-box;width:min(520px,calc(100% - 32px));max-height:90dvh;overflow:auto;border:1px solid var(--border-color,#e3e7ed);border-radius:20px;padding:24px;background:var(--background-color,#fff);color:var(--text-color,#202b3f);box-shadow:0 20px 80px #17243c30}.parent-report-modal::backdrop{background:#11182766}.parent-report-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.parent-report-title h2{margin:0;font-size:22px}.parent-report-title button{border:0;background:transparent;color:inherit;font-size:28px;cursor:pointer}.parent-report-modal p{font-size:14px;line-height:1.5}.parent-report-date-fields{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:24px 0 16px}.parent-report-date-fields label{display:grid;gap:8px;font-size:14px}.parent-report-date-fields input{box-sizing:border-box;width:100%;min-width:0;border:1px solid #cbd3df;border-radius:10px;padding:11px;font:inherit;background:inherit;color:inherit}.parent-report-statistics{background:#f3edff;color:#202b3f;border-radius:10px;padding:12px}.parent-report-failure{color:#b42318}.parent-report-generate{width:100%;padding:12px 18px;border:0;border-radius:12px;background:#9c78ff;color:#fff;font:inherit;cursor:pointer}.parent-report-generate:disabled{opacity:.55;cursor:default}.parent-report-file-type{text-align:center;color:#667085;margin-bottom:0}.reports-footer{flex-direction:column;gap:12px;padding:16px 16px 24px;background:#fff}.parent-report-statistics{margin:16px 0 24px}.parent-report-statistics p{margin:0}.parent-report-statistics p+p{margin-top:4px}.parent-report-generate{margin-bottom:8px}.parent-report-generate:hover:not(:disabled){background:#8c66e9}.reports-footer .copy-reports-button{width:100%}@media(max-width:600px){.parent-report-modal{margin:auto 0 0;width:100%;max-width:100%;border-radius:20px 20px 0 0;padding:22px 18px max(22px,env(safe-area-inset-bottom))}}.parent-report-generate{display:flex;align-items:center;justify-content:center;gap:9px}.parent-report-spinner{width:15px;height:15px;flex:0 0 15px;border:2px solid #ffffff70;border-top-color:#fff;border-radius:50%;animation:parent-report-spin .7s linear infinite}.parent-report-progress{margin:0 0 8px;text-align:center;color:#4c5565}.parent-report-retry{display:block;margin:0 auto 12px;padding:6px 10px;border:0;background:transparent;color:#6941c6;font:inherit;text-decoration:underline;cursor:pointer}.parent-report-retry:focus-visible,.parent-report-generate:focus-visible{outline:3px solid #5430ab;outline-offset:3px}@keyframes parent-report-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.parent-report-spinner{animation:none;opacity:.8}}.chat-window{flex:1;display:flex;flex-direction:column;height:100%;min-height:0;min-width:0;position:relative}.empty{justify-content:center;align-items:center;background:#fff}.chat-empty-slate{flex:1;min-height:100%;display:flex;align-items:center;justify-content:center;padding:1.5rem}.chat-empty-slate-panel{width:min(360px,100%);padding:1.6rem 1.35rem;border-radius:28px;border:1px solid #e6e8ee;background:#fff;box-shadow:0 18px 36px #0f172a14;text-align:center}.chat-empty-slate-icon{width:56px;height:56px;margin:0 auto 1rem;border-radius:18px;display:inline-flex;align-items:center;justify-content:center;background:#ffffff14;color:#111;border:1px solid rgba(17,17,17,.22);box-shadow:inset 0 1px #1111110a}.chat-empty-slate-panel h3{margin:0 0 .45rem;color:#111;font-size:1.08rem;font-weight:600}.chat-empty-slate-panel p{margin:0;color:#111111bf;font-size:.93rem;line-height:1.5}.chat-window-header{padding:1.2rem 6rem 1.2rem 3rem;display:flex;justify-content:center;align-items:center;position:relative;border-bottom:1px solid #e9ecef;background:#fff;gap:.5rem;overflow:visible}.file-drop-overlay{position:absolute;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:#9c78ff1f;backdrop-filter:blur(2px)}.file-drop-panel{min-width:min(360px,100%);max-width:420px;padding:1.35rem 1.5rem;border-radius:24px;border:2px dashed rgba(156,120,255,.55);background:#fffffff2;color:#3f2a8c;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.65rem;text-align:center;box-shadow:0 20px 48px #4022802e}.file-drop-panel span{font-size:.96rem;font-weight:600}.chat-window-header.searching{padding-left:.75rem;padding-right:.75rem;justify-content:flex-start}.chat-header-info{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:visible;min-width:0}.mobile-chat-header-avatar{display:none}.chat-header-avatar-fallback,.chat-avatar-fallback{display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#9b79ff,#7a57f7);color:#fff;font-size:.9rem;font-weight:700}.chat-avatar-fallback span{line-height:1}.chat-window-header h2{margin:0;font-size:1.1rem;color:#333;font-weight:600;text-align:center;width:100%;white-space:normal;overflow:visible;text-overflow:clip;word-break:break-word}.teacher-info{font-size:.9rem;color:#666;font-weight:500;margin-top:6px;text-align:center}.presence-info{font-size:.85rem;color:#6b7280;font-weight:500;margin-top:6px;text-align:center}.presence-info.online{color:#16a34a}.presence-info.typing{color:#7c3aed}.group-presence{margin-top:8px;display:flex;justify-content:center}.group-presence-badge{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:.35rem .75rem;border-radius:999px;background:#eef6ff;color:#245a91;font-size:.82rem;font-weight:600;cursor:default;border:1px solid #cfe3fb}.group-presence-tooltip{position:absolute;top:calc(100% + 10px);left:50%;transform:translate(-50%);width:min(460px,calc(100vw - 32px));max-width:min(460px,calc(100vw - 32px));padding:.8rem .85rem;border-radius:20px;background:linear-gradient(180deg,#fff,#fbfdff);border:1px solid rgba(214,223,236,.95);box-shadow:0 22px 48px #0f172a29;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .15s ease,visibility .15s ease;z-index:25}.group-presence-badge:hover .group-presence-tooltip{opacity:1;visibility:visible;pointer-events:auto}.group-presence-item{display:flex;align-items:center;justify-content:space-between;gap:1.1rem;padding:.7rem .35rem;border-radius:14px}.group-presence-person{display:flex;align-items:center;gap:.8rem;min-width:0;flex:1 1 auto}.group-presence-avatar{width:42px;height:42px;border-radius:50%;overflow:hidden;background:#eef2f7;border:1px solid #d9e1ec;box-shadow:inset 0 1px #ffffffbf;flex:0 0 auto}.group-presence-avatar-image,.group-presence-avatar .chat-avatar-fallback{width:100%;height: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;text-align:left;min-width:0;line-height:1.25}.group-presence-status{color:#6b7280;font-size:.83rem;font-weight:500;text-align:right;max-width:170px;line-height:1.35}.group-presence-status.online{color:#16a34a}.group-presence-status.typing{color:#7c3aed}.lesson-info{font-size:.9rem;color:#9c78ff;font-weight:500;margin-top:8px}.chat-window-header-actions{display:flex;align-items:center;justify-content:center;gap:.25rem;position:absolute;right:1rem;top:50%;transform:translateY(-50%)}.search-toggle-button,.reports-toggle-button,.chat-window-open-standalone-button{width:36px;height:36px;background:none;border:none;border-radius:10px;cursor:pointer;color:#666;padding:0;display:flex;align-items:center;justify-content:center;transition:background-color .2s,color .2s;text-decoration:none}.chat-window-open-standalone-button svg{width:20px;height:20px}.search-toggle-button:hover{color:#333}.chat-window-open-standalone-button:hover{background:#7a57f714;color:#7a57f7}.message-search-container{flex:1;display:flex;align-items:center;position:relative;margin-left:0}.chat-window-header.searching .message-search-container{margin-left:2.5rem}.message-search-icon{position:absolute;left:.75rem;color:#999}.message-search-input{width:100%;padding:.5rem 6rem .5rem 2.25rem;border:1px solid #e1e5e9;border-radius:20px;font-size:.9rem;outline:none}.message-search-input:focus{border-color:#9c78ff}.message-search-controls{position:absolute;right:.5rem;display:flex;align-items:center;gap:.25rem}.search-match-count{font-size:.75rem;color:#7a7a7a;min-width:2.5rem;text-align:right}.search-match-count.inactive{color:#b0b0b0}.search-nav-button{background:none;border:none;cursor:pointer;color:#888;display:flex;align-items:center;justify-content:center;padding:0}.search-nav-button:disabled{cursor:default;opacity:.4}.search-nav-button:hover:not(:disabled){color:#333}.clear-search-button{background:none;border:none;cursor:pointer;color:#999;display:flex;align-items:center;justify-content:center;padding:0}.clear-search-button:hover{color:#333}.participants{font-size:.85rem;color:#666}.chat-window-header .back-button{background:none;border:none;color:#666;cursor:pointer;padding:.5rem;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background-color .2s;position:absolute;left:.5rem;top:50%;transform:translateY(-50%)}.back-button:hover{background:#f1f3f4}.messages-container{flex:1;overflow:hidden;overflow-x:hidden;position:relative}.messages{height:100%;overflow-y:auto;overflow-x:hidden;padding:1rem;display:flex;flex-direction:column;gap:.5rem;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;overflow-anchor:none;scrollbar-gutter:stable;touch-action:pan-y}.messages.messages-hidden{visibility:hidden;pointer-events:none}.messages-loading-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;color:#666;font-size:.95rem;background:transparent;z-index:5}.messages-loading-spinner{width:32px;height:32px;border:3px solid #e9ecef;border-top-color:#9c78ff;border-radius:50%;animation:spin .8s linear infinite}.unread-divider{display:flex;align-items:center;justify-content:center;margin:.75rem 0;position:relative}.unread-divider:before{content:"";position:absolute;left:0;right:0;height:1px;background:#dc4a4a59}.unread-divider-text{background:#fff;color:#c94343;font-size:.8rem;font-weight:600;padding:.1rem .6rem;border-radius:999px;border:1px solid rgba(220,74,74,.4);z-index:1}.scroll-to-bottom{position:absolute;right:1rem;bottom:1.25rem;z-index:30;width:38px;height:38px;border-radius:50%;border:none;background:#9c78ff;color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 16px #00000040;cursor:pointer;pointer-events:auto;isolation:isolate}.scroll-to-bottom:hover{background:#8c66e9}.scroll-to-bottom svg{pointer-events:none}.message{display:flex;margin-bottom:.75rem;align-items:flex-end;position:relative;z-index:1;width:100%;contain:layout paint}.message.own{justify-content:flex-end}.message.other{justify-content:flex-start}.message-wrapper{display:flex;align-items:flex-end;gap:.5rem;max-width:70%;width:fit-content;position:relative;transition:transform .18s cubic-bezier(.22,1,.36,1);will-change:transform}.message.own .message-wrapper{flex-direction:row-reverse}.message-content{display:inline-flex;flex-direction:column;padding:.75rem;border-radius:12px;position:relative;flex:0 1 auto;border:2px solid #d4d7da;min-width:0;max-width:min(100%,38rem);width:fit-content;align-self:flex-start;overflow:visible;transition:transform .18s cubic-bezier(.22,1,.36,1),box-shadow .18s cubic-bezier(.22,1,.36,1)}.message-focus-backdrop{position:absolute;inset:0;z-index:14;background:#708a6629;backdrop-filter:blur(10px) saturate(.96);-webkit-backdrop-filter:blur(10px) saturate(.96);animation:touchMenuBackdropIn .22s cubic-bezier(.22,1,.36,1)}body.touch-message-menu-open,body.touch-message-menu-open *{-webkit-user-select:none!important;user-select:none!important;-webkit-touch-callout:none!important}body.desktop-message-swipe-active,body.desktop-message-swipe-active *{-webkit-user-select:none!important;user-select:none!important}.chat-window.safari-touch-menu-open .message-focus-backdrop{background:#0f172a14;backdrop-filter:none;-webkit-backdrop-filter:none}.chat-window.safari-touch-menu-open .message-context-actions{background:#fffffff7;border:1px solid rgba(255,255,255,.82);box-shadow:0 20px 46px #0f172a24;backdrop-filter:none;-webkit-backdrop-filter:none}.chat-window.safari-browser .message-context-actions,.chat-window.safari-browser .message-focus-backdrop,.chat-window.safari-browser .message-focus-backdrop.closing{backdrop-filter:none;-webkit-backdrop-filter:none}.message-focus-backdrop.closing{animation:touchMenuBackdropOut .18s cubic-bezier(.4,0,.2,1) forwards}.message.menu-active{z-index:120;contain:layout;overflow:visible}.message.menu-active .message-content{z-index:121;box-shadow:0 18px 50px #0f172a2e}.message.menu-closing .message-content{transition:transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,.2,1),opacity .2s cubic-bezier(.4,0,.2,1);transform:scale(1);box-shadow:0 10px 28px #0f172a1a}.message.pressing .message-content{transition:transform .2s cubic-bezier(.2,0,0,1),box-shadow .2s cubic-bezier(.2,0,0,1);transform:scale(.985);box-shadow:0 12px 28px #0f172a1f;z-index:32}.message.pressing{z-index:32;contain:layout;overflow:visible}.message.reply-swiping{z-index:8}.message-reply-swipe-indicator{position:absolute;top:50%;left:calc(100% + .45rem);width:32px;height:32px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:#9b79ff24;color:#7c3aed;box-shadow:0 10px 24px #7c3aed29;pointer-events:none;opacity:0}.message.reply-swipe-armed .message-reply-swipe-indicator{background:#9b79ff33;color:#6d28d9}@keyframes touchMenuBackdropIn{0%{opacity:0;backdrop-filter:blur(0px) saturate(.96);-webkit-backdrop-filter:blur(0px) saturate(.96)}to{opacity:1;backdrop-filter:blur(10px) saturate(.96);-webkit-backdrop-filter:blur(10px) saturate(.96)}}@keyframes touchMenuBackdropOut{0%{opacity:1;backdrop-filter:blur(10px) saturate(.96);-webkit-backdrop-filter:blur(10px) saturate(.96)}to{opacity:0;backdrop-filter:blur(0px) saturate(.96);-webkit-backdrop-filter:blur(0px) saturate(.96)}}@keyframes touchMenuBubbleLift{0%{opacity:.82;transform:translateY(10px) scale(.94)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes touchMenuBubbleOut{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(8px) scale(.96)}}.message-content.sending{opacity:.8;border-style:dashed}.sender-name{font-size:.8rem;font-weight:700;margin-bottom:.25rem;display:block}.message-avatar{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:.8rem;flex-shrink:0;cursor:pointer;position:relative;transition:transform .15s ease,box-shadow .15s ease;overflow:visible;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{width:100%;height:100%;object-fit:cover;display:block;border-radius:50%}.message-avatar-fallback{width:100%;height:100%;border-radius:50%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#9b79ff,#7a57f7);color:#fff;line-height:1}.message-avatar.copied{animation:avatarCopied .6s ease-out;box-shadow:0 0 0 3px #4caf5059}.message-avatar.copied:after{content:"OK";position:absolute;bottom:-6px;right:-6px;background:#4caf50;color:#fff;font-size:.55rem;font-weight:700;padding:1px 4px;border-radius:8px;z-index:3;box-shadow:0 8px 18px #0000002e}@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}.attachments{margin-bottom:.5rem}.attachments-gallery{--attachments-gallery-columns: 3;--attachments-gallery-width: 236px;display:grid;grid-template-columns:repeat(var(--attachments-gallery-columns),minmax(0,1fr));gap:2px;align-items:stretch;justify-items:stretch;width:var(--attachments-gallery-width);max-width:100%;border-radius:14px;overflow:hidden;margin-bottom:.25rem;background:#0f172a14}.attachments-gallery--2{--attachments-gallery-columns: 2;--attachments-gallery-width: 186px}.attachments-gallery--3{--attachments-gallery-columns: 3;--attachments-gallery-width: 216px}.attachments-gallery--4{--attachments-gallery-columns: 2;--attachments-gallery-width: 216px}.attachments-gallery--5,.attachments-gallery--6{--attachments-gallery-columns: 3;--attachments-gallery-width: 236px}.attachments-gallery--7,.attachments-gallery--8,.attachments-gallery--9{--attachments-gallery-columns: 4;--attachments-gallery-width: 264px}.attachments-gallery--10{--attachments-gallery-columns: 3;--attachments-gallery-width: 252px}.attachment{margin-bottom:.5rem}.attachments-gallery .attachment{margin-bottom:0;width:100%;min-width:0}.attachments-gallery--5 .attachment:first-child,.attachments-gallery--6 .attachment:first-child,.attachments-gallery--10 .attachment:first-child{grid-column:1 / -1}.attachments-gallery .image-container{display:block;width:100%;height:100%;aspect-ratio:1 / 1;border-radius:0}.attachments:not(.attachments-gallery) .image-container{position:relative;width:min(260px,100%);aspect-ratio:4 / 3;min-height:180px;overflow:hidden;border-radius:8px;background:#eef0f2}.attachment-image{display:block;width:100%;height:100%;max-width:none;max-height:none;border-radius:8px;object-fit:cover;background:#eef0f2}.attachments:not(.attachments-gallery) .attachment-image{width:100%;height:100%;object-fit:contain}.attachments:not(.attachments-gallery) .image-container:has(>img.attachment-image){width:fit-content;max-width:min(260px,100%);min-height:0;aspect-ratio:auto!important}.attachments:not(.attachments-gallery) img.attachment-image{width:auto;height:auto;max-width:100%;max-height:390px}.attachments-gallery .attachment-image,.attachments-gallery .image-placeholder,.attachments-gallery .image-error,.attachments-gallery .image-container{display:block;width:100%;height:100%;aspect-ratio:1 / 1;max-width:none;max-height:none;object-fit:cover;border-radius:0}.attachments-gallery--5 .attachment:first-child .attachment-image,.attachments-gallery--5 .attachment:first-child .image-placeholder,.attachments-gallery--5 .attachment:first-child .image-error,.attachments-gallery--5 .attachment:first-child .image-container,.attachments-gallery--6 .attachment:first-child .attachment-image,.attachments-gallery--6 .attachment:first-child .image-placeholder,.attachments-gallery--6 .attachment:first-child .image-error,.attachments-gallery--6 .attachment:first-child .image-container{aspect-ratio:16 / 8}.attachments-gallery--10 .attachment:first-child .attachment-image,.attachments-gallery--10 .attachment:first-child .image-placeholder,.attachments-gallery--10 .attachment:first-child .image-error,.attachments-gallery--10 .attachment:first-child .image-container{aspect-ratio:3 / 1}@media(max-width:640px){.attachments-gallery{width:calc(var(--attachments-gallery-width) - 16px)}}.image-placeholder,.image-error{box-sizing:border-box;width:min(260px,100%);aspect-ratio:1 / 1;min-height:180px;border-radius:8px;color:#777;display:flex;align-items:center;justify-content:center;font-size:.85rem;text-align:center;padding:.5rem}.image-retry,.audio-error button{border:0;border-radius:999px;padding:.35rem .7rem;color:#fff;background:#6d4bd1;font:inherit;cursor:pointer}.image-error{flex-direction:column;gap:.5rem}.image-placeholder{position:relative;overflow:hidden;background:linear-gradient(135deg,#7a57f71f,#0ea5e91a),#eef0f2}.image-placeholder:after{content:"";position:absolute;top:50%;left:50%;width:34px;height:34px;margin:-17px 0 0 -17px;border:3px solid rgba(122,87,247,.22);border-top-color:#7a57f7;border-radius:50%;box-sizing:border-box;animation:spin .85s linear infinite}.image-error{background:#eef0f2}.image-container>.image-placeholder,.image-container>.image-error{width:100%;height:100%;min-height:0;border-radius:8px}.attachments:not(.attachments-gallery) .image-container>.image-placeholder{position:absolute;inset:0;aspect-ratio:auto}.image-context-menu{position:fixed;z-index:1600;display:grid;width:190px;padding:6px;border:1px solid rgba(105,75,190,.16);border-radius:14px;background:#fffffffa;box-shadow:0 16px 42px #24184233;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);animation:image-context-menu-in .14s ease-out}.image-context-menu-action{display:flex;align-items:center;gap:10px;width:100%;min-height:40px;padding:9px 11px;border:0;border-radius:10px;background:transparent;color:#2f2546;font:inherit;font-size:14px;text-align:left;cursor:pointer;transition:background-color .14s ease,color .14s ease}.image-context-menu-action:hover,.image-context-menu-action:focus-visible{outline:none;background:#7a57f71c;color:#6840df}.image-context-menu-action:disabled{cursor:wait;opacity:.62}@keyframes image-context-menu-in{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(prefers-reduced-motion:reduce){.message.pressing .message-content,.message.menu-active .message-content,.message.menu-closing .message-content{transition:none!important;animation:none!important}.image-context-menu{animation:none}}.protected-audio,.audio-loading,.audio-error{display:block;width:min(260px,100%);height:44px;border-radius:8px}.audio-loading,.audio-error{background:#eef0f2;color:#667085;display:flex;align-items:center;justify-content:center;font-size:.85rem;text-align:center;padding:0 .75rem}.attachment-file{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#ffffff73;border-radius:6px;max-width:300px;overflow:hidden;border:1px solid rgba(148,163,184,.35)}.attachment-file-meta{display:flex;flex-direction:column;min-width:0}.attachment-file-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;font-size:.8em}.attachment-file-size{font-size:.75em;color:#5f6b7a;white-space:nowrap;font-weight:600}.attachment-file-link{text-decoration:none;color:inherit;display:block}@media(min-width:768px){.attachment-file{max-width:600px}.attachment-file-name{font-size:.9em}}.message-text{word-wrap:break-word;white-space:pre-wrap;font-weight:500;line-height:1.4}.message-text-window{color:#000;word-wrap:break-word;white-space:pre-wrap;font-weight:500;line-height:1.4}.message-code-snippet{margin:.35rem 0;border-radius:12px;overflow:hidden;background:#fff;border:1px solid #dfe6f2;box-shadow:0 8px 18px #0f172a0f;contain:layout paint}.message-code-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.45rem .75rem;background:#f5f7fb;color:#5c6c84;border-bottom:1px solid #e3e8f2}.message-code-language{font-size:.76rem;font-weight:700;letter-spacing:.02em;text-transform:lowercase;color:#7a57f7}.message-code-copy{width:26px;height:26px;border:none;border-radius:8px;background:#9c78ff14;color:#7a57f7;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .2s ease,color .2s ease}.message-code-copy:hover{background:#9c78ff29}.message-code-copy.copied{background:#22c55e24;color:#15803d}.message-code-block{margin:0;padding:.75rem .85rem .9rem;background:#fff;color:#22314a;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.84em;line-height:1.4;white-space:pre;overflow-x:auto}.message-code-block code{font-family:inherit}.message-code-block .code-token.comment{color:#6b7280}.message-code-block .code-token.keyword,.message-code-block .code-token.decorator{color:#7c3aed;font-weight:700}.message-code-block .code-token.string{color:#047857}.message-code-block .code-token.number,.message-code-block .code-token.boolean{color:#b45309}.message-code-block .code-token.function{color:#1d4ed8}.message-code-block .code-token.operator,.message-code-block .code-token.punctuation{color:#475569}.message-inline-code{background:#f3f4f6;border-radius:4px;padding:.05rem .3rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.85em;white-space:pre-wrap}.mention-highlight{color:#9c78ff;font-weight:700}.search-highlight{background:#9c78ff40;color:#6c4ae0;border-radius:3px;padding:0 2px}.message-meta{display:flex;align-items:center;gap:.5rem;margin-top:.25rem;justify-content:flex-start;position:relative}.message.own .message-meta{justify-content:flex-end}.message-time{font-size:.7rem;opacity:.7}.message-read-status{display:inline-flex;align-items:center;align-self:center;gap:0;color:#6b7280;line-height:1;transform:translateY(1px)}.message-read-status.is-read{color:#2563eb}.message-edited-label{font-size:.7rem;opacity:.6;text-transform:lowercase}.message-inline-actions{display:inline-flex;align-items:center;gap:.45rem}.message-copy-button{display:inline-flex;align-items:center;gap:.25rem;padding:0;border:none;background:transparent;color:#7a7a7a;font-size:.7rem;cursor:pointer}.message-copy-button:hover{color:#4e4e4e;text-decoration:underline}.message-edit-button{color:#7a7a7a}.message-delete-button{color:#d9534f}.message-delete-button:disabled{opacity:.6;cursor:default}@media(hover:hover)and (pointer:fine){.message-meta{--message-inline-action-count: 1;--message-inline-action-width: 2rem;transition:padding .18s ease}.message.own .message-meta{--message-inline-action-width: 4.35rem}.message:hover .message-meta,.message:focus-within .message-meta{padding-right:var(--message-inline-action-width)}.message:not(.own):hover .message-meta,.message:not(.own):focus-within .message-meta{padding-right:0;padding-left:var(--message-inline-action-width)}.message-inline-actions{position:absolute;top:50%;right:0;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-50%) translate(6px);transition:opacity .16s ease,transform .16s ease,visibility .16s ease}.message:not(.own) .message-inline-actions{right:auto;left:0;transform:translateY(-50%) translate(-6px)}.message:hover .message-inline-actions,.message:focus-within .message-inline-actions,.message-inline-actions:hover{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(-50%) translate(0)}.message-reaction-option{padding:6px 8px}.message-reaction-row .reaction-emoji{font-size:28px;line-height:1}}@media(hover:none),(pointer:coarse){.message-inline-actions{display:none}.message-content,.message-content *,.message-text-window,.message-text-window *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.message.pressing .message-content{transition:transform .2s cubic-bezier(.2,0,0,1),box-shadow .2s cubic-bezier(.2,0,0,1)}.message.menu-active .message-content{transform:scale(1.022);transition:transform .2s cubic-bezier(.22,1,.36,1),box-shadow .2s cubic-bezier(.22,1,.36,1)}.message.menu-active.menu-closing .message-content{transform:scale(1)}}.delete-modal-overlay{position:fixed;inset:0;background:#0a0c1473;display:flex;align-items:center;justify-content:center;z-index:1200;backdrop-filter:blur(2px)}.delete-modal{background:#fff;border-radius:16px;padding:1.5rem;width:min(420px,calc(100% - 2rem));box-shadow:0 18px 40px #10182833;text-align:left}.delete-modal-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.delete-modal-icon{width:36px;height:36px;border-radius:12px;background:#d9534f1f;color:#d9534f;display:flex;align-items:center;justify-content:center}.delete-modal-header h3{margin:0;font-size:1.05rem;color:#1f2937}.delete-modal-text{margin:0 0 1rem;color:#4b5563;font-size:.95rem}.delete-modal-preview{background:#f7f7fb;border-radius:12px;padding:.75rem;color:#374151;font-size:.9rem;max-height:120px;overflow:auto;margin-bottom:1.25rem}.delete-modal-actions{display:flex;gap:.75rem;justify-content:flex-end}.delete-modal-cancel,.delete-modal-confirm{border:none;border-radius:999px;padding:.55rem 1.25rem;font-size:.9rem;cursor:pointer}.delete-modal-cancel{background:#f1f5f9;color:#374151}.delete-modal-confirm{background:#d9534f;color:#fff}.delete-modal-cancel:disabled,.delete-modal-confirm:disabled{opacity:.6;cursor:default}.attachments-preview{padding:.5rem 1rem;background:#f8f9fa;border-top:1px solid #e9ecef;display:flex;gap:.5rem;flex-wrap:wrap}.attachment-preview{position:relative;display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#fff;border-radius:6px;border:1px solid #e9ecef}.attachment-preview img{width:40px;height:40px;object-fit:cover;border-radius:4px}.file-preview{display:flex;align-items:center;gap:.5rem}.remove-attachment{position:absolute;top:-5px;right:-5px;background:#ff5722;color:#fff;border:none;border-radius:50%;width:20px;height:20px;display:flex;align-items:center;justify-content:center;cursor:pointer}.message-input{padding:.7rem;background:#fff;border-top:1px solid #e9ecef;display:flex;align-items:center;gap:.5rem;width:100%;box-sizing:border-box;min-width:0;overflow:visible;position:relative;z-index:20}.schedule-button{background:#3390ec;color:#fff;border:none;border-radius:1rem;padding:.45rem .75rem;font-size:.85rem;font-weight:600;cursor:pointer;transition:background-color .2s,opacity .2s;white-space:nowrap}.schedule-button:hover:not(:disabled){background:#297cd0}.schedule-button:disabled{opacity:.5;cursor:not-allowed;background:#b8bcc2}.schedule-button.compact{width:36px;height:36px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center}.input-controls{display:flex;gap:.25rem;flex:0 0 auto;position:relative}.attach-button{background:none;border:none;color:#666;cursor:pointer;width:30px;height:30px;border-radius:50%;padding:0;display:flex;align-items:center;justify-content:center;transition:background-color .2s,color .2s}.attach-button:hover{background:#f1f3f4}.attach-menu{position:absolute;left:0;bottom:calc(100% + .6rem);min-width:168px;padding:.35rem;border-radius:16px;border:1px solid #e5e7eb;background:#fff;box-shadow:0 18px 36px #0f172a24;display:flex;flex-direction:column;gap:.2rem;z-index:30}.attach-menu-item{border:none;background:transparent;color:#1f2937;border-radius:12px;padding:.65rem .75rem;display:flex;align-items:center;gap:.65rem;cursor:pointer;font-size:.9rem;font-weight:600;text-align:left}.attach-menu-item:hover{background:#f3f4f6}.emoji-toggle-button{background:none;border:none;color:#666;cursor:pointer;width:40px;height:40px;border-radius:50%;transition:background-color .2s,color .2s;display:flex;align-items:center;justify-content:center;padding:0}.emoji-toggle-button:hover{background:#f1f3f4;color:#9c78ff}.emoji-toggle-button.active{color:#9c78ff;background:#f1f3f4}.input-field-wrapper{flex:1;position:relative;display:flex;align-items:flex-end;overflow:visible;min-width:0}.mention-suggestions{position:absolute;left:0;right:0;bottom:100%;margin-bottom:.5rem;background:#fff;border:1px solid #e1e5e9;border-radius:12px;padding:.25rem;box-shadow:0 8px 18px #00000014;max-height:220px;overflow-y:auto;z-index:1102}.formatting-menu{position:fixed;display:flex;gap:6px;padding:6px;background:#fff;border:1px solid #e1e5e9;border-radius:8px;box-shadow:0 6px 20px #00000026;z-index:1103}.formatting-menu button{background:#f1f3f5;border:1px solid #e1e5e9;border-radius:6px;padding:4px 8px;cursor:pointer;font-size:14px}.formatting-menu button:hover{background:#e9ecef}.mention-suggestion{width:100%;text-align:left;background:none;border:none;padding:.5rem .75rem;border-radius:8px;cursor:pointer;font-size:.9rem;color:#222;display:flex;align-items:center}.mention-suggestion:hover,.mention-suggestion.active{background:#eef2ff}.mention-name{font-weight:600}.emoji-picker-wrapper{position:absolute;right:5px;bottom:2.5px;display:flex;z-index:1000}.emoji-picker-container{position:absolute;bottom:100%;right:0;margin-bottom:20px;z-index:1001;box-shadow:0 5px 25px #00000026;border-radius:8px;overflow:hidden;animation:slideIn .2s ease-out}@keyframes slideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.message-input textarea,.message-input-editor{width:100%;padding-right:48px!important}.message-input textarea,.message-input-editor{flex:1;border:1px solid #e1e5e9;border-radius:24px;padding:10px 16px;font-size:1rem;font-family:inherit;resize:none;outline:none;transition:border-color .2s,box-shadow .2s;max-height:none;min-height:40px;line-height:1.4;background:#f8f9fa;white-space:pre-wrap;word-break:break-word;min-width:0}.message-input textarea::placeholder{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.message-input textarea:focus,.message-input-editor:focus{border-color:#9c78ff}.message-input-editor .draft-mention{color:#9c78ff;font-weight:700}.message-input-editor pre:not(.composer-inline-code-block-body){margin:.45rem 0;padding:.7rem .8rem;border-radius:12px;border:1px solid #e3e8f2;background:#fbfcff;color:#22314a;white-space:pre-wrap;overflow-x:auto}.message-input-editor code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.composer-inline-code-block{margin:.5rem 0;border:1px solid #e3e8f2;border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 8px 18px #0f172a0d}.message-input-editor:has(.composer-inline-code-block){padding:12px;padding-right:12px!important}.message-input-editor>.composer-inline-code-block:first-child{margin-top:0}.message-input-editor>.composer-inline-code-block:last-child{margin-bottom:28px}.message-input-editor>.composer-inline-code-block+div:last-child{padding-right:36px}.composer-inline-code-block-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem .7rem;background:#f5f7fb;border-bottom:1px solid #e3e8f2}.composer-inline-code-block-meta{display:inline-flex;align-items:center;gap:.45rem;min-width:0}.composer-inline-code-block.dragging{opacity:.62;box-shadow:0 4px 12px #0f172a14}.composer-inline-code-block-handle{width:26px;height:26px;border:1px solid #ece8ff;border-radius:8px;background:#f8f7ff;color:#9c78ff;display:inline-flex;align-items:center;justify-content:center;cursor:grab;flex:0 0 auto;font-size:0;user-select:none}.composer-inline-code-block-handle:active{cursor:grabbing}.composer-inline-code-block-handle:before{content:"⋮⋮";font-size:.72rem;letter-spacing:-.1rem;line-height:1}.composer-inline-code-block-language{color:#7a57f7;font-size:.82rem;font-weight:700}.composer-inline-code-block-actions{display:inline-flex;align-items:center;gap:.3rem}.composer-inline-code-block-action{width:28px;height:28px;border:1px solid rgba(156,120,255,.14);border-radius:8px;background:#f8f7ff;color:#7a57f7;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:0}.composer-inline-code-block-action:before{content:"✎";font-size:.85rem;line-height:1}.composer-inline-code-block-action.danger{border-color:#dc26261f;background:#fff5f5;color:#dc2626}.composer-inline-code-block-action.danger:before{content:"×";font-size:1rem}.composer-inline-code-block-body{margin:0;padding:.75rem .8rem;border:0;border-radius:0;background:#fff;color:#22314a;white-space:pre-wrap;overflow-x:auto}.message-input-editor:empty:before{content:attr(data-placeholder);color:#999;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;display:block;max-width:100%}.send-button{background:#9c78ff;color:#fff;border:none;border-radius:50%;width:40px;height:40px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .2s;flex:0 0 auto}.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}.scheduled-messages-button{position:relative;width:40px;height:40px;border:1px solid #d8deeb;border-radius:50%;background:#fff;color:#5f6f8a;display:flex;align-items:center;justify-content:center;cursor:pointer;flex:0 0 auto;transition:border-color .2s ease,color .2s ease,background-color .2s ease,transform .2s ease}.scheduled-messages-button:hover{border-color:#9c78ff59;color:#7a57f7;background:#fbf8ff;transform:translateY(-1px)}.scheduled-messages-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#7a57f7;color:#fff;font-size:.72rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 8px 18px #7a57f747}.send-later-menu-overlay,.schedule-message-overlay,.scheduled-list-overlay{position:fixed;inset:0;background:#0f172a52;display:flex;align-items:center;justify-content:center;z-index:45}.send-later-menu{position:fixed;min-width:220px;padding:.4rem;border-radius:18px;background:#fffffffa;border:1px solid rgba(220,226,236,.95);box-shadow:0 24px 46px #0f172a2e}.send-later-menu.mobile{position:fixed;left:50%;bottom:16px;transform:translate(-50%);width:min(320px,calc(100vw - 24px))}.send-later-menu-action{width:100%;border:none;background:transparent;color:#1f2937;border-radius:14px;padding:.85rem .95rem;display:flex;align-items:center;gap:.7rem;cursor:pointer;font-size:.96rem;font-weight:600}.send-later-menu-action:hover{background:#f7f3ff;color:#7a57f7}.schedule-message-modal,.scheduled-list-modal{width:min(460px,calc(100vw - 24px));max-height:min(82vh,720px);overflow:auto;border-radius:26px;background:#fff;border:1px solid #e5e9f2;box-shadow:0 28px 64px #0f172a38}.schedule-message-modal{overflow:visible}.schedule-message-header,.scheduled-list-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1.15rem 1.2rem .95rem}.schedule-message-header h3,.scheduled-list-header h3{margin:0;font-size:1.05rem;color:#172033}.schedule-message-header p,.scheduled-list-header p{margin:.32rem 0 0;color:#6b7280;font-size:.9rem;line-height:1.45}.schedule-message-close{width:36px;height:36px;border:none;border-radius:50%;background:#f3f5f9;color:#64748b;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex:0 0 auto}.schedule-message-close:hover{background:#e9edf5}.schedule-message-field{display:flex;flex-direction:column;gap:.45rem;padding:0 1.2rem 1rem}.schedule-message-grid{--schedule-control-height: 46px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:.85rem}.schedule-message-field>span{color:#334155;font-size:.88rem;font-weight:600;line-height:1.2}.schedule-message-field input,.schedule-message-field select{width:100%;border:1px solid #d7deeb;border-radius:14px;padding:.78rem .9rem;font-size:.95rem;color:#172033;outline:none;box-sizing:border-box;background:#fff}.schedule-message-field input:focus,.schedule-message-field select:focus{border-color:#7a57f77a;box-shadow:0 0 0 4px #7a57f71a}.schedule-picker-anchor{position:relative}.schedule-picker-popover{position:absolute;top:calc(100% + .45rem);left:0;z-index:8;border:1px solid #dfe5f0;border-radius:16px;background:#fff;box-shadow:0 18px 40px #0f172a2e}.schedule-time-control{width:67%;min-width:128px;height:var(--schedule-control-height);min-height:var(--schedule-control-height);display:grid;grid-template-columns:minmax(2.15rem,1fr) auto minmax(2.15rem,1fr) 1.9rem;align-items:center;gap:.12rem;border:1px solid #d7deeb;border-radius:14px;padding:0 .48rem;background:#fff;box-sizing:border-box}.schedule-time-control:focus-within{border-color:#7a57f77a;box-shadow:0 0 0 4px #7a57f71a}.schedule-time-control .schedule-time-part{width:100%;height:100%;min-width:0;border:0;border-radius:8px;padding:0;background:transparent;color:#172033;font-size:.95rem;font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:normal;line-height:1;text-align:center;appearance:textfield}.schedule-time-control .schedule-time-part:focus{border-color:transparent;box-shadow:none;background:#f6f3ff}.schedule-time-divider{height:100%;display:inline-flex;align-items:center;color:#172033;font-size:.95rem;font-weight:500;line-height:1;user-select:none}.schedule-time-icon-button{width:1.9rem;height:1.9rem;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:999px;padding:0;background:transparent;color:#475569;cursor:pointer}.schedule-time-icon-button:hover{background:#f1f5f9;color:#172033}.schedule-time-icon-button:focus-visible{outline:2px solid rgba(122,87,247,.5);outline-offset:2px}.schedule-date-control{width:100%;height:var(--schedule-control-height);min-height:var(--schedule-control-height);display:flex;align-items:center;justify-content:space-between;gap:.75rem;border:1px solid #d7deeb;border-radius:14px;padding:0 .9rem;background:#fff;color:#172033;font-size:.95rem;font-weight:500;line-height:1;box-sizing:border-box;cursor:pointer}.schedule-date-control:hover{border-color:#c7d1e0}.schedule-date-control:focus-visible{border-color:#7a57f77a;box-shadow:0 0 0 4px #7a57f71a;outline:none}.schedule-date-value-input{position:absolute;width:1px;height:1px;border:0;padding:0;margin:-1px;opacity:0;pointer-events:none}.schedule-date-control svg{flex:0 0 auto;color:#475569}.schedule-calendar-menu{width:254px;padding:.75rem}.schedule-calendar-header{display:grid;grid-template-columns:2rem 1fr 2rem;align-items:center;gap:.4rem;margin-bottom:.65rem}.schedule-calendar-header span{color:#172033;font-size:.92rem;font-weight:700;text-align:center;text-transform:capitalize}.schedule-calendar-header button,.schedule-calendar-day,.schedule-time-option{border:0;cursor:pointer}.schedule-calendar-header button{width:2rem;height:2rem;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;background:#f4f6fa;color:#475569}.schedule-calendar-header button:hover,.schedule-calendar-day:hover,.schedule-time-option:hover{background:#f0ecff;color:#5f3ee8}.schedule-calendar-weekdays,.schedule-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem}.schedule-calendar-weekdays{margin-bottom:.25rem}.schedule-calendar-weekdays span{color:#94a3b8;font-size:.72rem;font-weight:700;text-align:center}.schedule-calendar-day{min-height:2rem;border-radius:10px;background:transparent;color:#172033;font-size:.86rem;font-weight:600}.schedule-calendar-day.empty{cursor:default;pointer-events:none}.schedule-calendar-day.selected,.schedule-time-option.selected{background:#7a57f7;color:#fff}.schedule-time-menu{width:172px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem;padding:.55rem}.schedule-time-menu-column{min-width:0;display:flex;flex-direction:column;gap:.35rem}.schedule-time-menu-column>span{color:#64748b;font-size:.72rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.schedule-time-menu-list{max-height:172px;overflow-y:auto;display:flex;flex-direction:column;gap:.18rem;padding-right:.12rem}.schedule-time-option{min-height:2rem;border-radius:9px;background:transparent;color:#172033;font-size:.86rem;font-weight:700;font-variant-numeric:tabular-nums}.schedule-message-error{margin:.85rem 1.2rem 0;padding:.8rem .95rem;border-radius:16px;background:#fff3f2;color:#c2410c;font-size:.88rem;line-height:1.45}.schedule-message-actions{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.2rem 1.2rem}.schedule-message-secondary,.schedule-message-primary{border:none;border-radius:14px;padding:.8rem 1rem;font-size:.92rem;font-weight:600;cursor:pointer}.schedule-message-secondary{background:#eef2f7;color:#334155}.schedule-message-primary{background:#7a57f7;color:#fff;box-shadow:0 16px 34px #7a57f742}.schedule-message-primary:disabled,.schedule-message-secondary:disabled{opacity:.65;cursor:not-allowed;box-shadow:none}.scheduled-list-loading,.scheduled-list-empty{padding:1.2rem;color:#6b7280;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.85rem;text-align:center}.scheduled-list-items{display:flex;flex-direction:column;gap:.8rem;padding:0 1.2rem 1.2rem}.scheduled-list-item{border:1px solid #e6ebf4;border-radius:20px;padding:.95rem 1rem;background:#fff;box-shadow:0 14px 28px #0f172a0d}.scheduled-list-item-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.45rem}.scheduled-list-item-time{color:#1f2937;font-size:.92rem;font-weight:700}.scheduled-list-item-text{color:#334155;font-size:.92rem;line-height:1.45;white-space:pre-wrap;word-break:break-word}.scheduled-list-item-attachments{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:.7rem}.scheduled-list-item-attachment{display:flex;align-items:center;gap:.65rem;min-width:0;flex:1 1 190px;max-width:100%;padding:.65rem .75rem;border-radius:16px;border:1px solid #e6ebf4;background:#f8fafc}.scheduled-list-item-attachment-icon{width:30px;height:30px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;color:#475569;background:#e9eef7}.scheduled-list-item-attachment-icon.image{color:#7a57f7;background:#f3efff}.scheduled-list-item-attachment-icon.audio{color:#0f766e;background:#e7f8f5}.scheduled-list-item-attachment-icon.file{color:#1d4ed8;background:#e8f0ff}.scheduled-list-item-attachment-body{min-width:0;display:flex;flex-direction:column;gap:.12rem}.scheduled-list-item-attachment-name,.scheduled-list-item-attachment-description{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scheduled-list-item-attachment-name{color:#1f2937;font-size:.84rem;font-weight:600}.scheduled-list-item-attachment-description{color:#64748b;font-size:.76rem}.scheduled-list-item-attachment-more{display:inline-flex;align-items:center;justify-content:center;min-width:40px;padding:0 .8rem;border-radius:999px;background:#eef2ff;color:#5b4acf;font-size:.8rem;font-weight:700}.scheduled-list-item-meta{margin-top:.55rem;color:#64748b;font-size:.82rem}.scheduled-list-item-footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-top:.55rem}.scheduled-list-item-footer .scheduled-list-item-meta{margin-top:0}.scheduled-list-item-cancel{display:inline-flex;align-items:center;gap:.45rem;border:1px solid rgba(220,38,38,.16);background:#fff5f5;color:#dc2626;border-radius:999px;padding:.45rem .8rem;font-size:.82rem;font-weight:600;cursor:pointer;transition:background .18s ease,border-color .18s ease,opacity .18s ease}.scheduled-list-item-cancel:hover{background:#feecec;border-color:#dc26263d}.scheduled-list-item-cancel:disabled{opacity:.65;cursor:not-allowed}.scheduled-list-item-status{color:#7a57f7;font-size:.82rem;font-weight:600}.scheduled-list-item-status-failed{color:#b42318}@media(max-width:768px){.schedule-message-modal,.scheduled-list-modal{width:calc(100vw - 16px);max-height:calc(100vh - 32px);border-radius:22px}.schedule-message-grid{grid-template-columns:1fr}.schedule-message-actions{flex-direction:column-reverse}.schedule-message-secondary,.schedule-message-primary{width:100%}.scheduled-list-item-header,.scheduled-list-item-footer{flex-direction:column;align-items:flex-start}}.chat-window{transition:transform .3s ease-out}.chat-window.swipe-active{transition:none;box-shadow:inset -5px 0 15px #0000001a;border-left:3px solid #9C78FF}.chat-window:not(.swipe-active){transition:transform .3s ease-out}.message-input-container{display:flex;flex-direction:column;background:#fff;border-top:1px solid #e9ecef;min-width:0;position:relative;z-index:20;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.composer-code-preview{padding:.8rem 1rem;background:#fff;color:#22314a;border-top:1px solid #e8ecf3}.composer-code-preview-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.composer-code-preview-meta{display:inline-flex;align-items:center;gap:.5rem;color:#7a57f7;font-size:.83rem;font-weight:700}.composer-code-preview-actions{display:flex;align-items:center;gap:.35rem}.composer-code-preview-button{border:1px solid rgba(156,120,255,.14);background:#f8f7ff;color:#7a57f7;border-radius:10px;padding:.38rem .6rem;display:inline-flex;align-items:center;gap:.35rem;cursor:pointer;font-size:.78rem;font-weight:600}.composer-code-preview-button:hover{background:#9c78ff1f}.composer-code-preview-button.danger{color:#dc2626}.composer-code-preview-body{margin:.65rem 0 0;padding:.85rem;background:#fbfcff;border:1px solid #e3e8f2;border-radius:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.84rem;line-height:1.45;white-space:pre-wrap;max-height:220px;overflow:auto}.composer-code-preview-body code{font-family:inherit}.code-composer-overlay{position:fixed;inset:0;background:#0a0d1794;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:1300;backdrop-filter:blur(4px)}.code-composer-modal{width:min(640px,100%);background:#fff;border:1px solid #e6e8ee;border-radius:24px;box-shadow:0 24px 56px #0f172a2e;overflow:hidden}.code-composer-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.2rem 1.3rem 1rem;background:#fff;border-bottom:1px solid #eceff5}.code-composer-header h3{margin:0;color:#27364f;font-size:1rem;font-weight:700;line-height:1.2}.code-composer-header p{margin:.3rem 0 0;color:#5d6b84;font-size:.9rem;line-height:1.45}.code-composer-close{width:38px;height:38px;border:1px solid #e6e8ee;border-radius:14px;background:#fff;color:#667085;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .18s ease,border-color .18s ease,color .18s ease}.code-composer-close:hover{background:#f8f7ff;border-color:#9c78ff3d;color:#7a57f7}.code-composer-field{display:flex;flex-direction:column;gap:.55rem;padding:1rem 1.2rem 0}.code-composer-field span{color:#1d2940;font-size:.83rem;font-weight:700;letter-spacing:.01em}.code-composer-language-picker{position:relative}.code-composer-language-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.75rem;border:1px solid #e1e5e9;border-radius:14px;background:#fff;color:#22314a;font-size:.95rem;font-weight:600;padding:.82rem .95rem;box-sizing:border-box;box-shadow:0 1px 2px #0f172a0a;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease;cursor:pointer}.code-composer-language-trigger:focus{outline:none;border-color:#9c78ff;box-shadow:0 0 0 3px #9c78ff1f}.code-composer-language-trigger:hover{border-color:#cfd6df;background:#fcfcff}.code-composer-language-trigger.open{border-color:#9c78ff;box-shadow:0 0 0 3px #9c78ff1f;background:#fcfaff}.code-composer-language-value{min-width:0;text-align:left}.code-composer-language-icon{flex-shrink:0;margin-left:auto;color:#7b869a;transition:transform .18s ease,color .18s ease}.code-composer-language-trigger.open .code-composer-language-icon{color:#9c78ff;transform:rotate(180deg)}.code-composer-language-menu{position:absolute;top:calc(100% + .45rem);left:0;right:0;padding:.35rem;border:1px solid #e6e8ee;border-radius:16px;background:#fff;box-shadow:0 16px 32px #0f172a1f;display:flex;flex-direction:column;gap:.2rem;z-index:40;max-height:220px;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}.code-composer-language-option{width:100%;border:none;background:transparent;color:#1f2937;border-radius:12px;padding:.68rem .8rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem;cursor:pointer;font-size:.92rem;font-weight:600;text-align:left}.code-composer-language-option:hover{background:#f3f4f6}.code-composer-language-option.selected{background:#9c78ff1f;color:#7a57f7}.code-composer-select-native{position:absolute;inset:0;opacity:0;pointer-events:none}.code-composer-editor-field{padding-top:.9rem}.code-composer-editor-shell{border:1px solid #d7def0;border-radius:20px;overflow:hidden;background:#fbfcff;box-shadow:0 12px 24px #0f172a14;transition:border-color .18s ease,box-shadow .18s ease}.code-composer-editor-shell:focus-within{border-color:#9c78ff;box-shadow:0 0 0 4px #9c78ff1a,0 14px 26px #0f172a1a}.code-composer-editor-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.78rem .95rem;background:#f4f6fb;border-bottom:1px solid #e3e8f2}.code-composer-editor-badge{display:inline-flex;align-items:center;gap:.42rem;padding:.38rem .72rem;border-radius:999px;background:#9c78ff1a;color:#7a57f7;font-size:.8rem;font-weight:700}.code-composer-editor-dots{display:inline-flex;align-items:center;gap:.35rem}.code-composer-editor-dots span{width:8px;height:8px;border-radius:999px;background:#b8c1d1}.code-composer-textarea{width:100%;min-height:240px;border:none;background:transparent;color:#22314a;font-size:.95rem;padding:1rem 1rem 1.15rem;box-sizing:border-box;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;line-height:1.55;caret-color:#9c78ff}.code-composer-textarea::placeholder{color:#9aa7bb}.code-composer-textarea:focus{outline:none}.code-composer-actions{display:flex;justify-content:flex-end;gap:.75rem;padding:1.05rem 1.3rem 1.3rem}.code-composer-secondary,.code-composer-primary{border:1px solid transparent;border-radius:999px;padding:.72rem 1.28rem;font-size:.9rem;font-weight:700;cursor:pointer;transition:background .18s ease,box-shadow .18s ease,border-color .18s ease,color .18s ease}.code-composer-secondary{background:#f8f7ff;border-color:#9c78ff2e;color:#7a57f7}.code-composer-primary{background:#9c78ff;border-color:#9c78ff;color:#fff;box-shadow:0 10px 22px #9c78ff3d}.code-composer-secondary:hover,.code-composer-primary:hover:not(:disabled){filter:brightness(.98)}.code-composer-primary:disabled{background:#d4c7ff;border-color:#d4c7ff;box-shadow:none;cursor:not-allowed}.message-input{border-top:none}.schedule-overlay{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.schedule-modal{background:#fff;border-radius:12px;padding:1.25rem;width:calc(100% - 2rem);max-width:360px;box-shadow:0 12px 30px #0003;text-align:center;position:relative}.schedule-modal-wide{max-width:900px;width:calc(100% - 2rem);height:min(80vh,720px);padding:0}.schedule-modal h3{margin:0 0 .75rem;font-size:1.05rem;color:#222}.schedule-students{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.75rem}.schedule-student-button{background:#f3f4f6;border:none;border-radius:10px;padding:.55rem .75rem;cursor:pointer;font-size:.9rem;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{position:absolute;top:8px;right:8px;background:#0000000d;border:none;border-radius:50%;width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer}.schedule-modal-header{padding:.75rem 1rem;background:#f8f9fa;border-bottom:1px solid #e9ecef;display:flex;justify-content:space-between;align-items:center;cursor:move;user-select:none;border-top-left-radius:12px;border-top-right-radius:12px}.schedule-modal-header span{font-weight:600;font-size:.95rem;color:#333}.schedule-modal-close-btn{background:none;border:none;color:#666;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;border-radius:50%;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{width:100%;height:calc(100% - 45px);border:none;border-bottom-left-radius:12px;border-bottom-right-radius:12px}@media(min-width:769px){.schedule-modal-wide{width:300px;height:700px;resize:both;overflow:hidden;min-width:420px;min-height:320px;max-width:90vw;max-height:85vh}}.reply-preview-bar{padding:.42rem 1rem;background:#fff;border-bottom:1px solid #e8ecf3;display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem;animation:slideUp .2s ease-out;width:100%;box-sizing:border-box;min-width:0;min-height:52px;flex:0 0 auto}.edit-preview-bar .reply-preview-content{border-left-color:#9c78ff}.edit-preview-bar .reply-preview-title,.edit-preview-bar .edit-icon{color:#7a57f7}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.reply-preview-content{flex:1 1 0%;padding-left:.5rem;border-left:3px solid #9C78FF;display:flex;flex-direction:column;justify-content:center;gap:.05rem;overflow:hidden;min-width:0;max-width:100%}.reply-preview-header{display:flex;align-items:center;gap:.25rem;min-width:0}.reply-icon{color:#9c78ff}.reply-preview-title{font-size:.78rem;font-weight:600;color:#7a57f7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.reply-preview-text{font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#1f2937;line-height:1.15;min-width:0;max-width:100%;display:block}.reply-close-button{background:none;border:none;color:#98a2b3;cursor:pointer;padding:.25rem;margin-top:.05rem;display:flex;align-items:center;justify-content:center;transition:color .2s;flex:0 0 auto}.reply-close-button:hover{color:#7a57f7}.reply-close-button:hover{color:#666}.message-reply-context{margin-bottom:.5rem;padding:.25rem .5rem;background:#0000000d;border-left:3px solid #9C78FF;border-radius:4px;font-size:.85rem;cursor:pointer;max-width:100%;min-width:0;overflow:hidden}.message.own .message-reply-context{background:#fff3;border-left-color:#9c78ff}.reply-sender{font-weight:600;color:#9c78ff;font-size:.75rem;margin-bottom:.1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.message.own .reply-sender{color:#9c78ff;opacity:.9}.reply-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.8;max-width:100%}@keyframes reply-highlight{0%{box-shadow:0 0 #9c78ff73;background-color:#9c78ff1f}to{box-shadow:0 0 0 12px #9c78ff00;background-color:transparent}}.message.highlighted .message-content{animation:reply-highlight 1.4s ease-out}.fullscreen-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000000e6;z-index:1000;display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease-out;overscroll-behavior:contain}.fullscreen-content{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:24px;box-sizing:border-box}.fullscreen-content.has-thumbnails{padding-bottom:134px}.fullscreen-content.has-thumbnails .fullscreen-image-frame{height:calc(100dvh - 158px)}.fullscreen-image-frame{display:flex;align-items:center;justify-content:center;width:min(95vw,calc(100vw - 48px));height:calc(100dvh - 48px);max-width:100%;max-height:100%;min-width:0;min-height:0;transform-origin:center center;transition:transform .16s ease;touch-action:none;will-change:transform;user-select:none}.fullscreen-image-frame.is-zoomed{cursor:grab}.fullscreen-image-frame.is-dragging{cursor:grabbing;transition:none}.fullscreen-image-frame.is-zooming{transition:none}.fullscreen-image{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;border-radius:4px;box-shadow:0 0 20px #00000080;pointer-events:none;user-select:none;-webkit-user-drag:none}.fullscreen-thumbnails{position:absolute;left:50%;bottom:20px;transform:translate(-50%);display:flex;align-items:flex-end;gap:10px;max-width:min(92vw,980px);overflow-x:auto;padding:12px 14px;border-radius:26px;background:#080b13a8;box-shadow:0 18px 48px #00000047;backdrop-filter:blur(14px);scrollbar-width:none}.fullscreen-thumbnails::-webkit-scrollbar{display:none}.fullscreen-thumbnail-button{flex:0 0 auto;width:52px;height:52px;padding:0;overflow:hidden;border:2px solid transparent;border-radius:16px;background:#ffffff14;cursor:pointer;opacity:.72;transition:transform .2s ease,opacity .2s ease,border-color .2s ease,box-shadow .2s ease}.fullscreen-thumbnail-button:hover{opacity:.92;transform:translateY(-2px)}.fullscreen-thumbnail-button.active{width:78px;height:78px;opacity:1;border-color:#ffffffe6;box-shadow:0 10px 28px #0000004d}.fullscreen-thumbnail-image,.fullscreen-thumbnail-button .image-placeholder,.fullscreen-thumbnail-button .image-error{width:100%;height:100%;min-height:0;aspect-ratio:auto;object-fit:cover;border-radius:14px}.fullscreen-thumbnail-button .image-placeholder,.fullscreen-thumbnail-button .image-error{display:flex;align-items:center;justify-content:center;font-size:.65rem;color:#ffffffe6;background:#ffffff14;text-align:center;padding:.35rem}.fullscreen-thumbnail-button .image-placeholder:after{width:22px;height:22px;margin:-11px 0 0 -11px;border-width:2px;border-color:#ffffff3d;border-top-color:#fffffff2}.fullscreen-nav,.fullscreen-delete,.fullscreen-close{position:absolute;background:#00000080;color:#fff;border:none;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .2s,transform .2s}.fullscreen-nav{top:50%;width:52px;height:52px;transform:translateY(-50%);backdrop-filter:blur(10px)}.fullscreen-nav-prev{left:20px}.fullscreen-nav-next{right:20px}.fullscreen-nav:hover:not(:disabled),.fullscreen-close:hover{background:#fff3}.fullscreen-nav:hover:not(:disabled){transform:translateY(-50%) scale(1.08)}.fullscreen-close{top:20px;right:20px;width:44px;height:44px}.fullscreen-close:hover{transform:scale(1.1)}.fullscreen-delete{top:20px;right:76px;width:44px;height:44px;background:#be2424b8}.fullscreen-delete:hover{background:#dc2626eb;transform:scale(1.06)}.fullscreen-nav:disabled{opacity:.35;cursor:default}@media(max-width:768px){.fullscreen-content{padding:16px}.fullscreen-content.has-thumbnails{padding-bottom:112px}.fullscreen-image-frame{width:calc(100vw - 32px);height:calc(100dvh - 32px)}.fullscreen-content.has-thumbnails .fullscreen-image-frame{height:calc(100dvh - 128px)}.fullscreen-thumbnails{bottom:14px;gap:8px;padding:10px 12px;max-width:calc(100vw - 20px)}.fullscreen-thumbnail-button{width:46px;height:46px;border-radius:14px}.fullscreen-thumbnail-button.active{width:66px;height:66px}.fullscreen-nav{width:46px;height:46px}.fullscreen-nav-prev{left:12px}.fullscreen-nav-next{right:12px}.fullscreen-close{top:12px;right:12px}.fullscreen-delete{top:12px;right:66px}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.date-separator{display:flex;justify-content:center;align-items:center;margin:1.5rem 0;position:relative}.date-separator:before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:#e9ecef;z-index:1}.date-separator-text{background:#fff;padding:.5rem 1rem;border-radius:20px;color:#666;font-size:.85rem;font-weight:500;border:1px solid #e9ecef;position:relative;z-index:2}.sticky-date-header{position:sticky;top:0;z-index:10;height:0;padding:0;display:flex;justify-content:center;align-items:flex-start;overflow:visible;animation:fadeIn .3s ease;background:transparent;pointer-events:none}.sticky-date-text{color:#333;font-size:.9rem;font-weight:600;background:#fff;padding:.25rem .75rem;transform:translateY(.5rem);border-radius:15px;border:1px solid #e9ecef;box-shadow:0 2px 4px #0000001a}.image-container{position:relative;display:block;width:min(260px,100%);aspect-ratio:1 / 1;overflow:hidden;border-radius:8px;background:#eef0f2}.attachment-image.sending{opacity:.7;filter:blur(2px)}.image-sending-overlay{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#0003;border-radius:12px}.sending-spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.6);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.reports-toggle-button:hover{color:#9c78ff;background:#9c78ff1a}.reports-modal{background:#fff;border-radius:12px;width:calc(100% - 2rem);max-width:600px;height:min(80vh,700px);box-shadow:0 12px 30px #0003;display:flex;flex-direction:column;overflow:hidden}.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{padding:.75rem 1rem;background:#f8f9fa;border-bottom:1px solid #e9ecef;display:flex;justify-content:space-between;align-items:center;cursor:move;user-select:none}.reports-modal-header span{font-weight:600;font-size:.95rem;color:#333}.reports-tabs{display:flex;border-bottom:1px solid #e9ecef;background:#fff}.reports-tab{flex:1;padding:.75rem 1rem;background:none;border:none;cursor:pointer;font-size:.9rem;font-weight:500;color:#666;transition:color .2s,border-color .2s;border-bottom:2px solid transparent}.reports-tab:hover{color:#9c78ff}.reports-tab.active{color:#9c78ff;border-bottom-color:#9c78ff}.reports-content{flex:1;overflow-y:auto;padding:1rem}.reports-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;height:100%;color:#666}.reports-empty{text-align:center;color:#999;padding:2rem;font-size:.95rem}.reports-list{display:flex;flex-direction:column;gap:1rem}.report-item{background:#f8f9fa;border-radius:10px;padding:1rem;border:1px solid #e9ecef}.report-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem;flex-wrap:wrap;gap:.5rem}.report-title{font-weight:600;color:#333;font-size:.95rem}.report-teacher{font-size:.8rem;color:#9c78ff;font-weight:500}.report-text{color:#555;font-size:.9rem;line-height:1.5;white-space:pre-wrap}.report-answers{display:grid;gap:9px}.report-answer-row{padding:11px 12px;background:#fff;border:1px solid #ece5f5;border-radius:11px}.report-answer-row strong,.report-answer-row span{display:block}.report-answer-row strong{margin-bottom:4px;color:#7144d3;font-size:12px}.report-answer-row span{line-height:1.45;white-space:pre-wrap}.program-table-container{overflow-x:auto}.program-table{width:100%;border-collapse:collapse;font-size:.9rem}.program-table th,.program-table td{padding:.75rem;text-align:left;border-bottom:1px solid #e9ecef}.program-table th{background:#f8f9fa;font-weight:600;color:#333;position:sticky;top:0}.program-table tbody tr:hover{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{width:600px;height:700px;resize:both;overflow:hidden;min-width:400px;min-height:400px;max-width:90vw;max-height:85vh}}.reports-footer{padding:.75rem 1rem;border-top:1px solid #e9ecef;background:#f8f9fa;display:flex;justify-content:center}.copy-reports-button{display:flex;align-items:center;gap:.5rem;padding:.6rem 1.25rem;background:#9c78ff;color:#fff;border:none;border-radius:8px;font-size:.9rem;font-weight:500;cursor:pointer;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{background:#22c55e;animation:copySuccess .3s ease-out}.copy-reports-button.success:hover{background:#22c55e}@keyframes copySuccess{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.message-reactions{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;align-items:center}.message-reaction{display:inline-flex;align-items:center;gap:5px;min-height:32px;padding:3px 8px 3px 5px;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:#9b79ff;color:#fff;font-size:12px;line-height:1;cursor:pointer;box-shadow:0 8px 18px #5231a533;transition:transform .14s ease,box-shadow .14s ease,background-color .14s ease}.message-reaction:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 14px 28px #5231a547}.message-reaction.active{background:#8f6af6;border-color:#ffffff47;color:#fff}.message-reaction:disabled{opacity:.6;cursor:default}.message-reaction.has-avatars{gap:5px;padding-right:7px}.message-reaction-add{background:transparent;border-style:dashed}.message-quick-reactions{display:none}@media(hover:hover)and (pointer:fine){.message:hover,.message:focus-within{contain:layout;z-index:20}.message.menu-active{z-index:120}.message-quick-reactions{display:block;position:absolute;top:-17px;right:-17px;z-index:25}.message.own .message-quick-reactions{right:auto;left:-17px}.message-quick-reaction-trigger{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid #dfe5e2;border-radius:50%;background:#fff;color:#697874;box-shadow:0 3px 12px #1b2b2529;cursor:pointer;opacity:0;transform:scale(.85);transition:opacity .12s ease,transform .12s ease}.message-content:hover .message-quick-reaction-trigger,.message-quick-reactions:focus-within .message-quick-reaction-trigger{opacity:1;transform:scale(1)}.message-quick-reaction-trigger:hover,.message-quick-reaction-trigger:focus-visible{color:#6d28d9}.message-quick-reaction-list{position:absolute;right:0;display:flex;flex-direction:column;gap:2px;width:42px;padding:4px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;-ms-overflow-style:none;border:1px solid #e1e6e3;border-radius:22px;background:#fff;box-shadow:0 10px 28px #1b2b2533;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .12s ease,visibility .12s ease}.message-quick-reaction-list::-webkit-scrollbar{display:none}.message.own .message-quick-reaction-list{right:auto;left:0}.message-quick-reactions.below .message-quick-reaction-list{top:100%}.message-quick-reactions.above .message-quick-reaction-list{bottom:100%}.message-quick-reactions:hover .message-quick-reaction-list,.message-quick-reactions:focus-within .message-quick-reaction-list{opacity:1;visibility:visible;pointer-events:auto}.message-quick-reactions.dismissed .message-quick-reaction-list{opacity:0;visibility:hidden;pointer-events:none}.message-quick-reaction-option{flex:0 0 34px;border:0;border-radius:50%;padding:0;background:transparent;font:24px/1 "Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;cursor:pointer}.message-quick-reaction-option:hover,.message-quick-reaction-option:focus-visible{background:#f0eaff}}.message-reaction-picker{position:absolute;left:0;display:flex;flex-direction:column;gap:10px;background:transparent;border:none;border-radius:0;padding:0;box-shadow:none;z-index:130;width:max-content;min-width:0;max-width:min(360px,calc(100vw - 32px));overflow:visible}.message-reaction-picker.closing .message-reaction-row,.message-reaction-picker.closing .message-context-actions{animation:touchMenuBubbleOut .18s cubic-bezier(.4,0,.2,1) forwards}.message.own .message-reaction-picker{left:auto;right:0}.message-reaction-picker.above{bottom:calc(100% + 14px);top:auto}.message-reaction-picker.below{top:calc(100% + 14px);bottom:auto}.message-reaction-option{flex:0 0 auto;border:none;background:transparent;border-radius:999px;padding:4px 6px;cursor:pointer;box-shadow:none;touch-action:manipulation}.message-reaction-row{display:flex;align-items:center;gap:8px;padding:0;flex:0 0 auto;overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;min-width:0;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;touch-action:pan-x;animation:touchMenuBubbleLift .3s cubic-bezier(.22,1,.36,1);transform-origin:left bottom}.message-reaction-row::-webkit-scrollbar{display:none}.message-reaction-row.expanded{flex-wrap:nowrap}.message-context-actions{display:flex;flex-direction:column;gap:0;flex:0 1 auto;min-width:min(240px,calc(100vw - 64px));padding:.35rem 0;overflow-y:auto;overscroll-behavior:contain;border-top:none;border-radius:24px;background:#fafcf6f0;border:1px solid rgba(255,255,255,.72);box-shadow:0 24px 54px #2c3b2533;backdrop-filter:blur(24px) saturate(1.02);-webkit-backdrop-filter:blur(24px) saturate(1.02);animation:touchMenuBubbleLift .34s cubic-bezier(.22,1,.36,1);transform-origin:left top;touch-action:manipulation}.message-context-views{display:flex;align-items:center;gap:.85rem;padding:.8rem 1.1rem .75rem;border-bottom:1px solid rgba(126,146,110,.12)}.message-context-views-summary{display:inline-flex;align-items:center;gap:.55rem;min-width:0}.message-context-views-icon{color:#2563eb;flex:0 0 auto}.message-context-views-label{color:#243020;font-size:.98rem;font-weight:500;white-space:nowrap}.message-context-views-avatars{display:inline-flex;align-items:center;margin-left:auto;padding-left:.35rem}.message-context-views-avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;border:1.5px solid rgba(250,252,246,.94);box-shadow:0 2px 7px #2c3b2524;background:#ffffffeb}.message-context-views-avatar+.message-context-views-avatar{margin-left:-8px}.message-context-views-avatar-image,.message-context-views-avatar-image.chat-avatar-fallback{width:100%;height:100%;display:block}.message-context-views-avatar-image.chat-avatar-fallback{display:flex;align-items:center;justify-content:center;line-height:1;text-align:center;font-size:.56rem;font-weight:700;background:linear-gradient(135deg,#9b79ff,#7a57f7);color:#fff}.message-context-actions:first-child{padding-top:0;border-top:none}.message-context-action{display:inline-flex;align-items:center;gap:.8rem;border:none;background:transparent;color:#243020;border-radius:0;padding:.88rem 1.1rem;cursor:pointer;font-size:1.02rem;font-weight:500;flex:0 0 auto;width:100%;justify-content:flex-start}.message-context-action+.message-context-action{border-top:1px solid rgba(126,146,110,.12)}.message-context-action.danger{color:#e05a4f}.message-context-action svg{flex:0 0 auto}.message-context-action:hover,.message-context-action.danger:hover{background:transparent}.reaction-emoji{font-size:20px;line-height:1;filter:saturate(1.06)}.reaction-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#ffffff2e;font-size:.76rem;font-weight:700;letter-spacing:.01em;color:#fff}.message-reaction-users{display:inline-flex;align-items:center;margin-left:1px}.message-reaction-user{width:24px;height:24px;border-radius:50%;overflow:hidden;border:1.5px solid #9B79FF;background:#ffffffeb;box-shadow:0 1px 5px #20124c24}.message-reaction-user+.message-reaction-user{margin-left:-7px}.message-reaction-user-avatar,.message-reaction-user-avatar.chat-avatar-fallback{width:100%;height:100%;display:block}.message-reaction-user-avatar.chat-avatar-fallback{display:flex;align-items:center;justify-content:center;line-height:1;text-align:center;font-size:.52rem;font-weight:700;background:linear-gradient(135deg,#9b79ff,#7a57f7);color:#fff}@media(hover:none),(pointer:coarse){.message-reaction-picker{max-width:min(320px,calc(100vw - 28px))}.message-content,.message-text-window{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.message-reaction-option{padding:8px 10px}.message-reaction-row .reaction-emoji{font-size:30px}}@media(max-width:768px){.chat-window-header{padding-right:3rem}.chat-window-header-actions.mobile-compact{right:.75rem;gap:0}.chat-window-header-actions.mobile-compact>.search-toggle-button,.chat-window-header-actions.mobile-compact>.reports-toggle-button,.chat-window-header-actions.mobile-compact>.chat-window-open-standalone-button{width:32px;height:32px}.chat-window-header.with-mobile-avatar{justify-content:flex-start;gap:.75rem}.mobile-chat-header-avatar{display:flex;width:42px;height:42px;border-radius:50%;overflow:hidden;background:#eef2f7;border:1px solid #dbe4ee;flex:0 0 auto}.mobile-chat-header-avatar-image,.mobile-chat-header-avatar .chat-avatar-fallback{width:100%;height: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 h2,.chat-header-info.with-avatar .teacher-info,.chat-header-info.with-avatar .presence-info{text-align:left;width:auto}.reports-modal{max-height:90vh;height:90vh}.message-wrapper{max-width:96%}}.chat-pins-bar{display:flex;align-items:stretch;gap:.5rem;padding:.7rem .9rem;border-bottom:1px solid #e8ecf3;background:#fff}.chat-pins-nav{width:2.25rem;border:1px solid #e2e8f3;border-radius:12px;background:#fff;color:#7a57f7;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .18s ease,border-color .18s ease,color .18s ease}.chat-pins-nav:hover:not(:disabled){background:#f8f7ff;border-color:#9c78ff2e}.chat-pins-nav:disabled{opacity:.45;cursor:default}.chat-pins-card{flex:1;min-width:0;border:1px solid #e2e8f3;border-radius:14px;background:#fff;padding:.65rem .8rem;text-align:left;cursor:pointer;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}.chat-pins-card:hover{border-color:#9c78ff33;box-shadow:0 8px 18px #0f172a0f;background:#fcfaff}.chat-pins-meta{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.chat-pins-title{display:inline-flex;align-items:center;gap:.35rem;color:#7a57f7;font-size:.78rem;font-weight:700}.chat-pins-sender{min-width:0;color:#667085;font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-pins-text{margin-top:.3rem;color:#22314a;font-size:.88rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.message-pinned-indicator{display:inline-flex;align-items:center;justify-content:center;color:#7a57f7}@media(max-width:768px){.chat-pins-bar{padding:.6rem .75rem}.chat-pins-meta{gap:.5rem}.chat-pins-title{flex-shrink:0;white-space:nowrap}.chat-pins-sender{text-align:right}}.schedule-modal.coordinator-lessons-panel{position:absolute!important;inset:0 0 0 auto!important;transform:none!important;width:min(560px,92vw);height:100%;max-height:100%;margin:0;padding:0;display:flex;flex-direction:column;border:1px solid rgba(117,78,178,.16);border-right:0;border-radius:20px 0 0 20px;box-shadow:-16px 0 42px #241b4324;overflow:hidden}.coordinator-lessons-panel .schedule-modal-header{min-height:58px;padding:0 20px;flex-shrink:0;cursor:default;background:#fff;border-bottom-color:#eee8f6;border-radius:20px 0 0}.coordinator-lessons-panel .schedule-modal-header span{color:#302640;font-size:16px}.coordinator-lessons-panel .schedule-iframe{flex:1;min-height:0;width:100%;border:0;border-radius:0}@media(max-width:720px){.schedule-modal.coordinator-lessons-panel{width:100%;border:0;border-radius:0;box-shadow:none}.coordinator-lessons-panel .schedule-modal-header{border-radius:0}}.chat-window.chat-entering{animation:chat-panel-enter .26s cubic-bezier(.22,1,.36,1) both}.messages.messages-ready{animation:chat-messages-reveal .18s ease-out both}@keyframes chat-panel-enter{0%{transform:translate3d(24px,0,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes chat-messages-reveal{0%{opacity:0}to{opacity:1}}@media(max-width:768px){@keyframes chat-panel-enter{0%{transform:translate3d(100%,0,0)}to{transform:translateZ(0)}}}@media(prefers-reduced-motion:reduce){.chat-window.chat-entering,.messages.messages-ready{animation:none}}.app-loader{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;min-width:0;min-height:0;background:#fff;z-index:1100}.app-loader-spinner{width:46px;height:46px;border-radius:50%;border:4px solid rgba(156,120,255,.2);border-top-color:#9c78ff;border-right-color:#7a57f7;animation:app-loader-spin .9s linear infinite}.app-loader-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes app-loader-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.app-loader-spinner{animation-duration:1.8s}}.app-loader.panel{position:relative;inset:auto;z-index:auto;flex:1;align-self:stretch;min-height:160px;height:100%}.App{height:100%;min-height:0;width:100vw;overflow:hidden;position:fixed;top:0;left:0;overscroll-behavior:none}.chat-app{display:flex;height:100%;min-height:0;width:100%;overflow:hidden;position:relative}.chat-list-container{height:100%;flex-shrink:0;display:flex}.site-notice{position:fixed;top:1rem;left:50%;transform:translate(-50%) translateY(-8px);z-index:1200;width:min(560px,calc(100vw - 2rem));pointer-events:none;opacity:0;transition:opacity .26s ease,transform .26s ease}.site-notice.visible{opacity:1;transform:translate(-50%) translateY(0)}.site-notice.hidden{opacity:0;transform:translate(-50%) translateY(-8px)}.site-notice-content{pointer-events:auto;display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:.95rem 1rem;border-radius:14px;background:#1f2430;color:#fff;border:1px solid rgba(255,255,255,.08);box-shadow:0 14px 32px #0f172a47}.site-notice.hidden .site-notice-content{pointer-events:none}.site-notice-content span{line-height:1.45;white-space:pre-line}.site-notice-close{border:none;background:transparent;color:#ffffffd1;font-size:1.2rem;line-height:1;cursor:pointer;padding:0;flex-shrink:0}.site-notice-close:hover{color:#fff}.modal-overlay{position:absolute;inset:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:10}.modal{background:#fff;border-radius:12px;padding:1.25rem 1.5rem;max-width:360px;width:calc(100% - 2rem);box-shadow:0 10px 30px #0003;text-align:center}.modal h3{margin:0 0 .5rem;font-size:1.1rem;color:#222}.modal p{margin:0 0 1rem;color:#555;font-size:.95rem}.modal-button{background:#9c78ff;color:#fff;border:none;border-radius:999px;padding:.5rem 1.25rem;cursor:pointer;font-size:.9rem}.modal-button:hover{background:#8c66e9}.logout-button{position:absolute;top:1rem;right:1rem;background:#9c78ff;color:#fff;border:none;padding:.5rem 1rem;border-radius:6px;cursor:pointer;font-size:.9rem;z-index:1000}.logout-button:hover{background:#8c66e9}@media(max-width:768px){.App{overflow-x:hidden;width:100vw}.chat-app{position:relative;overflow-x:hidden;width:100vw}.chat-app>.chat-list-container{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;transform:translateZ(0);transition:transform .26s cubic-bezier(.22,1,.36,1);will-change:transform;backface-visibility:hidden}.chat-app>.chat-window{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;transform:translate3d(100%,0,0);transition:transform .26s cubic-bezier(.22,1,.36,1);will-change:transform;backface-visibility:hidden;visibility:hidden;pointer-events:none}.chat-app.show-chat-window>.chat-list-container{transform:translate3d(-100%,0,0);visibility:hidden}.chat-app.show-chat-window>.chat-window{transform:translateZ(0);visibility:visible;pointer-events:auto}.chat-app:not(.show-chat-window)>.chat-window{visibility:hidden;pointer-events:none}.logout-button{display:none}}.sidebar-resizer{width:4px;cursor:col-resize;background:transparent;transition:background .2s;z-index:1001;position:relative;flex-shrink:0}.sidebar-resizer:hover,.sidebar-resizer.is-resizing{background:#9c78ff}.sidebar-resizer.disabled{pointer-events:none;background:transparent}.sidebar-resizer:after{content:"";position:absolute;inset:0 -2px}body.mini-app-open .sidebar-resizer{display:none}@media(max-width:768px){.sidebar-resizer{display:none}}
