:root{--ink:#0a0d18;--ink-2:#0d1120;--panel:#12162a;--panel-raised:#1b2140;--glass-border:#ffffff14;--glass-border-strong:#ffffff24;--hairline:#232a48;--text:#f1f2f6;--text-muted:#9095b0;--text-faint:#5b6180;--accent:#8b7cff;--accent-2:#5b4fe0;--accent-glow:#8b7cff59;--accent-soft:#8b7cff1f;--warm:#ff8f6b;--warm-2:#e85d3f;--warm-glow:#ff8f6b52;--warm-soft:#ff8f6b1f;--online:#4ade80;--online-glow:#4ade8066;--danger:#ff6b6b;--amber:#ffb84d;--e1:0 1px 2px #0006;--e2:0 4px 12px #00000059, 0 1px 3px #0000004d;--e3:0 12px 32px #00000073, 0 4px 10px #0000004d;--e4:0 24px 64px #0000008c, 0 8px 20px #00000059;--inset-hi:inset 0 1px 0 #ffffff14;--font-display:"Space Grotesk", "Inter", sans-serif;--font-body:"Inter", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--ink);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0}button{font-family:inherit}::selection{background:var(--accent-soft);color:var(--accent)}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-thumb{background:var(--hairline);border-radius:8px}::-webkit-scrollbar-thumb:hover{background:var(--glass-border-strong)}::-webkit-scrollbar-track{background:0 0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.login-screen{background:var(--ink);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex;position:relative;overflow:hidden}.login-mesh{background:radial-gradient(circle at 18% 22%, #8b7cff38, transparent 42%), radial-gradient(circle at 82% 15%, #ff8f6b24, transparent 40%), radial-gradient(circle at 60% 85%, #4ade8014, transparent 45%), var(--ink);filter:blur(2px);animation:18s ease-in-out infinite alternate mesh-drift;position:absolute;inset:-20%}@keyframes mesh-drift{0%{transform:translate(0,0)scale(1)}to{transform:translate(-2%,2%)scale(1.05)}}.login-card{background:linear-gradient(165deg, var(--panel-raised), var(--panel));border:1px solid var(--glass-border);text-align:center;width:100%;max-width:400px;box-shadow:var(--e4), var(--inset-hi);transform-style:preserve-3d;will-change:transform;border-radius:22px;padding:40px 36px;transition:transform .12s ease-out;position:relative}.login-card-sheen{border-radius:inherit;pointer-events:none;background:linear-gradient(130deg,#ffffff14 0%,#fff0 30%);position:absolute;inset:0}.login-mark{justify-content:center;align-items:center;width:56px;height:56px;margin:0 auto 22px;display:flex;position:relative}.login-mark-ring{border:1px solid var(--glass-border-strong);border-radius:50%;animation:2.8s ease-in-out infinite ring-pulse;position:absolute;inset:0}@keyframes ring-pulse{0%,to{opacity:.6;transform:scale(1)}50%{opacity:.15;transform:scale(1.15)}}.login-mark-orb{background:radial-gradient(circle at 32% 28%, #b3a8ff 0%, var(--accent) 42%, var(--accent-2) 100%);width:26px;height:26px;box-shadow:0 0 0 10px var(--accent-soft), 0 6px 18px var(--accent-glow);border-radius:50%}.login-title{font-family:var(--font-display);letter-spacing:-.02em;background:linear-gradient(135deg, var(--text) 40%, var(--accent) 130%);color:#0000;-webkit-background-clip:text;background-clip:text;margin:0 0 8px;font-size:30px;font-weight:700}.login-subtitle{color:var(--text-muted);margin:0 0 30px;font-size:14px;line-height:1.55}.login-form{text-align:left}.login-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);margin-bottom:8px;font-size:11px;display:block}.login-input{background:var(--ink-2);border:1px solid var(--glass-border);width:100%;color:var(--text);font-size:15px;font-family:var(--font-body);border-radius:12px;padding:13px 15px;transition:border-color .15s,box-shadow .15s;box-shadow:inset 0 2px 6px #00000059}.login-input:focus{border-color:var(--accent);box-shadow:inset 0 2px 6px #00000059, 0 0 0 4px var(--accent-soft);outline:none}.login-error{color:var(--danger);margin:10px 0 0;font-size:13px}.login-button{background:linear-gradient(150deg, var(--accent), var(--accent-2));color:#fff;cursor:pointer;width:100%;box-shadow:0 10px 24px var(--accent-glow), var(--inset-hi);border:none;border-radius:12px;margin-top:22px;padding:13px 16px;font-size:15px;font-weight:600;transition:transform .15s,box-shadow .15s;position:relative;overflow:hidden}.login-button:hover{box-shadow:0 14px 30px var(--accent-glow), var(--inset-hi);transform:translateY(-1px)}.login-button:active{transform:translateY(0)scale(.98)}.chat-room{background:radial-gradient(circle at 100% 0%, #8b7cff0f, transparent 35%), radial-gradient(circle at 0% 100%, #ff8f6b0d, transparent 35%), var(--ink);grid-template-columns:256px 1fr;height:100vh;display:grid}@media (width<=720px){.chat-room{grid-template-columns:1fr}.sidebar{display:none}}.sidebar{border-right:1px solid var(--hairline);background:linear-gradient(180deg, var(--panel), var(--ink-2));padding:4px}.sidebar-inner{background:linear-gradient(#ffffff05,#0000 40%);border-radius:16px;flex-direction:column;height:100%;padding:18px 14px;display:flex}.sidebar-brand{align-items:center;gap:10px;margin-bottom:26px;padding:0 4px;display:flex}.brand-mark{background:linear-gradient(150deg, var(--accent), var(--accent-2));width:28px;height:28px;box-shadow:var(--e2), var(--inset-hi);border-radius:9px;justify-content:center;align-items:center;display:flex}.brand-mark-dot{background:#fff;border-radius:50%;width:6px;height:6px;box-shadow:0 0 8px #fffc}.brand-name{font-family:var(--font-display);letter-spacing:-.01em;font-size:17px;font-weight:700}.sidebar-section{margin-bottom:22px;padding:0 4px}.sidebar-section--grow{flex:1;overflow-y:auto}.sidebar-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);margin-bottom:10px;font-size:11px}.sidebar-room-card{color:var(--text);background:var(--panel-raised);border:1px solid var(--glass-border);box-shadow:var(--e1), var(--inset-hi);border-radius:10px;align-items:center;gap:6px;padding:9px 12px;font-size:14px;font-weight:500;display:flex}.room-hash{color:var(--accent);font-family:var(--font-mono)}.online-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.online-item{color:var(--text);border-radius:9px;align-items:center;gap:10px;padding:6px;font-size:13.5px;transition:background .12s;display:flex}.online-item:hover{background:#ffffff08}.online-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.you-tag{font-family:var(--font-mono);color:var(--text-faint);border:1px solid var(--glass-border);border-radius:4px;flex-shrink:0;margin-left:auto;padding:1px 5px;font-size:10px}.avatar-orb{color:#fff;font-family:var(--font-display);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:flex;box-shadow:0 3px 8px #0006,inset 0 1px 1px #ffffff59,inset 0 -3px 6px #00000040}.online-avatar-wrap{flex-shrink:0;position:relative}.status-dot{border:2px solid var(--panel);border-radius:50%;flex-shrink:0;width:9px;height:9px;position:absolute;bottom:-1px;right:-1px}.status-dot--online{background:var(--online);box-shadow:0 0 8px var(--online-glow)}.status-dot--offline{background:var(--text-faint)}.sidebar-footer{background:var(--panel-raised);border:1px solid var(--glass-border);box-shadow:var(--e1), var(--inset-hi);border-radius:12px;align-items:center;gap:11px;margin-top:8px;padding:12px 8px;display:flex}.sidebar-you{font-size:13.5px;font-weight:600}.sidebar-conn{color:var(--text-muted);font-size:11.5px}.chat-main{flex-direction:column;min-width:0;height:100vh;display:flex}.chat-header{border-bottom:1px solid var(--hairline);-webkit-backdrop-filter:blur(12px);z-index:2;background:#12162a80;justify-content:space-between;align-items:center;padding:16px 26px;display:flex}.chat-header-room{font-family:var(--font-display);font-size:16px;font-weight:600}.chat-header-sub{color:var(--text-muted);margin-top:2px;font-size:12px}.leave-button{background:var(--panel-raised);border:1px solid var(--glass-border);color:var(--text-muted);cursor:pointer;box-shadow:var(--e1);border-radius:9px;padding:7px 14px;font-size:13px;transition:color .15s,transform .15s}.leave-button:hover{color:var(--text);transform:translateY(-1px)}.banner{font-size:13px;font-family:var(--font-mono);padding:10px 26px}.banner--warn{color:var(--amber);background:#ffb84d1a}.banner--error{color:var(--danger);background:#ff6b6b1a}.loading-state{color:var(--text-muted);flex:1;justify-content:center;align-items:center;font-size:14px;display:flex}.message-list{flex-direction:column;flex:1;padding:22px 26px;display:flex;overflow-y:auto}.empty-state{text-align:center;color:var(--text-muted);margin:auto}.empty-orb{background:radial-gradient(circle at 32% 28%, #8b7cffe6, var(--accent-2) 90%);width:48px;height:48px;box-shadow:0 0 0 12px var(--accent-soft), 0 10px 30px var(--accent-glow);opacity:.5;border-radius:50%;margin:0 auto 16px}.empty-state-sub{color:var(--text-faint);margin-top:4px;font-size:13px}.day-divider{text-align:center;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);margin:20px 0;font-size:11px}.system-message{text-align:center;font-family:var(--font-mono);color:var(--text-faint);margin:10px 0;font-size:12px}.msg-row{align-items:flex-end;gap:8px;margin:3px 0;display:flex}.msg-row--own{justify-content:flex-end}.msg-avatar-slot{flex-shrink:0;width:30px}.msg-bubble{background:linear-gradient(165deg, var(--panel-raised), var(--panel));border:1px solid var(--glass-border);max-width:58%;box-shadow:var(--e2), var(--inset-hi);border-radius:16px 16px 16px 5px;padding:10px 14px}.msg-bubble--own{background:linear-gradient(160deg, var(--warm), var(--warm-2));box-shadow:0 8px 20px var(--warm-glow), var(--inset-hi);border:1px solid #ffffff1f;border-radius:16px 16px 5px}@keyframes msg-arrive{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.msg-bubble--new{animation:.28s cubic-bezier(.2,.8,.3,1) msg-arrive}.msg-author{font-family:var(--font-display);color:var(--accent);margin-bottom:3px;font-size:12.5px;font-weight:600}.msg-text{color:var(--text);white-space:pre-wrap;word-break:break-word;font-size:14.5px;line-height:1.45}.msg-bubble--own .msg-text{color:#201005}.msg-meta{align-items:center;gap:6px;margin-top:5px;display:flex}.msg-time{font-family:var(--font-mono);color:var(--text-faint);font-size:10.5px}.msg-bubble--own .msg-time{color:#2010058c}.msg-status{color:#20100580;font-size:11px}.msg-status--read{color:#1e5c3a;font-weight:700}@media (width<=720px){.msg-bubble{max-width:82%}}.typing-indicator{color:var(--text-muted);font-size:12.5px;font-family:var(--font-mono);align-items:center;gap:8px;padding:0 26px 10px;display:flex}.typing-dots{background:var(--panel-raised);border:1px solid var(--glass-border);border-radius:10px;gap:3px;padding:6px 10px;display:inline-flex}.typing-dots span{background:var(--accent);border-radius:50%;width:4px;height:4px;animation:1.1s ease-in-out infinite typing-bounce}.typing-dots span:nth-child(2){animation-delay:.15s}.typing-dots span:nth-child(3){animation-delay:.3s}@keyframes typing-bounce{0%,60%,to{opacity:.5;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.message-input{border-top:1px solid var(--hairline);gap:10px;padding:16px 26px 22px;display:flex}.message-input input{background:var(--panel-raised);border:1px solid var(--glass-border);color:var(--text);font-size:14.5px;font-family:var(--font-body);border-radius:13px;flex:1;padding:13px 16px;transition:border-color .15s,box-shadow .15s;box-shadow:inset 0 2px 6px #0000004d}.message-input input:focus{border-color:var(--accent);box-shadow:inset 0 2px 6px #0000004d, 0 0 0 4px var(--accent-soft);outline:none}.message-input input:disabled{opacity:.5}.message-input button{background:linear-gradient(150deg, var(--accent), var(--accent-2));color:#fff;cursor:pointer;box-shadow:0 8px 18px var(--accent-glow), var(--inset-hi);border:none;border-radius:13px;padding:0 22px;font-size:14px;font-weight:600;transition:transform .15s,box-shadow .15s,opacity .15s}.message-input button:hover:not(:disabled){transform:translateY(-1px)}.message-input button:active:not(:disabled){transform:translateY(0)scale(.97)}.message-input button:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}
