:root{--bg:#0b1220;--card:#151e2e;--card2:#1a2436;--text:#e6ecf5;--muted:#8ea0b8;--accent:#1e3a8a;--accent-2:#4ea1ff;--ok:#3ddc84;--bad:#ff5c5c;--border:#26334a;--r:16px;--st:env(safe-area-inset-top,0px);--sb:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font:16px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,system-ui,sans-serif;overscroll-behavior-y:none}
button,input{font:inherit;color:inherit}
a{color:var(--accent-2)}
.muted{color:var(--muted)}.tiny{font-size:.78rem}.err{color:var(--bad);font-size:.85rem;min-height:1.2em;margin:.5rem 0}
.scr{display:none;height:100vh;height:100dvh;flex-direction:column}
.scr.on{display:flex}
#scr-login{justify-content:center;align-items:center;padding:2rem}
.login{max-width:22rem;width:100%;text-align:center}
.login-mark{width:96px;height:96px;margin:0 auto 1.5rem;border-radius:24px;background:var(--accent);color:#fff;font-weight:800;font-size:2.4rem;display:grid;place-items:center;letter-spacing:-2px;box-shadow:0 20px 60px rgba(30,58,138,.45)}
.login h1{margin:0 0 .25rem;font-size:1.5rem}
.btn{display:inline-block;padding:.7rem 1.1rem;border-radius:999px;font-weight:600;border:0;cursor:pointer;background:var(--card);color:var(--text)}
.btn.primary{background:var(--accent);color:#fff}
.btn.xl{padding:1rem 1.4rem;font-size:1.05rem;width:100%;margin:1rem 0 .5rem}
.ico{background:transparent;border:0;color:var(--text);font-size:1.4rem;width:44px;height:44px;display:grid;place-items:center;border-radius:12px;cursor:pointer}
.ico:active{background:var(--card2)}
.bar{display:flex;align-items:center;gap:.75rem;padding:calc(var(--st) + .75rem) 1rem .75rem;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(12px);z-index:20}
.bar .mark{width:36px;height:36px;border-radius:10px;background:var(--accent);color:#fff;font-weight:800;display:grid;place-items:center;font-size:.85rem}
.bar h1{font-size:1.05rem;margin:0;flex:1;font-weight:600}
main{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:calc(72px + var(--sb))}
.v{display:none;padding:1rem}.v.on{display:block}
.v-chat{display:none;flex-direction:column;height:100%;padding:0}
.v-chat.on{display:flex}
.panel{background:var(--card);border:1px solid var(--border);border-radius:var(--r);display:flex;flex-direction:column;margin-bottom:1rem;overflow:hidden}
.panel-head{display:flex;align-items:center;gap:.5rem;padding:.65rem .9rem;border-bottom:1px solid var(--border);font-weight:600;font-size:.9rem}
.panel-head .linkbtn{margin-left:auto;background:transparent;border:0;color:var(--accent-2);font-weight:600;font-size:.85rem;cursor:pointer;padding:.25rem .4rem}
.live{width:8px;height:8px;border-radius:50%;background:var(--ok);display:inline-block}
.chat{max-height:220px;overflow-y:auto;padding:.6rem .9rem;display:flex;flex-direction:column;gap:.35rem;font-size:.9rem}
.chat.tall{max-height:none;flex:1;padding:1rem}
.chat .m{background:var(--card2);border-radius:12px;padding:.45rem .7rem;max-width:88%;word-break:break-word}
.chat .m .w{font-size:.72rem;color:var(--muted);display:block;margin-bottom:.15rem}
.chat .m.me{align-self:flex-end;background:var(--accent);color:#fff}
.compose{display:flex;gap:.4rem;padding:.5rem .6rem;border-top:1px solid var(--border)}
.compose input{flex:1;background:var(--card2);border:1px solid var(--border);color:var(--text);padding:.55rem .75rem;border-radius:12px;outline:none}
.compose input:focus{border-color:var(--accent-2)}
.tiles{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}
.tile{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:1rem;text-align:left;cursor:pointer;min-height:92px;display:flex;flex-direction:column;justify-content:space-between}
.tile:active{transform:scale(.97)}
.tile .n{font-size:1.9rem;font-weight:700;line-height:1}
.tile .l{font-size:.82rem;color:var(--muted);margin-top:.4rem}
.list{display:flex;flex-direction:column;gap:.55rem}
.row{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:.85rem 1rem;cursor:pointer}
.row:active{background:var(--card2)}
.row .rt{display:flex;justify-content:space-between;gap:.5rem;align-items:baseline}
.row .rtitle{font-weight:600;font-size:.95rem}
.row .rtime{font-size:.78rem;color:var(--muted);white-space:nowrap}
.row .rsub{font-size:.85rem;color:var(--muted);margin-top:.2rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.empty{text-align:center;color:var(--muted);padding:2rem 1rem;font-size:.9rem}
.err-row{background:var(--card);border:1px solid var(--bad);border-radius:14px;padding:.85rem 1rem;color:var(--bad);font-size:.9rem}
.rooms{display:flex;gap:.4rem;overflow-x:auto;padding:.6rem .9rem;border-bottom:1px solid var(--border)}
.rooms button{background:var(--card);border:1px solid var(--border);color:var(--text);padding:.4rem .8rem;border-radius:999px;font-size:.85rem;white-space:nowrap;cursor:pointer}
.rooms button.on{background:var(--accent);border-color:var(--accent);color:#fff}
.tabs{position:fixed;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid var(--border);background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(14px);padding-bottom:var(--sb);z-index:30}
.tab{background:transparent;border:0;color:var(--muted);padding:.65rem .25rem;font-size:.72rem;font-weight:600;cursor:pointer}
.tab.on{color:var(--accent-2)}
.drawer{position:fixed;top:0;bottom:0;right:0;width:min(80vw,320px);background:var(--card);border-left:1px solid var(--border);transform:translateX(100%);transition:transform .25s ease;z-index:60;display:flex;flex-direction:column;padding:1rem}
.drawer.on{transform:translateX(0)}
.ovl{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:50;border:0;padding:0}
.drawer-head{display:flex;gap:.75rem;align-items:center;margin-bottom:1.5rem}
.avatar{width:48px;height:48px;border-radius:50%;background:var(--accent);color:#fff;font-weight:800;display:grid;place-items:center}
.who{font-weight:600}
.drawer-item{background:transparent;border:0;text-align:left;padding:.85rem .25rem;font-size:1rem;color:var(--text);cursor:pointer;border-bottom:1px solid var(--border)}
.drawer-item.bad{color:var(--bad);margin-top:auto;border-bottom:0}
[hidden]{display:none !important}
.sk{background:linear-gradient(90deg,var(--card) 0%,var(--card2) 50%,var(--card) 100%);background-size:200% 100%;animation:sk 1.2s infinite;border-radius:14px;height:64px}
@keyframes sk{0%{background-position:200% 0}100%{background-position:-200% 0}}
