@font-face{font-family:Anton;src:url(fonts/anton.woff2) format("woff2")}
@font-face{font-family:"Instrument Sans";src:url(fonts/instrument.woff2) format("woff2");font-weight:400 700}
@font-face{font-family:"Martian Mono";src:url(fonts/martian.woff2) format("woff2")}
:root{
  --bg:#09080c;--panel:#111017;--panel-2:#17151f;--line:#24202e;--line-hi:#3a3349;
  --fg:#f1edf7;--text:#c9c1d4;--muted:#8b8299;--dim:#5a5266;
  --acc:#b98cff;--acc-deep:#7c4dd8;--acc-ink:#0e0817;--ok:#6ff0b0;--warn:#ff7a7a;--amber:#ffc66d;
  --display:Anton,Impact,"Arial Narrow",sans-serif;--body:"Instrument Sans","Segoe UI",system-ui,sans-serif;
  --mono:"Martian Mono",ui-monospace,Consolas,monospace;color-scheme:dark}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--fg);font:14px/1.5 var(--body);-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--acc)}
:focus-visible{outline:1px solid var(--acc);outline-offset:2px}
::selection{background:var(--acc-deep);color:#fff}
.label{font:10px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.disp{font-family:var(--display);font-weight:400;letter-spacing:.04em;text-transform:uppercase}
@keyframes rise{from{opacity:0;transform:translateY(6px)}}

/* ---------- login ---------- */
.gate{min-height:100%;display:grid;place-items:center;padding:24px;
  background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:44px 44px}
.gate .box{width:min(420px,100%);background:var(--panel);border:1px solid var(--line);padding:40px 34px;animation:rise .35s}
.gate h1{margin:14px 0 0;font:400 54px/.9 var(--display);text-transform:uppercase}
.gate h1 span{color:transparent;-webkit-text-stroke:1.2px var(--acc)}
.gate p{color:var(--muted);margin:14px 0 26px}
.gate .err{color:var(--warn);font:12px var(--mono);margin:-10px 0 18px}

/* ---------- shell ---------- */
.shell{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100%}
.side{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.brand{display:flex;align-items:center;gap:10px;padding:18px 18px 16px;border-bottom:1px solid var(--line)}
.brand svg{width:20px;height:20px}
.brand b{font:17px/1 var(--display);letter-spacing:.12em;font-weight:400}
.server{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line)}
.server img,.server .ph{width:30px;height:30px;border-radius:8px;background:var(--panel-2);flex:none}
.server div{min-width:0}.server b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.server small{color:var(--dim);font:10.5px var(--mono)}
nav{flex:1;overflow:auto;padding:12px 10px}
nav .grp{margin:14px 8px 6px}
nav a{display:flex;align-items:center;gap:10px;padding:9px 10px;color:var(--text);text-decoration:none;border-left:2px solid transparent;cursor:pointer}
nav a:hover{background:#ffffff08;color:var(--fg)}
nav a.on{background:#b98cff14;border-left-color:var(--acc);color:var(--fg)}
nav a i{font-style:normal;width:18px;text-align:center;opacity:.85}
.me{display:flex;align-items:center;gap:10px;padding:12px 14px;border-top:1px solid var(--line)}
.me img{width:28px;height:28px;border-radius:50%;background:var(--panel-2)}
.me b{flex:1;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.me button{background:none;border:1px solid var(--line-hi);color:var(--muted);padding:5px 8px;cursor:pointer;font:10px var(--mono);text-transform:uppercase;letter-spacing:.08em}
.me button:hover{color:var(--warn);border-color:var(--warn)}

main{min-width:0;padding:30px 34px 80px}
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}
.head h1{margin:6px 0 0;font:400 34px/1 var(--display);letter-spacing:.03em;text-transform:uppercase}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px;align-items:start}
.split.list{grid-template-columns:240px minmax(0,1fr)}
@media (max-width:1180px){.split{grid-template-columns:minmax(0,1fr)}}
@media (max-width:760px){.shell{grid-template-columns:1fr}.side{position:static;height:auto}.split.list{grid-template-columns:1fr}main{padding:22px 16px 60px}}

/* ---------- cards / forms ---------- */
.card{background:var(--panel);border:1px solid var(--line);padding:20px;animation:rise .25s both}
.card + .card{margin-top:16px}
.card h2{margin:0 0 14px;font:400 19px/1.1 var(--display);letter-spacing:.06em;text-transform:uppercase}
.card .sub{color:var(--muted);margin:-8px 0 16px;font-size:13px}
.sticky{position:sticky;top:20px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
@media (max-width:640px){.grid2,.grid3{grid-template-columns:1fr}}
.f{display:flex;flex-direction:column;gap:6px;margin-bottom:12px;min-width:0}
.f > span{font:10px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.f small{color:var(--dim);font-size:12px}
input[type=text],input[type=number],input[type=url],select,textarea{width:100%;background:var(--bg);border:1px solid var(--line-hi);border-radius:0;padding:10px 12px;transition:border-color .15s}
textarea{min-height:64px;resize:vertical;font:13px/1.55 var(--body)}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--acc)}
input[type=color]{width:42px;height:40px;padding:0;border:1px solid var(--line-hi);background:var(--bg);cursor:pointer}
.colorrow{display:flex;gap:8px}.colorrow input[type=text]{font-family:var(--mono);font-size:12px}
.check{display:flex;align-items:center;gap:10px;color:var(--text);cursor:pointer;margin-bottom:10px;user-select:none}
.check input{appearance:none;margin:0;width:30px;height:17px;border:1px solid var(--line-hi);background:var(--bg);position:relative;cursor:pointer;flex:none}
.check input::after{content:"";position:absolute;top:2px;left:2px;width:11px;height:11px;background:var(--dim);transition:transform .15s}
.check input:checked{border-color:var(--acc)}.check input:checked::after{transform:translateX(13px);background:var(--acc)}

.btn{border:1px solid var(--line-hi);background:var(--panel-2);color:var(--fg);padding:9px 14px;cursor:pointer;font:400 14px/1 var(--display);letter-spacing:.1em;text-transform:uppercase;display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.btn:hover{border-color:var(--acc);color:var(--acc)}
.btn.pri{background:var(--acc);border-color:var(--acc);color:var(--acc-ink)}
.btn.pri:hover{background:#c9a3ff;color:var(--acc-ink)}
.btn.danger:hover{border-color:var(--warn);color:var(--warn)}
.btn.sm{padding:6px 10px;font-size:12px}
.btn:disabled{opacity:.5;cursor:default}
.ghost{background:none;border:0;color:var(--muted);cursor:pointer;font:11px var(--mono);padding:4px}
.ghost:hover{color:var(--warn)}

.list-items{display:flex;flex-direction:column;gap:6px}
.li{display:flex;align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--line);background:var(--panel);cursor:pointer;text-align:left;width:100%}
.li:hover{border-color:var(--line-hi)}.li.on{border-color:var(--acc);background:#b98cff10}
.li b{flex:1;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.li small{font:10px var(--mono);color:var(--dim)}
.li .em{width:20px;text-align:center}
.dot{width:7px;height:7px;flex:none;background:var(--ok)}.dot.off{background:var(--dim)}

.chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 6px 4px 9px;border:1px solid var(--line-hi);font-size:12.5px;background:var(--panel-2)}
.chip i{width:8px;height:8px;border-radius:50%;background:var(--muted)}
.chip button{background:none;border:0;color:var(--dim);cursor:pointer;padding:0 2px;font-size:14px;line-height:1}
.chip button:hover{color:var(--warn)}

.q{border:1px solid var(--line);padding:12px;margin-bottom:10px;background:var(--bg)}
.q .top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}

.ph-help{display:flex;flex-wrap:wrap;gap:6px;margin:-2px 0 14px}
.ph-help code{font:10.5px var(--mono);padding:3px 6px;border:1px solid var(--line);color:var(--muted);cursor:pointer}
.ph-help code:hover{border-color:var(--acc);color:var(--acc)}

details.sect{border-top:1px solid var(--line);padding-top:12px;margin-top:6px}
details.sect summary{cursor:pointer;list-style:none;font:10px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
details.sect summary::before{content:"+ ";color:var(--acc)}details.sect[open] summary::before{content:"– "}

table{width:100%;border-collapse:collapse}
th{text-align:left;font:10px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--dim);padding:10px 12px;border-bottom:1px solid var(--line)}
td{padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
td .u{display:flex;align-items:center;gap:8px}td .u img{width:22px;height:22px;border-radius:50%}
.tag{font:10px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;padding:4px 6px;border:1px solid var(--line-hi);color:var(--muted)}
.tag.open{border-color:#6ff0b04d;color:var(--ok)}.tag.closed{border-color:#ff7a7a4d;color:var(--warn)}
.tabs{display:flex;gap:0;border:1px solid var(--line-hi)}
.tabs button{background:none;border:0;padding:8px 14px;cursor:pointer;color:var(--muted);font:10.5px var(--mono);letter-spacing:.1em;text-transform:uppercase}
.tabs button.on{background:var(--acc);color:var(--acc-ink)}
.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:22px}
.stat{background:var(--panel);border:1px solid var(--line);padding:16px 18px}
.stat b{display:block;margin-top:10px;font:400 34px/1 var(--display)}
.empty{border:1px dashed var(--line-hi);padding:34px;text-align:center;color:var(--muted)}

.toast{position:fixed;right:20px;bottom:20px;z-index:50;background:var(--panel-2);border:1px solid var(--line-hi);border-left:3px solid var(--acc);padding:12px 16px;max-width:380px;animation:rise .2s;font-size:13.5px}
.toast.err{border-left-color:var(--warn)}
.toast a{margin-left:6px}

/* ---------- discord preview ---------- */
.dc{background:#313338;border-radius:8px;padding:16px 16px 18px;font-family:"gg sans","Noto Sans","Helvetica Neue",Helvetica,Arial,sans-serif;color:#dbdee1;font-size:15px;line-height:1.375}
.dc .msg{display:flex;gap:14px}
.dc .av{width:40px;height:40px;border-radius:50%;background:#5865f2;flex:none;object-fit:cover}
.dc .hd{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.dc .nm{color:#f2f3f5;font-weight:500}
.dc .app{background:#5865f2;color:#fff;font-size:10px;font-weight:600;padding:1px 5px;border-radius:3px;letter-spacing:.02em}
.dc .tm{color:#949ba4;font-size:12px}
.dc .content{margin-top:2px;white-space:pre-wrap;word-wrap:break-word}
.dc .embed{margin-top:4px;max-width:520px;background:#2b2d31;border-left:4px solid #7c5cff;border-radius:4px;padding:8px 16px 16px 12px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 16px}
.dc .embed > *{grid-column:1}
.dc .e-author{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:14px;font-weight:600;color:#f2f3f5}
.dc .e-author img{width:24px;height:24px;border-radius:50%}
.dc .e-title{margin-top:8px;font-weight:600;color:#f2f3f5;font-size:16px}
.dc .e-title.link{color:#00a8fc}
.dc .e-desc{margin-top:8px;font-size:14px;line-height:1.3rem;white-space:pre-wrap;word-wrap:break-word}
.dc .e-desc ul{margin:4px 0;padding-left:20px;white-space:normal}.dc .e-desc li{margin:2px 0}
.dc .e-desc h1,.dc .e-desc h2,.dc .e-desc h3{margin:6px 0 2px;color:#f2f3f5;line-height:1.3}
.dc .e-desc h1{font-size:20px}.dc .e-desc h2{font-size:18px}.dc .e-desc h3{font-size:16px}
.dc code{background:#1e1f22;padding:1px 4px;border-radius:3px;font-size:85%;font-family:Consolas,monospace}
.dc pre{background:#1e1f22;border:1px solid #1e1f22;border-radius:4px;padding:7px;white-space:pre-wrap;margin:4px 0}
.dc .mention{background:#5865f24d;color:#c9cdfb;border-radius:3px;padding:0 2px;font-weight:500}
.dc a{color:#00a8fc;text-decoration:none}
.dc blockquote{margin:2px 0;padding-left:10px;border-left:4px solid #4e5058}
.dc .e-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 8px;margin-top:8px}
.dc .e-field{grid-column:1/-1;font-size:14px}.dc .e-field.inline{grid-column:auto}
.dc .e-field b{display:block;color:#f2f3f5;font-weight:600;margin-bottom:2px}
.dc .e-thumb{grid-column:2;grid-row:1/8;margin-top:8px;width:80px;height:80px;object-fit:cover;border-radius:4px}
.dc .e-img{margin-top:16px;max-width:100%;border-radius:4px;display:block}
.dc .e-foot{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:12px;font-weight:500;color:#dbdee1}
.dc .e-foot img{width:20px;height:20px;border-radius:50%}
.dc .comps{margin-top:8px;display:flex;flex-wrap:wrap;gap:8px;max-width:520px}
.dc .select{width:100%;max-width:400px;background:#1e1f22;border:1px solid #1e1f22;border-radius:4px;padding:10px 12px;color:#949ba4;display:flex;justify-content:space-between;align-items:center}
.dc .dbtn{border-radius:3px;padding:2px 16px;height:32px;display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:500;color:#fff;background:#4e5058}
.dc .dbtn.primary{background:#5865f2}.dc .dbtn.success{background:#248046}.dc .dbtn.danger{background:#da373c}
.dc .dbtn.link::after{content:"↗";font-size:12px;opacity:.8}
.preview-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
