/* ============================================================
   The Spring — chat interface  ·  springwater dark
   Best-of Discord (categories, presence, reactions) +
   Slack (quick-switch, clean type, grouped messages).
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap');

:root{
  --bg-deep:#08110f;        /* app frame */
  --bg-sidebar:#0a1614;     /* channel rail */
  --bg-chat:#0d1a18;        /* message area */
  --surface:#132320;        /* hover / composer */
  --surface-2:#18302b;      /* raised */
  --line:rgba(120,190,165,.10);
  --line-2:rgba(120,190,165,.16);
  --accent:#3ee0a1;         /* spring green */
  --accent-deep:#16b17a;
  --accent-ink:#04120c;
  --amber:#f2b657;          /* austin warmth, sparing */
  --text:#e9f2ed;
  --dim:#93a99f;
  --mut:#607468;
  --danger:#f2696b;
  --mention:rgba(62,224,161,.15);
  --radius:10px;
  --sidebar-w:264px;
  --members-w:212px;
  --font:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --display:'Space Grotesk','Inter',sans-serif;
  --mono:ui-monospace,'JetBrains Mono','SF Mono',Menlo,Consolas,monospace;
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:var(--font);
  background:var(--bg-deep);
  color:var(--text);
  font-size:15px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  overflow:hidden;
}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
::selection{background:rgba(62,224,161,.28)}

/* thin scrollbars, springwater */
*::-webkit-scrollbar{width:9px;height:9px}
*::-webkit-scrollbar-thumb{background:rgba(120,190,165,.16);border-radius:6px}
*::-webkit-scrollbar-thumb:hover{background:rgba(120,190,165,.28)}
*::-webkit-scrollbar-track{background:transparent}

/* ============================ APP SHELL ============================ */
.app{display:grid;grid-template-columns:var(--sidebar-w) 1fr;height:100dvh;overflow:hidden}
.app.with-members{grid-template-columns:var(--sidebar-w) 1fr var(--members-w)}

