:root{--bg:#0f1724;--bg2:#141e2f;--card:#172235;--line:#26354f;--text:#e8eef7;--muted:#93a3bd;--acc:#ff8a5c;--acc2:#ffc371;--ok:#4ade80;--err:#ff6b6b;--blue:#7fc8ff;--r:14px}
*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--blue);cursor:pointer;text-decoration:none}a:hover{text-decoration:underline}
code,.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.small{font-size:13px}.tiny{font-size:11.5px}.muted{color:var(--muted)}.error{color:var(--err)}.ok{color:var(--ok)}
.hidden{display:none!important}.row{display:flex;align-items:center}.col{display:flex;flex-direction:column}.gap{gap:8px}.wrap{flex-wrap:wrap}.grow{flex:1;min-width:140px}.w100{width:100%}
input,select,textarea{background:var(--bg2);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:9px 11px;font:inherit;outline:none}
input:focus,select:focus{border-color:var(--acc)}label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}label:has(input[type=checkbox]){flex-direction:row;align-items:center}
.btn{background:#22314b;color:var(--text);border:1px solid var(--line);border-radius:10px;padding:9px 14px;font:inherit;cursor:pointer;white-space:nowrap}.btn:hover{border-color:var(--acc)}
.btn.primary{background:linear-gradient(135deg,#ff5f6d,#ffc371);color:#1b1020;border:0;font-weight:600}.btn.small{padding:5px 10px;font-size:13px}.btn.danger{border-color:#6b2b35;color:#ffb3b3}
.icon-btn{background:none;border:0;color:var(--text);font-size:20px;cursor:pointer;padding:4px 8px}
.app{display:flex;height:100vh}.sidebar{width:230px;background:var(--bg2);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:16px 10px}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:20px;padding:4px 10px 18px}.brand img{width:34px}
nav a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:10px;color:var(--text);margin-bottom:2px}nav a span{width:22px;text-align:center}
nav a:hover{background:#1c2940;text-decoration:none}nav a.active{background:linear-gradient(90deg,rgba(255,95,109,.25),rgba(255,195,113,.08));box-shadow:inset 3px 0 0 var(--acc)}
.badge{background:var(--acc);color:#1b1020;border-radius:20px;padding:0 7px;font-size:11px;margin-left:auto}
.sidebar-foot{margin-top:auto;padding:10px;display:flex;gap:8px;align-items:center}.dot{width:9px;height:9px;border-radius:50%;background:#999;display:inline-block}.dot.on{background:var(--ok);box-shadow:0 0 8px var(--ok)}.dot.off{background:var(--err)}
main{flex:1;overflow:auto;padding:0 22px 40px}.topbar{display:flex;align-items:center;gap:12px;position:sticky;top:0;background:var(--bg);padding:14px 0;z-index:5}.topbar h2{margin:0;font-size:20px}.topbar .me{margin-left:auto}#menu-btn{display:none}
.card,.hero-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;margin-bottom:14px}.card h4{margin:0 0 10px;font-size:16px}
.hero-card{background:linear-gradient(135deg,rgba(255,95,109,.18),rgba(255,195,113,.08) 60%,transparent),var(--card)}.hero-card h3{margin:0 0 6px}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:14px}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px}.stat b{font-size:24px;display:block}.stat span{color:var(--muted);font-size:13px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.steps li{margin-bottom:6px}.addrs{padding-left:16px;max-height:140px;overflow:auto;word-break:break-all}
.copyline{display:flex;gap:8px;align-items:center;background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:6px 8px;margin-bottom:8px}.copyline code{flex:1;word-break:break-all;font-size:12px}
.blur{filter:blur(4px)}
.table{width:100%;border-collapse:collapse;font-size:13.5px}.table th,.table td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--line);vertical-align:middle}.table th{color:var(--muted);font-weight:500}.table td.actions{text-align:right;white-space:nowrap}
.chat-layout{display:grid;grid-template-columns:280px 1fr;gap:14px;height:calc(100vh - 90px)}.conv-list,.conv-view{background:var(--card);border:1px solid var(--line);border-radius:var(--r);display:flex;flex-direction:column;overflow:hidden}
.conv-list{padding:10px}.conv-list ul{list-style:none;margin:10px 0 0;padding:0;overflow:auto}.conv-list li{padding:9px 10px;border-radius:10px;cursor:pointer;display:flex;gap:8px;align-items:center}.conv-list li:hover{background:#1c2940}.conv-list li.active{background:#22314b}
.conv-list li .t{flex:1;min-width:0}.conv-list li .t b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.conv-list li .t small{color:var(--muted);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-weight:700;color:#1b1020;flex-shrink:0}
.conv-head{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line)}#conv-back{display:none}#conv-invite{margin-left:auto}
.messages{flex:1;overflow:auto;padding:14px;display:flex;flex-direction:column;gap:6px}.msg{max-width:75%;padding:8px 12px;border-radius:14px;background:#22314b;align-self:flex-start;word-wrap:break-word;white-space:pre-wrap}
.msg.mine{align-self:flex-end;background:linear-gradient(135deg,#ff7a6b,#ffb86b);color:#1b1020}.msg .meta{font-size:11px;opacity:.7;margin-top:2px}.msg .who{font-size:12px;font-weight:600;color:var(--acc2)}.msg.mine .who{display:none}
.msg .file{display:block;margin-top:4px;padding:6px 8px;background:rgba(0,0,0,.18);border-radius:8px;color:inherit}
.send-form{display:flex;gap:8px;padding:10px;border-top:1px solid var(--line)}.send-form input{flex:1}
.dropzone{border:2px dashed var(--line);border-radius:var(--r);padding:28px;text-align:center;color:var(--muted);margin-bottom:8px}.dropzone.over{border-color:var(--acc);color:var(--text)}.link{display:inline;color:var(--blue);cursor:pointer}
.inputsuffix{display:flex;align-items:center;background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding-right:8px;gap:2px}.inputsuffix input{border:0;background:none;flex:1;min-width:70px}.inputsuffix input#name-suffix,.inputsuffix input#web-suffix{flex:0 0 auto;width:7.5em;min-width:5em;max-width:10em;color:var(--acc2);font-weight:600;padding-left:0}.inputsuffix span,.inputsuffix .dot{color:var(--acc2);font-weight:600;padding:0 2px}
#name-form,#web-form{margin-bottom:10px}
.tabs{display:flex;gap:6px;margin-bottom:10px}.tabs button{background:var(--bg2);color:var(--muted);border:1px solid var(--line);border-radius:20px;padding:5px 14px;cursor:pointer}.tabs button.active{color:#1b1020;background:var(--acc2);border-color:var(--acc2)}
.ai-log{background:var(--bg2);border:1px solid var(--line);border-radius:10px;min-height:160px;max-height:420px;overflow:auto;padding:10px;margin:10px 0}.ai-log .q{color:var(--acc2);margin:8px 0 2px}.ai-log .a{white-space:pre-wrap}
.providers{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px;margin-top:10px}.prov{background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:12px}.prov.on{border-color:#3d6b4f}
.prov h5{margin:0 0 4px;font-size:15px;display:flex;align-items:center;gap:6px}.prov .tag{font-size:10.5px;padding:1px 7px;border-radius:10px;background:#22314b;color:var(--muted)}.prov .tag.loc{background:#203b2c;color:#9fe3b5}
.prov form{display:flex;flex-direction:column;gap:6px;margin-top:8px}.prov form input{font-size:13px;padding:6px 9px}
.peers{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:10px}.peer{background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:12px}.peer .id{word-break:break-all}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#22314b;border:1px solid var(--line);padding:10px 16px;border-radius:10px;z-index:99;max-width:90vw}
.toast.err{border-color:var(--err)}
.login{display:grid;place-items:center;min-height:100vh;background:radial-gradient(ellipse at bottom,rgba(255,95,109,.25),transparent 60%),var(--bg)}
.login-card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:30px;width:min(420px,92vw);text-align:center}.login-card h1{margin:6px 0}.login-logo{width:72px}
.login-card form{display:flex;flex-direction:column;gap:10px;margin-top:14px}
@media(max-width:820px){.sidebar{position:fixed;inset:0 auto 0 0;z-index:20;transform:translateX(-100%);transition:.2s}.sidebar.open{transform:none}#menu-btn{display:block}
main{padding:0 12px 30px}.grid2{grid-template-columns:1fr}.chat-layout{grid-template-columns:1fr;height:calc(100vh - 80px)}.chat-layout.in-conv .conv-list{display:none}.chat-layout:not(.in-conv) .conv-view{display:none}#conv-back{display:block}.msg{max-width:88%}}
