2026-03-18 10:36:51 -04:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > Lotus Guild Matrix< / title >
< style >
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: #0a0a0a;
color: #e0e0e0;
font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
2026-03-19 22:57:55 -04:00
padding: 20px 16px 40px;
2026-03-18 10:36:51 -04:00
}
body::before {
content: '';
position: fixed;
top: 50%;
left: 50%;
width: 900px;
height: 900px;
transform: translate(-50%, -50%);
background: radial-gradient(circle, rgba(152, 0, 0, 0.07) 0%, transparent 65%);
pointer-events: none;
z-index: 0;
}
.container {
position: relative;
z-index: 1;
text-align: center;
width: 100%;
2026-03-19 22:57:55 -04:00
max-width: 900px;
2026-03-18 10:36:51 -04:00
}
.logo {
width: 140px;
height: 140px;
margin: 0 auto 28px;
border-radius: 50%;
filter: drop-shadow(0 0 24px rgba(152, 0, 0, 0.35));
animation: float 6s ease-in-out infinite;
}
@keyframes float {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-8px); }
}
h1 {
font-size: 2rem;
font-weight: 300;
letter-spacing: 0.15em;
text-transform: uppercase;
color: #fff;
margin-bottom: 4px;
}
2026-03-19 22:57:55 -04:00
h1 span { color: #980000; font-weight: 600; }
2026-03-18 10:36:51 -04:00
.subtitle {
font-size: 0.85rem;
color: #555;
letter-spacing: 0.3em;
text-transform: uppercase;
margin-bottom: 36px;
}
2026-03-19 22:57:55 -04:00
/* ─── Cards / Panels ─── */
2026-03-18 10:36:51 -04:00
.card {
2026-03-19 22:57:55 -04:00
background: linear-gradient(145deg, rgba(22,22,22,0.95), rgba(14,14,14,0.98));
border: 1px solid rgba(152,0,0,0.2);
2026-03-18 10:36:51 -04:00
border-radius: 16px;
padding: 32px;
2026-03-19 22:57:55 -04:00
max-width: 560px;
margin: 0 auto;
2026-03-18 10:36:51 -04:00
}
.card h2 {
font-size: 0.9rem;
font-weight: 500;
color: #980000;
text-transform: uppercase;
letter-spacing: 0.15em;
margin-bottom: 20px;
}
2026-03-19 22:57:55 -04:00
/* ─── Steps ─── */
.steps { list-style: none; text-align: left; margin-bottom: 28px; }
2026-03-18 10:36:51 -04:00
.steps li {
display: flex;
align-items: flex-start;
gap: 14px;
padding: 12px 0;
2026-03-19 22:57:55 -04:00
border-bottom: 1px solid rgba(255,255,255,0.04);
2026-03-18 10:36:51 -04:00
}
.steps li:last-child { border-bottom: none; }
.step-num {
flex-shrink: 0;
2026-03-19 22:57:55 -04:00
width: 28px; height: 28px;
background: rgba(152,0,0,0.12);
border: 1px solid rgba(152,0,0,0.35);
2026-03-18 10:36:51 -04:00
border-radius: 50%;
2026-03-19 22:57:55 -04:00
display: flex; align-items: center; justify-content: center;
font-size: 0.8rem; font-weight: 600; color: #c44;
2026-03-18 10:36:51 -04:00
}
2026-03-19 22:57:55 -04:00
.step-text { padding-top: 3px; font-size: 0.95rem; line-height: 1.5; color: #bbb; }
2026-03-18 10:36:51 -04:00
.step-text strong { color: #e0e0e0; }
.homeserver {
display: inline-block;
2026-03-19 22:57:55 -04:00
background: rgba(152,0,0,0.1);
border: 1px solid rgba(152,0,0,0.25);
2026-03-18 10:36:51 -04:00
color: #e88;
font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
font-size: 0.85rem;
padding: 3px 10px;
border-radius: 6px;
}
2026-03-19 22:57:55 -04:00
a { color: #c44; text-decoration: none; }
.step-text a, .option-block a {
border-bottom: 1px solid rgba(204,68,68,0.3);
2026-03-18 10:36:51 -04:00
transition: border-color 0.2s;
}
2026-03-19 22:57:55 -04:00
.step-text a:hover, .option-block a:hover { border-bottom-color: #c44; }
2026-03-18 10:36:51 -04:00
2026-03-19 22:57:55 -04:00
/* ─── Or divider ─── */
2026-03-18 10:36:51 -04:00
.or-divider {
2026-03-19 22:57:55 -04:00
display: flex; align-items: center; gap: 10px;
2026-03-18 10:36:51 -04:00
margin: 4px 0 10px 42px;
2026-03-19 22:57:55 -04:00
color: #444; font-size: 0.78rem; letter-spacing: 0.1em; text-transform: uppercase;
2026-03-18 10:36:51 -04:00
}
.or-divider::before, .or-divider::after {
2026-03-19 22:57:55 -04:00
content: ''; flex: 1; height: 1px; background: rgba(255,255,255,0.06);
2026-03-18 10:36:51 -04:00
}
.option-block {
margin-left: 42px;
padding: 12px 14px;
background: rgba(255,255,255,0.03);
border: 1px solid rgba(255,255,255,0.06);
border-radius: 8px;
2026-03-19 22:57:55 -04:00
text-align: left; font-size: 0.88rem; color: #888; line-height: 1.5;
2026-03-18 10:36:51 -04:00
}
2026-03-19 22:57:55 -04:00
.divider { height: 1px; background: rgba(152,0,0,0.15); margin: 24px 0; }
2026-03-18 10:36:51 -04:00
2026-03-19 22:57:55 -04:00
/* ─── Tags ─── */
.tag {
font-size: 0.65rem;
background: rgba(255,255,255,0.08);
border: 1px solid rgba(255,255,255,0.1);
padding: 2px 8px; border-radius: 4px;
text-transform: uppercase; letter-spacing: 0.05em; color: #bbb;
white-space: nowrap;
2026-03-18 10:36:51 -04:00
}
2026-03-19 22:57:55 -04:00
.tag.voice { background: rgba(0,180,120,0.2); border-color: rgba(0,180,120,0.4); color: #5effc4; }
.tag.beta { background: rgba(255,180,0,0.15); border-color: rgba(255,180,0,0.3); color: #ffcc55; }
.tag.dev { background: rgba(160,80,255,0.15); border-color: rgba(160,80,255,0.3); color: #cc88ff; }
.tag.rust { background: rgba(80,140,255,0.15); border-color: rgba(80,140,255,0.3); color: #88aaff; }
.tag.warn { background: rgba(255,140,0,0.15); border-color: rgba(255,140,0,0.3); color: #ffaa44; }
.tag.dim { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.08); color: #666; }
2026-03-18 10:36:51 -04:00
2026-03-19 22:57:55 -04:00
/* ─── Featured client ─── */
.client-featured { margin-bottom: 16px; }
2026-03-18 10:36:51 -04:00
.client-featured a {
2026-03-19 22:57:55 -04:00
display: flex; flex-direction: column; align-items: center; gap: 6px;
background: linear-gradient(135deg, rgba(152,0,0,0.25), rgba(120,0,0,0.15));
border: 1px solid rgba(152,0,0,0.55);
color: #fff; text-decoration: none;
padding: 18px 24px; border-radius: 12px;
2026-03-18 10:36:51 -04:00
transition: all 0.25s ease;
2026-03-19 22:57:55 -04:00
box-shadow: 0 0 20px rgba(152,0,0,0.1);
2026-03-18 10:36:51 -04:00
}
.client-featured a:hover {
2026-03-19 22:57:55 -04:00
background: linear-gradient(135deg, rgba(152,0,0,0.38), rgba(120,0,0,0.25));
border-color: rgba(152,0,0,0.8);
box-shadow: 0 0 32px rgba(152,0,0,0.25);
2026-03-18 10:36:51 -04:00
transform: translateY(-2px);
}
2026-03-19 22:57:55 -04:00
.client-name { font-size: 1.15rem; font-weight: 600; letter-spacing: 0.05em; }
.client-desc { font-size: 0.82rem; color: #ccc; }
2026-03-18 10:36:51 -04:00
2026-03-19 22:57:55 -04:00
.tag-row { display: flex; gap: 6px; flex-wrap: wrap; justify-content: center; margin-top: 2px; }
2026-03-18 10:36:51 -04:00
2026-03-19 22:57:55 -04:00
/* Also-available note */
.also-available {
font-size: 0.78rem; color: #555; margin-top: 8px; line-height: 1.6;
2026-03-18 10:36:51 -04:00
}
2026-03-19 22:57:55 -04:00
.also-available a { color: #666; border-bottom: 1px solid rgba(102,102,102,0.3); transition: color 0.2s; }
.also-available a:hover { color: #999; }
2026-03-18 10:36:51 -04:00
2026-03-19 22:57:55 -04:00
/* ─── Space join ─── */
.space-join {
margin-top: 20px; padding: 16px 20px;
background: rgba(152,0,0,0.06);
border: 1px solid rgba(152,0,0,0.2); border-radius: 10px;
2026-03-18 10:36:51 -04:00
}
2026-03-19 22:57:55 -04:00
.space-join p { font-size: 0.82rem; color: #666; margin-bottom: 10px; }
.space-join a {
display: inline-block;
background: rgba(152,0,0,0.15);
border: 1px solid rgba(152,0,0,0.35);
color: #c44; text-decoration: none;
padding: 8px 20px; border-radius: 8px; font-size: 0.88rem;
transition: all 0.25s ease;
2026-03-18 10:36:51 -04:00
}
2026-03-19 22:57:55 -04:00
.space-join a:hover { background: rgba(152,0,0,0.25); color: #fff; }
2026-03-18 10:36:51 -04:00
2026-03-19 22:57:55 -04:00
/* ─── Secondary client cards ─── */
.clients-section h3 {
font-size: 0.8rem; font-weight: 500; color: #666;
text-transform: uppercase; letter-spacing: 0.12em; margin-bottom: 14px;
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
}
2026-03-19 22:57:55 -04:00
.client-group { margin-bottom: 18px; }
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
2026-03-19 22:57:55 -04:00
.client-group-label {
font-size: 0.75rem; color: #555;
text-transform: uppercase; letter-spacing: 0.1em;
margin-bottom: 8px;
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
}
2026-03-19 22:57:55 -04:00
.client-cards { display: flex; flex-direction: column; gap: 8px; }
2026-03-18 10:36:51 -04:00
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
.client-card {
2026-03-19 22:57:55 -04:00
display: flex; flex-direction: column; gap: 6px;
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
background: rgba(255,255,255,0.025);
border: 1px solid rgba(255,255,255,0.06);
2026-03-19 22:57:55 -04:00
border-radius: 10px; padding: 12px 14px; text-align: left;
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
transition: border-color 0.2s;
}
.client-card:hover { border-color: rgba(152,0,0,0.3); }
.client-card-top {
2026-03-19 22:57:55 -04:00
display: flex; align-items: center;
justify-content: space-between; gap: 10px; flex-wrap: wrap;
2026-03-18 10:36:51 -04:00
}
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
.client-card-name {
2026-03-19 22:57:55 -04:00
font-size: 0.95rem; font-weight: 600; color: #e0e0e0;
2026-03-18 10:36:51 -04:00
text-decoration: none;
2026-03-19 22:57:55 -04:00
border-bottom: 1px solid rgba(204,68,68,0.2);
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
transition: color 0.2s, border-color 0.2s;
2026-03-18 10:36:51 -04:00
}
2026-03-19 22:57:55 -04:00
.client-card-name:hover { color: #c44; border-bottom-color: #c44; }
2026-03-18 10:36:51 -04:00
2026-03-19 22:57:55 -04:00
.client-card-tags { display: flex; gap: 5px; flex-wrap: wrap; }
.client-card-desc { font-size: 0.8rem; color: #666; line-height: 1.45; }
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
2026-03-19 22:57:55 -04:00
/* ─── Comparison table ─── */
.comparison-section {
margin-top: 32px;
background: linear-gradient(145deg, rgba(22,22,22,0.95), rgba(14,14,14,0.98));
border: 1px solid rgba(152,0,0,0.2);
border-radius: 16px;
overflow: hidden;
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
}
2026-03-19 22:57:55 -04:00
.comparison-title {
font-size: 0.78rem; font-weight: 500; color: #980000;
text-transform: uppercase; letter-spacing: 0.15em;
padding: 16px 20px 12px;
border-bottom: 1px solid rgba(152,0,0,0.1);
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
}
2026-03-19 22:57:55 -04:00
.table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
2026-03-19 22:57:55 -04:00
table {
width: 100%; border-collapse: collapse;
font-size: 0.78rem; min-width: 640px;
2026-03-18 10:36:51 -04:00
}
2026-03-19 22:57:55 -04:00
thead tr { border-bottom: 1px solid rgba(152,0,0,0.15); }
th {
padding: 10px 8px; text-align: center;
font-size: 0.7rem; font-weight: 600;
color: #888; text-transform: uppercase; letter-spacing: 0.08em;
background: rgba(255,255,255,0.02);
2026-03-18 10:36:51 -04:00
}
2026-03-19 22:57:55 -04:00
th:first-child { text-align: left; padding-left: 16px; min-width: 140px; }
th.ours { color: #c66; }
th small { display: block; font-size: 0.6rem; font-weight: 400; color: #555; margin-top: 2px; text-transform: none; letter-spacing: 0; }
tr { border-bottom: 1px solid rgba(255,255,255,0.03); }
tr:last-child { border-bottom: none; }
2026-03-18 10:36:51 -04:00
2026-03-19 22:57:55 -04:00
tr.section-header td {
background: rgba(152,0,0,0.06);
color: #770000; font-weight: 600;
font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.12em;
padding: 6px 8px 5px 16px; text-align: left;
2026-03-18 10:36:51 -04:00
}
2026-03-19 22:57:55 -04:00
td {
padding: 8px 8px; text-align: center; vertical-align: middle;
color: #888; line-height: 1.3;
}
td:first-child {
text-align: left; padding-left: 16px;
color: #aaa; font-size: 0.78rem;
2026-03-18 10:36:51 -04:00
}
2026-03-19 22:57:55 -04:00
td small { display: block; font-size: 0.68rem; color: #555; margin-top: 1px; }
2026-03-18 10:36:51 -04:00
2026-03-19 22:57:55 -04:00
.yes { color: #5effc4; font-size: 1rem; }
.part { color: #ffcc55; font-size: 0.9rem; }
.no { color: #444; font-size: 1rem; }
/* highlight our hosted client column */
th.ours, td.ours { background: rgba(152,0,0,0.04); }
/* ─── Legend ─── */
.legend {
display: flex; gap: 18px; justify-content: center; flex-wrap: wrap;
padding: 10px 16px 14px;
border-top: 1px solid rgba(255,255,255,0.04);
font-size: 0.72rem; color: #555;
2026-03-18 10:36:51 -04:00
}
2026-03-19 22:57:55 -04:00
.legend span { display: flex; align-items: center; gap: 5px; }
2026-03-18 10:36:51 -04:00
2026-03-19 22:57:55 -04:00
/* ─── Security note ─── */
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
.security-note {
2026-03-19 22:57:55 -04:00
margin: 0 20px 16px;
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
padding: 10px 14px;
2026-03-19 22:57:55 -04:00
background: rgba(80,140,255,0.04);
border: 1px solid rgba(80,140,255,0.12);
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
border-radius: 8px;
2026-03-19 22:57:55 -04:00
font-size: 0.76rem; color: #556; line-height: 1.55; text-align: left;
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
}
.security-note strong { color: #88aaff; }
2026-03-19 22:57:55 -04:00
.all-clients { margin-top: 14px; }
2026-03-18 10:36:51 -04:00
.all-clients a {
2026-03-19 22:57:55 -04:00
font-size: 0.78rem; color: #555;
border-bottom: 1px solid rgba(85,85,85,0.3);
2026-03-18 10:36:51 -04:00
transition: color 0.2s, border-color 0.2s;
}
2026-03-19 22:57:55 -04:00
.all-clients a:hover { color: #888; border-bottom-color: #888; }
2026-03-18 10:36:51 -04:00
2026-03-19 22:57:55 -04:00
/* ─── Server info ─── */
2026-03-18 10:36:51 -04:00
.server-info {
margin-top: 24px;
2026-03-19 22:57:55 -04:00
background: linear-gradient(145deg, rgba(22,22,22,0.95), rgba(14,14,14,0.98));
border: 1px solid rgba(152,0,0,0.2);
border-radius: 12px; overflow: hidden;
2026-03-18 10:36:51 -04:00
}
.server-info-title {
2026-03-19 22:57:55 -04:00
font-size: 0.78rem; font-weight: 500; color: #980000;
text-transform: uppercase; letter-spacing: 0.15em;
2026-03-18 10:36:51 -04:00
padding: 14px 20px 10px;
2026-03-19 22:57:55 -04:00
border-bottom: 1px solid rgba(152,0,0,0.1);
2026-03-18 10:36:51 -04:00
}
2026-03-19 22:57:55 -04:00
.info-grid { display: grid; grid-template-columns: 1fr 1fr; }
2026-03-18 10:36:51 -04:00
.info-item {
padding: 12px 18px;
border-bottom: 1px solid rgba(255,255,255,0.03);
border-right: 1px solid rgba(255,255,255,0.03);
text-align: left;
}
.info-item:nth-child(even) { border-right: none; }
.info-item:nth-last-child(-n+2) { border-bottom: none; }
2026-03-19 22:57:55 -04:00
.info-label { font-size: 0.7rem; color: #555; text-transform: uppercase; letter-spacing: 0.1em; margin-bottom: 3px; }
.info-value { font-size: 0.88rem; color: #ccc; }
2026-03-18 10:36:51 -04:00
.privacy-strip {
padding: 10px 18px;
2026-03-19 22:57:55 -04:00
border-top: 1px solid rgba(152,0,0,0.1);
display: flex; gap: 18px; justify-content: center; flex-wrap: wrap;
2026-03-18 10:36:51 -04:00
}
2026-03-19 22:57:55 -04:00
.privacy-badge { font-size: 0.75rem; color: #5effc4; display: flex; align-items: center; gap: 5px; }
.privacy-badge::before { content: '✓'; font-weight: 700; }
2026-03-18 10:36:51 -04:00
2026-03-19 22:57:55 -04:00
/* ─── Legal / contact / footer ─── */
2026-03-18 10:36:51 -04:00
.legal-note {
2026-03-19 22:57:55 -04:00
margin-top: 24px; padding: 12px 18px;
2026-03-18 10:36:51 -04:00
background: rgba(255,255,255,0.02);
border: 1px solid rgba(255,255,255,0.05);
2026-03-19 22:57:55 -04:00
border-radius: 8px; font-size: 0.75rem; color: #444;
line-height: 1.6; text-align: left;
2026-03-18 10:36:51 -04:00
}
2026-03-19 22:57:55 -04:00
.legal-note a { color: #555; border-bottom: 1px solid rgba(85,85,85,0.3); }
.legal-note a:hover { color: #888; }
2026-03-18 10:36:51 -04:00
2026-03-19 22:57:55 -04:00
.contact {
margin-top: 24px; padding: 16px;
background: linear-gradient(145deg, rgba(22,22,22,0.95), rgba(14,14,14,0.98));
border: 1px solid rgba(152,0,0,0.2);
border-radius: 12px; text-align: center;
2026-03-18 10:36:51 -04:00
}
2026-03-19 22:57:55 -04:00
.footer {
margin-top: 20px; font-size: 0.72rem; color: #383838;
letter-spacing: 0.04em;
display: flex; justify-content: center; gap: 14px; flex-wrap: wrap;
}
.footer a { color: #444; transition: color 0.2s; }
.footer a:hover { color: #777; }
2026-03-18 10:36:51 -04:00
2026-03-19 23:06:00 -04:00
/* ─── Sticky first table column (all screen sizes) ─── */
td:first-child {
position: sticky;
left: 0;
z-index: 1;
background: #0d0d0d;
}
th:first-child {
position: sticky;
left: 0;
z-index: 2;
background: #111;
}
tr.section-header td {
/* section headers span full width — override sticky bg */
position: static;
background: rgba(152,0,0,0.06);
}
/* Scroll hint — visible only on mobile via JS class */
.scroll-hint {
display: none;
font-size: 0.72rem;
color: #3a3a3a;
padding: 0 16px 10px;
letter-spacing: 0.05em;
}
/* ─── Tablet (≤ 700px) ─── */
@media (max-width: 700px) {
body { align-items: flex-start; }
}
/* ─── Mobile (≤ 540px) ─── */
@media (max-width: 540px) {
body { padding: 20px 12px 40px; }
.logo { width: 100px; height: 100px; margin-bottom: 20px; }
h1 { font-size: 1.5rem; letter-spacing: 0.1em; }
.subtitle { font-size: 0.78rem; letter-spacing: 0.18em; margin-bottom: 26px; }
.card { padding: 22px 16px; }
.step-text { font-size: 0.88rem; }
.homeserver { font-size: 0.75rem; word-break: break-all; }
2026-03-18 10:36:51 -04:00
.or-divider, .option-block { margin-left: 0; }
2026-03-19 23:06:00 -04:00
.client-card-top { flex-direction: column; align-items: flex-start; gap: 6px; }
.client-card-desc { font-size: 0.79rem; }
.client-card-tags { gap: 4px; }
.also-available { font-size: 0.75rem; }
/* Table */
.scroll-hint { display: block; }
table { font-size: 0.71rem; min-width: 520px; }
th { padding: 8px 5px; font-size: 0.6rem; }
th:first-child { min-width: 100px; padding-left: 10px; }
td { padding: 7px 5px; }
td:first-child { font-size: 0.71rem; padding-left: 10px; }
td small, th small { font-size: 0.58rem; }
.yes { font-size: 0.88rem; }
.part { font-size: 0.82rem; }
.no { font-size: 0.88rem; }
.comparison-title { font-size: 0.7rem; padding: 12px 14px 8px; letter-spacing: 0.1em; }
.security-note { margin: 10px 12px 4px; font-size: 0.71rem; }
.legend { padding: 8px 12px 12px; gap: 12px; font-size: 0.68rem; }
/* Server info */
.server-info-title { font-size: 0.7rem; padding: 12px 14px 8px; }
.info-item { padding: 10px 14px; }
.info-label { font-size: 0.65rem; }
.info-value { font-size: 0.82rem; }
.privacy-strip { flex-direction: column; align-items: center; gap: 8px; padding: 10px 14px; }
.privacy-badge { font-size: 0.71rem; }
/* Legal / footer */
.legal-note { font-size: 0.72rem; padding: 11px 14px; }
.contact { padding: 14px; }
.footer { gap: 8px; font-size: 0.68rem; }
}
/* ─── Very small (≤ 380px) ─── */
@media (max-width: 380px) {
h1 { font-size: 1.3rem; }
.logo { width: 84px; height: 84px; }
.card { padding: 18px 12px; }
table { font-size: 0.66rem; min-width: 480px; }
th { font-size: 0.55rem; padding: 7px 4px; }
td { padding: 6px 4px; }
td:first-child { font-size: 0.66rem; min-width: 90px; }
2026-03-18 10:36:51 -04:00
}
< / style >
< / head >
< body >
2026-03-19 22:57:55 -04:00
< div class = "container" >
< img class = "logo" src = "https://photos.lotusguild.org/api/assets/3c4eb2da-0d06-407f-bdb7-c9e4cf795f0a/thumbnail?key=4aoZxX5-FHE3m_Ywwz1uGo3iNW53kmFztxfUw91PdOgphPNxayLFicNuxPvit1OYTpY&size=preview&c=jUqDBQAWF9iId3J%2FyAeIcIAICEd4d3BzSA%3D%3D" alt = "Lotus Guild" >
< h1 > < span > Lotus< / span > Guild< / h1 >
< p class = "subtitle" > Private Communications< / p >
<!-- ── How to Join ── -->
< div class = "card" >
< h2 > How to Join< / h2 >
< ol class = "steps" >
< li >
< span class = "step-num" > 1< / span >
< span class = "step-text" > Open < a href = "https://chat.lotusguild.org" target = "_blank" rel = "noopener" > chat.lotusguild.org< / a > — your homeserver is pre-configured< / span >
< / li >
< li >
< span class = "step-num" > 2< / span >
< span class = "step-text" > Register with a < strong > token from Jared< / strong > — < code class = "homeserver" > @jared:matrix.lotusguild.org< / code > < / span >
< / li >
< li >
< span class = "step-num" > 3< / span >
< span class = "step-text" > Join the < a href = "https://matrix.to/#/!-1ZBnAH-JiCOV8MGSKN77zDGTuI3pgSdy8Unu_DrDyc?via=matrix.lotusguild.org&via=matrix.org" target = "_blank" rel = "noopener" > Lotus Guild Space< / a > to access all rooms< / span >
< / li >
< / ol >
< div class = "or-divider" > or join from another server< / div >
< div class = "option-block" >
Already have a Matrix account? Sign up free at < a href = "https://app.element.io/#/register?hs_url=https://mozilla.modular.im" target = "_blank" rel = "noopener" > mozilla.org< / a > or < a href = "https://app.element.io/#/register" target = "_blank" rel = "noopener" > matrix.org< / a > , then < a href = "https://matrix.to/#/!-1ZBnAH-JiCOV8MGSKN77zDGTuI3pgSdy8Unu_DrDyc?via=matrix.lotusguild.org&via=matrix.org" target = "_blank" rel = "noopener" > join our space< / a > .
< / div >
< div class = "divider" > < / div >
<!-- ── Recommended client ── -->
< div class = "clients-section" >
< h3 > Recommended Client< / h3 >
< div class = "client-featured" >
< a href = "https://chat.lotusguild.org" target = "_blank" rel = "noopener" >
< span class = "client-name" > Lotus Guild Chat< / span >
< span class = "client-desc" > Hosted Cinny — homeserver pre-configured, no setup< / span >
< span class = "tag-row" >
< span class = "tag dim" > Desktop & Web< / span >
< span class = "tag dev" > Dev Branch< / span >
< span class = "tag voice" > Voice & Video Rooms< / span >
< span class = "tag" > Discord-like UI< / span >
< / span >
< / a >
< / div >
< p class = "also-available" >
Runs the Cinny < strong > dev branch< / strong > — latest beta features, updated nightly.
Prefer stable? Use < a href = "https://cinny.in" target = "_blank" rel = "noopener" > cinny.in< / a > and set homeserver to < code style = "font-size:0.8em;color:#e88;" > matrix.lotusguild.org< / code > .
< / p >
< div class = "space-join" >
< p > Already signed in? Jump straight into the community:< / p >
< a href = "https://matrix.to/#/!-1ZBnAH-JiCOV8MGSKN77zDGTuI3pgSdy8Unu_DrDyc?via=matrix.lotusguild.org&via=matrix.org" target = "_blank" rel = "noopener" > Join Lotus Guild Space → < / a >
2026-03-18 10:36:51 -04:00
< / div >
< div class = "divider" > < / div >
2026-03-19 22:57:55 -04:00
<!-- ── Other clients ── -->
2026-03-18 10:36:51 -04:00
< div class = "clients-section" >
2026-03-19 22:57:55 -04:00
< h3 > Other Clients< / h3 >
< div class = "client-group" >
< p class = "client-group-label" > Mobile — iOS & Android< / p >
< div class = "client-cards" >
< div class = "client-card" >
< div class = "client-card-top" >
< a href = "https://element.io/element-x" target = "_blank" rel = "noopener" class = "client-card-name" > Element X< / a >
< div class = "client-card-tags" >
< span class = "tag dim" > iOS< / span >
< span class = "tag dim" > Android< / span >
< span class = "tag rust" > Rust SDK< / span >
< span class = "tag voice" > Voice, Video & Screenshare< / span >
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
< / div >
< / div >
2026-03-19 22:57:55 -04:00
< p class = "client-card-desc" > Fastest Matrix client — instant load via Sliding Sync. Native MatrixRTC calls and screenshare. Rust encryption (Vodozemac). Spaces viewing works; creating/managing spaces still in progress.< / p >
< / div >
< div class = "client-card" >
< div class = "client-card-top" >
< a href = "https://fluffychat.im/" target = "_blank" rel = "noopener" class = "client-card-name" > FluffyChat< / a >
< div class = "client-card-tags" >
< span class = "tag dim" > iOS< / span >
< span class = "tag dim" > Android< / span >
< span class = "tag dim" > Desktop< / span >
< span class = "tag dim" > Web< / span >
< span class = "tag rust" > Rust SDK< / span >
< span class = "tag warn" > Calls Experimental< / span >
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
< / div >
< / div >
2026-03-19 22:57:55 -04:00
< p class = "client-card-desc" > Simple, beginner-friendly, fully cross-platform. Rust encryption (Vodozemac). Unique: supports image captions (text + image as one event). Voice/video calls are experimental — reliability varies by homeserver and platform.< / p >
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
< / div >
< / div >
2026-03-19 22:57:55 -04:00
< / div >
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
2026-03-19 22:57:55 -04:00
< div class = "client-group" >
< p class = "client-group-label" > Discord-like — Android, Windows & Linux< / p >
< div class = "client-cards" >
< div class = "client-card" >
< div class = "client-card-top" >
< a href = "https://commet.chat/" target = "_blank" rel = "noopener" class = "client-card-name" > Commet< / a >
< div class = "client-card-tags" >
< span class = "tag dim" > Android< / span >
< span class = "tag dim" > Windows< / span >
< span class = "tag dim" > Linux< / span >
< span class = "tag beta" > Beta< / span >
< span class = "tag voice" > Voice & Video< / span >
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
< / div >
< / div >
2026-03-19 22:57:55 -04:00
< p class = "client-card-desc" > Most Discord-like client overall. Multi-account support, built-in GIF search (via privacy-respecting proxy — GIFs upload to your homeserver, not tracked by Tenor). Shared calendars and photo albums. No iOS or macOS yet. Active early-stage development.< / p >
2026-03-18 10:36:51 -04:00
< / div >
< / div >
2026-03-19 22:57:55 -04:00
< / div >
2026-03-18 10:36:51 -04:00
2026-03-19 22:57:55 -04:00
< div class = "client-group" >
< p class = "client-group-label" > Desktop — Windows, macOS & Linux< / p >
< div class = "client-cards" >
< div class = "client-card" >
< div class = "client-card-top" >
< a href = "https://element.io/download" target = "_blank" rel = "noopener" class = "client-card-name" > Element< / a >
< div class = "client-card-tags" >
< span class = "tag dim" > Windows< / span >
< span class = "tag dim" > macOS< / span >
< span class = "tag dim" > Linux< / span >
< span class = "tag dim" > Web< / span >
< span class = "tag voice" > Voice, Video & Screenshare< / span >
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
< / div >
< / div >
2026-03-19 22:57:55 -04:00
< p class = "client-card-desc" > Most feature-complete Matrix client — every spec feature including polls, widgets, threads, screenshare. Heavier on resources. Encrypted message search on desktop only (not web).< / p >
< / div >
< div class = "client-card" >
< div class = "client-card-top" >
< a href = "https://nheko-reborn.github.io/" target = "_blank" rel = "noopener" class = "client-card-name" > Nheko< / a >
< div class = "client-card-tags" >
< span class = "tag dim" > Windows< / span >
< span class = "tag dim" > macOS< / span >
< span class = "tag dim" > Linux< / span >
< span class = "tag voice" > Voice & Video< / span >
landing: overhaul client listings with accurate March 2026 data
- Replace flat client buttons with descriptive cards showing platforms, features, and caveats
- Cinny featured card: "Voice & Video Rooms" (accurate — not DMs, space rooms only)
- Element X: correct platforms (iOS/Android only), add Rust SDK + Screenshare tags
- FluffyChat: add "Calls Experimental" tag with homeserver caveat
- Commet: fix to Android/Windows/Linux only (remove incorrect iOS listing), add multi-account/GIF/calendar notes
- Element desktop: add Screenshare tag, note resource usage
- Nheko: add as native lightweight desktop alternative
- Remove SchildiChat (unverified/outdated)
- Add encryption security note (Vodozemac Rust SDK vs matrix-js-sdk)
- Add new CSS: .client-card, .tag.rust, .tag.experimental, .tag.platform, .security-note
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 22:51:07 -04:00
< / div >
< / div >
2026-03-19 22:57:55 -04:00
< p class = "client-card-desc" > Native C++/Qt client — lightest desktop option, no Electron. Deep KDE/Plasma integration. No threads, no mobile or web. Best for Linux power users who want minimal resource usage.< / p >
2026-03-18 10:36:51 -04:00
< / div >
< / div >
< / div >
2026-03-19 22:57:55 -04:00
< p class = "all-clients" > < a href = "https://matrix.org/ecosystem/clients/" target = "_blank" rel = "noopener" > View all Matrix clients → < / a > < / p >
2026-03-18 10:36:51 -04:00
< / div >
< / div >
2026-03-19 22:57:55 -04:00
< / div > <!-- end .card -->
<!-- ── Feature Comparison Table ── -->
< div class = "comparison-section" >
< p class = "comparison-title" > Client Feature Comparison — March 2026< / p >
2026-03-19 23:06:00 -04:00
< p class = "scroll-hint" id = "scrollHint" > ← swipe to compare →< / p >
2026-03-19 22:57:55 -04:00
< div class = "table-wrap" >
< table >
< thead >
< tr >
< th > < / th >
< th class = "ours" > Cinny< small > chat.lotusguild.org< br > dev branch< / small > < / th >
< th > Element X< small > iOS & Android< / small > < / th >
< th > FluffyChat< small > All platforms< / small > < / th >
< th > Commet< small > Android / Win / Linux< / small > < / th >
< th > Element< small > Web & Desktop< / small > < / th >
< th > Nheko< small > Desktop only< / small > < / th >
< / tr >
< / thead >
< tbody >
<!-- Platform -->
< tr class = "section-header" > < td colspan = "7" > Platform< / td > < / tr >
< tr >
< td > iOS< / td >
< td class = "ours" > < span class = "no" > ✗< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< / tr >
< tr >
< td > Android< / td >
< td class = "ours" > < span class = "no" > ✗< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< / tr >
< tr >
< td > Desktop app< / td >
< td class = "ours" > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < small > Win & Linux< / small > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< / tr >
< tr >
< td > Web browser< / td >
< td class = "ours" > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< / tr >
< tr >
< td > Performance< / td >
< td class = "ours" > Light< / td >
< td > Very fast< small > Sliding Sync< / small > < / td >
< td > Moderate< / td >
< td > Moderate< / td >
< td > Heavy< small > Electron / JS< / small > < / td >
< td > Light< small > Native C++< / small > < / td >
< / tr >
<!-- Security -->
< tr class = "section-header" > < td colspan = "7" > Security & Encryption< / td > < / tr >
< tr >
< td > E2EE< / td >
< td class = "ours" > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< / tr >
< tr >
< td > Rust SDK (Vodozemac)< small > stronger crypto track record< / small > < / td >
< td class = "ours" > < span class = "no" > ✗< / span > < small > js-sdk< / small > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "no" > ✗< / span > < small > js-sdk, migrating< / small > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< / tr >
< tr >
< td > Device verification< / td >
< td class = "ours" > < span class = "part" > ~< / span > < small > requests may show as< br > "Unsupported message"< / small > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< / tr >
<!-- Calling -->
< tr class = "section-header" > < td colspan = "7" > Voice & Video< / td > < / tr >
< tr >
< td > Voice & video calls< / td >
< td class = "ours" > < span class = "part" > ~< / span > < small > dedicated space rooms only,< br > not DMs< / small > < / td >
< td > < span class = "yes" > ✓< / span > < small > MatrixRTC< / small > < / td >
< td > < span class = "part" > ~< / span > < small > experimental, varies< br > by homeserver< / small > < / td >
2026-03-19 23:02:08 -04:00
< td > < span class = "part" > ~< / span > < small > 1:1 + group,< br > no E2EE voice rooms< / small > < / td >
2026-03-19 22:57:55 -04:00
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< / tr >
< tr >
< td > Screenshare< / td >
< td class = "ours" > < span class = "no" > ✗< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "part" > ~< / span > < small > partial< / small > < / td >
< / tr >
< tr >
< td > Group calls< / td >
< td class = "ours" > < span class = "part" > ~< / span > < small > space rooms only< / small > < / td >
< td > < span class = "yes" > ✓< / span > < small > MatrixRTC< / small > < / td >
< td > < span class = "no" > ✗< / span > < / td >
2026-03-19 23:02:08 -04:00
< td > < span class = "part" > ~< / span > < small > no E2EE voice rooms< / small > < / td >
2026-03-19 22:57:55 -04:00
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "part" > ~< / span > < small > partial< / small > < / td >
< / tr >
<!-- Core features -->
< tr class = "section-header" > < td colspan = "7" > Core Features< / td > < / tr >
< tr >
< td > Spaces< / td >
< td class = "ours" > < span class = "yes" > ✓< / span > < small > best-in-class sub-space nav< / small > < / td >
< td > < span class = "part" > ~< / span > < small > viewing works;< br > management in progress< / small > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < small > Discord-like categories< / small > < / td >
< td > < span class = "yes" > ✓< / span > < small > sub-spaces clunky< / small > < / td >
< td > < span class = "part" > ~< / span > < small > limited< / small > < / td >
< / tr >
< tr >
< td > Threads< / td >
< td class = "ours" > < span class = "part" > ~< / span > < small > basic, no dedicated view< / small > < / td >
< td > < span class = "part" > ~< / span > < small > Labs flag< / small > < / td >
< td > < span class = "no" > ✗< / span > < small > shows as regular messages< / small > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< / tr >
< tr >
< td > Polls< / td >
< td class = "ours" > < span class = "no" > ✗< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "part" > ~< / span > < small > recently added< / small > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< / tr >
< tr >
< td > Custom emoji & stickers< / td >
< td class = "ours" > < span class = "yes" > ✓< / span > < small > best-in-class< / small > < / td >
< td > < span class = "part" > ~< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < small > bulk upload, Signal packs< / small > < / td >
< td > < span class = "part" > ~< / span > < small > sometimes shows mxc:// URLs< / small > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< / tr >
< tr >
< td > GIF search / picker< / td >
< td class = "ours" > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "yes" > ✓< / span > < small > privacy proxy,< br > uploads to homeserver< / small > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< / tr >
< tr >
< td > Message search (encrypted)< / td >
< td class = "ours" > < span class = "part" > ~< / span > < small > partial, some rooms broken< / small > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "part" > ~< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "part" > ~< / span > < small > desktop only, not web< / small > < / td >
< td > < span class = "part" > ~< / span > < / td >
< / tr >
< tr >
< td > Widgets< / td >
< td class = "ours" > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< / tr >
<!-- UX / extras -->
< tr class = "section-header" > < td colspan = "7" > UX & Extras< / td > < / tr >
< tr >
< td > Multi-account< / td >
< td class = "ours" > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "part" > ~< / span > < small > supported but clunky< / small > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < small > CLI profiles only< / small > < / td >
< / tr >
< tr >
< td > Image captions< small > (text + image as one event)< / small > < / td >
< td class = "ours" > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "yes" > ✓< / span > < small > unique feature< / small > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "part" > ~< / span > < / td >
< / tr >
< tr >
< td > Discord-like UI< / td >
< td class = "ours" > < span class = "yes" > ✓< / span > < small > best-in-class for web< / small > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < small > WhatsApp/Telegram style< / small > < / td >
< td > < span class = "yes" > ✓< / span > < small > most Discord-like overall< / small > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< / tr >
< tr >
< td > Shared calendars & albums< / td >
< td class = "ours" > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "yes" > ✓< / span > < small > unique to Commet< / small > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< td > < span class = "no" > ✗< / span > < / td >
< / tr >
2026-03-19 23:02:08 -04:00
< tr >
< td > Deleted message visibility< small > (redacted events)< / small > < / td >
< td class = "ours" > < span class = "no" > ✗< / span > < small > hides deleted messages< br > entirely — no trace< / small > < / td >
< td > < span class = "yes" > ✓< / span > < small > "Message deleted"< br > placeholder shown< / small > < / td >
< td > < span class = "yes" > ✓< / span > < small > shows redaction notice< / small > < / td >
< td > < span class = "yes" > ✓< / span > < small > shows redaction notice< / small > < / td >
< td > < span class = "yes" > ✓< / span > < small > "Message deleted"< br > placeholder shown< / small > < / td >
< td > < span class = "yes" > ✓< / span > < small > shows redaction notice< / small > < / td >
< / tr >
2026-03-19 22:57:55 -04:00
< tr >
< td > Push notifications< / td >
< td class = "ours" > < span class = "part" > ~< / span > < small > web push only< / small > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< td > < span class = "yes" > ✓< / span > < small > desktop< / small > < / td >
< td > < span class = "yes" > ✓< / span > < / td >
< / tr >
< / tbody >
< / table >
< / div > <!-- table - wrap -->
< div class = "security-note" style = "margin:14px 16px 6px;" >
< strong > Encryption architecture:< / strong > Element X, FluffyChat, and Commet use < strong > Vodozemac< / strong > — the Rust implementation of Matrix encryption — which has a stronger security track record than the older JavaScript SDK. Cinny and Element Web/Desktop currently use < strong > matrix-js-sdk< / strong > ; Element is actively migrating to the Rust SDK via WebAssembly. Rust-based clients were not affected by historical js-sdk implementation vulnerabilities.
< / div >
2026-03-18 10:36:51 -04:00
2026-03-19 22:57:55 -04:00
< div class = "legend" >
< span > < span class = "yes" > ✓< / span > Full support< / span >
< span > < span class = "part" > ~< / span > Partial / experimental< / span >
< span > < span class = "no" > ✗< / span > Not supported< / span >
< / div >
< / div > <!-- comparison - section -->
<!-- ── Server Details ── -->
< div class = "server-info" >
< p class = "server-info-title" > Server Details< / p >
< div class = "info-grid" >
< div class = "info-item" >
< div class = "info-label" > Access< / div >
< div class = "info-value" > Invite-only< / div >
< / div >
< div class = "info-item" >
< div class = "info-label" > Max Upload< / div >
< div class = "info-value" > 200 MB / file< / div >
< / div >
< div class = "info-item" >
< div class = "info-label" > Message History< / div >
< div class = "info-value" > Kept indefinitely< / div >
< / div >
< div class = "info-item" >
< div class = "info-label" > Media Retention< / div >
< div class = "info-value" > 3 yr local · 1 yr remote< / div >
< / div >
< div class = "info-item" >
< div class = "info-label" > Federation< / div >
< div class = "info-value" > Fully federated< / div >
2026-03-18 10:36:51 -04:00
< / div >
2026-03-19 22:57:55 -04:00
< div class = "info-item" >
< div class = "info-label" > Minimum Age< / div >
< div class = "info-value" > 13+ (COPPA)< / div >
2026-03-18 10:36:51 -04:00
< / div >
< / div >
2026-03-19 22:57:55 -04:00
< div class = "privacy-strip" >
< span class = "privacy-badge" > No ads or tracking< / span >
< span class = "privacy-badge" > No data sold< / span >
< span class = "privacy-badge" > E2EE — server cannot read encrypted rooms< / span >
2026-03-18 10:36:51 -04:00
< / div >
2026-03-19 22:57:55 -04:00
< / div >
2026-03-18 10:36:51 -04:00
2026-03-19 22:57:55 -04:00
< div class = "legal-note" >
This service is provided "as-is" with no uptime guarantee. Not for emergency use — do not use to contact emergency services (e.g. 911). Use is governed by our < a href = "https://wiki.lotusguild.org/en/Legal/terms-of-service" target = "_blank" rel = "noopener" > Terms of Service< / a > and < a href = "https://wiki.lotusguild.org/en/Legal/privacy-policy" target = "_blank" rel = "noopener" > Privacy Policy< / a > . Governing law: State of Ohio, United States.
< / div >
2026-03-18 10:36:51 -04:00
2026-03-19 22:57:55 -04:00
< div class = "contact" >
< p style = "font-size:0.85rem;color:#777;margin-bottom:4px;" > Questions or need a registration token?< / p >
< p > Reach out to < code class = "homeserver" > @jared:matrix.lotusguild.org< / code > < / p >
2026-03-18 10:36:51 -04:00
< / div >
2026-03-19 22:57:55 -04:00
< p class = "footer" >
< a href = "https://wiki.lotusguild.org/en/Services/service-matrix" target = "_blank" rel = "noopener" > Wiki & Setup Guide< / a >
< span > · < / span >
< a href = "https://wiki.lotusguild.org/en/Legal/privacy-policy" target = "_blank" rel = "noopener" > Privacy Policy< / a >
< span > · < / span >
< a href = "https://wiki.lotusguild.org/en/Legal/terms-of-service" target = "_blank" rel = "noopener" > Terms of Service< / a >
< span > · < / span >
< span > Powered by Matrix · E2E Encrypted< / span >
< / p >
< / div > <!-- container -->
2026-03-19 23:06:00 -04:00
< script >
// Show scroll hint only on touch devices; hide once table is scrolled
if ('ontouchstart' in window || navigator.maxTouchPoints > 0) {
var hint = document.getElementById('scrollHint');
if (hint) hint.style.display = 'block';
var wrap = hint & & hint.nextElementSibling;
if (wrap) wrap.addEventListener('scroll', function hide() {
hint.style.display = 'none';
wrap.removeEventListener('scroll', hide);
}, { passive: true });
}
< / script >
2026-03-18 10:36:51 -04:00
< / body >
< / html >