/* XDR CHAT */
body[data-v=mod] main{max-width:1560px;padding:14px 18px 18px}
/* the chat fills the whole window: slim header, edge-to-edge panel */
body[data-v=chat]{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden}
body[data-v=chat] header{padding:8px 18px 16px;flex:none}
body[data-v=chat] main{flex:1;min-height:0;max-width:none;width:100%;margin:0;padding:0;display:flex;flex-direction:column;overflow:auto}
body[data-v=chat] .xc{flex:1;min-height:0;border:0}
body[data-v=chat].focus header,body[data-v=chat].nobar header{display:none}
nav .nbd{font-style:normal;background:#ff4d6d;color:#000;font-size:9px;font-weight:700;padding:1px 5px;border-radius:8px;margin-left:6px}
nav [data-v=chat]{color:var(--hi)}
[hidden]{display:none!important}

/* shell */
.xc{display:grid;grid-template-columns:230px minmax(0,1fr) 230px;height:100%;min-height:360px;border:1px solid var(--b);background:var(--bg2)}
.xc.nomem{grid-template-columns:230px minmax(0,1fr)}.xc.nomem .xr{display:none}
.xs,.xr{background:var(--p1);display:flex;flex-direction:column;min-height:0;overflow:auto}
.xs{border-right:1px solid var(--b)}.xr{border-left:1px solid var(--b);padding-bottom:10px}
.sh{padding:14px 16px;border-bottom:1px solid var(--b)}.sh b{color:var(--hi);letter-spacing:2px;font-size:13px;display:block}.sh b i{font-style:normal;color:var(--accent)}.sh small{color:var(--dim);font-size:11px}
.sec{color:var(--dim);font-size:10px;letter-spacing:1.5px;padding:14px 16px 6px}
.chb{display:flex;align-items:center;gap:8px;width:100%;background:none;border:0;color:var(--dim);font:inherit;padding:7px 16px;cursor:pointer;text-align:left}
.chb:hover{color:var(--hi);background:var(--p2)}.chb.on{color:var(--hi);background:var(--p3);box-shadow:inset 2px 0 var(--accent)}
.chb .ic{width:16px;text-align:center;opacity:.8}.chb.un{color:var(--hi);font-weight:700}
.chb.un::after{content:'';width:7px;height:7px;border-radius:50%;background:var(--accent);margin-left:auto}
.chb .cnt{margin-left:auto;background:#ff4d6d;color:#000;font-size:10px;font-weight:700;padding:0 6px;border-radius:8px}
.meb{margin-top:auto;padding:10px 12px;border-top:1px solid var(--b);display:flex;align-items:center;gap:10px;background:var(--p1)}
.meb .mi{min-width:0;flex:1}.meb b{display:block;color:var(--hi);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meb small{color:var(--dim);font-size:10px}
.ib{background:none;border:1px solid var(--b);color:var(--dim);width:30px;height:30px;cursor:pointer;font:inherit}.ib:hover{color:var(--hi);border-color:var(--accent)}

/* avatars + badges */
.av{--s:36px;width:var(--s);height:var(--s);border-radius:50%;display:grid;place-items:center;flex:none;position:relative;font-weight:700;font-size:calc(var(--s)*.42);color:var(--c);background:color-mix(in srgb,var(--c) 16%,var(--p2));border:1.5px solid color-mix(in srgb,var(--c) 55%,var(--p2));cursor:pointer;user-select:none}
.av .dot{position:absolute;right:-2px;bottom:-2px;width:9px;height:9px;border-radius:50%;background:var(--accent);border:2px solid var(--p1)}
.bd{font-style:normal;font-size:9px;font-weight:700;letter-spacing:.6px;padding:1px 6px;border-radius:3px;color:#000;background:var(--c,#888);white-space:nowrap}
.bd.line{background:none;color:var(--c);border:1px solid var(--c)}
.mr{display:flex;align-items:center;gap:10px;width:calc(100% - 12px);margin:1px 6px;background:none;border:0;color:var(--tx);font:inherit;padding:5px 8px;cursor:pointer;text-align:left}
.mr:hover{background:var(--p3)}.mr .mnm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.pd{padding:12px 16px}

/* main column */
.cm{display:flex;flex-direction:column;min-width:0;min-height:0;position:relative}
.xh{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--b);flex-wrap:wrap}
.xh b{color:var(--hi);font-size:15px}.xh span.d{color:var(--dim);font-size:12px;flex:1;min-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.xh input{padding:6px 10px;width:170px;font-size:12px}.xh .ib{width:auto;padding:0 10px}
.an{padding:8px 16px;background:color-mix(in srgb,var(--accent) 8%,var(--p1));border-bottom:1px solid var(--b);font-size:12px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.an .tag{background:#ffd23f;color:#000;font-size:9px;font-weight:700;padding:1px 6px;letter-spacing:.6px}.an .tag.a{background:var(--accent);color:var(--on)}
.msgs{flex:1;overflow:auto;padding:6px 0 8px;scroll-behavior:auto}
.msg{display:flex;gap:12px;padding:2px 20px 2px 16px;position:relative}
.msg:not(.cont){margin-top:14px;padding-top:3px}.msg:first-child{margin-top:4px}
.msg:hover,.msg.sel{background:var(--p2)}
.msg.ment{background:color-mix(in srgb,var(--accent) 7%,transparent);box-shadow:inset 2px 0 var(--accent)}
.msg .lt{width:36px;flex:none;text-align:right;font-size:9px;line-height:19px;white-space:nowrap;color:transparent}.msg:hover .lt{color:var(--dim)}
.mb{min-width:0;flex:1}.mh{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.nm{cursor:pointer;font-weight:700}.nm:hover{text-decoration:underline}.mh time{color:var(--dim);font-size:10px}
.mt{word-break:break-word;white-space:pre-wrap;color:var(--tx)}
.mt code{background:var(--p3);border:1px solid var(--b);padding:0 5px}.mt a{color:var(--accent)}.mt .at{color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent);padding:0 3px}
.rp{font-size:11px;color:var(--dim);border-left:2px solid var(--b2);padding-left:8px;margin:2px 0 3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rp b{color:var(--tx)}
.rxs{display:flex;gap:4px;flex-wrap:wrap;margin-top:5px}
.rc{background:var(--p2);border:1px solid var(--b);color:var(--tx);font:inherit;font-size:11px;padding:1px 8px;border-radius:10px;cursor:pointer}
.rc:hover{border-color:var(--b2)}.rc.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--p2))}
.acts{position:absolute;right:16px;top:-14px;display:none;background:var(--p3);border:1px solid var(--b2);z-index:2}
.msg:hover .acts,.msg.sel .acts{display:flex}.acts button{background:none;border:0;color:var(--dim);padding:4px 9px;cursor:pointer;font:inherit;font-size:13px}
.acts button:hover{color:var(--hi);background:var(--p3)}.acts .dl:hover{color:#ff4d6d}
.acts .pk{display:none}.acts.px .pk{display:flex}.acts.px .ab{display:none}
.nb{position:absolute;left:50%;transform:translateX(-50%);bottom:84px;background:var(--accent);color:var(--on);border:0;font:inherit;font-size:11px;font-weight:700;padding:6px 14px;cursor:pointer;z-index:4}
.rb{display:flex;align-items:center;gap:8px;padding:6px 16px;background:var(--p2);border-top:1px solid var(--b);font-size:11px;color:var(--dim)}.rb b{color:var(--hi)}.rb button{margin-left:auto;background:none;border:0;color:var(--dim);cursor:pointer;font:inherit}
.cnote{color:#ff9f1c;font-size:11px;padding:0 16px;min-height:4px}.cnote:not(:empty){padding-bottom:4px}
.cin{display:flex;gap:8px;padding:10px 12px;border-top:1px solid var(--b);position:relative}.cin input{flex:1;min-width:0}
.cin .ib{height:auto;width:40px}
.ac,.ep{position:absolute;bottom:100%;left:12px;background:var(--p2);border:1px solid var(--b2);z-index:6;display:flex;flex-direction:column;min-width:160px}
.ac button{background:none;border:0;color:var(--tx);font:inherit;text-align:left;padding:7px 12px;cursor:pointer}.ac button:hover{background:var(--p3);color:var(--accent)}
.ep{left:auto;right:70px;flex-direction:row;flex-wrap:wrap;width:230px;padding:6px}.ep button{background:none;border:0;font-size:19px;padding:4px 6px;cursor:pointer}.ep button:hover{background:var(--p3)}

/* login */
.xl{display:grid;place-items:center;min-height:60vh}
.xa{width:100%;max-width:430px;border:1px solid var(--b);background:var(--p1);padding:28px}
.xlogo{font-weight:700;letter-spacing:3px;font-size:22px;color:var(--hi);margin-bottom:14px}.xlogo b{background:var(--accent);color:var(--on);padding:2px 8px;margin-left:4px}
.xa h2{color:var(--hi);margin-bottom:4px}.col{display:flex;flex-direction:column;gap:10px}
.feat{list-style:none;padding:0;margin:18px 0 0;display:flex;flex-direction:column;gap:6px;color:var(--dim);font-size:12px}.feat li::before{content:'▸ ';color:var(--accent)}

/* modal + toast */
.xm{position:fixed;inset:0;background:rgba(0,0,0,.72);display:grid;place-items:center;z-index:50;padding:16px}
.xb{background:var(--p1);border:1px solid var(--b2);width:100%;max-width:460px;max-height:90vh;overflow:auto;padding:22px}
.xb h3{color:var(--hi);margin-bottom:6px}.xb .col .btn{text-align:left}
.pc{display:flex;gap:14px;align-items:center;margin-bottom:14px}.pc .nmx{font-size:18px;font-weight:700}
.kv{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--b);font-size:12px;color:var(--dim)}.kv b{color:var(--hi);font-weight:400}
.mact{margin-top:14px;display:flex;flex-direction:column;gap:10px}.mact .row{gap:6px}.mact .btn{padding:6px 10px;font-size:10px}.mact input,.mact select{width:100%}
.mact h4{font-size:10px;letter-spacing:1.5px;color:var(--dim);font-weight:400}.btn.red{background:#ff4d6d}
.wl{font-size:11px;color:#ffd23f;border-left:2px solid #ffd23f;padding:2px 8px;margin-top:4px}.wl small{color:var(--dim)}
#xt{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:60}
.xtt{background:var(--p2);border:1px solid var(--b);border-left:3px solid var(--accent);padding:10px 14px;max-width:340px;animation:pop .18s ease-out}
.xtt.err{border-left-color:#ff4d6d}.xtt.warn{border-left-color:#ffd23f}

/* mod center */
.mh1{display:flex;align-items:center;gap:14px;margin-bottom:16px}.mh1 h1{margin:0}.mh1 span{color:var(--dim);display:flex;gap:8px;align-items:center}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.stat{border:1px solid var(--b);background:var(--p1);padding:16px}.stat small{color:var(--dim);letter-spacing:1px;font-size:10px;text-transform:uppercase}
.stat b{display:block;font-size:28px;color:var(--hi);margin-top:2px}.stat b.hot{color:#ff4d6d}
.two{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}@media(max-width:900px){.two{grid-template-columns:1fr}}
.panel h3{color:var(--hi);font-size:13px;letter-spacing:1px;text-transform:uppercase;margin-bottom:10px}
.rep{border:1px solid var(--b);background:var(--p1);padding:14px 16px;margin-bottom:10px}
.rep .rh{color:var(--dim);font-size:11px;margin-bottom:8px}.rep .rh b{color:var(--hi)}
.rep .rq{display:flex;gap:10px;align-items:flex-start;border-left:2px solid #ff4d6d;padding:4px 10px;margin-bottom:10px;background:var(--p2);word-break:break-word}
.rep .rbt{display:flex;gap:6px;flex-wrap:wrap}.rbt .btn{padding:6px 10px;font-size:10px}
.ur{display:flex;gap:12px;align-items:center;padding:9px 12px;border-bottom:1px solid var(--b);flex-wrap:wrap}.ur:hover{background:var(--p2)}
.ur .un{font-weight:700;min-width:110px}.ur .jt{color:var(--dim);font-size:11px;margin-left:auto}.ur .btn{padding:5px 10px;font-size:10px}
.lg{font-size:12px;padding:7px 12px;border-bottom:1px solid var(--b)}.lg time{color:var(--dim);margin-right:10px}.lg b{color:var(--hi)}
.mtbl{width:100%;border-collapse:collapse;font-size:12px}.mtbl th,.mtbl td{border-bottom:1px solid var(--b);padding:9px 12px;text-align:center}
.mtbl th{color:var(--dim);font-weight:400;font-size:10px;letter-spacing:1px;text-transform:uppercase}.mtbl td:first-child,.mtbl th:first-child{text-align:left}
.ok{color:var(--accent)}.no{color:var(--b2)}
.rost{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px;padding:0 12px 12px}
.rost .ur{border:1px solid var(--b);background:var(--p2);padding:8px 10px;cursor:pointer;flex-wrap:nowrap;gap:10px}.rost .un{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rost .jt{white-space:nowrap}
.jt.lv{color:var(--accent)!important}
.st{border:1px solid var(--b);padding:16px;display:flex;flex-direction:column;gap:8px;margin-bottom:12px;background:var(--p1)}.st b{color:var(--hi)}.st span{color:var(--dim);font-size:12px}.st textarea{height:70px;resize:vertical}

@media(max-width:1000px){#tm{display:none}.xc{grid-template-columns:200px minmax(0,1fr)}.xr{display:none}.xc.nomem{grid-template-columns:200px minmax(0,1fr)}}
@media(max-width:700px){
 .xc{grid-template-columns:1fr;grid-template-rows:auto 1fr}
 .hubb{display:none}
 .xs{flex-direction:row;flex-wrap:wrap;border:0;border-bottom:1px solid var(--b);overflow:visible;padding:4px;gap:2px}
 .xs .sh,.xs .sec,.xs .meb small{display:none}.chb{width:auto;padding:6px 10px}
 .meb{margin:0 0 0 auto;border:0;padding:0;background:none}.meb .mi{display:none}
 .xh{gap:8px;padding:8px 12px}.xh .d{display:none}.xh input{flex:1;width:auto}.acts{top:-10px}
}
@media(prefers-reduced-motion:reduce){.xtt{animation:none}}

/* ---------- v31 additions ---------- */
/* chat prefs (set on #xc) */
.xc{--fs:13px}.msgs,.cin input{font-size:var(--fs)}
.xc.d-compact .msg:not(.cont){margin-top:6px}.xc.d-compact .msg{gap:8px}.xc.d-compact .av{--s:28px!important}
.xc.d-roomy .msg:not(.cont){margin-top:24px}.xc.d-roomy .msg{padding-top:4px;padding-bottom:4px}
.xc.ts-always .msg .lt{color:var(--dim)}.xc.ts-off .msg .lt,.xc.ts-off .mh time{display:none}
.xc.noav .msg>.av,.xc.noav .msg>.lt{display:none}
.xc.bg-dots .msgs{background-image:radial-gradient(color-mix(in srgb,var(--dim) 30%,transparent) 1px,transparent 1px);background-size:18px 18px}
.xc.bg-grid .msgs{background-image:linear-gradient(color-mix(in srgb,var(--dim) 14%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--dim) 14%,transparent) 1px,transparent 1px);background-size:26px 26px}
.xc.bg-lines .msgs{background-image:repeating-linear-gradient(0deg,transparent 0 27px,color-mix(in srgb,var(--dim) 14%,transparent) 27px 28px)}
.msg:hover,.msg.sel{background:color-mix(in srgb,var(--p2) 80%,transparent)}
.hubb{opacity:.9}
.xh .ib{width:auto;padding:0 10px}
.an.pn{background:color-mix(in srgb,#ffd23f 9%,var(--p1))}.an.pn .tag{background:#ffd23f;color:#000}.an.pn .px{margin-left:auto;background:none;border:0;color:var(--dim);cursor:pointer;font:inherit}
.an.pn span.t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
/* images */
.mi{margin-top:5px}.mi img{display:block;max-width:min(360px,100%);max-height:300px;border:1px solid var(--b);cursor:zoom-in;background:var(--p2)}
.mi .gone{display:inline-block;color:var(--dim);font-size:11px;border:1px dashed var(--b2);padding:6px 10px}
.mi .xp{display:block;color:var(--dim);font-size:10px;margin-top:2px}
.pvb{display:flex;align-items:center;gap:10px;padding:6px 16px;background:var(--p2);border-top:1px solid var(--b);font-size:11px;color:var(--dim)}
.pvb img{height:44px;width:auto;border:1px solid var(--b)}.pvb button{margin-left:auto;background:none;border:0;color:var(--dim);cursor:pointer;font:inherit}
.ib.lock{opacity:.45}
.xb.wide{max-width:min(94vw,1100px);padding:10px}.xb .lb{display:block;max-width:100%;max-height:82vh;margin:0 auto}
.bd .ck{font-style:normal}
/* mod additions */
.mopts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px}
.mopt{text-align:left;background:var(--p2);border:1px solid var(--b);color:var(--tx);font:inherit;padding:12px;cursor:pointer;display:flex;flex-direction:column;gap:3px}
.mopt b{color:var(--hi)}.mopt span{color:var(--dim);font-size:11px}.mopt.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.mopt:disabled{opacity:.5;cursor:not-allowed}
.chp{display:flex;flex-wrap:wrap;gap:6px}.wd{display:inline-flex;align-items:center;gap:6px;background:var(--p3);border:1px solid var(--b2);padding:3px 4px 3px 10px;color:var(--hi);font-size:12px}
.wd button{background:none;border:0;color:var(--dim);cursor:pointer;font:inherit}.wd button:hover{color:#ff4d6d}
.ftr{padding:10px;border:1px dashed var(--b2);min-height:40px;color:var(--tx)}.ftr b.bad{color:#ff4d6d}.ftr b.good{color:var(--accent)}
.mh1 .btn{margin-left:auto;padding:7px 12px}
/* guide */
.gd{display:flex;flex-direction:column;gap:10px;max-width:860px}
.gd details{border:1px solid var(--b);background:var(--p1)}.gd summary{cursor:pointer;padding:13px 16px;color:var(--hi);font-weight:700;list-style:none}
.gd summary::-webkit-details-marker{display:none}.gd summary::before{content:'▸ ';color:var(--accent)}.gd details[open] summary::before{content:'▾ '}
.gd .gb{padding:2px 18px 16px;color:var(--tx);line-height:1.7}.gd .gb ol,.gd .gb ul{padding-left:20px;margin:6px 0}.gd .gb li{margin:3px 0}.gd .gb code{background:var(--p3);padding:0 5px;border:1px solid var(--b)}
.gd .tip{border-left:2px solid var(--accent);padding:6px 12px;margin:10px 0 0;background:var(--p2);color:var(--dim)}
.gd .ladder{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:8px 0}.gd .ladder i{font-style:normal;background:var(--p3);border:1px solid var(--b2);padding:3px 9px;font-size:12px}.gd .ladder em{color:var(--dim);font-style:normal}
/* guided tour */
.tour{position:fixed;inset:0;z-index:80}.tour.c{background:rgba(0,0,0,.74)}
.tour .hole{position:fixed;border-radius:4px;box-shadow:0 0 0 9999px rgba(0,0,0,.74),0 0 0 2px var(--accent);transition:all .22s ease;pointer-events:none}.tour.c .hole{display:none}
.tour .tip{position:fixed;width:min(400px,calc(100vw - 24px));background:var(--p1);border:1px solid var(--accent);padding:16px 18px;box-shadow:0 10px 40px rgba(0,0,0,.5)}
.tour .tip h3{color:var(--hi);margin-bottom:6px;font-size:15px}.tour .tip p{color:var(--tx);line-height:1.6}
.tour .tn{display:flex;align-items:center;gap:8px;margin-top:14px}.tour .tn small{color:var(--dim);margin-right:auto}.tour .tn .btn{padding:7px 12px}
.tour .dots{display:flex;gap:4px;margin-bottom:8px}.tour .dots i{width:14px;height:3px;background:var(--b2)}.tour .dots i.on{background:var(--accent)}

/* ---------- v31.1: profile pictures, custom ranks, limits ---------- */
.av.pic{color:transparent;background-size:cover;background-position:center;background-repeat:no-repeat}
.pks{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:6px}
.pks label{display:flex;gap:8px;align-items:center;color:var(--tx);font-size:12px;cursor:pointer}.pks input{width:16px;height:16px;accent-color:var(--accent)}
.st.rk input.rc{width:44px;height:36px;padding:2px}
.mact .btn:disabled{opacity:.5;cursor:not-allowed}
