
:root{
  --bg:#0f1115;--panel:#171a21;--panel2:#1e222b;--line:#2a2f3a;--text:#e6e8ec;--muted:#8b93a3;
  --accent:#f0a43a;--accent-ink:#1a1206;--ok:#3fbf7f;--bad:#e5534b;--ct:#5d9cec;--t:#e0a84a;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
button,input,select,textarea{font:inherit;color:inherit}
input,select,textarea{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:7px 9px;width:100%}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent)}
button{background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:7px 12px;cursor:pointer;white-space:nowrap}
button:hover{border-color:#3a4150;background:#252a35}
button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}
button.primary:hover{filter:brightness(1.08)}
button.danger{color:var(--bad)}
button.small{padding:4px 8px;font-size:12px}
button:disabled{opacity:.5;cursor:default}
.hidden{display:none!important}
.muted{color:var(--muted)}
.mono{font-family:var(--mono)}
h2{font-size:15px;margin:0 0 12px;font-weight:600}
h3{font-size:12px;margin:18px 0 8px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}

/* Login */
#login{display:flex;align-items:center;justify-content:center;height:100%;padding:16px}
#login form{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:28px;width:100%;max-width:340px;display:grid;gap:12px}
#login .logo{font-family:var(--mono);font-weight:700;font-size:20px}
#login .logo span{color:var(--accent)}

/* Layout */
#app{display:grid;grid-template-columns:300px 1fr;height:100%}
aside{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}
aside .head{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}
aside .head .logo{font-family:var(--mono);font-weight:700}
aside .head .logo span{color:var(--accent)}
#serverList{flex:1;overflow:auto;padding:8px}
.srv{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:7px;cursor:pointer;border:1px solid transparent}
.srv:hover{background:var(--panel2)}
.srv.active{background:var(--panel2);border-color:var(--line)}
.srv .dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex:none}
.srv .dot.on{background:var(--ok)} .srv .dot.off{background:var(--bad)}
.srv .n{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.srv .h{font-size:12px;color:var(--muted);font-family:var(--mono)}
.srv .meta{min-width:0;flex:1}
.srv .cnt{font-size:12px;color:var(--muted);font-family:var(--mono)}
aside .foot{padding:10px;border-top:1px solid var(--line);display:grid;gap:6px}

main{overflow:auto;min-width:0}
.topbar{display:flex;align-items:center;gap:12px;padding:14px 22px;border-bottom:1px solid var(--line);background:var(--panel);position:sticky;top:0;z-index:2;flex-wrap:wrap}
.topbar .title{font-size:16px;font-weight:600}
.topbar .sub{color:var(--muted);font-family:var(--mono);font-size:12px}
.tabs{display:flex;gap:4px;margin-left:auto;flex-wrap:wrap}
.tabs button{background:transparent;border-color:transparent}
.tabs button.active{background:var(--panel2);border-color:var(--line);color:var(--accent)}
.content{padding:22px;max-width:1200px}
.empty{padding:60px 22px;text-align:center;color:var(--muted)}

.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:18px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:14px}
.card .k{font-size:12px;color:var(--muted)}
.card .v{font-size:20px;font-weight:600;margin-top:2px;font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:16px;margin-bottom:16px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.row>input,.row>select{flex:1;min-width:120px;width:auto}
.btns{display:flex;flex-wrap:wrap;gap:8px}

table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:7px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
th{font-size:12px;color:var(--muted);font-weight:500}
td.name{white-space:normal;word-break:break-word}
.tag{display:inline-block;font-size:11px;padding:1px 6px;border-radius:4px;background:var(--panel2);border:1px solid var(--line);color:var(--muted)}
.ping-good{color:var(--ok)} .ping-mid{color:var(--accent)} .ping-bad{color:var(--bad)}

/* Konsole */
#consoleOut{background:#0a0c0f;border:1px solid var(--line);border-radius:8px;height:calc(100vh - 250px);min-height:300px;overflow:auto;padding:12px;font-family:var(--mono);font-size:12.5px;white-space:pre-wrap;word-break:break-word}
#consoleOut .cmd{color:var(--accent)}
#consoleOut .err{color:var(--bad)}
#consoleOut .ts{color:var(--muted)}
.console-in{display:flex;gap:8px;margin-top:10px}
.console-in input{font-family:var(--mono)}

/* Einstellungen */
.settings-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px 18px}
.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:3px}
.field label code{font-family:var(--mono);font-size:11px;opacity:.75}
.field.changed input,.field.changed select{border-color:var(--accent)}
.field.changed label{color:var(--accent)}
.field input:disabled,.field select:disabled{opacity:.4}
.switch{display:flex;align-items:center;gap:8px;height:35px}
.switch input{width:auto}

/* Dialog */
dialog{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:10px;padding:22px;width:min(440px,calc(100vw - 32px))}
dialog::backdrop{background:rgba(0,0,0,.6)}
dialog form{display:grid;gap:10px}
dialog label{font-size:12px;color:var(--muted)}

