.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:linear-gradient(135deg,#0a0e27,#1a1f3a);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;padding:20px}.login-card{background:#15192b;border:1px solid #7c3aed30;border-radius:16px;padding:40px;width:100%;max-width:400px;box-shadow:0 20px 60px #00000080;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.login-logo{text-align:center;margin-bottom:40px}.logo-image{max-width:120px;height:120px;width:120px;border-radius:50%;object-fit:cover;box-shadow:0 4px 12px #7c3aed4d}.login-form{display:flex;flex-direction:column;gap:24px}.login-field{display:flex;flex-direction:column;gap:8px}.login-field label{color:#a0aec0;font-size:14px;font-weight:500}.login-field input{background:#1e2140;border:1px solid #7c3aed20;border-radius:8px;padding:12px 16px;color:#fff;font-size:16px;transition:all .2s}.login-field input:focus{outline:none;border-color:#7c3aed;background:#1e2140;box-shadow:0 0 0 3px #7c3aed1a}.login-field input:disabled{opacity:.5;cursor:not-allowed}.login-error{background:#7c3aed20;border:1px solid #7c3aed40;border-radius:8px;padding:12px;color:#f8d7da;font-size:14px;text-align:center}.login-submitBtn{background:linear-gradient(135deg,#7c3aed,#6d28d9);color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s;margin-top:8px}.login-submitBtn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 25px #7c3aed66}.login-submitBtn:active:not(:disabled){transform:translateY(0)}.login-submitBtn:disabled{opacity:.7;cursor:not-allowed}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;z-index:200;display:flex;align-items:center;justify-content:center;animation:modalOverlayIn .18s ease both}@keyframes modalOverlayIn{0%{opacity:0}to{opacity:1}}.modal-box{background:#0f1229;border:1px solid #7c3aed25;border-radius:14px;width:360px;max-width:95vw;box-shadow:0 20px 60px #0009;animation:modalBoxIn .2s cubic-bezier(.4,0,.2,1) both;overflow:hidden}@keyframes modalBoxIn{0%{opacity:0;transform:scale(.95) translateY(-8px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 14px;border-bottom:1px solid #7c3aed15}.modal-header h3{color:#fff;font-size:17px;font-weight:600;margin:0}.modal-closeBtn{background:none;border:none;color:#64748b;font-size:16px;cursor:pointer;padding:4px 8px;border-radius:6px;transition:color .2s,background .2s}.modal-closeBtn:hover{color:#fff;background:#7c3aed20}.modal-body{padding:20px;display:flex;flex-direction:column;gap:16px}.modal-typeRow{display:flex;gap:8px}.modal-typeBtn{flex:1;background:#1e2140;border:1px solid #7c3aed20;border-radius:8px;color:#8892b0;padding:8px 6px;font-size:12px;cursor:pointer;transition:all .2s;font-weight:500}.modal-typeBtn:hover{background:#7c3aed15;border-color:#7c3aed40;color:#e2e8f0}.modal-typeBtn--active{background:linear-gradient(135deg,#7c3aed20,#6d28d920);border-color:#7c3aed;color:#c4b5fd}.modal-field{display:flex;flex-direction:column;gap:6px}.modal-field label{color:#8892b0;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.4px}.modal-input{background:#1e2140;border:1px solid #7c3aed20;border-radius:8px;padding:10px 12px;color:#fff;font-size:14px;outline:none;transition:border-color .2s,box-shadow .2s}.modal-input:focus{border-color:#7c3aed;box-shadow:0 0 0 3px #7c3aed1a}.modal-input::placeholder{color:#4a5568}.modal-hint{color:#4a5568;font-size:11px}.modal-error{background:#dc262615;border:1px solid #dc262640;border-radius:8px;color:#ef4444;padding:10px 12px;font-size:13px}.modal-footer{display:flex;gap:10px;padding:14px 20px 18px;border-top:1px solid #7c3aed15;justify-content:flex-end}.modal-cancelBtn{background:none;border:1px solid #7c3aed20;border-radius:8px;color:#8892b0;padding:10px 18px;font-size:14px;cursor:pointer;transition:all .2s}.modal-cancelBtn:hover{border-color:#7c3aed40;color:#fff}.modal-createBtn{background:linear-gradient(135deg,#7c3aed,#6d28d9);border:none;border-radius:8px;color:#fff;padding:10px 22px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.modal-createBtn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 6px 20px #7c3aed66}.modal-createBtn:disabled{opacity:.5;cursor:not-allowed}.chatlist-container{width:320px;height:100vh;background:#0f1229;border-right:1px solid #7c3aed15;display:flex;flex-direction:column;overflow:hidden}.chatlist-header{padding:16px;border-bottom:1px solid #7c3aed15;display:flex;justify-content:space-between;align-items:center}.chatlist-headerBtns{display:flex;gap:6px;align-items:center}.chatlist-newChatBtn{background:linear-gradient(135deg,#7c3aed,#6d28d9);border:none;border-radius:8px;color:#fff;font-size:22px;line-height:1;width:32px;height:32px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s,box-shadow .2s;font-weight:400}.chatlist-newChatBtn:hover{transform:scale(1.12);box-shadow:0 4px 14px #7c3aed66}.chatlist-header h1{color:#fff;font-size:20px;font-weight:700;margin:0;background:linear-gradient(135deg,#fff,#7c3aed);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.chatlist-profileBtn{background:none;border:none;color:#7c3aed;font-size:20px;cursor:pointer;padding:4px;border-radius:6px;transition:transform .3s cubic-bezier(.4,0,.2,1),background .2s}.chatlist-profileBtn:hover{transform:scale(1.15) rotate(20deg);background:#7c3aed15}.chatlist-profileBtn--active{transform:rotate(90deg);background:#7c3aed20}.chatlist-profileBtn--active:hover{transform:rotate(90deg) scale(1.15)}.chatlist-searchBox{padding:12px}.chatlist-searchBox input{width:100%;background:#1e2140;border:1px solid #7c3aed20;border-radius:8px;padding:8px 12px;color:#a0aec0;font-size:14px;transition:all .2s}.chatlist-searchBox input:focus{outline:none;border-color:#7c3aed;color:#fff}.chatlist-roomsList{flex:1;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:2px}.chatlist-roomsList::-webkit-scrollbar{width:6px}.chatlist-roomsList::-webkit-scrollbar-track{background:transparent}.chatlist-roomsList::-webkit-scrollbar-thumb{background:#7c3aed40;border-radius:3px}.chatlist-roomsList::-webkit-scrollbar-thumb:hover{background:#7c3aed60}@keyframes roomItemIn{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}.chatlist-roomItem{display:flex;gap:12px;padding:10px 12px;border-radius:8px;cursor:pointer;transition:background .18s,border-color .18s;align-items:flex-start;animation:roomItemIn .2s ease both}.chatlist-roomItem:hover{background:#7c3aed15}.chatlist-roomItem.chatlist-active{background:#7c3aed25;border-left:3px solid #7c3aed;padding-left:9px}.chatlist-roomAvatar{flex-shrink:0;width:48px;height:48px}.chatlist-roomAvatar img{width:100%;height:100%;border-radius:8px;object-fit:cover}.chatlist-avatarPlaceholder{width:100%;height:100%;background:linear-gradient(135deg,#7c3aed,#6d28d9);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:16px}.chatlist-roomInfo{flex:1;min-width:0;padding-top:4px}.chatlist-roomName{color:#fff;font-size:15px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}.chatlist-lastMessage{color:#8892b0;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chatlist-roomTime{color:#64748b;font-size:12px;flex-shrink:0}.chatlist-loading,.chatlist-empty{color:#64748b;display:flex;align-items:center;justify-content:center;height:100%;font-size:14px}.imgviewer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000e6;z-index:1000;display:flex;align-items:center;justify-content:center;animation:viewerIn .18s ease both;cursor:zoom-out}@keyframes viewerIn{0%{opacity:0}to{opacity:1}}.imgviewer-closeBtn{position:absolute;top:16px;right:16px;background:#ffffff1a;border:none;border-radius:50%;color:#fff;font-size:20px;width:40px;height:40px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}.imgviewer-closeBtn:hover{background:#fff3}.imgviewer-img{max-width:90vw;max-height:90vh;object-fit:contain;border-radius:8px;cursor:default;box-shadow:0 20px 60px #000c}.chat-container{display:flex;flex-direction:column;height:100vh;background:#0a0e27;flex:1;position:relative}.chat-header{padding:16px 24px;border-bottom:1px solid #7c3aed15;background:#0f1229;display:flex;align-items:center;gap:12px;position:relative}.chat-roomName{color:#fff;font-size:18px;font-weight:600;margin:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-headerActions{display:flex;gap:8px;align-items:center}.chat-backBtn{display:none;background:none;border:none;color:#7c3aed;font-size:20px;cursor:pointer;padding:4px 8px;border-radius:6px;line-height:1;transition:background .2s}.chat-backBtn:hover{background:#7c3aed20}@media (max-width: 768px){.chat-backBtn{display:block}}.chat-menuBtn{background:none;border:none;color:#8892b0;font-size:22px;cursor:pointer;padding:4px 10px;border-radius:6px;transition:background .2s,color .2s;line-height:1}.chat-menuBtn:hover{background:#7c3aed20;color:#fff}.chat-roomMenu{position:absolute;top:calc(100% + 4px);right:16px;background:#1e2140;border:1px solid #7c3aed30;border-radius:10px;z-index:50;min-width:180px;box-shadow:0 8px 24px #0006;overflow:hidden;animation:menuIn .15s ease both}@keyframes menuIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.chat-roomMenu button{display:block;width:100%;text-align:left;background:none;border:none;color:#e2e8f0;padding:12px 16px;font-size:14px;cursor:pointer;transition:background .15s}.chat-roomMenu button:hover{background:#7c3aed20}.chat-roomMenu-danger{color:#ef4444!important}.chat-roomMenu-danger:hover{background:#ef444415!important}.chat-actionBar{display:flex;gap:8px;padding:10px 16px;background:#0f1229;border-bottom:1px solid #7c3aed15;align-items:center}.chat-actionInput{flex:1;background:#1e2140;border:1px solid #7c3aed40;border-radius:8px;padding:8px 12px;color:#fff;font-size:14px;outline:none}.chat-actionInput:focus{border-color:#7c3aed;box-shadow:0 0 0 2px #7c3aed1a}.chat-actionConfirm{background:linear-gradient(135deg,#7c3aed,#6d28d9);border:none;border-radius:8px;color:#fff;padding:8px 14px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}.chat-actionCancel{background:none;border:1px solid #7c3aed20;border-radius:8px;color:#8892b0;padding:8px 12px;font-size:13px;cursor:pointer}.chat-actionCancel:hover{border-color:#7c3aed40;color:#fff}@keyframes emptyStateIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.chat-emptyState{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;color:#64748b;animation:emptyStateIn .3s ease both}.chat-emptyIcon{font-size:64px;margin-bottom:16px;opacity:.5}.chat-emptyState p{font-size:16px}.chat-messagesList{flex:1;overflow-y:auto;padding:16px 24px;display:flex;flex-direction:column;gap:8px}.chat-messagesList::-webkit-scrollbar{width:8px}.chat-messagesList::-webkit-scrollbar-track{background:transparent}.chat-messagesList::-webkit-scrollbar-thumb{background:#7c3aed40;border-radius:4px}.chat-messagesList::-webkit-scrollbar-thumb:hover{background:#7c3aed60}.chat-loading,.chat-noMessages{display:flex;align-items:center;justify-content:center;height:100%;color:#64748b;font-size:14px}@keyframes msgIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.chat-messageGroup{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin-bottom:8px;animation:msgIn .18s ease both}.chat-messageGroup.chat-ownMessage{align-items:flex-end}.chat-sender{color:#8892b0;font-size:12px;font-weight:500;padding:0 12px}.chat-messageContent{display:flex;max-width:60%}.chat-messageGroup.chat-ownMessage .chat-messageContent{justify-content:flex-end}.chat-bubble{background:#1e2140;border:1px solid #7c3aed20;border-radius:12px;padding:10px 14px;min-width:80px}.chat-messageGroup.chat-ownMessage .chat-bubble{background:linear-gradient(135deg,#7c3aed,#6d28d9);border:none}.chat-text{color:#fff;font-size:14px;line-height:1.4;word-break:break-word;white-space:pre-wrap}.chat-time{color:#64748b;font-size:11px;margin-top:4px;text-align:right}.chat-messageGroup.chat-ownMessage .chat-time{color:#fff9}.chat-imgWrapper{cursor:zoom-in;border-radius:8px;overflow:hidden;max-width:240px}.chat-imgThumb{display:block;max-width:240px;max-height:200px;width:100%;object-fit:cover;border-radius:8px;transition:opacity .2s}.chat-imgThumb:hover{opacity:.85}.chat-fileLink{color:#a78bfa;text-decoration:none;font-size:14px;display:flex;align-items:center;gap:6px}.chat-fileLink:hover{color:#c4b5fd;text-decoration:underline}.chat-filePreview{display:flex;align-items:center;gap:10px;padding:8px 16px;background:#0f1229;border-top:1px solid #7c3aed20}.chat-filePreviewImg{height:56px;width:56px;object-fit:cover;border-radius:6px;border:1px solid #7c3aed30}.chat-filePreviewName{color:#a0aec0;font-size:13px;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-filePreviewRemove{background:none;border:none;color:#64748b;font-size:16px;cursor:pointer;padding:4px;border-radius:4px;transition:color .2s}.chat-filePreviewRemove:hover{color:#ef4444}.chat-inputArea{padding:16px 24px;border-top:1px solid #7c3aed15;display:flex;gap:12px;background:#0f1229;align-items:center}.chat-attachBtn{background:none;border:1px solid #7c3aed20;border-radius:8px;color:#8892b0;font-size:18px;padding:10px 12px;cursor:pointer;transition:background .2s,border-color .2s,color .2s;line-height:1}.chat-attachBtn:hover{background:#7c3aed15;border-color:#7c3aed40;color:#fff}.chat-input{flex:1;background:#1e2140;border:1px solid #7c3aed20;border-radius:8px;padding:12px 16px;color:#fff;font-size:14px;transition:all .2s}.chat-input:focus{outline:none;border-color:#7c3aed;box-shadow:0 0 0 3px #7c3aed1a}.chat-input::placeholder{color:#64748b}.chat-sendBtn{background:linear-gradient(135deg,#7c3aed,#6d28d9);border:none;border-radius:8px;color:#fff;padding:12px 24px;font-size:18px;cursor:pointer;transition:all .2s;font-weight:600}.chat-sendBtn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 25px #7c3aed66}.chat-sendBtn:disabled{opacity:.5;cursor:not-allowed}.profile-container{position:absolute;top:0;left:0;z-index:10;width:100%;height:100%;background:#0f1229;border-right:1px solid #7c3aed15;display:flex;flex-direction:column;overflow:hidden;transform:translate(-100%);opacity:0;pointer-events:none;transition:transform .28s cubic-bezier(.4,0,.2,1),opacity .28s ease}.profile-container.profile-open{transform:translate(0);opacity:1;pointer-events:auto}.profile-header{padding:16px;border-bottom:1px solid #7c3aed15;display:flex;align-items:center;gap:12px}.profile-backBtn{background:none;border:none;color:#7c3aed;font-size:16px;cursor:pointer;padding:4px;transition:transform .2s,color .2s;font-weight:600}.profile-backBtn:hover{transform:translate(-3px);color:#9c6dff}.profile-header h2{color:#fff;font-size:18px;font-weight:600;margin:0;flex:1}.profile-content{flex:1;padding:24px 16px;display:flex;flex-direction:column;gap:24px;overflow-y:auto}.profile-avatarSection{display:flex;justify-content:center;padding-bottom:12px;border-bottom:1px solid #7c3aed15}.profile-avatarWrapper{position:relative;width:80px;height:80px;cursor:pointer;border-radius:12px;overflow:hidden}.profile-avatarWrapper:hover .profile-avatarOverlay{opacity:1}.profile-avatar{width:80px;height:80px;background:linear-gradient(135deg,#7c3aed,#6d28d9);border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:700;color:#fff;box-shadow:0 8px 24px #7c3aed59}.profile-avatarImg{width:80px;height:80px;border-radius:12px;object-fit:cover;display:block}.profile-avatarOverlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;font-size:11px;color:#fff;font-weight:600;opacity:0;transition:opacity .2s;border-radius:12px;text-align:center}.profile-infoSection{display:flex;flex-direction:column;gap:16px}.profile-infoField{display:flex;flex-direction:column;gap:6px}.profile-infoField label{color:#8892b0;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.profile-infoValueRow{display:flex;align-items:center;gap:8px}.profile-infoValue{flex:1;color:#fff;font-size:14px;background:#1e2140;border:1px solid #7c3aed20;border-radius:8px;padding:10px 12px;word-break:break-all;transition:border-color .2s}.profile-infoValue--muted{color:#8892b0;font-size:12px}.profile-infoValue:hover{border-color:#7c3aed40}.profile-placeholder{color:#4a5568;font-style:italic}.profile-editBtn{background:none;border:1px solid #7c3aed30;border-radius:6px;color:#7c3aed;font-size:16px;cursor:pointer;padding:6px 10px;transition:background .2s,border-color .2s;flex-shrink:0}.profile-editBtn:hover{background:#7c3aed20;border-color:#7c3aed50}.profile-editRow{display:flex;gap:6px;align-items:center}.profile-editInput{flex:1;background:#1e2140;border:1px solid #7c3aed;border-radius:8px;padding:10px 12px;color:#fff;font-size:14px;outline:none;box-shadow:0 0 0 3px #7c3aed1a}.profile-saveBtn{background:linear-gradient(135deg,#7c3aed,#6d28d9);border:none;border-radius:6px;color:#fff;font-size:16px;cursor:pointer;padding:8px 12px;transition:opacity .2s;flex-shrink:0}.profile-saveBtn:disabled{opacity:.5;cursor:not-allowed}.profile-cancelBtn{background:none;border:1px solid #dc262640;border-radius:6px;color:#dc2626;font-size:14px;cursor:pointer;padding:8px 10px;transition:background .2s;flex-shrink:0}.profile-cancelBtn:hover{background:#dc262615}.profile-logoutBtn{margin-top:auto;background:linear-gradient(135deg,#dc2626,#991b1b);color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:16px;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s}.profile-logoutBtn:hover{transform:translateY(-2px);box-shadow:0 10px 25px #dc26264d}.profile-logoutBtn:active{transform:translateY(0)}.app{width:100%;height:100vh}.app-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100vh;background:linear-gradient(135deg,#0a0e27,#1a1f3a);color:#fff;gap:16px}.app-spinner{width:40px;height:40px;border:3px solid #7c3aed30;border-top-color:#7c3aed;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.app-mainLayout{display:flex;width:100%;height:100vh}.app-sidebar{position:relative;width:320px;height:100vh;flex-shrink:0;overflow:hidden}.app-backdrop{position:fixed;top:0;bottom:0;left:320px;right:0;background:#00000073;z-index:5;cursor:pointer;animation:backdropIn .22s ease forwards}@keyframes backdropIn{0%{opacity:0}to{opacity:1}}@media (max-width: 768px){.app-sidebar{width:100%;flex-shrink:0}.app-sidebar--hidden{display:none}.app-backdrop{left:0}}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{width:100%;height:100%;background:#0a0e27;color:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{overflow:hidden}button,input,textarea,select{font-family:inherit}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#7c3aed40;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#7c3aed60}@supports (scrollbar-width: thin){*{scrollbar-width:thin;scrollbar-color:#7c3aed40 transparent}}
