:root{--brand-blue-50:#eef3fb;--brand-blue-100:#d6e2f5;--brand-blue-200:#adc5ea;--brand-blue-300:#7fa3db;--brand-blue-400:#3f6fc4;--brand-blue-500:#1f5fd0;--brand-blue-600:#0a46a1;--brand-blue-700:#093d8e;--brand-blue-800:#07306f;--brand-blue-900:#061f47;--brand-platinum-50:#f4f5f7;--brand-platinum-100:#e7e9ee;--brand-platinum-200:#d4d8e0;--brand-platinum-300:#b9bfcc;--brand-platinum-400:#9aa1b2;--brand-platinum-500:#7c8498;--brand-platinum-600:#626a7e;--brand-platinum-700:#4a5163;--brand-platinum-800:#343a48;--brand-platinum-900:#20242e;--brand-gold:#d4a017;--bg-app:#f6f7f9;--bg-sidebar:#132540;--bg-sidebar-hover:#1e3457;--bg-sidebar-active:#21406f;--bg-surface:#fff;--bg-raised:#fff;--bg-hover:#eef1f5;--bg-selected:#e8eef8;--border-subtle:#e4e7ec;--border-default:#d3d8e0;--border-strong:#ccc;--text-primary:#222;--text-secondary:#666;--text-tertiary:#6b7280;--text-disabled:#9aa1b2;--text-on-brand:#fff;--text-on-sidebar:#fff;--text-on-sidebar-muted:#9fb0cc;--action-primary:#0a46a1;--action-primary-hover:#093d8e;--action-primary-active:#07306f;--action-primary-fg:#fff;--action-secondary-bg:#eef1f5;--action-secondary-fg:#222;--focus-ring:#2f6fe0;--link:#0a46a1;--link-hover:#093d8e;--chat-unread:#0a46a1;--chat-unread-fg:#fff;--chat-mention-bg:#fff7e6;--chat-mention-border:#d4a017;--chat-mention-text:#6b4e00;--chat-self-bubble:#e8eef8;--chat-self-text:#16335f;--chat-other-bubble:#f3f4f6;--chat-other-text:#222;--code-bg:#f5f6f8;--code-text:#24292f;--inline-code-bg:#eef0f4;--selection:#cfe0fb;--presence-online:#16a34a;--presence-away:#f59e0b;--presence-offline:#9aa1b2;--presence-dnd:#cf2e2e;--success:#16a34a;--warning:#f59e0b;--destructive:#cf2e2e;--info:#0a46a1;--accent-platinum:#7c8498;--font-sans:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--fs-display:28px;--lh-display:36px;--fs-title:20px;--lh-title:28px;--fs-heading:16px;--lh-heading:24px;--fs-channel:15px;--lh-channel:22px;--fs-body:15px;--lh-body:24px;--fs-meta:12px;--lh-meta:16px;--fs-caption:11px;--lh-caption:16px;--fs-code:13px;--lh-code:20px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px;--elevation-1:0 1px 2px #1018280f, 0 1px 3px #1018281a;--elevation-2:0 4px 12px #1018281a, 0 2px 4px #1018280f;--elevation-3:0 16px 40px #1018282e, 0 4px 12px #1018281a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg-app:#1a1a2e;--bg-sidebar:#15152a;--bg-sidebar-hover:#232347;--bg-sidebar-active:#2a3a63;--bg-surface:#224;--bg-raised:#2a2a4a;--bg-hover:#2a2a4a;--bg-selected:#1d3358;--border-subtle:#2c2c50;--border-default:#3a3a60;--border-strong:#446;--text-primary:#f3f4f8;--text-secondary:#999;--text-tertiary:#8b8ba7;--text-disabled:#5b6072;--text-on-brand:#fff;--text-on-sidebar:#fff;--text-on-sidebar-muted:#8a93b0;--action-primary:#1f5fd0;--action-primary-hover:#2f6fe0;--action-primary-active:#1a4fb0;--action-primary-fg:#fff;--action-secondary-bg:#2a2a4a;--action-secondary-fg:#f3f4f8;--focus-ring:#5b8def;--link:#7aa7ff;--link-hover:#9cbcff;--chat-unread:#2f6fe0;--chat-unread-fg:#fff;--chat-mention-bg:#2e2a1f;--chat-mention-border:#d4a017;--chat-mention-text:#f0c94e;--chat-self-bubble:#1d3358;--chat-self-text:#eaf1ff;--chat-other-bubble:#224;--chat-other-text:#f3f4f8;--code-bg:#131325;--code-text:#e6e6f0;--inline-code-bg:#2a2a4a;--selection:#2b4a82;--presence-online:#22c55e;--presence-away:#f5b341;--presence-offline:#5b6072;--presence-dnd:#ef4444;--success:#22c55e;--warning:#f59e0b;--destructive:#ef4444;--info:#7aa7ff;--accent-platinum:#c2c8d6;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-body);background:var(--bg-app);color:var(--text-primary);margin:0}::selection{background:var(--selection)}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}button{font:inherit;cursor:pointer}button:disabled{opacity:.6;cursor:default}input{font:inherit}a{color:var(--link);text-decoration:none}a:hover{color:var(--link-hover)}.brand-glyph{background:var(--action-primary);color:var(--text-on-brand);font-weight:var(--fw-bold);border-radius:var(--radius-lg);place-items:center;display:grid}.auth{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);min-height:100%;display:grid}.auth__brand{gap:var(--space-5);padding:var(--space-16);color:var(--text-on-sidebar);background:linear-gradient(160deg,#132540 0%,#0f1c33 100%);flex-direction:column;justify-content:center;display:flex}.auth__logo{align-items:center;gap:var(--space-3);display:flex}.auth__logo .brand-glyph{background:var(--brand-blue-500);width:52px;height:52px;font-size:22px}.auth__wordmark{font-size:var(--fs-title);font-weight:var(--fw-bold);line-height:1.1}.auth__wordmark span{font-size:var(--fs-meta);font-weight:var(--fw-medium);color:var(--accent-platinum);display:block}.auth__headline{font-size:var(--fs-display);line-height:var(--lh-display);font-weight:var(--fw-bold);margin:0}.auth__sub{color:var(--text-on-sidebar-muted);max-width:42ch;margin:0}.auth__feature{align-items:center;gap:var(--space-3);color:var(--text-on-sidebar-muted);display:flex}.auth__feature:before{content:"🔒";font-size:13px}.auth__form{padding:var(--space-8);background:var(--bg-app);justify-content:center;align-items:center;display:flex}.card{gap:var(--space-4);width:360px;max-width:100%;padding:var(--space-8);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--elevation-2);flex-direction:column;display:flex}.card h1{font-size:var(--fs-title);margin:0}.card label{gap:var(--space-2);font-size:var(--fs-meta);font-weight:var(--fw-semibold);color:var(--text-secondary);flex-direction:column;display:flex}.card input,.create input{background:var(--bg-app);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);padding:11px 12px}.card input::placeholder,.create input::placeholder{color:var(--text-tertiary)}.btn-primary{background:var(--action-primary);border-radius:var(--radius-md);color:var(--action-primary-fg);font-weight:var(--fw-semibold);border:none;padding:11px 14px}.btn-primary:hover:not(:disabled){background:var(--action-primary-hover)}.link{color:var(--link);font-weight:var(--fw-semibold);background:0 0;border:none;padding:0}.muted{color:var(--text-tertiary)}.error{color:var(--destructive);font-size:var(--fs-meta);margin:0}.enc-hint{align-items:center;gap:var(--space-2);color:var(--text-tertiary);font-size:var(--fs-caption);display:flex}.app{flex-direction:column;min-height:100%;display:flex}.topbar{align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-5);background:var(--bg-surface);border-bottom:1px solid var(--border-subtle);display:flex}.topbar .brand-glyph{border-radius:var(--radius-md);width:32px;height:32px;font-size:13px}.topbar__title{font-weight:var(--fw-bold)}.topbar__spacer{flex:1}.icon-btn{background:var(--action-secondary-bg);width:34px;height:34px;color:var(--text-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-md);place-items:center;display:grid}.columns{background:var(--border-subtle);flex:1;grid-template-columns:300px 1fr;gap:1px;display:grid}.panel{background:var(--bg-app);padding:var(--space-4);gap:var(--space-3);flex-direction:column;display:flex}.panel h2{font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);margin:0}.list{gap:var(--space-1);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.row{text-align:left;border-radius:var(--radius-md);width:100%;color:var(--text-secondary);font-weight:var(--fw-medium);background:0 0;border:none;padding:9px 12px}.row:hover{background:var(--bg-hover)}button.row.active{background:var(--bg-selected);color:var(--action-primary);font-weight:var(--fw-semibold)}.create{gap:var(--space-2);margin-top:auto;display:flex}.create input{flex:1}.create button{background:var(--action-primary);color:var(--action-primary-fg);border-radius:var(--radius-md);font-weight:var(--fw-semibold);border:none;padding:9px 12px}.chat{grid-template-columns:72px 280px 1fr;height:100%;display:grid}.dot{border-radius:var(--radius-full);flex:none;width:8px;height:8px;display:inline-block}.dot--online{background:var(--presence-online)}.dot--offline{background:var(--presence-offline)}.rail{background:var(--bg-sidebar);align-items:center;gap:var(--space-2);padding:var(--space-4) 0;flex-direction:column;display:flex}.rail__glyph{background:var(--action-primary);width:40px;height:40px;color:var(--text-on-brand);font-weight:var(--fw-bold);border-radius:var(--radius-lg);place-items:center;display:grid}.rail__divider{background:#ffffff1f;border-radius:1px;width:28px;height:2px}.rail__ws,.rail__add{border-radius:var(--radius-lg);width:40px;height:40px;font-weight:var(--fw-semibold);place-items:center;font-size:14px;display:grid}.rail__ws{background:var(--bg-sidebar-hover);color:var(--text-on-sidebar);border:none}.rail__ws--active{outline:2px solid var(--accent-platinum)}.rail__add{color:var(--text-on-sidebar-muted);background:0 0;border:1px solid #ffffff2e;font-size:20px}.sidebar{background:var(--bg-sidebar);color:var(--text-on-sidebar);padding:var(--space-3);gap:var(--space-1);flex-direction:column;min-height:0;display:flex}.sidebar__head{align-items:center;gap:var(--space-2);padding:var(--space-2);font-weight:var(--fw-bold);font-size:var(--fs-channel);display:flex}.sidebar__ws{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.sidebar__section{padding:var(--space-3) var(--space-2) var(--space-1);font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:.04em;color:var(--text-on-sidebar-muted)}.sidebar .list{overflow-y:auto}.chan{text-align:left;align-items:center;gap:var(--space-2);border-radius:var(--radius-md);width:100%;color:var(--text-on-sidebar-muted);font-weight:var(--fw-medium);font-size:var(--fs-channel);background:0 0;border:none;padding:7px 10px;display:flex}.chan:hover{background:var(--bg-sidebar-hover);color:var(--text-on-sidebar)}.chan--active{background:var(--bg-sidebar-active);color:var(--text-on-sidebar);font-weight:var(--fw-semibold)}.chan__hash{opacity:.65}.sidebar__empty{padding:var(--space-2)}.usercard{align-items:center;gap:var(--space-2);padding:var(--space-2);border-top:1px solid #ffffff1a;margin-top:auto;display:flex}.usercard__avatar{border-radius:var(--radius-full);background:var(--action-primary);width:30px;height:30px;color:var(--text-on-brand);font-size:var(--fs-meta);font-weight:var(--fw-semibold);place-items:center;display:grid}.usercard__name{font-size:var(--fs-meta);font-weight:var(--fw-semibold);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.usercard .icon-btn{background:var(--bg-sidebar-hover);color:var(--text-on-sidebar-muted);border-color:#ffffff26}.usercard .link{color:var(--accent-platinum);font-size:var(--fs-meta)}.channel{background:var(--bg-app);min-width:0;display:flex}.channel__main{flex-direction:column;flex:1;min-width:0;display:flex}.channel--empty{justify-content:center;align-items:center}.channel__head{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--border-subtle);background:var(--bg-surface);display:flex}.channel__add{font-size:var(--fs-meta)}.channel__title{align-items:center;gap:var(--space-2);font-weight:var(--fw-bold);font-size:var(--fs-heading);display:flex}.pill{border-radius:var(--radius-full);font-size:var(--fs-caption);font-weight:var(--fw-semibold);border:1px solid var(--border-default);color:var(--text-secondary);align-items:center;gap:4px;padding:3px 9px;display:inline-flex}.pill--enc{color:var(--chat-mention-text)}.messages{gap:var(--space-1);padding:var(--space-4) var(--space-5);flex-direction:column;flex:1;display:flex;overflow-y:auto}.messages__notice{max-width:48ch;margin:auto 0}.msg{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.msg--me{align-items:flex-end}.msg__meta{align-items:baseline;gap:var(--space-2);padding:0 var(--space-1);display:flex}.msg__author{font-size:var(--fs-meta);font-weight:var(--fw-semibold);color:var(--text-secondary)}.msg__time{font-size:var(--fs-caption);color:var(--text-tertiary)}.msg__body{background:var(--chat-other-bubble);color:var(--chat-other-text);border-radius:var(--radius-lg);white-space:pre-wrap;word-break:break-word;max-width:70ch;padding:8px 12px}.msg--me .msg__body{background:var(--chat-self-bubble);color:var(--chat-self-text)}.msg__actions{gap:var(--space-2);padding-left:var(--space-1);display:flex}.msg__reply{font-size:var(--fs-meta);font-weight:var(--fw-semibold);color:var(--text-tertiary);background:0 0;border:none;padding:0}.msg__reply:hover{color:var(--link)}.thread{background:var(--bg-surface);border-left:1px solid var(--border-subtle);flex-direction:column;flex:none;width:360px;min-height:0;display:flex}.thread__head{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;display:flex}.thread__title{font-weight:var(--fw-bold);font-size:var(--fs-channel)}.thread__sub{font-size:var(--fs-meta)}.thread__messages{padding:var(--space-3) var(--space-4)}.thread__count{font-size:var(--fs-caption);color:var(--text-tertiary);border-bottom:1px solid var(--border-subtle);padding-bottom:var(--space-2);margin:var(--space-1) 0;align-self:stretch}.composer{padding:var(--space-3) var(--space-5) var(--space-5)}.composer__box{align-items:flex-end;gap:var(--space-2);display:flex}.composer__box input,.composer__box textarea{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);flex:1;padding:11px 12px}.composer__box textarea{resize:none;max-height:160px;font:inherit;line-height:1.4;overflow-y:auto}.composer__attach{flex:none;align-self:flex-end}.attachments{gap:var(--space-1);flex-direction:column;margin-top:2px;display:flex}.msg--me .attachments{align-items:flex-end}.att--image{flex-direction:column;gap:2px;max-width:320px;display:flex}.att__img{border-radius:var(--radius-md);border:1px solid var(--border-subtle);max-width:320px;max-height:320px}.att__placeholder{padding:var(--space-4);border:1px dashed var(--border-default);border-radius:var(--radius-md);font-size:var(--fs-meta)}.att__meta{font-size:var(--fs-caption)}.att--file{align-items:center;gap:var(--space-2);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);max-width:320px;padding:8px 12px;display:inline-flex}.att--file:hover{border-color:var(--link)}.att__name{font-weight:var(--fw-semibold);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.att__size{font-size:var(--fs-caption);margin-left:auto}.channel__actions{align-items:center;gap:var(--space-3);display:flex}.channel__call{font-size:var(--fs-meta)}.channel__call:disabled{opacity:.5;cursor:not-allowed}.call-banner{top:var(--space-4);right:var(--space-4);z-index:100;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-lg);display:flex;position:fixed;box-shadow:0 8px 24px #0003}.call-banner__info{flex-direction:column;gap:2px;display:flex}.call-banner__title{font-weight:var(--fw-semibold)}.call-banner__peer{font-size:var(--fs-caption)}.call-banner__secure{font-size:var(--fs-caption);color:var(--text-muted)}.call-banner__actions{gap:var(--space-2);display:flex}.call-banner__decline{border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-secondary);background:0 0;padding:6px 12px}.call-overlay{z-index:200;background:#000000d9;flex-direction:column;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.call-overlay__remote{object-fit:contain;width:100%;height:100%}.call-overlay__placeholder{justify-content:center;align-items:center;gap:var(--space-3);background:linear-gradient(160deg,#0b1220 0%,#1a2744 100%);flex-direction:column;display:flex;position:absolute;inset:0}.call-overlay__avatar{border-radius:var(--radius-full);background:var(--action-primary);color:#fff;width:88px;height:88px;font-size:2rem;font-weight:var(--fw-semibold);justify-content:center;align-items:center;display:flex}.call-overlay__local{bottom:96px;right:var(--space-5);border-radius:var(--radius-md);border:1px solid var(--border-default);background:#000;width:180px;position:absolute}.call-overlay__meta{top:var(--space-5);left:var(--space-5);color:#fff;text-shadow:0 1px 8px #0009;flex-direction:column;gap:4px;display:flex;position:absolute}.call-overlay__mode{font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.call-overlay__title{font-weight:var(--fw-semibold);font-size:var(--fs-title-sm,1.125rem)}.call-overlay__secure{font-size:var(--fs-caption);color:var(--text-muted)}.call-overlay__error{color:var(--chat-mention-text)}.call-overlay__controls{bottom:var(--space-5);gap:var(--space-3);align-items:center;display:flex;position:absolute}.icon-btn--active{outline:2px solid var(--action-primary)}.call-overlay__hangup{color:#fff;border-radius:var(--radius-full);font-weight:var(--fw-semibold);background:#e5484d;border:none;padding:10px 20px}.meeting-overlay__grid{gap:var(--space-3);width:100%;height:100%;padding:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(240px,1fr));align-content:center;display:grid}.meeting-overlay__tile{aspect-ratio:16/9;border-radius:var(--radius-md);border:1px solid var(--border-default);background:#111;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.meeting-overlay__tile--local{border-color:var(--accent-primary,#5b8def)}.meeting-overlay__video{object-fit:cover;width:100%;height:100%}.meeting-overlay__tile-label{bottom:var(--space-2);left:var(--space-2);color:#fff;font-size:var(--fs-caption);border-radius:var(--radius-sm);background:#00000080;padding:2px 8px;position:absolute}
