*{box-sizing:border-box;margin:0;padding:0}:root{--primary:#2563eb;--primary-dark:#1d4ed8;--bg:#f3f4f6;--surface:#fff;--text:#1f2937;--text-muted:#6b7280;--border:#e5e7eb;--own-bubble:#2563eb;--own-text:#fff;--system-text:#9ca3af;--sidebar-bg:#172554;--sidebar-text:#bfdbfe}body{background:var(--bg);color:var(--text);height:100dvh;font-family:system-ui,Segoe UI,Roboto,sans-serif;overflow:hidden}#app{justify-content:center;align-items:center;height:100dvh;display:flex}.login-screen{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.login-box{background:var(--surface);text-align:center;border-radius:16px;width:360px;padding:18px 40px 48px;box-shadow:0 20px 60px #0000001f}.login-box h1{color:var(--text);margin-bottom:32px;font-size:2rem;font-weight:400}.login-box input{border:2px solid var(--border);border-radius:8px;outline:none;width:100%;margin-bottom:12px;padding:12px 16px;font-size:1rem;transition:border-color .2s}.login-box input:focus{border-color:var(--primary)}.login-box button{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:8px;width:100%;padding:12px;font-size:1rem;transition:background .2s}.login-box button:hover:not(:disabled){background:var(--primary-dark)}.login-box button:disabled{opacity:.5;cursor:not-allowed}.login-divider{text-align:center;color:#888;margin:8px 0;font-size:.85rem}.btn-keycloak{color:#fff;cursor:pointer;background:#e8a020;border:none;border-radius:6px;width:100%;padding:10px;font-size:1rem}.btn-keycloak:hover{background:#c8881a}.chat-layout{width:100%;height:100dvh;display:flex;overflow:hidden}.sidebar{background:var(--sidebar-bg);width:220px;color:var(--sidebar-text);flex-shrink:0;padding:24px 16px;overflow-y:auto}.user-list h3{text-transform:uppercase;letter-spacing:.1em;color:#60a5fa;border-top:1px solid #ffffff14;margin-top:20px;margin-bottom:12px;padding-top:20px;font-size:.75rem}.user-list ul{list-style:none}.user-list li{color:var(--sidebar-text);border-radius:6px;align-items:center;gap:8px;padding:6px 8px;font-size:.9rem;display:flex}.user-list li.me{color:#fff;font-weight:600}.dot{background:#4ade80;border-radius:50%;flex-shrink:0;width:8px;height:8px}.chat-main{flex-direction:column;flex:1;display:flex;overflow:hidden;transform:translateZ(0)}.chat-header{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:16px 24px;display:flex}.chat-header h2{color:var(--text);font-size:1.1rem}.status.connected{color:#16a34a;font-size:.8rem}.chat-window{flex:1;padding:16px 0;overflow:hidden}.messages{flex-direction:column;gap:10px;width:100%;max-width:868px;height:100%;margin-left:auto;margin-right:auto;padding:0 24px;display:flex;overflow-y:auto}.message-item{display:flex}.message-item.own{justify-content:flex-end}.message-item.system{justify-content:center}.system-text{color:var(--system-text);background:var(--bg);border-radius:99px;padding:4px 12px;font-size:.78rem}.bubble{background:var(--surface);border:1px solid var(--border);border-radius:14px;min-width:360px;max-width:80%;padding:10px 14px}.message-item.own .bubble{background:var(--own-bubble);color:var(--own-text);border-color:#0000}.username{color:var(--primary);margin-bottom:4px;font-size:.75rem;font-weight:600;display:block}.message-item.own .username{color:#ffffffbf}.text{word-break:break-word;font-size:.95rem;line-height:1.5}.time{opacity:.6;text-align:right;margin-top:4px;font-size:.7rem;display:block}.bubble-footer{justify-content:flex-end;align-items:center;gap:6px;margin-top:4px;display:flex}.bubble-footer .time{margin-top:0}.msg-actions{opacity:1;align-items:center;gap:3px;transition:opacity .15s;display:flex}.msg-delete-btn{cursor:pointer;opacity:1;background:0 0;border:none;border-radius:4px;padding:4px 0 1px 3px;font-size:.9rem;line-height:1;transition:opacity .15s}.msg-delete-btn:hover{opacity:.7}.message-item.own .msg-delete-btn{color:#fffc}.delete-confirm-text{white-space:nowrap;font-size:.72rem}.message-item:not(.own) .delete-confirm-text{color:#ef4444}.message-item.own .delete-confirm-text{color:#ffc8c8e6}.confirm-yes-btn,.confirm-no-btn{cursor:pointer;background:0 0;border:none;border-radius:4px;padding:1px 4px;font-size:.8rem;line-height:1;transition:background .15s}.message-item:not(.own) .confirm-yes-btn{color:#ef4444}.message-item:not(.own) .confirm-yes-btn:hover{background:#ef444426}.message-item:not(.own) .confirm-no-btn{color:#6b7280}.message-item:not(.own) .confirm-no-btn:hover{background:#0000000f}.message-item.own .confirm-yes-btn{color:#ffb4b4}.message-item.own .confirm-yes-btn:hover{background:#ffffff26}.message-item.own .confirm-no-btn{color:#fff9}.message-item.own .confirm-no-btn:hover{background:#ffffff1a}.bubble.confirming{outline:1px solid #ef444466}.typing-indicator{color:var(--text-muted);padding:4px 0;font-size:.82rem;font-style:italic}.message-input{background:var(--surface);border-top:1px solid var(--border);gap:10px;padding:16px 24px;display:flex}.message-input input{border:2px solid var(--border);border-radius:99px;outline:none;flex:1;padding:10px 16px;font-size:.95rem;transition:border-color .2s}.message-input input:focus{border-color:var(--primary)}.message-input button{background:var(--primary);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:99px;padding:10px 20px;font-size:.95rem;transition:background .2s}.message-input button:hover:not(:disabled){background:var(--primary-dark)}.message-input button:disabled{opacity:.4;cursor:not-allowed}.sidebar-toggle{color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;padding:4px 8px;font-size:1.3rem;line-height:1;display:none}.sidebar-overlay{display:none}@media (width<=600px){.login-box{border-radius:12px;width:calc(100% - 32px);padding:32px 20px}.sidebar{z-index:100;width:260px;height:100dvh;box-shadow:none;padding-top:24px;transition:left .25s;position:fixed;top:0;left:-280px}.sidebar.open{left:0;box-shadow:4px 0 24px #00000059}.sidebar-overlay{z-index:99;background:#00000073;display:block;position:fixed;inset:0}.sidebar-toggle{display:flex}.chat-header{gap:10px;padding:12px 14px}.chat-header h2{flex:1;font-size:1rem}.messages{padding:0 10px}.bubble{min-width:160px;max-width:82%}.text{font-size:.9rem}.message-input{gap:8px;padding:10px}.message-input input{padding:10px 14px;font-size:1rem}.message-input button{padding:10px 16px;font-size:1rem}}.room-list{flex-shrink:0}.room-list-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.section-label{text-transform:uppercase;letter-spacing:.1em;color:#60a5fa;font-size:.75rem}.add-room-btn{color:#bfdbfe;cursor:pointer;background:#ffffff1a;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;font-size:1.1rem;line-height:1;transition:background .15s;display:flex}.add-room-btn:hover{background:#fff3}.create-room-form{gap:4px;margin-bottom:8px;display:flex}.create-room-form input{color:#fff;background:#ffffff1a;border:1px solid #fff3;border-radius:6px;outline:none;flex:1;min-width:0;padding:6px 8px;font-size:.85rem}.create-room-form input::placeholder{color:#60a5fa}.create-room-form input:focus{border-color:#60a5fa}.create-room-form button{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:6px;flex-shrink:0;padding:6px 8px;font-size:.8rem;transition:background .15s}.create-room-form button:hover:not(:disabled){background:var(--primary-dark)}.create-room-form button:disabled{opacity:.4;cursor:not-allowed}.create-room-form .cancel-btn{background:#ffffff1a}.create-room-form .cancel-btn:hover{background:#fff3}.room-error{color:#f87171;background:#f871711a;border-radius:6px;margin-bottom:8px;padding:6px 8px;font-size:.78rem}.room-items{list-style:none}.room-item{cursor:pointer;color:#93c5fd;-webkit-user-select:none;user-select:none;border-radius:6px;align-items:center;gap:6px;padding:6px 8px;font-size:.9rem;transition:background .15s;display:flex}.room-item:hover{color:#dbeafe;background:#ffffff14}.room-item.joined{color:#bfdbfe}.room-item.active{color:#fff;background:#2563eb59;font-weight:600}.room-hash{color:#93c5fd;flex-shrink:0;font-weight:700}.room-item.active .room-hash{color:#fff}.room-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.leave-btn{color:#3b82f6;cursor:pointer;opacity:0;background:0 0;border:none;flex-shrink:0;padding:0 2px;font-size:1rem;line-height:1;transition:opacity .15s,color .15s}.room-item:hover .leave-btn{opacity:1}.leave-btn:hover{color:#f87171}.delete-btn{cursor:pointer;opacity:0;filter:grayscale();background:0 0;border:none;flex-shrink:0;padding:0 2px;font-size:.8rem;line-height:1;transition:opacity .15s}.room-item:hover .delete-btn{opacity:1}.delete-btn:hover{filter:none}.delete-confirm-text{color:#f87171;white-space:nowrap;margin-right:2px;font-size:.75rem}.confirm-yes-btn,.confirm-no-btn{cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:2px 4px;font-size:.85rem;line-height:1;transition:background .15s}.confirm-yes-btn{color:#f87171}.confirm-yes-btn:hover{background:#f8717133}.confirm-no-btn{color:#a5b4fc}.confirm-no-btn:hover{background:#ffffff1a}.room-item.confirming{background:#f871711a}