/* ============================ SIDEBAR ============================ */
.rail{
  background:var(--bg-sidebar);
  border-right:1px solid var(--line);
  display:flex;flex-direction:column;
  min-height:0;
}
.brand{
  display:flex;align-items:center;gap:11px;
  padding:16px 18px 14px;
  border-bottom:1px solid var(--line);
  flex:none;
}
.brand .mark{
  width:30px;height:30px;border-radius:9px;flex:none;position:relative;
  background:radial-gradient(circle at 32% 28%,#5cf0b6,var(--accent-deep));
  box-shadow:0 0 0 1px rgba(62,224,161,.35),0 6px 16px -6px rgba(62,224,161,.5);
}
.brand .mark::after{
  content:"";position:absolute;inset:0;border-radius:9px;
  background:radial-gradient(circle at 50% 120%,rgba(255,255,255,.35),transparent 60%);
}
.brand h1{font-family:var(--display);font-size:1.06rem;font-weight:700;letter-spacing:-.01em;line-height:1.05}
.brand h1 span{display:block;font-size:.6rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin-top:2px}

/* quick switcher trigger */
.qjump{margin:12px 12px 6px;flex:none}
.qjump button{
  width:100%;display:flex;align-items:center;gap:9px;
  padding:8px 11px;border-radius:8px;
  background:var(--surface);border:1px solid var(--line);
  color:var(--dim);font-size:.83rem;transition:.14s;
}
.qjump button:hover{background:var(--surface-2);color:var(--text)}
.qjump kbd{
  margin-left:auto;font-family:var(--mono);font-size:.66rem;
  background:rgba(0,0,0,.35);border:1px solid var(--line);
  border-radius:5px;padding:2px 6px;color:var(--mut);
}

.channels{flex:1;overflow-y:auto;padding:6px 8px 14px;min-height:0}

.cat{margin-top:12px}
.cat-head{
  display:flex;align-items:center;gap:5px;width:100%;
  padding:5px 8px 4px;
  font-family:var(--display);
  font-size:.66rem;font-weight:600;letter-spacing:.13em;text-transform:uppercase;
  color:var(--mut);transition:.12s;
}
.cat-head:hover{color:var(--dim)}
.cat-head .chev{transition:transform .16s;font-size:.7rem;opacity:.7}
.cat.collapsed .chev{transform:rotate(-90deg)}
.cat.collapsed .cat-list{display:none}
.cat-head .emoji{margin-right:1px}

.chan{
  display:flex;align-items:center;gap:8px;
  padding:6px 9px;border-radius:7px;
  color:var(--dim);font-size:.9rem;font-weight:500;
  cursor:pointer;transition:.1s;position:relative;
}
.chan .hash{color:var(--mut);font-weight:600;font-size:.95rem}
.chan:hover{background:var(--surface);color:var(--text)}
.chan.active{background:var(--surface-2);color:#fff}
.chan.active .hash{color:var(--accent)}
.chan.unread{color:#fff}
.chan.unread .name{font-weight:600}
.chan.unread .hash{color:var(--accent)}
.chan .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chan .dot{width:7px;height:7px;border-radius:50%;background:var(--accent);
  position:absolute;left:1px;box-shadow:0 0 6px var(--accent)}
.chan .badge{
  margin-left:auto;font-size:.66rem;font-weight:700;
  background:var(--accent-deep);color:var(--accent-ink);
  border-radius:9px;padding:1px 7px;min-width:18px;text-align:center;
}

/* user footer */
.me{
  display:flex;align-items:center;gap:10px;
  padding:9px 12px;border-top:1px solid var(--line);
  background:var(--bg-sidebar);flex:none;
}
.me .av{width:32px;height:32px;border-radius:9px;flex:none;
  display:grid;place-items:center;font-weight:700;font-size:.9rem;color:var(--accent-ink);
  background:linear-gradient(135deg,#5cf0b6,var(--accent-deep));position:relative}
.me .av .pres{position:absolute;right:-2px;bottom:-2px;width:11px;height:11px;border-radius:50%;
  background:var(--accent);border:2.5px solid var(--bg-sidebar)}
.me .who{min-width:0;flex:1}
.me .who b{font-size:.86rem;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.me .who small{font-size:.7rem;color:var(--accent)}
.me .who a{color:var(--mut);font-size:.7rem}
.me .cog{color:var(--mut);padding:6px;border-radius:7px;font-size:1rem;transition:.12s}
.me .cog:hover{color:var(--text);background:var(--surface)}

.me.guest{flex-direction:column;align-items:stretch;gap:8px;padding:14px}
.me.guest a.primary{
  display:block;text-align:center;padding:9px;border-radius:8px;
  background:var(--accent);color:var(--accent-ink);font-weight:700;font-size:.86rem;
}
.me.guest a.primary:hover{background:#5cf0b6;text-decoration:none}
.me.guest a.ghost{display:block;text-align:center;font-size:.8rem;color:var(--dim)}

/* ============================ MAIN ============================ */
.main{background:var(--bg-chat);display:flex;flex-direction:column;min-width:0;min-height:0;position:relative}
.main.dropping::after{content:"Drop an image to share";position:absolute;inset:8px;z-index:30;
  display:grid;place-items:center;border:2px dashed var(--accent);border-radius:14px;
  background:rgba(62,224,161,.08);color:var(--accent);font-weight:600;font-family:var(--display);
  pointer-events:none}
.chead{
  display:flex;align-items:center;gap:12px;
  padding:0 18px;height:52px;flex:none;
  border-bottom:1px solid var(--line);
  box-shadow:0 1px 0 rgba(0,0,0,.2);
}
.chead .burger{display:none;font-size:1.3rem;color:var(--dim)}
.chead .title{display:flex;align-items:baseline;gap:9px;min-width:0}
.chead .title .h{font-family:var(--display);font-weight:700;font-size:1.02rem;color:#fff}
.chead .title .h::before{content:"#";color:var(--mut);margin-right:1px}
.chead .title .topic{color:var(--dim);font-size:.82rem;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;border-left:1px solid var(--line-2);padding-left:9px}
.chead .tools{margin-left:auto;display:flex;align-items:center;gap:2px}
.chead .tools button{color:var(--mut);padding:7px;border-radius:7px;transition:.12s;font-size:1rem;line-height:1}
.chead .tools button:hover{color:var(--text);background:var(--surface)}
.chead .tools button.on{color:var(--accent)}

/* message stream */
.stream{flex:1;overflow-y:auto;padding:16px 0 6px;min-height:0;overscroll-behavior:contain}
.stream-top{padding:26px 20px 14px}
.welcome-block{max-width:640px}
.welcome-block .big{
  width:56px;height:56px;border-radius:16px;margin-bottom:14px;
  display:grid;place-items:center;font-size:1.5rem;
  background:linear-gradient(135deg,var(--surface-2),var(--surface));border:1px solid var(--line-2);
}
.welcome-block h2{font-family:var(--display);font-size:1.5rem;font-weight:700;letter-spacing:-.02em}
.welcome-block h2 .h{color:var(--accent)}
.welcome-block p{color:var(--dim);margin-top:6px;font-size:.92rem;max-width:52ch}
.load-earlier{
  display:inline-flex;align-items:center;gap:8px;margin-top:16px;
  padding:8px 15px;border-radius:20px;
  background:var(--surface);border:1px solid var(--line-2);
  color:var(--dim);font-size:.82rem;font-weight:500;transition:.14s;
}
.load-earlier:hover{background:var(--surface-2);color:var(--text)}
.load-earlier[hidden]{display:none}

/* seamless timeline: top loader, beginning marker, jump highlight, to-present */
.top-loader{display:flex;justify-content:center;padding:10px 0;min-height:2px}
.top-loader .sp{display:none;width:16px;height:16px;border:2px solid var(--mut);
  border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}
.top-loader.on .sp{display:block}
.beginning{text-align:center;padding:30px 20px 20px;color:var(--dim)}
.beginning .big{width:52px;height:52px;border-radius:15px;margin:0 auto 12px;display:grid;
  place-items:center;font-size:1.4rem;background:linear-gradient(135deg,var(--surface-2),var(--surface));
  border:1px solid var(--line-2)}
.beginning b{display:block;font-family:var(--display);font-size:1.15rem;color:#fff}
.beginning b::before{content:"";}
.beginning span{font-size:.85rem}
.msg.flash{animation:flashmsg 1.6s ease-out}
@keyframes flashmsg{0%,30%{background:rgba(62,224,161,.16)}100%{background:transparent}}
.to-present{position:absolute;right:26px;bottom:96px;z-index:20;
  background:var(--surface-2);border:1px solid var(--line-2);color:var(--text);
  padding:8px 15px;border-radius:20px;font-size:.82rem;font-weight:600;
  box-shadow:0 8px 22px -8px rgba(0,0,0,.6)}
.to-present:hover{background:var(--surface);border-color:var(--accent-deep)}
.load-earlier .sp{width:13px;height:13px;border:2px solid var(--mut);border-top-color:var(--accent);
  border-radius:50%;animation:spin .7s linear infinite;display:none}
.load-earlier.loading .sp{display:block}
.load-earlier.loading .lbl{opacity:.6}
@keyframes spin{to{transform:rotate(360deg)}}

.daydiv{display:flex;align-items:center;gap:14px;margin:18px 20px 6px;color:var(--mut);
  font-size:.7rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.daydiv::before,.daydiv::after{content:"";height:1px;flex:1;background:var(--line)}

/* message group */
.msg{padding:2px 20px 2px 74px;position:relative;margin-top:1px}
.msg:hover{background:rgba(255,255,255,.018)}
.msg.grouped{margin-top:0}
.msg .av{
  position:absolute;left:20px;top:3px;width:40px;height:40px;border-radius:12px;
  display:grid;place-items:center;font-weight:700;font-size:1rem;color:var(--accent-ink);
}
.msg.grouped .av{display:none}
.msg .head{display:flex;align-items:baseline;gap:9px;margin-bottom:1px;padding-top:5px}
.msg.grouped .head{display:none}
.msg .who{font-weight:600;color:#fff;font-size:.95rem}
.msg .who.archived{color:var(--amber)}
.msg .who:hover{text-decoration:underline;cursor:pointer}
.msg .stamp{font-size:.68rem;color:var(--mut)}
.msg .tag{font-size:.58rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  color:var(--amber);background:rgba(242,182,87,.12);padding:1px 6px;border-radius:5px}
.msg.grouped .gstamp{position:absolute;left:20px;top:5px;width:48px;text-align:right;
  font-size:.62rem;color:transparent;transition:.1s}
.msg.grouped:hover .gstamp{color:var(--mut)}
.body{color:var(--text);word-wrap:break-word;overflow-wrap:anywhere}
.body p{margin:2px 0}
.body a{color:var(--accent);word-break:break-word}
.body code{font-family:var(--mono);font-size:.86em;background:rgba(0,0,0,.32);
  padding:1px 5px;border-radius:5px;border:1px solid var(--line)}
.body pre{font-family:var(--mono);font-size:.84em;background:#06110d;border:1px solid var(--line);
  border-radius:8px;padding:11px 13px;margin:6px 0;overflow-x:auto;line-height:1.55}
.body pre code{background:none;border:none;padding:0}
.body blockquote{border-left:3px solid var(--line-2);padding:1px 0 1px 12px;margin:3px 0;color:var(--dim)}
.body ul,.body ol{margin:3px 0 3px 20px}
.body img{max-width:min(420px,100%);height:auto;border-radius:8px;margin:5px 0;display:block}
.body h1,.body h2,.body h3{font-family:var(--display);margin:6px 0 2px;line-height:1.25}
.body h1{font-size:1.2rem}.body h2{font-size:1.08rem}.body h3{font-size:.98rem}
.body .mention{background:var(--mention);color:var(--accent);font-weight:600;
  padding:0 3px;border-radius:4px;cursor:pointer}
.body .edited{font-size:.64rem;color:var(--mut);margin-left:5px}
.msg.deleted .body{color:var(--mut);font-style:italic}

/* reactions */
.reacts{display:flex;flex-wrap:wrap;gap:5px;margin:4px 0 3px}
.react{
  display:inline-flex;align-items:center;gap:5px;
  padding:2px 8px;border-radius:11px;font-size:.78rem;
  background:var(--surface);border:1px solid var(--line);transition:.1s;
}
.react:hover{border-color:var(--line-2)}
.react.mine{background:rgba(62,224,161,.16);border-color:var(--accent-deep)}
.react .n{font-weight:600;color:var(--dim)}
.react.mine .n{color:var(--accent)}

/* hover toolbar on message */
.mtools{
  position:absolute;top:-12px;right:16px;display:none;
  background:var(--surface-2);border:1px solid var(--line-2);border-radius:9px;
  box-shadow:0 8px 22px -8px rgba(0,0,0,.6);
}
.msg:hover .mtools{display:flex}
.mtools button{padding:6px 8px;font-size:.9rem;color:var(--dim);border-radius:8px;transition:.1s}
.mtools button:hover{color:var(--text);background:var(--surface)}

/* composer */
.composer{padding:0 18px 20px;flex:none}
.composer .box{
  background:var(--surface);border:1px solid var(--line-2);border-radius:12px;
  display:flex;align-items:flex-end;gap:8px;padding:6px 6px 6px 14px;
  transition:border-color .15s;
}
.composer .box:focus-within{border-color:var(--accent-deep)}
.composer textarea{
  flex:1;resize:none;background:none;border:none;outline:none;color:var(--text);
  font-family:inherit;font-size:.95rem;line-height:1.5;padding:9px 0;max-height:200px;
}
.composer textarea::placeholder{color:var(--mut)}
.composer .send{
  width:38px;height:38px;border-radius:9px;flex:none;display:grid;place-items:center;
  background:var(--accent);color:var(--accent-ink);font-size:1.05rem;transition:.14s;
}
.composer .send:hover{background:#5cf0b6}
.composer .send:disabled{background:var(--surface-2);color:var(--mut);cursor:default}
.composer .cbtn{width:34px;height:34px;border-radius:8px;display:grid;place-items:center;
  color:var(--mut);font-size:1.1rem;transition:.12s}
.composer .cbtn:hover{color:var(--text);background:var(--surface-2)}
.composer .hint{font-size:.68rem;color:var(--mut);margin:6px 4px 0;display:flex;gap:14px}
.composer .hint b{color:var(--dim);font-weight:600}
.composer .locked{
  text-align:center;padding:16px;border:1px dashed var(--line-2);border-radius:12px;
  color:var(--dim);font-size:.88rem;background:var(--surface)
}
.composer .locked a{font-weight:600}

/* typing indicator (sits just above the composer) */
.typing{display:flex;align-items:center;gap:8px;padding:2px 20px 6px;
  font-size:.78rem;color:var(--dim);min-height:20px}
.typing .dots{display:inline-flex;gap:3px}
.typing .dots i{width:5px;height:5px;border-radius:50%;background:var(--accent);
  opacity:.5;animation:typing-bounce 1.2s infinite ease-in-out}
.typing .dots i:nth-child(2){animation-delay:.15s}
.typing .dots i:nth-child(3){animation-delay:.3s}
@keyframes typing-bounce{0%,60%,100%{transform:translateY(0);opacity:.35}30%{transform:translateY(-4px);opacity:1}}

/* bridged-platform badge (discord/slack) */
.msg .tag.ext{color:#a9b6ff;background:rgba(120,140,255,.14);text-transform:capitalize}

/* inline reply (Discord-style): quote above a message + the composer bar */
.reply-quote{display:flex;align-items:center;gap:6px;margin:3px 0 2px;font-size:.8rem;
  color:var(--dim);cursor:pointer;max-width:100%;overflow:hidden}
.reply-quote::before{content:"\21B1";color:var(--mut);font-size:.95rem;flex:none;transform:translateY(-1px)}
.reply-quote .q-who{color:var(--accent);font-weight:600;flex:none}
.reply-quote .q-txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.8}
.reply-quote:hover .q-txt{opacity:1}
.msg.grouped .reply-quote{margin-top:6px}
.replying-bar{display:flex;align-items:center;gap:8px;padding:8px 14px;margin-bottom:-1px;
  font-size:.82rem;color:var(--dim);background:var(--surface);
  border:1px solid var(--line-2);border-bottom:none;border-radius:11px 11px 0 0}
.replying-bar .rb-txt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.replying-bar b{color:var(--accent)}
.replying-bar .rb-ex{color:var(--mut);margin-left:8px}
.replying-bar .rb-x{color:var(--mut);padding:2px 7px;border-radius:6px;font-size:.9rem;flex:none}
.replying-bar .rb-x:hover{color:var(--text);background:var(--surface-2)}

/* ============================ MEMBERS ============================ */
.members{background:var(--bg-sidebar);border-left:1px solid var(--line);
  overflow-y:auto;padding:16px 12px;min-height:0}
.members h4{font-family:var(--display);font-size:.66rem;font-weight:600;letter-spacing:.13em;
  text-transform:uppercase;color:var(--mut);padding:0 8px 8px}
.member{display:flex;align-items:center;gap:9px;padding:6px 8px;border-radius:7px;transition:.1s}
.member:hover{background:var(--surface)}
.member .av{width:30px;height:30px;border-radius:9px;flex:none;display:grid;place-items:center;
  font-weight:700;font-size:.82rem;color:var(--accent-ink);position:relative}
.member .av .pres{position:absolute;right:-2px;bottom:-2px;width:10px;height:10px;border-radius:50%;
  border:2.5px solid var(--bg-sidebar)}
.member .av .pres.on{background:var(--accent)}
.member .av .pres.off{background:var(--mut)}
.member.offline{opacity:.5}
.member b{font-size:.86rem;font-weight:500}

/* ============================ QUICK SWITCHER MODAL ============================ */
.qs-backdrop{position:fixed;inset:0;background:rgba(3,8,7,.62);backdrop-filter:blur(3px);
  z-index:100;display:none;align-items:flex-start;justify-content:center;padding-top:12vh}
.qs-backdrop.open{display:flex}
.qs{width:min(560px,92vw);background:var(--bg-chat);border:1px solid var(--line-2);
  border-radius:14px;box-shadow:0 30px 80px -20px rgba(0,0,0,.7);overflow:hidden}
.qs input{width:100%;padding:16px 18px;background:none;border:none;outline:none;
  color:var(--text);font-family:inherit;font-size:1.05rem;border-bottom:1px solid var(--line)}
.qs input::placeholder{color:var(--mut)}
.qs-list{max-height:52vh;overflow-y:auto;padding:6px}
.qs-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;cursor:pointer}
.qs-item .hash{color:var(--mut);font-weight:600}
.qs-item .cat{margin-left:auto;font-size:.68rem;color:var(--mut)}
.qs-item b{font-weight:500;font-size:.92rem}
.qs-item small{color:var(--dim);font-size:.76rem;display:block}
.qs-item.sel,.qs-item:hover{background:var(--surface-2)}
.qs-item.sel .hash{color:var(--accent)}
.qs-empty{padding:26px;text-align:center;color:var(--mut);font-size:.88rem}

/* unified search overlay */
.search-scope{display:flex;align-items:center;gap:7px;padding:8px 18px;font-size:.76rem;
  color:var(--dim);border-bottom:1px solid var(--line)}
.search-scope input{accent-color:var(--accent)}
.search-item{align-items:flex-start!important}
.search-item .ra{width:30px;height:30px;border-radius:9px;flex:none;display:grid;place-items:center;
  font-weight:700;font-size:.8rem;color:var(--accent-ink);margin-top:1px}
.search-item .rhead{display:flex;align-items:baseline;gap:8px}
.search-item .rhead b{font-size:.9rem}
.search-item .rmeta{font-size:.72rem;color:var(--mut)}
.search-item .rarch{color:var(--amber);font-weight:600}
.search-item .rsnip{display:block;color:var(--dim);font-size:.82rem;margin-top:2px;line-height:1.4;
  overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.search-item .rsnip b{color:var(--accent);font-weight:700}
.chead .tools #search-btn{font-size:.95rem}
.chead .tools button.labeled{font-size:.8rem;font-weight:600;color:var(--accent);
  background:var(--surface);border:1px solid var(--line-2);padding:6px 11px;border-radius:8px}
.chead .tools button.labeled:hover{background:var(--surface-2);color:#fff}
#beginning-btn{font-size:1.15rem;line-height:1}
#bell-btn{position:relative}
#bell-badge{position:absolute;top:-2px;right:-4px;background:var(--danger);color:#fff;
  font-size:.6rem;font-weight:700;min-width:15px;height:15px;border-radius:8px;
  display:inline-flex;align-items:center;justify-content:center;padding:0 4px;line-height:1}
.mention-item{align-items:center!important}
.mention-item.unread{background:rgba(62,224,161,.06)}
.mention-item.unread b::before{content:"●";color:var(--accent);font-size:.6rem;margin-right:5px;vertical-align:middle}
.mention-item .ra{width:30px;height:30px;border-radius:9px;flex:none;display:grid;place-items:center;
  font-weight:700;font-size:.8rem;color:var(--accent-ink)}
.mention-item .rmeta{font-size:.74rem;color:var(--mut);margin-left:4px}
.msg .pin-mark{font-size:.7rem;opacity:.85}
.pin-item{align-items:flex-start!important}
.pin-item .ra{width:30px;height:30px;border-radius:9px;flex:none;display:grid;place-items:center;
  font-weight:700;font-size:.8rem;color:var(--accent-ink)}
.pin-item .rhead b{font-size:.9rem}
.pin-item .rmeta{font-size:.72rem;color:var(--mut)}
.pin-item .rsnip{display:block;color:var(--dim);font-size:.84rem;margin-top:2px;
  overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}

/* topic list overlay */
.topics-head{padding:9px 14px 8px;font-size:.72rem;color:var(--mut);border-bottom:1px solid var(--line)}
.topic-item{align-items:baseline!important}
.topic-item .t-hash{color:var(--mut);font-weight:600;flex:none}
.topic-item b{font-weight:500;font-size:.92rem}
.topic-item small{display:block;color:var(--mut);font-size:.75rem;margin-top:1px}
.topic-item:hover .t-hash{color:var(--accent)}

/* inline topic-list landing (click a conference → expand to its topics) */
.topiclist{max-width:760px;margin:0 auto;padding:22px 20px 40px}
.tl-hero{padding:8px 4px 20px;border-bottom:1px solid var(--line);margin-bottom:6px}
.tl-hero .big{width:52px;height:52px;border-radius:15px;display:grid;place-items:center;font-size:1.5rem;
  background:linear-gradient(135deg,var(--surface-2),var(--surface));border:1px solid var(--line-2);margin-bottom:12px}
.tl-hero h2{font-family:var(--display);font-size:1.5rem;font-weight:700}
.tl-hero h2::before{content:"#";color:var(--mut);margin-right:2px}
.tl-hero p{color:var(--dim);font-size:.92rem;margin-top:4px;max-width:56ch}
.tl-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.tl-act{padding:9px 16px;border-radius:9px;font-size:.86rem;font-weight:600;
  background:var(--surface);border:1px solid var(--line-2);color:var(--text);transition:.14s}
.tl-act:hover{background:var(--surface-2);border-color:var(--accent-deep)}
.tl-act.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.tl-act.primary:hover{background:#5cf0b6}
.tl-count{font-size:.72rem;color:var(--mut);text-transform:uppercase;letter-spacing:.06em;
  font-weight:600;padding:16px 6px 8px}
.tl-topic{display:flex;align-items:flex-start;gap:10px;padding:11px 12px;border-radius:9px;cursor:pointer;transition:.1s}
.tl-topic:hover{background:var(--surface)}
.tl-topic .tl-hash{color:var(--mut);font-weight:700;font-size:1rem;line-height:1.3}
.tl-topic:hover .tl-hash{color:var(--accent)}
.tl-t-txt{min-width:0;flex:1}
.tl-t-txt b{font-weight:500;font-size:.98rem;color:var(--text)}
.tl-t-txt small{display:block;color:var(--mut);font-size:.78rem;margin-top:2px}

/* emoji popover */
.emoji-pop{position:absolute;background:var(--bg-chat);border:1px solid var(--line-2);
  border-radius:12px;box-shadow:0 16px 40px -12px rgba(0,0,0,.7);padding:8px;
  display:none;grid-template-columns:repeat(6,1fr);gap:3px;z-index:60}
.emoji-pop.open{display:grid}
.emoji-pop button{font-size:1.2rem;padding:6px;border-radius:8px;line-height:1}
.emoji-pop button:hover{background:var(--surface-2)}

/* toast + flash */
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);z-index:200;
  background:var(--surface-2);border:1px solid var(--line-2);color:var(--text);
  padding:10px 18px;border-radius:10px;font-size:.86rem;box-shadow:0 12px 30px -10px rgba(0,0,0,.6);
  opacity:0;transition:.25s;pointer-events:none}
.toast.show{opacity:1;transform:translateX(-50%) translateY(-4px)}

.empty-stream{display:grid;place-items:center;flex:1;color:var(--mut);text-align:center;padding:40px}
.empty-stream .ico{font-size:2.4rem;margin-bottom:10px;opacity:.5}

/* ============================ RESPONSIVE ============================ */
@media(max-width:900px){
  .app,.app.with-members{grid-template-columns:1fr}
  .rail{position:fixed;inset:0 auto 0 0;width:min(84vw,var(--sidebar-w));z-index:80;
    transform:translateX(-100%);transition:transform .22s;box-shadow:0 0 60px rgba(0,0,0,.5)}
  .app.nav-open .rail{transform:translateX(0)}
  .members{display:none}
  .chead .burger{display:block}
  .scrim{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:70;display:none}
  .app.nav-open .scrim{display:block}
  .msg{padding-left:64px}
  .msg .av{width:36px;height:36px}
}
@media(min-width:901px){.scrim{display:none}}
@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}

/* ============================ AUTH PAGES ============================ */
.auth-wrap{height:100dvh;display:grid;place-items:center;padding:24px;overflow:auto;
  background:radial-gradient(ellipse at 30% 0%,#0f2420,var(--bg-deep) 60%)}
.auth{width:min(400px,100%)}
.auth .brand{border:none;justify-content:center;padding:0 0 22px}
.auth-card{background:var(--bg-chat);border:1px solid var(--line-2);border-radius:16px;padding:30px}
.auth-card h2{font-family:var(--display);font-size:1.3rem;font-weight:700;text-align:center}
.auth-card .sub{text-align:center;color:var(--dim);font-size:.86rem;margin:4px 0 22px}
.auth label{display:block;font-size:.76rem;font-weight:600;color:var(--dim);margin:12px 0 5px;
  text-transform:uppercase;letter-spacing:.04em}
.auth input[type=text],.auth input[type=password],.auth input[type=email],.auth textarea{
  width:100%;padding:11px 13px;background:var(--surface);border:1px solid var(--line-2);
  border-radius:9px;color:var(--text);font-family:inherit;font-size:.95rem;outline:none;transition:.14s}
.auth input:focus,.auth textarea:focus{border-color:var(--accent-deep)}
.auth .go{width:100%;margin-top:20px;padding:12px;border-radius:10px;background:var(--accent);
  color:var(--accent-ink);font-weight:700;font-size:.95rem;transition:.14s}
.auth .go:hover{background:#5cf0b6}
.auth .alt{text-align:center;margin-top:16px;font-size:.84rem;color:var(--dim)}
.auth .mut{font-size:.74rem;color:var(--mut);margin-top:5px;line-height:1.45}
.flash{padding:10px 14px;border-radius:9px;font-size:.85rem;margin-bottom:14px}
.flash.err{background:rgba(242,105,107,.12);border:1px solid rgba(242,105,107,.3);color:#ffb4b5}
.flash.ok{background:rgba(62,224,161,.12);border:1px solid rgba(62,224,161,.3);color:var(--accent)}
.settings-page{max-width:560px;margin:0 auto;padding:40px 24px;height:100dvh;overflow-y:auto}
.settings-page .back{color:var(--dim);font-size:.85rem;display:inline-block;margin-bottom:18px}
.settings-page h2{font-family:var(--display);font-size:1.5rem;font-weight:700;margin-bottom:6px}