#toast{position:fixed;right:16px;bottom:16px;display:grid;gap:8px;z-index:50}
.toast{background:var(--panel2);border:1px solid var(--line);border-left:3px solid var(--ok);padding:10px 14px;border-radius:7px;max-width:380px;box-shadow:0 6px 20px rgba(0,0,0,.4)}
.toast.err{border-left-color:var(--bad)}
pre.out{background:#0a0c0f;border:1px solid var(--line);border-radius:7px;padding:10px;font-family:var(--mono);font-size:12px;white-space:pre-wrap;max-height:220px;overflow:auto;margin:6px 0 0}

@media (max-width:820px){
  #app{grid-template-columns:1fr;grid-template-rows:auto 1fr}
  aside{border-right:0;border-bottom:1px solid var(--line);max-height:42vh}
  .grid2{grid-template-columns:1fr}
  .content{padding:16px}
  .topbar{padding:12px 16px}
  .tabs{margin-left:0}
  #consoleOut{height:50vh}
}

/* ---------- Erweiterungen v2 ---------- */
.nav{padding:8px 8px 0}
.nav button{width:100%;text-align:left;background:transparent;border-color:transparent;display:flex;gap:8px;align-items:center}
.nav button.active{background:var(--panel2);border-color:var(--line);color:var(--accent)}
.sect{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);padding:12px 16px 4px}
.card .s{font-size:12px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card.thumb{display:flex;gap:10px;align-items:center}
.card.thumb img{width:64px;height:36px;object-fit:cover;border-radius:4px;flex:none;background:var(--bg)}
.dash{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:16px}
.dcard{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px;cursor:pointer;display:grid;gap:8px}
.dcard:hover{border-color:#3a4150}
.dcard .top{display:flex;align-items:center;gap:8px}
.dcard .top b{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dcard .kv{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;font-size:13px}
.dcard .kv span:nth-child(odd){color:var(--muted)}
.dcard .kv span:nth-child(even){font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bar{height:6px;background:var(--bg);border-radius:3px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--accent)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex:none}
.dot.on{background:var(--ok)} .dot.off{background:var(--bad)}
.ws-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-top:12px}
.ws{background:var(--panel2);border:1px solid var(--line);border-radius:8px;overflow:hidden;display:flex;flex-direction:column}
.ws img{width:100%;aspect-ratio:16/9;object-fit:cover;background:var(--bg);display:block}
.ws .b{padding:8px 10px;display:grid;gap:6px;flex:1}
.ws .t{font-weight:500;line-height:1.3;word-break:break-word}
.ws .m{font-size:12px;color:var(--muted)}
.ws .a{display:flex;gap:6px;margin-top:auto}
.ws .a button{flex:1}
.fav{color:var(--accent)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border-radius:999px;background:var(--panel2);border:1px solid var(--line);font-size:13px;cursor:pointer;user-select:none}
.chip img{width:18px;height:18px;border-radius:50%}
.chip.t1{border-color:var(--ct);color:var(--ct)}
.chip.t2{border-color:var(--t);color:var(--t)}
.chip.dis{opacity:.35;cursor:default}
.teams{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.team{border:1px solid var(--line);border-radius:8px;padding:12px}
.team.t1{border-top:3px solid var(--ct)} .team.t2{border-top:3px solid var(--t)}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:7px;overflow:hidden}
.seg button{border:0;border-radius:0;background:transparent}
.seg button.active{background:var(--accent);color:var(--accent-ink);font-weight:600}
.tbl input{padding:5px 7px}
.tbl td{padding:4px 6px}
.hint{font-size:12px;color:var(--muted)}
.pill{display:inline-block;font-size:12px;padding:2px 8px;border-radius:999px;background:var(--panel2);border:1px solid var(--line)}
.pill.ok{color:var(--ok);border-color:#2b5a43} .pill.warn{color:var(--accent);border-color:#5a4520}
.maplist label{display:inline-flex;align-items:center;gap:6px;margin:0 12px 6px 0;font-family:var(--mono);font-size:13px}
.maplist input{width:auto}
.avatar{width:28px;height:28px;border-radius:50%;background:var(--panel2);vertical-align:middle}
@media (max-width:820px){ .teams{grid-template-columns:1fr} }

/* ---------- v3: Multi-Game ---------- */
.gbadge{display:inline-block;font-size:11px;font-weight:600;padding:1px 7px;border-radius:4px;color:#111;white-space:nowrap}
.kvtable{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;font-size:14px}
.kvtable span:nth-child(odd){color:var(--muted)}
.kvtable span:nth-child(even){font-family:var(--mono)}
body.g-other .cs2only{display:none!important}
body:not(.g-other) .nocs2{display:none!important}
body.no-console .needconsole{display:none!important}
body.no-container .needcontainer{display:none!important}

body.not-admin .adminonly{display:none!important}
body.no-tour .touronly{display:none!important}
body.perm-lt2 .opsonly,body.perm-lt3 .mgronly,body.perm-lt4 .delonly,body.no-create .createonly{display:none!important}

/* ---------- v4: Last ---------- */
.hostload{margin:10px 8px 0;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--panel2);display:grid;gap:6px}
.hl-head{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);display:flex;justify-content:space-between}
.hl-head span{text-transform:none;letter-spacing:0;font-family:var(--mono)}
.hl-row{display:grid;grid-template-columns:34px 1fr 64px;align-items:center;gap:8px;font-size:12px}
.hl-row span{color:var(--muted)}
.hl-row b{font-family:var(--mono);font-weight:500;text-align:right;font-size:12px}
.hl-sub{font-size:11px;color:var(--muted);line-height:1.4}
.bar i.warn{background:var(--accent)} .bar i.crit{background:var(--bad)} .bar i.ok{background:var(--ok)}
.loadrow{display:grid;grid-template-columns:minmax(34px,auto) minmax(40px,1fr) auto;gap:8px;align-items:center;font-size:12px;color:var(--muted)}
.loadrow b{font-family:var(--mono);font-weight:500;color:var(--text)}
.loadrow .bar{height:5px}

.ver{text-align:center;font-size:11px;font-family:var(--mono)}

/* ---------- v6: Gruppen nach Spiel ---------- */
.sgroup{margin:2px 0 6px}
.sghead{width:100%;display:flex;align-items:center;gap:10px;padding:7px 8px;background:transparent;border:1px solid transparent;border-radius:8px;text-align:left}
.sghead:hover{background:var(--panel2);border-color:var(--line)}
.gtile{width:28px;height:28px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;color:#151515;flex:none}
.sgname{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sgcount{font-size:11px;color:var(--muted);font-family:var(--mono)}
.chev{color:var(--muted);transition:transform .15s;font-size:12px}
.sgroup:not(.open) .chev{transform:rotate(-90deg)}
.sgroup:not(.open) .sgbody{display:none}
.sgbody{padding-left:14px;border-left:1px solid var(--line);margin-left:22px}
.gbadge{display:inline-flex;align-items:center;gap:4px;vertical-align:middle}
.dsect{margin-bottom:22px}
.dhead{display:flex;align-items:center;gap:10px;font-size:14px;text-transform:none;letter-spacing:0;color:var(--text);margin:0 0 10px}
.dhead .gtile{width:26px;height:26px}

aside{overflow-y:auto}
#serverList{flex:none;overflow:visible}
aside .foot{position:sticky;bottom:0;background:var(--panel);margin-top:auto}

.joinbtn{margin-left:auto;font-size:12px;padding:3px 9px;border-radius:6px;background:var(--accent);color:var(--accent-ink);font-weight:600;text-decoration:none;white-space:nowrap;cursor:pointer}
span.joinbtn{background:var(--panel2);color:var(--text);border:1px solid var(--line);font-family:var(--mono);font-weight:400}
.dcard .top b{flex:1}

.tabs button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}
.cachecards{margin-bottom:10px}

/* ---------- v10: Befehlsreferenz, Update-Hinweis ---------- */
.consolewrap{display:grid;grid-template-columns:1fr 340px;gap:16px;align-items:start}
.cmdref{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:14px;max-height:calc(100vh - 140px);overflow:auto;position:sticky;top:80px}
.cmdgroup h3{margin:12px 0 4px}
.cmd{display:block;width:100%;text-align:left;background:transparent;border:1px solid transparent;border-radius:6px;padding:5px 7px;white-space:normal}
.cmd:hover{background:var(--panel2);border-color:var(--line)}
.cmd code{font-family:var(--mono);font-size:12.5px;color:var(--accent)}
.cmd span{display:block;font-size:12px;color:var(--muted)}
.cmdref.readonly .cmd{cursor:copy}
#updateBar{position:fixed;left:50%;transform:translateX(-50%);top:12px;z-index:60;background:var(--panel2);border:1px solid var(--accent);border-radius:8px;padding:8px 12px;box-shadow:0 6px 20px rgba(0,0,0,.4);display:flex;gap:10px;align-items:center}
#updateBar.hidden{display:none}
@media (max-width:1000px){ .consolewrap{grid-template-columns:1fr} .cmdref{position:static;max-height:none} }

/* ---------- v11: LED gelb, Cache-Tabelle, Durchsatz ---------- */
:root{--warn:#e3c341}
.dot.warn{background:var(--warn);box-shadow:0 0 0 3px rgba(227,195,65,.18)}
.pill.warn{color:var(--warn);border-color:#6a5a1e}
.bar i.net{background:var(--ct)}
.hl-row.hidden{display:none}
.cachetable td,.cachetable th{padding:6px 8px}
.cachebar{height:8px;background:#3a2f22;border-radius:4px;overflow:hidden}
.cachebar i{display:block;height:100%;background:var(--ok)}

/* ---------- v12: Verlaufs-Metriken ---------- */
.mgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin-top:2px}
.mcell{min-width:0}
.mlab{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-bottom:2px}
.mlab b{font-family:var(--mono);font-weight:500;color:var(--text)}
.spark{width:100%;height:34px;display:block;background:rgba(255,255,255,.02);border-radius:4px}
.mstats{font-size:11.5px}
.mstats b{color:var(--text);font-weight:500}
.svhistory .spark{height:60px}
.svhistory .mgrid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}
.svhistory .mlab{font-size:12px}

/* ---------- v13: Installations-/Update-Aktivität ---------- */
.activity{margin:8px 8px 0;display:grid;gap:8px}
.act{padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:var(--panel2);display:grid;gap:5px;cursor:pointer}
.act .t{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;min-width:0}
.act .t span.n{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.act .s{font-size:11.5px;color:var(--muted);font-family:var(--mono)}
.act .bar{height:7px}
.act .bar i{background:var(--ct);transition:width .6s}
.act .bar.indet i{width:35%!important;animation:indet 1.4s ease-in-out infinite}
@keyframes indet{0%{margin-left:-35%}100%{margin-left:100%}}
.act.err{border-color:#6b2a27;background:#2a1716}
.act .e{font-size:11.5px;color:#f0a39f;line-height:1.35;word-break:break-word}
.act .x{margin-left:auto;background:transparent;border:0;color:var(--muted);padding:0 2px;font-size:14px}
.instbar{display:grid;gap:4px}
.instbar .bar i{background:var(--ct)}
.instbar .s{font-size:12px;color:var(--muted)}

.delopt{display:flex;gap:8px;align-items:center;color:var(--text);font-size:14px}
.delopt input{width:auto}
.delpaths{display:grid;gap:4px;margin:-4px 0 4px 26px;font-size:12px}
.delpaths .mono{word-break:break-all}
#delGo{color:#fff;background:var(--bad)}
#delGo:disabled{opacity:.4}

.hostpanel{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}
.hostpanel .spark{height:64px}
.hostpanel .mlab{font-size:12px}
.svctile{width:22px;height:22px;border-radius:6px}
.cachechart{width:100%;height:180px;display:block}
.cachechart g:hover rect[fill="transparent"]{fill:rgba(255,255,255,.06)}
.lgd{display:inline-block;width:10px;height:10px;border-radius:2px;margin:0 3px 0 10px;vertical-align:-1px}
.savedcard{border-color:color-mix(in srgb,var(--ok) 45%,var(--line))}
.cgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}
.svcorig{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex:none}
.svcorig img{border-radius:4px;background:#fff;padding:1px}
.svcorig .svctile{display:none}
.svcorig.fail img{display:none}
.svcorig.fail .svctile{display:inline-flex}
.dcard{padding:18px;gap:10px;font-size:15px}
.dcard .top b{font-size:17px}
.dcard .kv{font-size:14px;gap:4px 14px;align-content:start}
.dbody{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:start}
.mthumb{width:150px;aspect-ratio:16/9;border-radius:7px;overflow:hidden;background:var(--bg);border:1px solid var(--line)}
.mthumb img{width:100%;height:100%;object-fit:cover;display:block}
.glogo{display:inline-flex;align-items:center;flex:none}
.glogo img{height:24px;width:auto;border-radius:4px;display:block}
.glogo .gbadge{display:none}
.glogo.fail img{display:none}
.glogo.fail .gbadge{display:inline-flex}
@media (max-width:520px){.dash{grid-template-columns:1fr}.mthumb{width:110px}}
.wfgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px 14px}
.wfgrid label{font-size:12px;color:var(--muted)}
/* weiche Animationen */
.bar i{transition:width .9s cubic-bezier(.4,0,.2,1),background-color .4s}
.netbar{display:flex;flex-direction:column;gap:1px;background:var(--bg)}
.netbar i{height:50%!important;display:block}
.netbar i.down{background:#4f9dde}.netbar i.up{background:#f0a04b}
.spark path{transition:d .9s cubic-bezier(.4,0,.2,1)}
body:not(.g-wreckfest) #wfPanel{display:none!important}
.dbar{display:flex;flex-direction:column;gap:1px}
.dbar i{height:50%!important}
.dbar i.lr-rx{background:#4f9dde}.dbar i.lr-tx{background:#f0a04b}
.problem{border:1px solid color-mix(in srgb,var(--warn,#e5a50a) 55%,var(--line));background:color-mix(in srgb,var(--warn,#e5a50a) 10%,transparent);border-radius:8px;padding:8px 10px;font-size:13px;display:grid;gap:3px;margin-bottom:6px}
.problem b{color:var(--warn,#e5a50a)}
.problem.info{border-color:var(--line);background:transparent}
.problem.info b{color:var(--muted)}
.gcap{height:28px;width:auto;border-radius:4px;flex:none}
.pflog{max-height:420px;overflow:auto;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:10px;font-size:12px;white-space:pre-wrap;margin:0}
.pfopts{display:grid;gap:8px}
.pfopts label{display:flex;gap:8px;align-items:center;font-size:14px}
.pfopts input[type=checkbox]{width:auto}
.pfapp{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid var(--line)}
.pfapp img{height:24px;border-radius:3px}
.pfapp span{flex:1}
.gtile.gimg{background:transparent!important;overflow:hidden}
.gtile.gimg img{width:100%;height:100%;object-fit:cover;border-radius:inherit}
.gtile.gimg svg{display:none}
.gtile img+svg{display:none}
.gicon{border-radius:5px;flex:none}
.pfbanner{border:1px solid color-mix(in srgb,var(--warn,#e5a50a) 60%,var(--line));background:color-mix(in srgb,var(--warn,#e5a50a) 12%,transparent);border-radius:9px;padding:10px 14px;margin-bottom:14px;font-size:14px}
.pfbanner b{color:var(--warn,#e5a50a)}
body.g-other:not(.g-tf2) .srconly{display:none!important}
body:not(.g-gq) .gqonly{display:none!important}
body:not(.g-ws) .wsonly{display:none!important}
body:not(.g-tf2) .tf2wsonly{display:none!important}
.gqthumb{width:160px;height:120px;border-radius:8px;overflow:hidden;background:var(--panel2,#1a1f1a);flex:0 0 160px;display:flex;align-items:center;justify-content:center}
.gqthumb img{width:100%;height:100%;object-fit:cover}
.gqthumb .mthumb{width:100%;height:100%}
.sparkbox{display:grid;grid-template-columns:auto 1fr;gap:4px;align-items:stretch}
.sparkbox .spark{height:100%!important;width:100%}
.yax{display:flex;flex-direction:column;justify-content:space-between;font-size:9.5px;line-height:1;color:var(--muted);text-align:right;font-family:var(--mono);min-width:34px;white-space:nowrap}
.hl-row span,.hl-row b{white-space:nowrap}
.stogrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px 14px}
.stogrid label{font-size:12px;color:var(--muted)}
.stosteps{margin:0 0 12px 18px;padding:0;display:grid;gap:6px;font-size:14px}
a.btn{display:inline-flex;align-items:center;padding:7px 12px;border-radius:7px;text-decoration:none;background:var(--accent);color:var(--accent-ink);font-weight:600}
.cfggrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px 14px}
.cfggrid label{font-size:12px;color:var(--muted);display:block;margin-bottom:3px}
.cfggrid .chk{display:flex;gap:8px;align-items:center;font-size:14px;padding-top:18px}
.cfggrid .chk input{width:auto}
.fbrow{display:grid;grid-template-columns:24px 1fr 110px 150px auto;gap:8px;align-items:center;padding:5px 6px;border-bottom:1px solid var(--line);font-size:13px}
.fbrow:hover{background:color-mix(in srgb,var(--accent) 6%,transparent)}
.fbrow .n{cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fbrow .acts{display:flex;gap:4px}
.btn-up span{display:inline-flex;padding:4px 8px;border:1px solid var(--line);border-radius:6px;cursor:pointer}
a.btn-link{display:inline-flex;align-items:center;padding:3px 7px;border:1px solid var(--line);border-radius:6px;text-decoration:none;color:inherit;font-size:12px}
#hlDisks .hl-row span{max-width:90px;overflow:hidden;text-overflow:ellipsis}

.szbox{margin-top:14px;padding-top:12px;border-top:1px solid var(--line,#2a2f3a)}
.szrow{display:grid;grid-template-columns:minmax(120px,220px) 1fr 80px;align-items:center;gap:10px;font-size:12px;padding:2px 0}
.szrow .szname{display:flex;align-items:center;gap:6px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.szrow .gtile{flex:none;display:inline-grid;place-items:center;border-radius:4px}
.szrow b{font-family:var(--mono);font-weight:500;text-align:right}
@media (max-width:600px){.szrow{grid-template-columns:110px 1fr 70px}}

.permgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:6px 14px;max-height:55vh;overflow:auto}
.permrow{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:13px;padding:3px 0}
.permrow>span{display:flex;align-items:center;gap:6px;min-width:0}
.permrow .gtile{flex:none;display:inline-grid;place-items:center;border-radius:4px}
.permrow select{width:130px}
.permall{grid-column:1/-1;border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:4px}

#pub{max-width:1200px;margin:0 auto;padding:16px;min-height:100%}
.pubhead{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:8px 0 12px;border-bottom:1px solid var(--line)}
.pubhead .logo{font-family:var(--mono);font-weight:700;font-size:20px}
.pubhead .logo span{color:var(--accent)}
.pubstat{flex:1;color:var(--muted);font-size:13px}
.pubintro{margin:12px 0 16px}
.pubgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.pubcard{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--gc);border-radius:10px;padding:14px;display:grid;gap:8px;min-width:0}
.pubcard.off{opacity:.6}
.pubtop{display:flex;align-items:center;gap:10px;min-width:0}
.pubtop .gtile{flex:none}
.pubname{display:grid;min-width:0;flex:1}
.pubname b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pubjoin{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pubjoin button{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pubhint,.pubmeta{font-size:12px}
a.btn{display:inline-flex;align-items:center;gap:4px;text-decoration:none;border-radius:6px;padding:4px 10px;font-size:12px;background:var(--accent);color:var(--accent-ink);font-weight:600}
@media (max-width:600px){.pubgrid{grid-template-columns:1fr}}

.pubcard{cursor:pointer;transition:border-color .15s,transform .15s}
.pubcard:hover,.pubcard:focus-visible{border-color:var(--gc);outline:none}
.pubthumb{position:relative;margin:-14px -14px 4px;border-radius:9px 9px 0 0;overflow:hidden}
.pubthumb .mthumb{width:100%;aspect-ratio:16/6;border:0;border-radius:0}
.pubmap{position:absolute;left:10px;bottom:8px;font-size:20px;font-weight:700;color:#fff;text-shadow:0 1px 4px #000,0 0 2px #000}
.pdhead{display:flex;gap:12px;align-items:center;border-left:3px solid var(--gc);padding-left:10px;margin-bottom:12px}
.pdgrid{display:grid;grid-template-columns:minmax(0,220px) 1fr;gap:14px;align-items:start}
.pdthumb .mthumb{width:100%}
.pdsec{font-size:14px;margin:14px 0 6px}
.pdrot{margin:0;padding-left:22px;display:grid;gap:3px;font-size:13px;max-height:260px;overflow:auto}
.pdrot li.cur b{color:var(--accent)}
@media (max-width:600px){.pdgrid{grid-template-columns:1fr}}

.wfrot select{min-width:0;max-width:260px}
.wfrot td{padding:4px 6px;vertical-align:middle}
.wfrot td button.small{padding:2px 7px;margin-left:2px}

.cggrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px}
.cgtile{display:flex;align-items:center;gap:8px;padding:8px 10px;text-align:left;background:var(--panel2);border:1px solid var(--line);border-radius:8px;min-width:0;position:relative}
.cgtile:hover{border-color:var(--gc)}
.cgtile.active{border-color:var(--gc);box-shadow:inset 3px 0 0 var(--gc);background:var(--panel)}
.cgtile .gtile{flex:none}
.cglabel{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.cgcount{margin-left:auto;font-size:11px;font-family:var(--mono);color:var(--muted);border:1px solid var(--line);border-radius:10px;padding:0 6px}
.pubcard{align-content:start}

.pubmapline{font-size:18px;font-weight:700;letter-spacing:.2px}
.pubthumb + .pubtop + .pubmapline{display:none}
.kvmap{font-size:16px;font-weight:700;color:var(--text)}
.pdgrid .kvtable span:nth-child(2){font-size:17px;font-weight:700}

.dot.sleep{background:#7c8db5;box-shadow:0 0 0 3px rgba(124,141,181,.18)}
.sleeprow{display:flex;gap:8px;align-items:center;margin:6px 0}

.szload{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:2px 0 8px;padding-left:min(220px,30%)}
.szload.off{display:block}
.szl{display:grid;grid-template-columns:32px 1fr auto;align-items:center;gap:6px;font-size:11px;color:var(--muted)}
.szl .bar{height:5px}
.szl b{font-family:var(--mono);font-weight:500;font-size:11px;color:var(--text);white-space:nowrap}
@media (max-width:700px){.szload{grid-template-columns:1fr;padding-left:0}}

.pubcache{margin-left:10px;font-size:12px;color:var(--muted);white-space:nowrap}
.pubcache .cdot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--ok);margin-right:5px;vertical-align:1px}
.pubcache.off .cdot{background:var(--bad)}

.pubinst{display:grid;gap:4px;font-size:12px;color:var(--muted)}
.pubinst .bar{height:6px}
.pubinst .bar i{background:var(--ct)}

.mthumb.tsart{display:flex;align-items:center;justify-content:center;gap:10px;color:#fff;font-weight:700;letter-spacing:.5px;
  background:radial-gradient(circle at 30% 40%,#2f6fd6 0,#1a3d7a 45%,#0e1b33 100%)}
.mthumb.tsart img{width:38px;height:38px;object-fit:contain;filter:drop-shadow(0 2px 6px rgba(0,0,0,.5))}
.mthumb.tsart span{font-size:15px;text-shadow:0 1px 3px #000}
.pubthumb .mthumb.tsart img{width:46px;height:46px}

a.btn.tvbtn{background:var(--panel2);color:var(--text);border:1px solid var(--line)}
.mlist{display:grid;gap:8px}
.mcard{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:8px 12px}
.mcard summary{cursor:pointer;display:flex;flex-wrap:wrap;gap:8px;align-items:center;list-style:none}
.mcard summary::-webkit-details-marker{display:none}
.mscore{font-family:var(--mono);font-weight:700;font-size:16px}
.mstate{font-size:10px;font-weight:700;padding:1px 6px;border-radius:4px;background:var(--panel2);color:var(--muted)}
.mstate.live{background:var(--bad);color:#fff}
.mstate.warm{background:var(--accent);color:var(--accent-ink)}
.mteams{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:8px}
@media (max-width:600px){.mteams{grid-template-columns:1fr}}

.pill.reach{font-size:11px;padding:1px 7px;margin-left:6px;vertical-align:middle;white-space:nowrap}
.pill.reach.online{color:var(--ok);border-color:#2b5a43}
.pill.reach.lan{color:var(--warn,#d9b44a);border-color:#6a5a1e}
.pill.reach.direct{color:var(--muted,#9aa)}

.fldrow{display:grid;grid-template-columns:minmax(160px,1.4fr) minmax(80px,1fr) 80px minmax(0,240px) 74px;gap:10px;align-items:center;padding:4px 0;border-bottom:1px solid var(--line);font-size:13px}
.fldrow.sub span.mono{padding-left:16px;opacity:.85}
.fldrow .bar{height:6px}
@media (max-width:640px){.fldrow{grid-template-columns:1fr 70px auto}.fldrow .bar{display:none}}

.mthumb{position:relative}
.mthumb img.mlayout{position:absolute;right:6px;bottom:6px;width:38%;max-width:150px;height:auto;object-fit:contain;background:rgba(0,0,0,.55);border-radius:5px;padding:2px;mix-blend-mode:normal}
.wfth{position:relative;width:96px;height:44px;border-radius:5px;overflow:hidden;background:#2a2f38;border:1px solid var(--line);cursor:default;flex:none}
.wfth[data-pick]{cursor:pointer}
.wfth[data-pick]:hover{outline:2px solid var(--accent)}
.wfth img.ph{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.55)}
.wfth img.ly{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.wfth.nophoto img.ly{filter:none}
.pdrot.withimg{list-style:none;padding-left:0;max-height:420px}
.pdrot.withimg li{display:flex;gap:10px;align-items:center}
.wfpick{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:60;display:flex;align-items:center;justify-content:center;padding:16px}
.wfpickbox{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px;width:min(1000px,100%);max-height:88vh;overflow:auto}
.wfpgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.wfpitem{display:flex;flex-direction:column;gap:4px;align-items:stretch;text-align:left;padding:6px;font-size:12px}
.wfpitem .wfth{width:100%;height:68px}
.wfpitem.active{outline:2px solid var(--accent)}

.sghead{display:flex;align-items:center;gap:0}
.sghead .sgopen{flex:1;display:flex;align-items:center;gap:10px;background:none;border:0;padding:0;color:inherit;text-align:left;cursor:pointer;min-width:0}
.sghead .chev{background:none;border:0;color:inherit;cursor:pointer;padding:4px 8px}
.sghead.active .sgname{color:var(--accent)}
.gvtable td{vertical-align:middle}

.pubbtn{background:#e8892b !important;color:#1a1206 !important;border-color:#e8892b !important;font-weight:700;flex:none}
.pubbtn:hover{filter:brightness(1.1)}
aside .head{gap:8px}
aside .head .logo{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pubcache.net .cdot{background:#4f9dde;box-shadow:0 0 6px #4f9dde}

.ploverview{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px;margin-bottom:12px}
.plsrv{border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:var(--panel2);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.plsrv > div{flex-basis:100%;display:flex;flex-wrap:wrap;gap:4px}
.pltable tr.plon td:first-child{box-shadow:inset 3px 0 0 var(--ok)}
.pltable tr.plmerge td{background:rgba(232,137,43,.12)}
.pltable td{vertical-align:middle;font-size:13px}

.livedl{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;margin-bottom:10px}
.ldrow{display:grid;grid-template-columns:22px minmax(0,1fr) 100px 150px;gap:10px;align-items:center;font-size:13px}
.ldrow img{width:20px;height:20px;border-radius:4px;object-fit:cover}
.ldname{display:flex;flex-direction:column;min-width:0}.ldname b,.ldname .hint{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ldname small{opacity:.7;margin-left:6px}
.ldico{width:22px;height:20px;display:flex;align-items:center;justify-content:center}
.ldhit{position:relative;height:16px;background:var(--panel2);border-radius:4px;overflow:hidden;border:1px solid var(--line)}
.ldhit i{position:absolute;inset:0 auto 0 0;background:rgba(61,186,120,.35)}
.ldhit em{position:relative;font-style:normal;font-size:11px;padding-left:6px}
@media (max-width:600px){.ldrow{grid-template-columns:22px minmax(0,1fr) 80px}.ldhit{display:none}}

.pleditbox{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;padding:10px;background:var(--panel2);border-radius:8px}

/* Kacheln: Inhalt bleibt in der Kachel */
.dcard,.dcard>*,.dbody>*,.card,.panel,.dsect{min-width:0}
.dcard{overflow:hidden}
.dbody{grid-template-columns:auto minmax(0,1fr)}
.loadrow>span:last-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}
.dcard .top{flex-wrap:wrap;row-gap:6px}
.dcard .top b{min-width:140px;white-space:normal;overflow-wrap:anywhere;line-height:1.25}
@media (max-width:520px){.dash{grid-template-columns:1fr}}
.mstats b{color:var(--text)}
.cards .card .s{overflow:hidden;text-overflow:ellipsis}
/* Logo-Leiste der Spiele im Cache */
.cgstrip{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.cg{position:relative;display:block;width:120px;height:56px;border-radius:6px;overflow:hidden;background:var(--panel);border:1px solid var(--line);text-decoration:none}
.cg:hover{border-color:var(--accent)}
.cg img{width:100%;height:100%;object-fit:cover;display:block}
.cg i{position:absolute;left:0;bottom:0;height:3px;background:var(--ok)}
.cg .cgsvc{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:2px;padding:0 4px}
.cg .cgname{display:flex;align-items:center;justify-content:center;height:100%;font-size:11px;color:var(--text);text-align:center;padding:0 6px;overflow:hidden}
.cg .cgsvc .cgname{height:auto;white-space:nowrap;text-overflow:ellipsis;max-width:100%;display:block}
.pubcachegames{margin-top:6px}
.pubcachegames .cg{cursor:default}

/* Stil D: große Zahl + dünne Spur (Canvas) */
.dchbox{position:relative;width:100%}
.dchbox canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.dhd{margin-bottom:4px;min-width:0}
.dhd .dl{font-size:11px;color:var(--muted)}
.dhd .drow{display:flex;align-items:baseline;gap:8px;min-width:0;white-space:nowrap;overflow:hidden}
.dhd .dbig{font-family:Georgia,"Times New Roman",serif;font-size:24px;line-height:1.15;color:var(--text);font-variant-numeric:tabular-nums lining-nums}
.dhd .ds{font-family:var(--mono);font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis}
.mcell .dhd .dbig,.svhistory .dhd .dbig{font-size:18px}
/* Seitenleiste: Balken gleiten, Spitzen-Marke (5 min) */
.hl-row .bar{position:relative;overflow:visible}
.hl-row .bar i{transition:width .9s cubic-bezier(.4,0,.2,1);border-radius:3px}
.hl-row .bar .pk{position:absolute;top:-2px;bottom:-2px;width:2px;border-radius:1px;background:var(--text);opacity:.75;transition:left .9s cubic-bezier(.4,0,.2,1)}
.loadrow .bar i{transition:width .9s cubic-bezier(.4,0,.2,1)}

/* Speicher: Tabellen bleiben im Panel */
.dktable{table-layout:fixed;width:100%}
.dktable td{white-space:normal;overflow-wrap:anywhere;vertical-align:middle}
.dktable td:last-child{text-align:right}
.dklist{overflow-wrap:anywhere;max-height:220px;overflow:auto;margin-top:4px}
.fldrow>*{min-width:0}
.fldrow .pill{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;justify-self:end}
.fldrow>button,.fldrow>span:last-child{justify-self:end}
.dubar{margin-top:6px}.dubar .bar{height:5px}.dubar .hint{font-size:11px;margin-top:2px}

/* ---- Handy-Ansicht ---- */
#mob{max-width:560px;margin:0 auto;padding:10px 12px 20px}
.mobhead{display:flex;align-items:center;gap:10px;padding:4px 0 10px}
.mobhead .logo{font-weight:700;font-size:17px}.mobhead .logo span{color:var(--accent)}
.mobhead .hint{margin-left:auto;font-size:11px}
.mobsum{font-size:15px;margin-bottom:10px}.mobsum b{color:var(--accent)}
.mobtiles{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.mobtile{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.mobtile .k{font-size:11px;color:var(--muted)}
.mobtile .v{font-family:Georgia,serif;font-size:24px;line-height:1.15;font-variant-numeric:tabular-nums}
.mobtile .s{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mobtile .bar{height:4px;margin-top:6px}
.mobh{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:16px 0 6px}
.mobitem{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:9px 12px;margin-bottom:6px;font-size:13px}
.mobitem .t{display:flex;align-items:center;gap:8px;font-weight:600}
.mobitem .s{color:var(--muted);font-size:12px;margin-top:3px}
.mobitem .bar{height:4px;margin-top:6px}
.mobitem.warn{border-color:#6b4a1f}.mobitem.bad{border-color:#6b2a27}
.mobsrv{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:9px 12px;margin-bottom:6px}
.mobsrv .n{font-weight:600;font-size:14px;line-height:1.2;overflow-wrap:anywhere}
.mobsrv .m{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mobsrv .p{font-family:Georgia,serif;font-size:22px;text-align:right;font-variant-numeric:tabular-nums}
.mobsrv .p small{font-size:12px;color:var(--muted)}
.mobsrv.off{opacity:.55}
.mobsrv .dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:1px}

/* ---- Turnier ---- */
.tsec{margin-bottom:16px}
.tsec>h3{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.tm{position:relative;background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:6px 8px;font-size:13px}
.tm.live{border-color:var(--ok);box-shadow:0 0 0 1px var(--ok) inset}.tm.ready{border-color:#3a4150}
.tm.done{opacity:.92}.tm.bye{opacity:.45}
.tm .tno{position:absolute;top:-8px;left:8px;font-size:10px;color:var(--muted);background:var(--panel);padding:0 4px;border-radius:4px}
.tm .tr{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:2px 0}
.tm .tr+.tr{border-top:1px solid var(--line)}
.tm .tr b{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tm .tr.tbd b{color:var(--muted);font-style:italic;font-weight:400}
.tm .tr.win b{color:var(--ok);font-weight:700}
.tm .tr .sc{font-family:var(--mono);font-weight:700;font-size:15px;min-width:22px;text-align:right}
.tm .tr.win .sc{color:var(--ok)}
.tm.live .tr .sc{color:#fff}
.tm .meta{font-size:11px;color:var(--muted);margin-top:3px}
.tm .tmeta{display:flex;justify-content:space-between;align-items:center;gap:6px}
.livedot{color:#ff5a5a;font-weight:700}.livedot::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:#ff5a5a;margin-right:4px;animation:lp 1.2s infinite}
@keyframes lp{50%{opacity:.25}}
.tvbtn{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:6px;background:var(--accent,#3b82f6);color:#fff!important;font-size:11px;font-weight:600;text-decoration:none;white-space:nowrap}
.tvbtn:hover{filter:brightness(1.15)}.tvbtn.sm{padding:1px 5px;margin-left:4px}
.tnext{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.tnext .tm .tr .sc{font-size:18px}
.tgroups{display:flex;gap:14px;flex-wrap:wrap}
.tgroup{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:8px;min-width:260px;flex:1 1 280px;max-width:460px}
.tgroup table{width:100%}.tgroup tr.adv td:first-child{box-shadow:inset 3px 0 0 var(--ok)}
.tglist{display:flex;flex-direction:column;gap:3px;margin-top:8px}
.tglist.adm{gap:12px}
.tmini{display:grid;grid-template-columns:1fr auto 1fr auto;align-items:center;gap:8px;font-size:12px;padding:3px 6px;border-radius:6px;background:var(--panel)}
.tmini span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tmini span:nth-of-type(2){text-align:right}
.tmini span.w{color:var(--ok);font-weight:700}
.tmini b{font-family:var(--mono);min-width:44px;text-align:center}.tmini b i{font-style:normal;color:var(--muted);margin:0 2px}
.tmini.live{outline:1px solid var(--ok)}.tmini.live b{color:#ff5a5a}
.tmini.wait,.tmini.ready{color:var(--muted)}
/* K.-o.-Baum mit Verbindungslinien */
.bk{display:flex;gap:28px;overflow-x:auto;padding:4px 2px 8px}
.bkcol{display:flex;flex-direction:column;min-width:210px;max-width:240px;flex:0 0 auto}
.bkcol h4{margin:0 0 6px;font-size:12px;color:var(--muted);font-weight:600;text-align:center}
.bkslots{display:flex;flex-direction:column;flex:1}
.bkslot{flex:1;display:flex;align-items:center;position:relative;padding:9px 0}
.bkslot>.tm{width:100%}
.bkcol.half .bkslot::after,.bkcol.same .bkslot::after{content:"";position:absolute;right:-14px;width:14px;top:50%;border-top:1px solid #4a5263}
.bkcol.half .bkslot:nth-child(odd)::before{content:"";position:absolute;right:-14px;top:50%;bottom:0;border-right:1px solid #4a5263}
.bkcol.half .bkslot:nth-child(even)::before{content:"";position:absolute;right:-14px;top:0;bottom:50%;border-right:1px solid #4a5263}
.bkcol.prev .bkslot .cin{position:absolute;left:-14px;width:14px;top:50%;border-top:1px solid #4a5263}
.bkslot .cin{display:block}
.tourpub{max-width:1400px;margin:0 auto 16px;padding:0 4px}
.tourpub .panel{padding:12px 16px}
.tnext{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px;margin-bottom:12px}

/* ---- Turnier-Übersicht (Dschungelgrün, Lime, Gold, Bebas Neue) ---- */
.gl{--gbg:hsl(130 40% 4%);--gcard:hsl(120 18% 9%);--gmid:hsl(125 25% 12%);--gline:hsl(120 15% 22%);--gfg:hsl(60 15% 94%);--gmut:hsl(90 10% 65%);
  --glime:hsl(72 72% 48%);--ggold:hsl(48 85% 58%);--ggold2:hsl(38 80% 55%);--gap:30px;
  background:radial-gradient(ellipse at 50% 0%,hsl(88 45% 14% / .55),transparent 60%),linear-gradient(180deg,hsl(125 25% 6%),var(--gbg));
  border:1px solid var(--gline);border-radius:14px;padding:16px 18px;color:var(--gfg);font-family:Inter,system-ui,sans-serif}
.gl h3,.gl .glh,.gl .glgh{font-family:"Bebas Neue",Impact,"Arial Narrow",sans-serif;letter-spacing:.06em;font-weight:400}
.gl .glsec{margin-bottom:22px}.gl .glsec:last-child{margin-bottom:0}
.gl .glsec>h3{font-size:22px;margin:0 0 12px;color:var(--gfg);display:flex;align-items:center;gap:10px}
.gl .glsec>h3::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--glime),transparent);opacity:.5}
.gl .glh{font-size:14px;color:var(--gmut);text-align:center;margin-bottom:6px;white-space:nowrap}
.gltree{display:flex;align-items:stretch;justify-content:center;gap:var(--gap);overflow-x:auto;padding:4px 2px 10px}
.glside{display:flex;gap:var(--gap)}.glside.right{flex-direction:row-reverse}
.glcol{display:flex;flex-direction:column;width:168px;flex:0 0 auto}
.glslots{display:flex;flex-direction:column;flex:1}
.glslot{flex:1;display:flex;flex-direction:column;justify-content:center;position:relative;padding:14px 0}
.glcenter{display:flex;flex-direction:column;width:200px;flex:0 0 auto}
.gltree.cup{padding-top:170px}.gltree.xf{padding-bottom:110px}
.glfin{position:relative}
.glcup{position:absolute;bottom:calc(100% + 2px);left:0;right:0;text-align:center}.glcup .glh{margin:2px 0 0}.glcup .gltrophy{display:block;margin:0 auto}
.glextra{position:absolute;top:calc(100% + 26px);left:0;right:0}.gltrophy{width:110px;height:auto;filter:drop-shadow(0 0 18px hsl(48 85% 58% / .35))}
.glchamp{font-family:"Bebas Neue",Impact,sans-serif;font-size:22px;letter-spacing:.05em;color:var(--ggold);margin-top:2px}
/* Verbindungslinien */
.glcol:not(.last) .glslot::after{content:"";position:absolute;width:calc(var(--gap) / 2);top:50%;border-top:2px solid var(--gline)}
.glcol.half .glslot:nth-child(odd)::before,.glcol.half .glslot:nth-child(even)::before{content:"";position:absolute;width:0;border-left:2px solid var(--gline)}
.glcol.half .glslot:nth-child(odd)::before{top:50%;bottom:0}.glcol.half .glslot:nth-child(even)::before{top:0;bottom:50%}
.glside.left .glcol .glslot::after{right:calc(var(--gap) / -2)}.glside.left .glcol.half .glslot::before{right:calc(var(--gap) / -2 - 1px)}
.glside.right .glcol .glslot::after{left:calc(var(--gap) / -2)}.glside.right .glcol.half .glslot::before{left:calc(var(--gap) / -2 - 1px)}
.glside.left .glcol:not(:first-child) .glslot>.glm::before,.glside.right .glcol:not(:first-child) .glslot>.glm::before,.gltree.cup .glside.left .glcol.last .glslot>.glm::after{content:"";position:absolute;top:50%;width:calc(var(--gap) / 2);border-top:2px solid var(--gline)}
.glside.left .glcol:not(:first-child) .glslot>.glm::before{left:calc(var(--gap) / -2)}
.glside.right .glcol:not(:first-child) .glslot>.glm::before{right:calc(var(--gap) / -2)}
.glside.left .glcol.last .glslot>.glm::after{right:calc(var(--gap) / -1);width:var(--gap)}
.gltree.cup .glside.right .glcol.last .glslot>.glm::after{content:"";position:absolute;top:50%;width:calc(var(--gap) / 1);border-top:2px solid var(--gline);left:calc(var(--gap) / -1)}
.glside.left .glcol.last .glslot::after,.glside.right .glcol.last .glslot::after{display:none}
/* Match = zwei Team-Pillen */
.glm{position:relative;display:flex;flex-direction:column;gap:3px}
.glpill{display:flex;align-items:center;justify-content:space-between;gap:6px;height:28px;padding:0 10px;border-radius:14px;background:linear-gradient(90deg,var(--gmid),var(--gcard));
  border:1px solid var(--gline);font-size:12.5px;position:relative;overflow:hidden}
.glpill.left{border-left:4px solid var(--glime)}.glpill.right{border-right:4px solid var(--glime);flex-direction:row-reverse}
.glpill.mid{border-left:4px solid var(--ggold);border-right:4px solid var(--ggold)}
.glpill .gln{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.glpill .gls{font-family:var(--mono);font-weight:800;font-size:14px;min-width:18px;text-align:center}
.glpill.tbd .gln{color:var(--gmut);font-weight:400;font-style:italic}
.glpill.win{background:linear-gradient(90deg,hsl(72 60% 22%),hsl(88 45% 14%));border-color:var(--glime)}.glpill.win .gls{color:var(--glime)}
.glpill.lose{opacity:.55}
.glm.live .glpill{border-color:hsl(0 70% 60% / .7)}.glm.live .glpill .gls{color:#fff}
.glm.bye{opacity:.4}
.glinfo span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.glinfo{position:absolute;top:100%;left:0;right:0;margin-top:2px;display:flex;justify-content:space-between;align-items:center;gap:6px;font-size:11px;color:var(--gmut);min-height:16px;padding:0 4px}
.gl .tvbtn{background:var(--glime);color:#0b1406!important}
.glnext{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}
.glcard{background:var(--gcard);border:1px solid var(--gline);border-radius:12px;padding:8px 10px 26px}
.glcard .glh{text-align:left;font-size:13px}
/* Gruppen-Kästen mit goldener Kopfzeile */
.glgroups{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}
.glgroup{border-radius:10px;overflow:hidden;border:1px solid var(--gline);background:var(--gcard);box-shadow:0 20px 50px -25px #000}
.glgh{background:linear-gradient(135deg,var(--ggold),var(--ggold2));color:#1b1405;text-align:center;font-size:20px;padding:4px 0}
.glgb{padding:8px 10px}
.glrow{display:grid;grid-template-columns:20px 1fr auto auto;gap:8px;align-items:center;padding:4px 2px;font-size:13px;border-bottom:1px solid var(--gline)}
.glrow b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.glrow .glrk{font-family:"Bebas Neue",Impact,sans-serif;font-size:17px;color:var(--gmut);text-align:center}
.glrow.adv .glrk{color:var(--glime)}
.glgm{display:flex;flex-direction:column;gap:3px;margin-top:8px}
.gl .tmini{background:var(--gmid)}.gl .tmini span.w{color:var(--glime)}.gl .tmini.live{outline-color:var(--glime)}
@media (max-width:700px){.gl{padding:12px}.glcol{width:140px}.glcenter{width:170px}.gl{--gap:20px}}
/* Button „Öffentliche Übersicht“: eigene schmale Leiste oben mittig, die Kopfzeilen der Seiten rutschen darunter */
.mainstrip{position:sticky;top:0;z-index:3;height:34px;display:flex;align-items:center;justify-content:center;background:var(--bg);border-bottom:1px solid var(--line)}
.mainstrip .pubbtn{padding:3px 16px;font-size:12px}
main .topbar{top:34px}

/* Live-Stream auf der öffentlichen Seite */
.streambox{max-width:1100px;margin:0 auto 16px;padding:0 4px}
.streambox video{width:100%;aspect-ratio:16/9;background:#000;border-radius:12px;border:1px solid var(--line);display:block}
.streamcap{font-size:15px;margin:0 0 6px}

.srvcheck{border-radius:8px;padding:8px 12px;font-size:13px;border:1px solid var(--line)}
.srvcheck.ok{border-color:var(--ok);color:var(--ok)}
.srvcheck.warn{border-color:var(--accent);background:rgba(240,164,58,.08)}

/* linke Leiste ~15 % größer (besser lesbar) */
@media (min-width:821px){ #app>aside{zoom:1.15} }

.tourline{display:flex;flex-wrap:wrap;gap:6px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:8px 14px;margin:0 0 14px;font-size:13px}

/* Turnier: Drag & Drop */
.tm .tr.drag{cursor:grab}.tm .tr.drag:hover{background:rgba(255,255,255,.04)}
.dragging{opacity:.45}
.dropok{outline:2px dashed var(--accent);outline-offset:1px}
.lanes{display:flex;gap:12px;overflow-x:auto;padding-bottom:6px;align-items:flex-start}
.lane{flex:0 0 220px;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:6px;min-height:80px;display:flex;flex-direction:column;gap:6px}
.lane .lh{font-size:12px;font-weight:600;padding:2px 4px 4px;border-bottom:1px solid var(--line)}
.lcard{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:6px 8px;font-size:12.5px}
.lcard[draggable="true"]{cursor:grab}.lcard.live{border-color:var(--ok)}.lcard.wait{opacity:.85}
.lcard .lt{display:flex;gap:6px;align-items:center;font-family:var(--mono);font-size:12px}
.lcard .lt .pin{margin-left:auto;text-decoration:none}
.lcard .ln{font-weight:600;margin:2px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.srv .cnt .botc{color:var(--muted);font-size:11px}

/* Live-Stream über dem Pokal */
.glstream{max-width:720px;margin:0 auto 14px;text-align:center}
.glstream.off{border:1px dashed var(--gline);border-radius:12px;padding:12px 16px;color:var(--gmut);font-size:13px;max-width:560px}
.glstreamcap{font-size:14px;margin-bottom:6px}
.glstreamslot{aspect-ratio:16/9;background:#000;border-radius:12px;overflow:hidden;border:1px solid var(--gline);box-shadow:0 0 40px hsl(72 72% 48% / .15)}
.glvideo{width:100%;height:100%;display:block;background:#000}
.gltree.cup{padding-top:170px}

#tvHelp{position:fixed;right:16px;bottom:16px;z-index:60;max-width:380px}
.tvhelp{background:var(--panel);border:1px solid var(--accent);border-radius:10px;padding:12px 14px;font-size:13px;box-shadow:0 10px 30px #000a;display:flex;flex-direction:column;gap:4px}

/* Bestenliste */
.glleaders{width:100%;max-width:900px;margin:0 auto;border-collapse:separate;border-spacing:0 4px;font-size:14px}
.glleaders th{font-family:"Bebas Neue",Impact,sans-serif;font-weight:400;letter-spacing:.06em;color:var(--gmut);text-align:center;font-size:15px;padding:0 8px}
.glleaders th:nth-child(2){text-align:left}
.glleaders td{background:var(--gcard);padding:6px 10px;text-align:center;border-top:1px solid var(--gline);border-bottom:1px solid var(--gline)}
.glleaders td:first-child{border-left:1px solid var(--gline);border-radius:8px 0 0 8px}.glleaders td:last-child{border-right:1px solid var(--gline);border-radius:0 8px 8px 0}
.glleaders td:nth-child(2){text-align:left}
.glleaders .rk{font-family:"Bebas Neue",Impact,sans-serif;font-size:20px;color:var(--gmut);width:36px}
.glleaders tr.top .rk{color:var(--ggold)}.glleaders tr.top td:first-child{border-left:4px solid var(--ggold)}
.glleaders .kd{font-family:var(--mono);font-weight:800;color:var(--glime)}
.glleaders .tmn{display:block;font-size:11px;color:var(--gmut)}

.pltable tr.plsel td{background:rgba(240,164,58,.07)}

.glseg{margin-left:auto;display:flex;gap:4px;font-family:Inter,system-ui,sans-serif;font-size:13px;letter-spacing:0}
.glseg a{padding:3px 10px;border-radius:6px;border:1px solid var(--gline);color:var(--gmut);text-decoration:none}
.glseg a.on{background:var(--glime);color:#0b1406;border-color:var(--glime)}

/* Hall of Fame */
.gl details.hof>summary{list-style:none;cursor:pointer}.gl details.hof>summary::-webkit-details-marker{display:none}
.gl details.hof>summary h3{font-size:22px;margin:0;display:flex;align-items:center;gap:10px}
.gl .hoftg{margin-left:auto;font-family:Inter,system-ui,sans-serif;font-size:13px;letter-spacing:0;color:var(--gmut);border:1px solid var(--gline);border-radius:6px;padding:3px 10px}
.gl details.hof[open] .hoftg{color:var(--glime);border-color:var(--glime)}
.gl details.hof[open] .hoftg::after{content:" (zuklappen)"}
.hofcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin-top:14px}
.hofcard{background:linear-gradient(160deg,hsl(48 60% 14% / .5),var(--gcard) 55%);border:1px solid var(--gline);border-top:3px solid var(--ggold);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:5px}
.hofcard .hofd{font-size:12px;color:var(--gmut)}
.hofcard .hofn{font-family:"Bebas Neue",Impact,sans-serif;font-size:22px;letter-spacing:.05em;color:var(--ggold)}
.hofcard .hofw{font-size:16px}.hofcard .hofw b{color:var(--glime)}
.hofcard span{display:block;font-size:12px;color:var(--gmut);margin-left:22px}
.hofcard .hofs{font-size:14px}.hofcard .hoff,.hofcard .hofm{font-size:12.5px;color:var(--gfg)}

/* ---------- breite Ansichten (Benutzer, Spieler) ---------- */
.content.wide{max-width:min(1920px,100%)}
/* Benutzer & Profile */
.upgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(230px,100%),1fr));gap:10px}
.upcard{background:var(--panel2);border:1px solid var(--line);border-left:4px solid var(--c);border-radius:8px;padding:10px 12px;cursor:pointer;display:grid;gap:6px;transition:border-color .15s}
.upcard:hover{border-color:var(--c)}
.upcard.on{outline:2px solid var(--c);outline-offset:-1px}
.upcard.upnew{border-left-color:var(--line);border-style:dashed;place-content:center;text-align:center;color:var(--muted)}
.uph{display:flex;align-items:center;gap:8px}.uph b{flex:1}
.utool{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:12px}
.utool #uFilter{max-width:240px}
.ubulk{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-left:auto}
.ubulk.dim{opacity:.55}
.ubulk select{width:auto}
.ugrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));gap:10px}
.ucard{background:var(--panel2);border:1px solid var(--line);border-top:3px solid var(--c);border-radius:8px;padding:10px 12px;display:grid;gap:8px}
.ucard.sel{outline:2px solid var(--accent);outline-offset:-1px}
.uch{display:flex;align-items:center;gap:10px}
.uav{width:34px;height:34px;border-radius:50%;background:var(--c);display:grid;place-items:center;font-weight:700;color:#fff;flex:none}
.ucn{flex:1;min-width:0}.ucn .hint{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ubadge{font-size:12px;padding:2px 8px;border-radius:99px;background:color-mix(in srgb,var(--c) 25%,transparent);border:1px solid var(--c);white-space:nowrap}
.ucf{display:flex;justify-content:space-between;align-items:center;gap:8px}.ucf span:last-child{display:flex;gap:6px}
.lvchips{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.lvchip{font-size:11px;padding:1px 7px;border-radius:99px;border:1px solid var(--c);background:color-mix(in srgb,var(--c) 18%,transparent);white-space:nowrap}
dialog.dlgwide{width:min(860px,calc(100vw - 32px));max-height:calc(100vh - 40px)}
.ufgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}
.ufgrid>div{display:grid;gap:4px}
.ufprof{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px}
.ufpc{text-align:left;display:grid;gap:2px;white-space:normal;border-left:4px solid var(--c);padding:8px 10px}
.ufpc.on{background:color-mix(in srgb,var(--c) 22%,var(--panel2));border-color:var(--c)}
.ufown{margin-top:10px;border:1px solid var(--line);border-radius:8px;padding:8px 12px}
.ufown summary{cursor:pointer;font-weight:600}
.permed{display:grid;gap:2px;max-height:46vh;overflow:auto;padding-right:4px}
.perow{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:3px 6px;border-radius:6px}
.perow:nth-child(odd){background:rgba(255,255,255,.025)}
.perow.own{background:rgba(232,137,43,.08)}
.perow[data-pek="*"]{font-weight:600;border-bottom:1px solid var(--line);margin-bottom:4px}
.pelabel{display:flex;align-items:center;gap:6px;min-width:0;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pelabel .gtile{flex:none;display:inline-grid;place-items:center;border-radius:4px}
.pebtns{display:inline-flex;border:1px solid var(--line);border-radius:7px;overflow:hidden;flex:none}
.pebtns button{border:0;border-radius:0;padding:4px 9px;font-size:12px;background:transparent;color:var(--muted)}
.pebtns button+button{border-left:1px solid var(--line)}
.pebtns button.on{background:var(--c,var(--accent));color:#fff;font-weight:600}
.pebtns button.pe0.on{background:var(--panel2);color:var(--text)}
.pebtns button.inh{background:color-mix(in srgb,var(--c) 30%,transparent);color:var(--text)}
@media (max-width:640px){.pebtns button{padding:4px 5px;font-size:11px}.perow{flex-wrap:wrap}}
/* Spielerliste ohne waagerechten Scrollbalken */
.pltable{width:100%;table-layout:fixed}
.pltable th:nth-child(1){width:34px}.pltable th:nth-child(2){width:30%}.pltable th:nth-child(3){width:22%}
.pltable th:nth-child(4){width:20%}.pltable th:nth-child(5){width:16%}.pltable th:nth-child(6){width:112px}
.pltable td{overflow:hidden;text-overflow:ellipsis;white-space:normal}
.plwho-in{display:flex;gap:10px;align-items:center;min-width:0}
.plwho-in .avatar{flex:none;display:inline-block}
.plnm{min-width:0;flex:1}.plnm input{width:100%;max-width:none}
.plalias{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.plsteam a{color:inherit;font-size:12px}
.pllan{display:flex;gap:4px;align-items:center}
.plact{white-space:nowrap;text-align:right}
@media (max-width:900px){
  .pltable thead{display:none}
  .pltable,.pltable tbody{display:block}
  .pltable tr{display:grid;grid-template-columns:30px 1fr auto;gap:4px 10px;padding:8px 4px;border-bottom:1px solid var(--line)}
  .pltable td{display:block;border:0;padding:0}
  .pltable td.plwho{grid-column:2/3}.pltable td.plact{grid-column:3}
  .pltable td.plst,.pltable td.plsteam,.pltable td.plnet{grid-column:2/4}
  .pltable tr.pledit{display:block}
}

.uav.img{background:none;overflow:hidden}.uav.img img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.ubadges{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end;max-width:55%}

.act{position:relative}
.act .actx{position:absolute;top:4px;right:4px;padding:0 6px;font-size:12px;line-height:18px;background:transparent;border:1px solid var(--line);color:var(--muted)}
.act .actx:hover{color:var(--bad,#e5534b);border-color:var(--bad,#e5534b)}
.act.err .t{padding-right:24px}

.wflive{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:10px}
.wflive>div{display:grid;gap:4px}.wflive label{font-size:12px;color:var(--muted)}

.pubgroup{grid-column:1/-1;display:flex;align-items:center;gap:10px;margin:14px 0 -2px;padding-bottom:6px;border-bottom:2px solid var(--gc);font-size:17px}
.pubgroup:first-child{margin-top:0}
.pubgroup .hint{margin-left:auto;font-size:13px}

/* öffentliche Seite kompakter */
#pub{max-width:min(1800px,100%)}
.pubgrid{grid-template-columns:repeat(auto-fill,minmax(min(235px,100%),1fr));gap:10px}
.pubcard{padding:10px 11px;gap:6px;border-radius:9px}
.pubthumb{margin:-10px -11px 2px}
.pubthumb .mthumb{aspect-ratio:16/5}
.pubtop{gap:8px}.pubname b{font-size:14px}.pubname .hint{font-size:11.5px}
.pubtop .pill{font-size:11.5px;padding:1px 7px}
.pubjoin{gap:4px}.pubjoin .small,.pubjoin .btn.small{font-size:11.5px;padding:3px 8px}
.pubcard .pubhint{display:none}
.pubcard .pubmeta{font-size:11px}
.pubmapline{font-size:15px}

.pubpending{margin:10px 0;padding:10px 14px;border:1px solid #d9a441;border-radius:8px;background:rgba(217,164,65,.1)}
.steambtn{text-align:center;background:#171a21;border:1px solid #2a475e}
#btnPubRegister{margin-left:auto}

/* Admins je Server */
.svadmins{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
.svadm{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);min-width:0}
.svadm .uav{width:38px;height:38px}
.svadm .who{flex:1;min-width:0}.svadm .who b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.svadm .who .hint{display:block;font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.svadm .tag{display:inline-block;font-size:10.5px;padding:1px 6px;border-radius:8px;background:var(--line);margin-right:3px}
.svadm .who a{color:inherit;text-decoration:none}.svadm .who a:hover{text-decoration:underline}

/* API-Aktivität und Bot-Verlauf (kompakt) */
.apiact .sum{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}
.apiact .sum span{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:3px 8px;font-size:12.5px}
.apiact .sum b{margin-left:4px}
.apiact .ev{display:flex;gap:8px;font-size:13px;padding:3px 0;border-top:1px solid var(--line)}
.apiact .ev .at{color:var(--muted);width:92px;flex:none}.apiact .ev .dt{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.apiact .ev.err b{color:var(--bad,#e5534b)}
#botMsgs .bm{padding:2px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Steam-Bot: Freunde + Posteingang */
.botfriends{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:6px;max-height:420px;overflow:auto}
.bf{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--line);border-radius:9px;background:var(--panel2);min-width:0}
.bf .uav{width:32px;height:32px}.bf .who{flex:1;min-width:0}.bf .who b,.bf .who .hint{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bf .who .hint{font-size:11.5px}.bf .dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex:none}.bf .dot.on{background:var(--ok,#3fb950)}.bf .dot.play{background:#58a6ff}
.bf.oo{opacity:.7}.bf .oo-t{font-size:10.5px;padding:1px 5px;border-radius:6px;background:var(--line)}
.ibx{display:flex;gap:8px;padding:6px 0;border-top:1px solid var(--line);align-items:flex-start}.ibx.done{opacity:.55}
.ibx .k{font-size:11px;padding:1px 6px;border-radius:6px;background:var(--line);flex:none;margin-top:2px}.ibx .tx{flex:1;min-width:0}

/* Steam-Bot: Warteschlangen */
.botq{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.qcard{border:1px solid var(--line);border-radius:10px;background:var(--panel2);padding:10px 12px;min-width:0}
.qcard h3{margin:0 0 6px;font-size:14px;display:flex;justify-content:space-between;gap:8px}
.qcard .qsec{font-size:11.5px;color:var(--muted);margin:8px 0 4px;text-transform:uppercase;letter-spacing:.04em}
.qrow{display:flex;align-items:center;gap:6px;padding:3px 0;min-width:0}
.qrow .uav{width:24px;height:24px;font-size:11px}.qrow .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qrow .hint{font-size:11.5px;flex:none}.qrow button{padding:1px 6px}
.qteam{border-top:1px dashed var(--line);padding-top:4px;margin-top:4px}
.qbadge{font-size:11px;padding:1px 6px;border-radius:6px;background:var(--line);font-weight:normal}
.qcard h3{text-transform:none;letter-spacing:0;color:var(--text);align-items:flex-start}.qcard h3 .qbadge{text-transform:none;letter-spacing:0;white-space:nowrap}
