:root{--primary-color:#0d6efd;--secondary-color:#6c757d;
--background-color:#f0f2f5;--container-bg:#ffffff;--sidebar-bg:#f8f9fa;--toolbar-bg:#f8f9fa;
--text-color:#212529;--light-text-color:#ffffff;--border-color:#dee2e6;
--my-message-bg:#cce5ff;--their-message-bg:#e9ecef;--system-message-color:#6c757d;--success-color:#198754;--danger-color:#dc3545;
--bubble-color-1:#e0f7fa;--bubble-text-1:#004d40;
--bubble-color-2:#f1f8e9;--bubble-text-5:#33691e;
--bubble-color-3:#e8eaf6;--bubble-text-3:#1a237e;
--bubble-color-4:#e3f2fd;--bubble-text-4:#0d47a1;
--bubble-color-5:#fce4ec;--bubble-text-2:#880e4f;
--bubble-color-6:#fffde7;--bubble-text-6:#f57f17}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;background-color:var(--background-color);color:var(--text-color);line-height:1.6;display:flex;justify-content:center;align-items:center;min-height:100vh;display:flex;flex-direction:column}
.main-container{width:100%;height:100vh;max-width:1100px;max-height:900px;background-color:var(--container-bg);border-radius:8px;box-shadow:0 4px 15px rgba(0,0,0,0.1);overflow:hidden;display:flex;flex-grow:1}
.page-footer{text-align:center;padding:2px;color:var(--system-message-color);font-size:0.8rem;flex-shrink:0}
.form-container{max-width:500px;margin:auto}
.form-container h2{margin:1em}
.form-group{margin-bottom:1rem}
.form-group label{display:block;margin-bottom:0.5rem;font-weight:bold}
.form-group input,.form-group select{width:100%;padding:0.75rem;border:1px solid var(--border-color);border-radius:4px;font-size:1rem}
button{font-family:inherit;font-size:1rem;cursor:pointer;border-radius:4px;border:none}
.button-link{width:100%;padding:0.75rem;background-color:var(--primary-color);color:var(--light-text-color);font-weight:bold;text-align:center;text-decoration:none;display:inline-block}
.btn-danger{background-color:var(--danger-color);color:var(--light-text-color);padding:0.5em}
.btn-secondary{background-color:var(--secondary-color);color:var(--light-text-color)}
button:hover{filter:brightness(90%)}
.status-message,.error-message{margin-top:1rem;text-align:center;color:var(--danger-color)}
.error-message{margin-top:1rem;text-align:center;color:var(--danger-color)}
.centered-text{text-align:center}
.centered-text p{margin-bottom:2rem}
.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,0.6);display:none;justify-content:center;align-items:center;z-index:1000}
.modal-overlay.is-visible{display:flex}
.modal-content{background-color:var(--container-bg);padding:1.1rem 1.6em 1.5em;border-radius:7px;width:90%;max-width:400px;box-shadow:0 5px 15px rgba(0,0,0,0.3)}
.modal-content p{padding:1em 0 1.5em}
.paste-preview-modal img{max-width:100%;max-height:50vh;margin:1rem 0;border-radius:4px}
.modal-buttons{display:flex;gap:1rem}
.modal-buttons button{width:100%;padding:0.5rem}
.chat-wrapper{display:flex;width:100%;height:100%;overflow:hidden;position:relative}
.sidebar{min-width:240px;background-color:var(--sidebar-bg);border-right:1px solid var(--border-color);display:flex;flex-direction:column;padding:0.5em 1rem 0.8em;transition:transform 0.3s ease-in-out;flex-grow:0}
.sidebar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:0.7rem}
.sidebar-header h3{margin:0;text-align:left}
.close-sidebar-btn{display:none;background:none;border:none;font-size:1.5rem;color:var(--secondary-color);cursor:pointer;padding:0 0.5rem;margin-right:-10px;line-height:1}
.close-sidebar-btn:hover{color:var(--primary-color)}
#user-list{list-style:none;flex-grow:1;overflow-y:auto}
#user-list li{padding:0.4em 0.2rem 0.1em 0.2em;display:flex;align-items:center;border-bottom:1px solid #e0e0e0;gap:0.2rem}
#user-list li::before{content:'';width:8px;height:8px;background-color:var(--success-color);border-radius:50%;margin-right:0.15rem;margin-bottom:-3px;flex-shrink:0}
.user-info{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-grow:1}
.kick-btn{background:#fee2e2;color:var(--danger-color);border:1px solid #fecaca;border-radius:4px;padding:2px 8px;font-size:0.75rem;cursor:pointer;font-weight:bold;transition:all 0.2s;flex-shrink:0}
.kick-btn:hover{background-color:var(--danger-color);color:var(--light-text-color);border-color:var(--danger-color)}
.admin-controls{margin-top:auto;border-top:1px solid var(--border-color);padding-top:0.4rem;margin-top:0.7em;display:flex;flex-direction:column}
.admin-controls.is-counting-down{padding-top:0}
.admin-controls h4{margin-bottom:0.5rem}
.admin-buttons{display:flex;gap:0.5rem;margin-top:0.5rem}
.admin-buttons button{width:100%;padding:0.5rem}
.chat-area{flex-grow:1;display:flex;flex-direction:column;height:100%;min-width:0}
.chat-header{padding:0.5em 1rem;border-bottom:1px solid var(--border-color);display:flex;align-items:center}
.chat-header h2{margin:0;font-size:1.2rem;flex-grow:1}
.sound-toggle-btn{margin-left:auto;margin-right:-3px !important}
.menu-toggle{display:none;width:30px;height:24px;background:none;border:none;cursor:pointer;padding:0;margin-right:1rem;flex-direction:column;justify-content:space-around}
.menu-toggle span{display:block;width:100%;height:3px;background-color:var(--text-color);border-radius:2px}
.message-log{flex-grow:1;padding:0.3rem 0.8em;overflow-y:auto;display:flex;flex-direction:column}
.message-container{display:flex;flex-direction:column;margin-bottom:0.5rem;max-width:90%}
.message-container.my-message{align-self:flex-end;align-items:flex-end}
.message-container.their-message{align-self:flex-start;align-items:flex-start}
.message-meta{font-size:0.75rem;color:var(--system-message-color);margin-bottom:0.25rem;padding:0 0.2rem}
.message-bubble{padding:0.75rem 1rem;border-radius:18px;word-wrap:break-word;line-height:1.5;white-space:pre-wrap;text-align:justify;overflow-wrap:break-word;word-break:break-all}
.their-message .message-bubble{background-color:var(--bubble-color,var(--their-message-bg));color:var(--bubble-text-color,var(--text-color));border-top-left-radius:4px}
.my-message .message-bubble{background-color:var(--my-message-bg);color:#004085;border-top-right-radius:4px}
.system-message{align-self:center;color:var(--system-message-color);font-style:italic;font-size:0.85rem;margin:0.2rem 0}
.system-message .time{font-size:0.75rem;margin-left:0.5rem}
#input-area{display:flex;flex-direction:column}
.input-wrapper{position:relative}
#message-input{width:100%;padding:0.75rem 0.1em 0.75em 0.75em;border:none;resize:none;font-size:1rem;font-family:inherit;line-height:1.5;max-height:calc(1.5em * 5 + 1.5rem);overflow-y:auto;background-color:transparent;border-bottom:1px solid var(--border-color)}
#message-input:focus{outline:none}
.char-counter{position:absolute;bottom:0.5rem;right:0.95rem;font-size:0.8rem;color:var(--secondary-color);background-color:var(--container-bg)}
.toolbar{display:flex;justify-content:space-between;align-items:center;padding:0.2rem 0.75em 0.75em}
.toolbar-left{display:flex;align-items:center}
.toolbar-btn{background:none;border:none;font-size:1.5rem;color:var(--secondary-color);cursor:pointer;padding:0.25rem;margin-right:0.5rem}
.toolbar-btn:hover{color:var(--primary-color)}
.send-btn-styled{width:auto;padding:0.5rem 1.5rem;background-color:var(--primary-color);color:var(--light-text-color);font-weight:bold}
.send-btn-styled.not-send{cursor:not-allowed}
.chat-footer{border-top:1px solid var(--border-color);background-color:var(--container-bg);position:relative}
.emoji-picker{display:none;position:absolute;bottom:100%;left:1rem;margin-bottom:5px;background:var(--container-bg);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 -4px 10px rgba(0,0,0,0.1);padding:0.5rem;gap:0.25rem;z-index:10}
.emoji-picker.is-visible{display:grid;grid-template-columns:repeat(10,1fr)}
.emoji-picker .close-btn{position:absolute;bottom:0.45rem;right:0.35rem;background:none;border:none;color:var(--secondary-color);cursor:pointer;line-height:1}
.emoji-picker .close-btn:hover{color:var(--text-color)}
.emoji-picker button{background:none;border:none;font-size:1.5rem;padding:0.25rem;border-radius:4px}
.emoji-picker button:hover{background-color:var(--their-message-bg)}
#recording-area{display:none;align-items:center;justify-content:center;padding:1rem 0;gap:1rem}
.recording-text{font-weight:bold;color:var(--danger-color)}
#record-btn.is-recording{color:var(--danger-color);animation:pulse 1.5s infinite}
@keyframes pulse{ 0%{transform:scale(1)} 50%{transform:scale(1.2)} 100%{transform:scale(1)} }
#countdown-display{width:100%;display:none;flex-direction:column;justify-content:center;align-items:center;text-align:center;color:var(--danger-color);background-color:#fff5f5;border:1px solid var(--danger-color);border-radius:4px;padding:0.7rem}
#countdown-display.is-visible{display:flex}
#countdown-display p{font-size:0.9rem;font-weight:bold}
.timer-wrapper{display:flex;justify-content:center;align-items:baseline;gap:0.25rem}
#countdown-display h1{font-size:4rem;font-weight:bold;line-height:1}
.timer-wrapper span{font-size:1.5rem;font-weight:bold}
.message-bubble audio{width:100%;max-width:250px;margin-top:5px;display:block}
.message-bubble .chat-image-preview{max-width:100%;max-height:200px;border-radius:10px;cursor:pointer;margin-top:5px}
.message-bubble .file-link{display:block;padding:5px 10px;border-radius:8px;color:inherit;text-decoration:none;font-weight:bold}
.message-bubble .file-link:hover{background-color:rgb(16 101 240 / 20%)}
#image-viewer-overlay{cursor:zoom-out}
#image-viewer-overlay img{max-width:90%;max-height:90%;border-radius:5px;object-fit:contain}
#join-form{margin-top:2em}
#create-btn,#join-form button{background-color:var(--primary-color);color:var(--light-text-color);width:100%;padding:0.9em}
#send-paste-btn{background-color:var(--primary-color);color:var(--light-text-color)}
.custom-audio-player{display:flex;align-items:center;gap:0.75rem;padding:0.25rem;width:100%;max-width:280px}
.play-pause-btn{background:var(--primary-color);border:none;border-radius:50%;width:40px;height:40px;display:flex;justify-content:center;align-items:center;cursor:pointer;flex-shrink:0;padding:0}
.play-pause-btn svg{width:24px;height:24px;fill:var(--light-text-color)}
.progress-bar-wrapper{flex-grow:1;height:6px;background-color:#ddd;border-radius:3px;cursor:pointer;padding:0}
.progress-bar{width:0;height:100%;background-color:var(--primary-color);border-radius:3px}
.time-display{font-size:0.85rem;color:var(--secondary-color);font-variant-numeric:tabular-nums;flex-shrink:0}
.custom-audio-player audio{display:none}
.form-wrapper{width:100%;max-width:500px;margin:auto;background:var(--container-bg);border-radius:8px;box-shadow:0 4px 15px rgba(0,0,0,0.1);overflow:hidden}
.form-header{background:var(--primary-color);color:var(--light-text-color);padding:1.5rem 2rem}
.form-header h1{margin:0;font-size:1.5rem;text-align:center}
#form-content{padding:2rem}
.form-row{display:flex;gap:1rem}
.form-row .form-group{flex:1}
.status-feedback{padding:2.5rem 2rem;text-align:center}
.status-feedback h2{font-size:1.5rem;margin-bottom:1.5rem}
.status-feedback p{font-size:1rem;color:var(--secondary-color)}
.status-feedback.success h2{color:var(--success-color)}
.status-feedback.error h2{color:var(--danger-color)}
.form-wrapper .spinner{width:48px;height:48px;border:5px solid var(--primary-color);border-bottom-color:transparent;border-radius:50%;display:inline-block;box-sizing:border-box;animation:rotation 1s linear infinite;margin-bottom:1.5rem}
@keyframes rotation{ 0%{transform:rotate(0deg)} 100%{transform:rotate(360deg)} }
#qrcode-btn{margin-right:-5px}
.qrcode-modal{text-align:center}
#qrcode-container{margin:1.5rem 0;display:flex;justify-content:center;align-items:center;min-height:250px}
#qrcode-container img{max-width:100%;border:8px solid var(--container-bg);border-radius:10px;box-shadow:4px 8px 8px 9px rgba(0,0,0,0.2)}
.message-bubble .spinner{width:24px;height:24px;border:3px solid rgba(0,0,0,0.2);border-bottom-color:var(--primary-color);border-radius:50%;animation:rotation 1s linear infinite;margin:0.5rem}
.bubble-loading{display:flex;justify-content:center;align-items:center;min-height:48px;min-width:48px}
.file-actions{display:flex;align-items:center;gap:0.75rem}
.file-actions .file-link{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-actions .button-link{width:auto;padding:0.25rem 0.75rem;font-size:0.8rem;font-weight:normal;text-decoration:none;flex-shrink:0;border-radius:4px}
.file-viewer-modal{width:90%;height:90%;max-width:1000px;padding:0;display:flex;flex-direction:column}
.file-viewer-header h3{margin:0;font-size:1.1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-grow:1}
.file-viewer-right{display:flex;align-items:center;gap:0.5rem;flex-shrink:0;align-items:baseline}
.file-viewer-header .button-link{flex-shrink:0;width:auto;padding:3px 10px;border-radius:5px}
.file-viewer-header .close-btn{background:none;border:none;font-size:2rem;line-height:0;color:var(--secondary-color);cursor:pointer;padding:0 0.5rem;line-height:1;flex-shrink:0}
#file-viewer-content{flex-grow:1;overflow:auto}
#file-viewer-content iframe{width:100%;height:100%;border:none}
#file-viewer-content pre{white-space:pre-wrap;word-wrap:break-word;padding:1rem;font-family:monospace}
.btn-success{background-color:var(--success-color);color:var(--light-text-color)}
.call-btn{background:none;border:1px solid var(--success-color);color:var(--success-color);border-radius:50%;width:30px;height:30px;font-size:1.1rem;line-height:1;cursor:pointer;margin-left:0.5rem;transition:all 0.2s;flex-shrink:0;margin-left:auto}
.call-btn:hover{background-color:var(--success-color);color:var(--light-text-color)}
.call-btn[disabled]{opacity:0.4;cursor:not-allowed;background:none !important;color:var(--secondary-color) !important;border-color:var(--border-color) !important}
#call-widget{display:none;flex-direction:column;border-radius:8px;margin-top:auto;background:var(--container-bg)}
.call-widget-header{padding:0.5rem 0.75rem;background:var(--their-message-bg);text-align:center;font-weight:bold;font-size:0.9rem;border-top-left-radius:8px;border-top-right-radius:8px;border-bottom:1px solid var(--border-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.call-widget-body{padding:0.4rem 0.5em 0.6em;text-align:center;display:flex;justify-content:center;align-items:center;letter-spacing:0.2em}
#call-widget-timer{font-size:2.25rem;font-weight:bold;font-variant-numeric:tabular-nums;line-height:1}
#call-widget-timer b{position:relative;top:-0.1em;right:-0.03em}
.call-widget-footer{display:flex;gap:0.5em}
.widget-btn{flex:1;padding:0.5rem;border:none;font-weight:bold;cursor:pointer;transition:background-color 0.2s}
.widget-btn:hover{background-color:var(--their-message-bg)}
.widget-btn:first-child{border-right:1px solid var(--border-color)}
.widget-btn.is-muted{color:var(--danger-color)}
#call-controls{margin-top:auto}
.call-block{display:flex;flex-direction:column;gap:0.75rem}
.call-block p{font-weight:bold;font-size:0.9rem;padding-bottom:0.6em}
.call-block .modal-buttons button{width:auto;flex-grow:1}
#fullscreen-btn{font-size:1.5rem;padding:0 0.5rem}
.file-viewer-modal:fullscreen{width:100vw;height:100vh;max-width:none;max-height:none;border-radius:0}
.file-viewer-modal:fullscreen .file-viewer-header{background-color:var(--container-bg)}
#disconnect-overlay{width:100%;height:100%;display:none;flex-direction:column;justify-content:center;gap:1rem;text-align:center;padding-top:0.4em}
#disconnect-overlay p{font-weight:bold;color:var(--danger-color)}
#disconnect-overlay .btn-reconnect{width:auto;padding:0.5rem 1.5rem;color:var(--light-text-color);background:var(--primary-color)}
.file-viewer-header{display:flex;align-items:center;gap:1rem;padding:0.75rem 1rem;border-bottom:1px solid var(--border-color);flex-shrink:0}
.file-viewer-header .close-btn{background:none;border:none;font-size:2rem;color:var(--secondary-color);cursor:pointer;padding:0 0.5rem;line-height:1;flex-shrink:0}
.mobile-call-banner{display:none;background-color:#333;color:white;padding:8px 12px;position:sticky;top:0;z-index:100;width:100%;box-sizing:border-box}
.mobile-call-banner .banner-view{display:flex;justify-content:space-between;align-items:center;width:100%}
.mobile-call-banner .banner-buttons{display:flex;gap:10px}
.mobile-call-banner button{padding:6px 12px;border:none;border-radius:4px;cursor:pointer;font-size:14px}
.mobile-call-banner .btn-danger{background-color:var(--danger-color);color:white}
.mobile-call-banner .btn-success{background-color:var(--success-color);color:white}

@media (max-width:768px){
    #call-controls{display:none !important}
    .sidebar{position:fixed;left:0;top:0;height:100%;z-index:100;transform:translateX(-100%);border-right:1px solid var(--border-color)}
    .sidebar.is-visible{transform:translateX(0)}
    .menu-toggle{display:flex}
    .close-sidebar-btn{display:block}
    .emoji-picker{width:calc(100vw - 2rem);left:0}
    .emoji-picker.is-visible{grid-template-columns:repeat(auto-fill,minmax(40px,1fr))}
    #recording-area{width:100%}
    #audio-visualizer{width:100%;max-width:125px}
    #call-controls{display:none !important}
    .page-footer {display:none;}
    .main-container .form-wrapper {margin:inherit;}
}