@charset "UTF-8";.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-color);padding:2rem}.login-container{background:var(--card-bg);border-radius:16px;box-shadow:0 8px 32px #0000001a;padding:3rem;max-width:500px;width:100%;border:1px solid var(--border-color)}.login-header{text-align:center;margin-bottom:2.5rem}.login-header h1{font-size:2.5rem;margin-bottom:.5rem;color:var(--primary-color)}.login-header p{font-size:1.1rem;color:var(--text-secondary)}.login-content .login-options .github-login-btn{width:100%;padding:1rem 1.5rem;background:var(--primary-color);color:#fff;border:none;border-radius:12px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;gap:.75rem;margin-bottom:2rem}.login-content .login-options .github-login-btn:hover{background:var(--primary-hover);transform:translateY(-2px)}.login-content .login-options .github-login-btn .github-icon{width:24px;height:24px;fill:currentColor}.login-content .login-options .login-info{text-align:center}.login-content .login-options .login-info h3{font-size:1.3rem;margin-bottom:1rem;color:var(--text-color)}.login-content .login-options .login-info p{color:var(--text-secondary);margin-bottom:1.5rem;line-height:1.5}.login-content .login-options .login-info .features{display:flex;flex-direction:column;gap:.5rem}.login-content .login-options .login-info .features span{background:var(--bg-color);padding:.5rem 1rem;border-radius:20px;font-size:.9rem;border:1px solid var(--border-color);color:var(--text-color)}.login-content .token-form .form-header{text-align:center;margin-bottom:2rem}.login-content .token-form .form-header h3{font-size:1.5rem;margin-bottom:.5rem;color:var(--text-color)}.login-content .token-form .form-header p{color:var(--text-secondary);font-size:.95rem}.login-content .token-form .input-group{margin-bottom:1.5rem}.login-content .token-form .input-group label{display:block;margin-bottom:.5rem;font-weight:600;color:var(--text-color)}.login-content .token-form .input-group .token-input{width:100%;padding:.875rem 1rem;border:2px solid var(--border-color);border-radius:8px;font-size:1rem;background:var(--bg-color);color:var(--text-color);transition:border-color .2s ease}.login-content .token-form .input-group .token-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #0366d61a}.login-content .token-form .input-group .token-input::placeholder{color:var(--text-secondary)}.login-content .token-form .input-group .token-input:disabled{opacity:.6;cursor:not-allowed}.login-content .token-form .form-actions{display:flex;gap:1rem;margin-bottom:2rem}.login-content .token-form .form-actions .submit-btn{flex:1;padding:.875rem 1.5rem;background:var(--primary-color);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease}.login-content .token-form .form-actions .submit-btn:hover:not(:disabled){background:var(--primary-hover)}.login-content .token-form .form-actions .submit-btn:disabled{opacity:.5;cursor:not-allowed}.login-content .token-form .form-actions .back-btn{padding:.875rem 1.5rem;background:var(--card-bg);color:var(--text-color);border:2px solid var(--border-color);border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease}.login-content .token-form .form-actions .back-btn:hover:not(:disabled){background:var(--bg-color)}.login-content .token-form .form-actions .back-btn:disabled{opacity:.5;cursor:not-allowed}.login-content .token-form .token-help{background:var(--bg-color);border:1px solid var(--border-color);border-radius:8px;padding:1.5rem}.login-content .token-form .token-help h4{font-size:1.1rem;margin-bottom:1rem;color:var(--text-color)}.login-content .token-form .token-help ol{margin-bottom:1rem;padding-left:1.5rem;color:var(--text-secondary);line-height:1.6}.login-content .token-form .token-help ol li{margin-bottom:.5rem}.login-content .token-form .token-help ol li .token-link{color:var(--primary-color);text-decoration:none;font-weight:600;transition:color .2s ease}.login-content .token-form .token-help ol li .token-link:hover{color:var(--primary-hover);text-decoration:underline}.login-content .token-form .token-help ol li code{background:var(--card-bg);padding:.2rem .4rem;border-radius:4px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.9rem;color:var(--primary-color)}.login-content .token-form .token-help .warning{background:#fef3c7;color:#92400e;padding:.75rem 1rem;border-radius:6px;font-weight:600;text-align:center;border:1px solid #f59e0b}@media (max-width: 768px){.login-page{padding:1rem}.login-container{padding:2rem}.login-header h1{font-size:2rem}.login-header p{font-size:1rem}.login-content .token-form .form-actions{flex-direction:column}}.welcome__content{max-width:500px;text-align:center}@media (max-width: 968px){.welcome__content{max-width:100%}}.welcome__title{font-size:3rem;font-weight:700;margin-bottom:var(--spacing-md);background:linear-gradient(45deg,#fff,#e0e7ff);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}@media (max-width: 768px){.welcome__title{font-size:2.5rem}}.welcome__subtitle{font-size:1.25rem;margin-bottom:var(--spacing-2xl);opacity:.9;line-height:1.6}@media (max-width: 768px){.welcome__subtitle{font-size:1.1rem}}.welcome__features{display:grid;gap:var(--spacing-lg);text-align:left;margin-bottom:var(--spacing-2xl)}.welcome__repo-info{background:#ffffff1a;padding:var(--spacing-lg);border-radius:var(--radius-lg);text-align:left;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.welcome__repo-info h4{margin-bottom:var(--spacing-md);color:#ffffffe6}.feature{display:flex;align-items:flex-start;gap:var(--spacing-md)}.feature__icon{font-size:2rem;flex-shrink:0}.feature__text h3{font-size:1.1rem;font-weight:600;margin-bottom:var(--spacing-xs);color:#fffffff2}.feature__text p{margin:0;opacity:.8;line-height:1.5}.repo-info__item{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-sm)}.repo-info__item:last-child{margin-bottom:0}.repo-info .label{font-weight:500;opacity:.8;min-width:60px}.repo-info .value{font-family:Monaco,Menlo,monospace;font-size:.9rem}.repo-info .value.link{color:#ffffffe6;text-decoration:underline}.repo-info .value.link:hover{color:#fff}.login-form{width:100%;max-width:400px}.login-form__header{text-align:center;margin-bottom:var(--spacing-xl)}.login-form__header h2{font-size:2rem;font-weight:700;margin-bottom:var(--spacing-sm);color:var(--text-primary)}.login-form__header p{color:var(--text-secondary);margin:0}.login-form__error{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md);background-color:#dc35451a;border:1px solid var(--color-danger);border-radius:var(--radius-md);margin-bottom:var(--spacing-lg)}.login-form__error .error__icon{flex-shrink:0}.login-form__error .error__message{color:var(--color-danger);font-size:.9rem;margin:0}.login-form__info{margin-top:var(--spacing-xl);padding:var(--spacing-lg);background-color:var(--bg-secondary);border-radius:var(--radius-md)}.login-form__info h4,.login-form__info h5{margin-top:0;margin-bottom:var(--spacing-md);color:var(--text-primary)}.login-form__info h5{font-size:.9rem;margin-top:var(--spacing-lg)}.login-form__info ol,.login-form__info ul{padding-left:var(--spacing-lg)}.login-form__info ol li,.login-form__info ul li{margin-bottom:var(--spacing-sm);line-height:1.5}.login-form__info ol li:last-child,.login-form__info ul li:last-child{margin-bottom:0}.login-form__info code{background-color:var(--bg-tertiary);padding:.125rem .25rem;border-radius:var(--radius-sm);font-size:.875rem}.login-form__permissions{margin-top:var(--spacing-md)}.info__note{margin-top:var(--spacing-md);font-size:.875rem;color:var(--text-muted);font-style:italic}.token-form__field{margin-bottom:var(--spacing-lg)}.token-form__field label{display:block;font-weight:500;margin-bottom:var(--spacing-sm);color:var(--text-primary)}.token-form__field__help{margin-top:var(--spacing-sm);font-size:.875rem}.token-form__field__help a{color:var(--color-primary);text-decoration:none}.token-form__field__help a:hover{text-decoration:underline}.token-form__input{width:100%;padding:.75rem 1rem;border:1px solid var(--border-primary);border-radius:var(--radius-md);font-size:1rem;background-color:var(--bg-primary);color:var(--text-primary);transition:border-color var(--transition-fast)}.token-form__input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #0366d61a}.token-form__input:disabled{opacity:.6;cursor:not-allowed}.token-form__input::placeholder{color:var(--text-muted)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{background:var(--bg-color);border-radius:12px;padding:24px;max-width:500px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:0 10px 25px #0003;border:1px solid var(--border-color);animation:modalSlideIn .3s ease-out}.modal .modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border-color)}.modal .modal-header h2{margin:0;font-size:1.5rem;font-weight:600;color:var(--text-color)}.modal .modal-header .close-button{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--text-muted);padding:4px;border-radius:4px;transition:all .2s ease}.modal .modal-header .close-button:hover{background-color:var(--hover-color);color:var(--text-color)}.modal .modal-body{margin-bottom:20px}.modal .modal-footer{display:flex;justify-content:flex-end;gap:12px;padding-top:16px;border-top:1px solid var(--border-color)}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}[data-theme=dark] .modal{background:var(--bg-color);border-color:var(--border-color)}.input-group{margin-bottom:16px}.input-group label{display:block;margin-bottom:6px;font-weight:500;color:var(--text-color);font-size:.9rem}.input-group .input-field{width:100%;padding:12px 16px;border:1px solid var(--border-color);border-radius:8px;font-size:1rem;background-color:var(--bg-color);color:var(--text-color);transition:all .2s ease;box-sizing:border-box}.input-group .input-field:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px rgba(var(--primary-color-rgb),.1)}.input-group .input-field::placeholder{color:var(--text-muted)}.input-group .input-field.error{border-color:var(--error-color);box-shadow:0 0 0 3px rgba(var(--error-color-rgb),.1)}.input-group textarea.input-field{min-height:100px;resize:vertical;font-family:inherit}.input-group .error-message{margin-top:4px;font-size:.8rem;color:var(--error-color)}.input-group .help-text{margin-top:4px;font-size:.8rem;color:var(--text-muted)}[data-theme=dark] .input-group .input-field{background-color:var(--bg-color);border-color:var(--border-color);color:var(--text-color)}[data-theme=dark] .input-group .input-field:focus{border-color:var(--primary-color)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:inherit;font-weight:500;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;user-select:none;border:1px solid transparent;border-radius:6px;cursor:pointer;transition:all .2s ease;text-decoration:none}.btn:focus{outline:2px solid var(--primary-color);outline-offset:2px}.btn--small{padding:6px 12px;font-size:.875rem;line-height:1.25}.btn--medium{padding:8px 16px;font-size:1rem;line-height:1.5}.btn--large{padding:12px 24px;font-size:1.125rem;line-height:1.5}.btn--primary{background-color:var(--primary-color);border-color:var(--primary-color);color:#fff}.btn--primary:hover:not(:disabled){background-color:var(--primary-dark);border-color:var(--primary-dark)}.btn--primary:active:not(:disabled){transform:translateY(1px)}.btn--secondary{background-color:var(--card-bg-color);border-color:var(--border-color);color:var(--text-color)}.btn--secondary:hover:not(:disabled){background-color:var(--hover-color);border-color:var(--border-color)}.btn--danger{background-color:var(--danger-color);border-color:var(--danger-color);color:#fff}.btn--danger:hover:not(:disabled){background-color:var(--danger-hover-color);border-color:var(--danger-hover-color)}.btn--ghost{background-color:transparent;border-color:transparent;color:var(--text-muted)}.btn--ghost:hover:not(:disabled){background-color:var(--hover-color);color:var(--text-color)}.btn--full-width{width:100%}.btn--loading{position:relative;pointer-events:none;opacity:.7}.btn--disabled,.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn__icon{display:flex;align-items:center;justify-content:center}.btn__icon svg{width:1em;height:1em}.btn__text{flex:1}.btn__loading{display:flex;align-items:center;justify-content:center;gap:8px}.btn__spinner{width:1em;height:1em;border:2px solid transparent;border-top:2px solid currentColor;border-radius:50%;animation:btn-spin 1s linear infinite}@keyframes btn-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}.loading__spinner{width:40px;height:40px;border:3px solid var(--border-color);border-top:3px solid var(--primary-color);border-radius:50%;animation:spin 1s linear infinite}.loading__message{color:var(--text-secondary);font-size:14px;text-align:center}.loading--small .loading__spinner{width:24px;height:24px;border-width:2px}.loading--small .loading__message{font-size:12px}.loading--large .loading__spinner{width:60px;height:60px;border-width:4px}.loading--large .loading__message{font-size:16px}.chat-room-form .form-content{display:flex;flex-direction:column;gap:16px}.chat-room-form .form-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:20px}.chat-room-form .description-field .input-field{min-height:120px}.chat-room-form .form-info{background-color:var(--info-bg-color);border:1px solid var(--info-border-color);border-radius:8px;padding:12px;margin-bottom:16px;font-size:.9rem;color:var(--info-text-color)}.chat-room-form .form-info .info-title{font-weight:600;margin-bottom:4px}.chat-room-form .form-info .info-text{margin:0;line-height:1.4}[data-theme=dark] .chat-room-form .form-info{background-color:var(--info-bg-color);border-color:var(--info-border-color);color:var(--info-text-color)}.error-message{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md);padding:var(--spacing-lg);background-color:#dc35451a;border:1px solid var(--color-danger);border-radius:var(--radius-md);text-align:center}.error-message__icon{font-size:2rem}.error-message__text{color:var(--color-danger);font-weight:500;margin:0;line-height:1.5}.error-message__retry{margin-top:var(--spacing-sm)}.chat-list-page{max-width:520px;width:100%;margin:0 auto;padding:20px;min-height:100vh;background-color:var(--bg-color);color:var(--text-color)}.chat-list-page .chat-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;padding-bottom:20px;border-bottom:1px solid var(--border-color);gap:0}.chat-list-page .chat-list-header h1{margin:0;font-size:2rem;font-weight:700;color:var(--text-color)}.chat-list-page .chat-list-header .header-actions{display:flex;align-items:center;gap:10px}.chat-list-page .chat-list-header .header-actions .user-info{display:flex;align-items:center;gap:8px}.chat-list-page .chat-list-header .header-actions .user-info .user-profile{display:flex;align-items:center;gap:6px}.chat-list-page .chat-list-header .header-actions .user-info .user-profile .user-avatar{width:32px;height:32px;border-radius:50%;object-fit:cover}.chat-list-page .chat-list-header .header-actions .user-info .user-profile .user-name{font-weight:500;color:var(--text-color)}.chat-list-page .chat-list-header .header-actions .theme-toggle-btn{margin-left:16px}.chat-list-page .chat-list-header .header-actions .logout-btn{margin-left:10px}.chat-list-page .chat-list-content .loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.chat-list-page .chat-list-content .loading-container p{margin-top:16px;color:var(--text-muted)}.chat-list-page .chat-list-content .empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 20px;text-align:center}.chat-list-page .chat-list-content .empty-state p{margin-bottom:20px;font-size:1.1rem;color:var(--text-muted)}.chat-list-page .chat-list-content .chat-room-list{display:flex;flex-direction:column;gap:20px}.chat-list-page .chat-list-content .chat-room-card{cursor:pointer;display:flex;align-items:flex-start;background:var(--card-bg-color);border:1.5px solid var(--border-color);border-radius:16px;box-shadow:0 2px 12px #0000000f;padding:24px 28px;position:relative;transition:box-shadow .2s,border-color .2s,transform .15s;min-height:120px}.chat-list-page .chat-list-content .chat-room-card:hover{border-color:var(--primary-color);box-shadow:0 6px 24px #0366d614;transform:translateY(-2px) scale(1.01)}.chat-list-page .chat-list-content .chat-room-card .room-link{flex:1;text-decoration:none;color:inherit;display:flex;flex-direction:column;gap:10px}.chat-list-page .chat-list-content .chat-room-card .room-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:2px}.chat-list-page .chat-list-content .chat-room-card .room-title-row{display:flex;align-items:center;gap:10px}.chat-list-page .chat-list-content .chat-room-card .room-title{font-size:1.15rem;font-weight:700;margin:0;color:var(--text-color);letter-spacing:-.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-list-page .chat-list-content .chat-room-card .room-label.chat-label{background:#0e8a16;color:#fff;font-size:.75rem;font-weight:600;border-radius:10px;padding:2px 10px;margin-left:2px;letter-spacing:.5px}.chat-list-page .chat-list-content .chat-room-card .room-last-message{font-size:.98rem;color:var(--text-muted);margin-bottom:2px;line-height:1.5;min-height:1.5em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.chat-list-page .chat-list-content .chat-room-card .no-message{color:var(--text-light);font-style:italic}.chat-list-page .chat-list-content .chat-room-card .room-meta{display:flex;align-items:center;gap:12px;font-size:.85rem;color:var(--text-muted);margin-top:2px}.chat-list-page .chat-list-content .chat-room-card .room-meta .room-creator-avatar{width:28px;height:28px;border-radius:50%;object-fit:cover;border:1.5px solid var(--border-color);margin-right:2px}.chat-list-page .chat-list-content .chat-room-card .room-meta .room-creator{font-weight:500;color:var(--primary-color)}.chat-list-page .chat-list-content .chat-room-card .room-meta .room-timestamp{color:var(--text-light);font-size:.82rem}.chat-list-page .chat-list-content .chat-room-card .room-meta .room-message-count{color:var(--text-muted);font-size:.82rem;display:flex;align-items:center;gap:2px}.chat-list-page .chat-list-content .chat-room-card .room-actions{display:flex;flex-direction:column;gap:8px;position:absolute;top:18px;right:18px}.chat-list-page .chat-list-content .chat-room-card .room-action-btn{background:none;border:none;padding:0;cursor:pointer;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:8px;transition:background .18s}.chat-list-page .chat-list-content .chat-room-card .room-action-btn:hover{background:var(--hover-color)}.chat-list-page .chat-list-content .chat-room-card .room-action-btn img{width:20px;height:20px;object-fit:contain;background:var(--card-bg-color);border-radius:6px;padding:3px}.chat-list-page .auth-required{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 20px;text-align:center}.chat-list-page .auth-required p{margin-bottom:20px;font-size:1.1rem;color:var(--text-muted)}.chat-list-page .auth-required a{color:var(--primary-color);text-decoration:none;font-weight:500}.chat-list-page .auth-required a:hover{text-decoration:underline}.delete-confirmation{text-align:center}.delete-confirmation p{margin:0 0 12px;line-height:1.5;color:var(--text-color)}.delete-confirmation p:last-child{margin-bottom:0;font-size:.9rem;color:var(--text-muted)}[data-theme=dark] .chat-list-page{background-color:var(--bg-color)}[data-theme=dark] .chat-list-page .chat-list-header{border-bottom-color:var(--border-color)}[data-theme=dark] .chat-list-page .chat-list-header h1,[data-theme=dark] .chat-list-page .chat-list-header .user-info .user-profile .user-name{color:var(--text-color)}[data-theme=dark] .chat-list-page .chat-list-content .chat-room-card{background-color:var(--card-bg-color);border-color:var(--border-color)}[data-theme=dark] .chat-list-page .chat-list-content .chat-room-card:hover{border-color:var(--primary-color)}[data-theme=dark] .chat-list-page .chat-list-content .chat-room-card .room-link .room-title{color:var(--text-color)}.create-room-bar{display:flex;justify-content:center;margin-bottom:28px}.create-room-bar button{font-size:1.1rem;padding:.9em 2.2em;border-radius:10px;font-weight:600;box-shadow:0 2px 8px #0366d612;letter-spacing:.5px}.theme-toggle-btn{background:none;border:none;cursor:pointer;padding:6px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .18s;margin-right:8px}.theme-toggle-btn:hover{background:var(--hover-color)}.theme-toggle-btn img{width:24px;height:24px;display:block}.chat-list-actions-bar{display:flex;flex-direction:column;align-items:stretch;gap:0;margin:24px 0 28px}.chat-list-actions-bar .profile-logout-row{display:flex;align-items:center;justify-content:space-between;width:100%;margin-bottom:16px;gap:0}.chat-list-actions-bar .profile-logout-row .user-info{display:flex;align-items:center;gap:8px}.chat-list-actions-bar .profile-logout-row .user-info .user-profile{display:flex;align-items:center;gap:6px}.chat-list-actions-bar .profile-logout-row .user-info .user-profile .user-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover}.chat-list-actions-bar .profile-logout-row .user-info .user-profile .user-name{font-weight:500;color:var(--text-color);font-size:1.05rem}.chat-list-actions-bar .profile-logout-row .logout-btn-wrap{display:flex;align-items:center;justify-content:flex-end;flex:1}.chat-list-actions-bar .profile-logout-row .logout-btn{height:36px;padding:0 18px;background-color:var(--danger-color);color:#fff;border:none;border-radius:10px;cursor:pointer;font-size:1rem;font-weight:600;box-shadow:0 2px 8px #dc354514;transition:background .18s,box-shadow .18s;display:flex;align-items:center;justify-content:center;margin-left:8px}.chat-list-actions-bar .profile-logout-row .logout-btn:hover{background-color:var(--danger-hover-color);box-shadow:0 4px 16px #dc354526}.chat-list-actions-bar .create-room-btn{width:100%;font-size:1.08rem;height:36px;padding:0 18px;border-radius:10px;font-weight:600;box-shadow:0 2px 8px #0366d612;letter-spacing:.5px;margin-top:0}@media (max-width: 430px){.chat-list-page .chat-list-header h1{font-size:1.4rem}}.avatar{display:inline-block;border-radius:50%;overflow:hidden;background-color:var(--bg-tertiary);flex-shrink:0}.avatar--small{width:32px;height:32px}.avatar--medium{width:40px;height:40px}.avatar--large{width:56px;height:56px}.avatar__image{width:100%;height:100%;object-fit:cover;display:block;transition:transform var(--transition-fast)}.avatar:hover .avatar__image{transform:scale(1.05)}.header{background-color:var(--bg-primary);border-bottom:1px solid var(--border-primary);position:sticky;top:0;z-index:100;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.header__container{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);max-width:1200px;margin:0 auto}@media (max-width: 768px){.header__container{padding:var(--spacing-sm) var(--spacing-md)}}.header__brand{display:flex;flex-direction:column}@media (max-width: 640px){.header__brand{flex:1;min-width:0}}.header__title{font-size:1.5rem;font-weight:700;color:var(--text-primary);margin-bottom:.125rem}@media (max-width: 640px){.header__title{font-size:1.25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.header__subtitle{font-size:.875rem;color:var(--text-tertiary);font-family:Monaco,Menlo,monospace}@media (max-width: 640px){.header__subtitle{font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.header__menu{display:flex;align-items:center;gap:var(--spacing-md)}@media (max-width: 640px){.header__menu{gap:var(--spacing-sm)}}.header__theme-toggle{font-size:1.25rem}@media (max-width: 640px){.header__theme-toggle{font-size:1rem}}.header__user{display:flex;align-items:center;gap:var(--spacing-sm)}@media (max-width: 480px){.header__user{display:none}}.header__username{font-size:.875rem;font-weight:500;color:var(--text-secondary)}@media (max-width: 640px){.header__username{display:none}}.header__theme-icon{width:24px;height:24px;transition:transform .3s ease-in-out}.header__theme-toggle:hover .header__theme-icon{transform:rotate(15deg) scale(1.1)}.chat-page{background:var(--bg-color);color:var(--text-color);display:flex;flex-direction:column;overflow:hidden;min-height:100vh}.chat-page .loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;padding:60px 20px;text-align:center}.chat-page .loading-container p{margin-top:16px;color:var(--text-muted)}.chat-page .error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;padding:60px 20px;text-align:center;gap:20px}.chat-page__content{max-width:900px;margin:0 auto;padding:2rem;width:100%;display:flex;flex-direction:column;flex:1}.chat-page__unauthorized{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;text-align:center;padding:2rem}.chat-page__unauthorized h2{font-size:2rem;margin-bottom:1rem;color:var(--primary-color)}.chat-page__unauthorized p{font-size:1.1rem;color:var(--text-muted);margin-bottom:1rem}.chat-page__unauthorized .login-info{background:var(--card-bg-color);padding:1rem;border-radius:8px;border:1px solid var(--border-color)}.chat-page__unauthorized .login-info p{margin:0;color:var(--text-color)}.chat-page__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:2rem;flex-shrink:0;padding-bottom:1rem;border-bottom:1px solid var(--border-color)}.chat-page__header .room-info{flex:1}.chat-page__header .room-info h1{color:var(--primary-dark);font-size:2.2rem;font-weight:800;letter-spacing:-1px;text-shadow:0 2px 8px rgba(74,98,138,.08);margin-bottom:.5rem}.chat-page__header .room-info .room-description{color:#4a628a;font-size:1.15rem;font-weight:500;background:#7ab2d31a;border-radius:8px;padding:.7em 1em;margin-bottom:1.2rem;line-height:1.7}.chat-page__header .room-info .room-meta{display:flex;align-items:center;gap:12px;font-size:.9rem;color:var(--text-muted)}.chat-page__header .room-info .room-meta .room-creator{font-weight:500;color:var(--primary-color)}.chat-page__header .room-info .room-meta .room-created:before,.chat-page__header .room-info .room-meta .room-message-count:before{content:"•";margin-right:8px}.chat-page__header .room-actions{display:flex;gap:8px;margin-left:20px}.chat-page .chat-container{position:relative;flex:1;display:flex;flex-direction:column;min-height:0;margin-bottom:1rem}.chat-page .floating-buttons{position:fixed;bottom:120px;right:10px;z-index:10;display:flex;flex-direction:column;gap:12px}.chat-page .floating-buttons .floating-btn{width:48px;height:48px;border-radius:50%;background-color:rgba(var(--primary-color-rgb),.2);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--primary-color);border:1px solid rgba(var(--primary-color-rgb),.3);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1.5rem;box-shadow:var(--shadow-lg);transition:all .2s ease}.chat-page .floating-buttons .floating-btn:hover{background-color:rgba(var(--primary-color-rgb),.3);border-color:rgba(var(--primary-color-rgb),.5);transform:translateY(-2px) scale(1.05)}.chat-page__chat-section{background:var(--card-bg-color);border-radius:16px;border:1px solid var(--border-color);flex:1;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-sm)}.chat-page .chat-messages{flex:1;overflow-y:auto;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.chat-page .chat-messages .empty-messages{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:3rem 1rem;color:var(--text-muted)}.chat-page .chat-messages .empty-messages .empty-icon{font-size:3rem;margin-bottom:1rem}.chat-page .chat-messages .empty-messages h3{font-size:1.5rem;margin:0 0 .5rem;color:var(--text-color)}.chat-page .chat-messages .empty-messages p{margin:0 0 2rem;font-size:1rem}.chat-page .chat-messages .empty-messages .chat-features{display:flex;flex-direction:column;gap:.5rem;font-size:.9rem}.chat-page .chat-messages .empty-messages .chat-features span{padding:.5rem 1rem;background:var(--hover-color);border-radius:20px;border:1px solid var(--border-color)}.chat-page .chat-messages .message{display:flex;margin-bottom:1rem;gap:.75rem}.chat-page .chat-messages .message--own{flex-direction:row-reverse}.chat-page .chat-messages .message--own .message-content{background-color:var(--primary-color);color:#fff;border-radius:1rem 1rem .25rem}.chat-page .chat-messages .message--own .message-actions{justify-content:flex-end}.chat-page .chat-messages .message-avatar{width:2.5rem;height:2.5rem;border-radius:50%;overflow:hidden;flex-shrink:0}.chat-page .chat-messages .message-avatar img{width:100%;height:100%;object-fit:cover}.chat-page .chat-messages .message-content{background-color:var(--background-secondary);padding:.75rem 1rem;border-radius:1rem 1rem 1rem .25rem;max-width:70%;position:relative}.chat-page .chat-messages .message-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem;font-size:.875rem}.chat-page .chat-messages .message-author{font-weight:600;color:var(--text-primary)}.chat-page .chat-messages .message-time{color:var(--text-secondary);font-size:.75rem}.chat-page .chat-messages .message-edited{color:var(--text-tertiary);font-style:italic}.chat-page .chat-messages .message-text{line-height:1.4;word-wrap:break-word}.chat-page .chat-messages .message-actions{display:flex;gap:.25rem;margin-top:.5rem}.chat-page .message-input-form{background:var(--card-bg-color);border:1px solid var(--border-color);border-radius:12px;padding:1rem;margin-top:1rem}.chat-page .message-input-form .input-wrapper{display:flex;gap:12px;align-items:flex-end}.chat-page .message-input-form .input-wrapper .message-input{flex:1;padding:12px 16px;border:1px solid var(--border-color);border-radius:8px;font-size:1rem;background:var(--bg-color);color:var(--text-color);resize:none;min-height:44px;max-height:120px;font-family:inherit}.chat-page .message-input-form .input-wrapper .message-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px rgba(var(--primary-color-rgb),.1)}.chat-page .message-input-form .input-wrapper .message-input::placeholder{color:var(--text-muted)}.chat-page .message-input-form .input-wrapper .message-input:disabled{opacity:.6;cursor:not-allowed}.message-action-btn{background:none;border:none;padding:.25rem;border-radius:.25rem;cursor:pointer;font-size:.875rem;display:flex;align-items:center;justify-content:center;width:32px;height:32px;transition:background-color .2s ease}.message-action-btn:hover{background-color:rgba(var(--primary-color-rgb),.1)}.message-action-btn img{background:var(--card-bg-color);border-radius:6px;padding:3px;transition:background .2s;width:20px;height:20px;object-fit:contain}.message-action-btn--edit:hover{background-color:#3b82f61a}.message-action-btn--delete:hover{background-color:#ef44441a}[data-theme=dark] .message-action-btn img{background:#ffffff65}.edit-message-modal .edit-message-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1rem}[data-theme=dark] .chat-page{background:var(--bg-color)}[data-theme=dark] .chat-page__header{border-bottom-color:var(--border-color)}[data-theme=dark] .chat-page__header .room-info h1{color:var(--text-color)}[data-theme=dark] .chat-page__header .room-info .room-description{color:#fff}[data-theme=dark] .chat-page__chat-section{background:var(--card-bg-color);border-color:var(--border-color)}[data-theme=dark] .chat-page .chat-messages .message .message-content{background:var(--bg-color);border-color:var(--border-color)}[data-theme=dark] .chat-page .chat-messages .message .message-content .message-header .message-author{color:var(--text-color)}[data-theme=dark] .chat-page .message-input-form{background:var(--card-bg-color);border-color:var(--border-color)}[data-theme=dark] .chat-page .message-input-form .message-input{background:var(--bg-color);border-color:var(--border-color);color:var(--text-color)}[data-theme=dark] .chat-page .message-input-form .message-input:focus{border-color:var(--primary-color)}@media (max-width: 768px){.chat-page__content{padding:1rem}.chat-page__header{flex-direction:column;gap:1rem}.chat-page__header .room-actions{margin-left:0;justify-content:flex-end}.chat-page .floating-buttons{bottom:100px;right:8px}.chat-page .floating-buttons .floating-btn{width:40px;height:40px;font-size:1.25rem}.chat-page .chat-messages{padding:1rem}.chat-page .chat-messages .message .message-content{max-width:85%}}.chat-edit-page{background:var(--bg-color);color:var(--text-color);min-height:100vh;display:flex;flex-direction:column}.chat-edit-page .loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;padding:60px 20px;text-align:center}.chat-edit-page .loading-container p{margin-top:16px;color:var(--text-muted)}.chat-edit-page .error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;padding:60px 20px;text-align:center;gap:20px}.chat-edit-page .error-container .back-btn{padding:12px 24px;background-color:var(--primary-color);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:background-color .2s ease}.chat-edit-page .error-container .back-btn:hover{background-color:var(--primary-dark)}.chat-edit-page .auth-required{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;padding:60px 20px;text-align:center}.chat-edit-page .auth-required h2{font-size:2rem;margin-bottom:1rem;color:var(--primary-color)}.chat-edit-page .auth-required p{font-size:1.1rem;color:var(--text-muted)}.chat-edit-page .chat-edit-content{max-width:600px;margin:0 auto;padding:2rem;width:100%;flex:1}.chat-edit-page .chat-edit-content .edit-header{text-align:center;margin-bottom:2rem}.chat-edit-page .chat-edit-content .edit-header h1{font-size:2rem;margin:0 0 .5rem;color:var(--text-color);font-weight:700}.chat-edit-page .chat-edit-content .edit-header p{font-size:1rem;color:var(--text-muted);margin:0}.chat-edit-page .chat-edit-content .edit-form-container{background:var(--card-bg-color);border:1px solid var(--border-color);border-radius:12px;padding:2rem;box-shadow:var(--shadow-sm)}[data-theme=dark] .chat-edit-page{background:var(--bg-color)}[data-theme=dark] .chat-edit-page .chat-edit-content .edit-header h1{color:var(--text-color)}[data-theme=dark] .chat-edit-page .chat-edit-content .edit-form-container{background:var(--card-bg-color);border-color:var(--border-color)}@media (max-width: 768px){.chat-edit-page .chat-edit-content{padding:1rem}.chat-edit-page .chat-edit-content .edit-header h1{font-size:1.75rem}.chat-edit-page .chat-edit-content .edit-form-container{padding:1.5rem}}.auth-callback{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-color);padding:2rem}.callback-container{background:var(--card-bg);border-radius:16px;box-shadow:0 8px 32px #0000001a;padding:3rem;max-width:500px;width:100%;border:1px solid var(--border-color);text-align:center}.callback-header{margin-bottom:2.5rem}.callback-header h1{font-size:2.5rem;margin-bottom:.5rem;color:var(--primary-color)}.callback-header p{font-size:1.1rem;color:var(--text-secondary)}.loading-section .loading-spinner{width:48px;height:48px;border:4px solid var(--border-color);border-top:4px solid var(--primary-color);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 1rem}.loading-section p{color:var(--text-secondary);font-size:1.1rem}.error-section .error-message{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:1rem;margin-bottom:2rem;display:flex;align-items:center;gap:.75rem}.error-section .error-message .error-icon{font-size:1.5rem}.error-section .error-message p{color:#dc2626;margin:0;font-weight:500}.error-section .token-form .form-header{text-align:center;margin-bottom:2rem}.error-section .token-form .form-header h3{font-size:1.5rem;margin-bottom:.5rem;color:var(--text-color)}.error-section .token-form .form-header p{color:var(--text-secondary);font-size:.95rem}.error-section .token-form .input-group{margin-bottom:1.5rem;text-align:left}.error-section .token-form .input-group label{display:block;margin-bottom:.5rem;font-weight:600;color:var(--text-color)}.error-section .token-form .input-group .token-input{width:100%;padding:.875rem 1rem;border:2px solid var(--border-color);border-radius:8px;font-size:1rem;background:var(--bg-color);color:var(--text-color);transition:border-color .2s ease}.error-section .token-form .input-group .token-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #0366d61a}.error-section .token-form .input-group .token-input::placeholder{color:var(--text-secondary)}.error-section .token-form .input-group .token-input:disabled{opacity:.6;cursor:not-allowed}.error-section .token-form .submit-btn{width:100%;padding:.875rem 1.5rem;background:var(--primary-color);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease}.error-section .token-form .submit-btn:hover:not(:disabled){background:var(--primary-hover)}.error-section .token-form .submit-btn:disabled{opacity:.5;cursor:not-allowed}.success-section .success-message .success-icon{font-size:3rem;margin-bottom:1rem;display:block}.success-section .success-message h3{font-size:1.5rem;margin-bottom:.5rem;color:var(--text-color)}.success-section .success-message p{color:var(--text-secondary);font-size:1.1rem}.callback-footer{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--border-color)}.callback-footer .back-link{color:var(--primary-color);text-decoration:none;font-weight:600;transition:color .2s ease}.callback-footer .back-link:hover{color:var(--primary-hover)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.auth-callback{padding:1rem}.callback-container{padding:2rem}.callback-header h1{font-size:2rem}.callback-header p{font-size:1rem}}:root{--primary-color: #5B9BD5;--primary-color-rgb: 91, 155, 213;--primary-light: #7AB2D3;--primary-dark: #4A628A;--success-color: #28a745;--success-color-rgb: 40, 167, 69;--danger-color: #FF8A8A;--danger-color-rgb: 255, 138, 138;--danger-hover-color: #FF4F4F;--warning-color: #ffc107;--info-color: #17a2b8;--bg-color: #ffffff;--card-bg-color: #f8f9fa;--hover-color: #f1f3f4;--text-color: #212529;--text-muted: #6c757d;--text-light: #adb5bd;--border-color: #e9ecef;--border-light: #f1f3f4;--info-bg-color: #e3f2fd;--info-border-color: #bbdefb;--info-text-color: #1565c0;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1)}[data-theme=dark]{--bg-color: #212529;--card-bg-color: #343a40;--hover-color: #495057;--text-color: #f1f3f4;--text-muted: #ced4da;--text-light: #adb5bd;--border-color: #495057;--border-light: #6c757d;--info-bg-color: #1e3a5f;--info-border-color: #2d5a8b;--info-text-color: #90caf9}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}button{background:none;border:none;padding:0;cursor:pointer;font-family:inherit}input,textarea,select{font-family:inherit;font-size:inherit}a{text-decoration:none;color:inherit}img{max-width:100%;height:auto}*:focus{outline:none}*,*:before,*:after{box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}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;line-height:1.6;margin:0;padding:0;background-color:var(--bg-color);color:var(--text-color);transition:background-color .25s ease,color .25s ease}:root{--color-primary: #5B9BD5;--color-primary-light: #7AB2D3;--color-primary-dark: #4A628A;--color-success: #28a745;--color-danger: #FF8A8A;--color-warning: #ffc107;--color-info: #17a2b8;--color-gray-50: #f8f9fa;--color-gray-100: #f1f3f4;--color-gray-200: #e9ecef;--color-gray-300: #dee2e6;--color-gray-400: #ced4da;--color-gray-500: #adb5bd;--color-gray-600: #6c757d;--color-gray-700: #495057;--color-gray-800: #343a40;--color-gray-900: #212529;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .35s ease;--bg-color: #eceef3;--text-color: #212529;--text-secondary: #6c757d;--primary-color: #5B9BD5;--primary-color-rgb: 3, 102, 214;--primary-hover: #4A628A;--card-bg: white;--border-color: #e9ecef}[data-theme=light]{--bg-primary: #f8f9fa;--bg-secondary: #f1f3f4;--bg-tertiary: #e9ecef;--bg-hover: #dee2e6;--bg-overlay: rgba(0, 0, 0, .5);--text-primary: #212529;--text-secondary: #495057;--text-tertiary: #6c757d;--text-muted: #adb5bd;--text-inverse: #f8f9fa;--border-primary: #dee2e6;--border-secondary: #e9ecef;--border-focus: var(--color-primary);--shadow-color: rgba(0, 0, 0, .1)}[data-theme=dark]{--bg-primary: #1a1a1a;--bg-secondary: #2d2d2d;--bg-tertiary: #404040;--bg-hover: #4a4a4a;--bg-overlay: rgba(0, 0, 0, .7);--text-primary: #ffffff;--text-secondary: #e0e0e0;--text-tertiary: #b0b0b0;--text-muted: #808080;--text-inverse: #000000;--border-primary: #404040;--border-secondary: #2d2d2d;--border-focus: var(--color-primary);--shadow-color: rgba(0, 0, 0, .3);--bg-color: #212529;--text-color: #f1f3f4;--text-secondary: #adb5bd;--primary-color: #7AB2D3;--primary-color-rgb: 31, 122, 232;--primary-hover: #5B9BD5;--card-bg: #343a40;--border-color: #495057}.app{display:flex;flex-direction:column;min-height:100vh}.app__loading{display:flex;align-items:center;justify-content:center;min-height:100vh;background-color:var(--bg-primary)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.d-none{display:none}.d-block{display:block}.d-flex{display:flex}.d-inline{display:inline}.d-inline-block{display:inline-block}.flex-column{flex-direction:column}.flex-row{flex-direction:row}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.align-center{align-items:center}.align-start{align-items:flex-start}.align-end{align-items:flex-end}.w-full{width:100%}.h-full{height:100%}.m-0{margin:0}.p-0{padding:0}@media (max-width: 768px){.mobile-hidden{display:none}.mobile-visible{display:block}}@media (min-width: 769px){.desktop-hidden{display:none}.desktop-visible{display:block}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--bg-color)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}*:focus{outline:2px solid var(--color-primary);outline-offset:2px}button:focus,input:focus,textarea:focus,select:focus{outline:2px solid var(--color-primary);outline-offset:2px}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-primary-dark);text-decoration:underline}a:focus{outline:2px solid var(--color-primary);outline-offset:2px}input,textarea,select{font-family:inherit;font-size:inherit;line-height:inherit}code{font-family:Monaco,Menlo,Ubuntu Mono,monospace;background-color:var(--bg-tertiary);padding:.125rem .25rem;border-radius:var(--radius-sm);font-size:.875em}pre{background-color:var(--bg-secondary);padding:var(--spacing-md);border-radius:var(--radius-md);overflow-x:auto}pre code{background:none;padding:0}
