/* =============================================================================
   Gameserver-Seite (öffentlich + Team-Dashboard) – baut auf app.css auf.
   Stil der Ingame-Menüs: Inhalte auf einem unsichtbaren Raster über dem
   weichgezeichneten Spielbild, Zeilen und Kacheln als dunkle Flächen.
   ============================================================================= */
.portal{min-height:100vh;display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:minmax(0,1fr)}
.portal-kopf{display:flex;align-items:center;gap:26px;padding:14px var(--seitenrand) 10px;min-height:64px;position:relative;z-index:5;flex-wrap:wrap}
.marke{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--text);flex:none}
.marke .logo{width:30px;height:30px;background:var(--text);-webkit-mask:url("/static/logos/combine.png") center/contain no-repeat;mask:url("/static/logos/combine.png") center/contain no-repeat}
.marke b{font:700 18px/1.1 var(--schrift);text-transform:uppercase;display:block}
.marke span{font:600 10px var(--schrift);letter-spacing:.22em;color:var(--dim);text-transform:uppercase}
/* Reiter oben: ruhig, aktive Seite mit Cyan-Kante unten */
.portal-nav{display:flex;flex-direction:row;align-items:center;gap:2px;flex:1;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;
  position:static;top:auto;align-self:center;max-height:none}
.portal-nav::-webkit-scrollbar{display:none}
.portal-nav a{position:relative;flex:none;padding:8px 13px;color:var(--dim);text-decoration:none;font:500 13px var(--schrift);letter-spacing:.18em;text-transform:uppercase;transition:color .12s,background .12s}
.portal-nav a:hover{color:var(--text);background:var(--hover)}
.portal-nav a.aktiv{color:var(--text);background:var(--sel)}
.portal-nav a.aktiv::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--accent)}
.portal-nav a.team-link{margin-left:12px;color:var(--accent);border:1px solid rgba(110,200,224,.4)}
.konto{display:flex;align-items:center;gap:10px;flex:none}
.konto img{width:30px;height:30px}
.konto a.name{color:var(--text);text-decoration:none;font:700 15px var(--schrift)}
.portal main{padding:18px var(--seitenrand) 40px;max-width:1440px;width:100%;margin:0 auto;position:relative;z-index:2}
.bottombar .team-zugang{margin-left:auto;margin-right:22px;color:var(--dim);text-decoration:none}
.bottombar .team-zugang:hover{color:var(--accent)}

/* ---------- Server-Status: Titel groß links, Spielerzahl groß rechts ---------- */
.holo{padding:26px 0 30px}
.holo-inhalt{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:30px;align-items:end}
.holo h1{margin:4px 0 6px;font:400 clamp(34px,5vw,58px)/1 var(--schrift);text-transform:uppercase}
.holo .map{font:500 13px var(--schrift);letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}
.holo-zahl{text-align:right}
.holo .zahl{font:700 clamp(46px,7vw,84px)/1 var(--schrift);font-variant-numeric:tabular-nums}
.holo .zahl small{font-size:.4em;font-weight:500;color:var(--dim)}
.holo-knoepfe{display:flex;gap:6px;flex-wrap:wrap;margin-top:20px}
.status-punkt{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:9px;background:var(--green);vertical-align:1px}
.status-punkt.aus{background:var(--red)}

/* ---------- Bausteine ---------- */
.kennzahlen{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:0 0 30px}
.spieler-zeile{position:relative;display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:10px;align-items:center;padding:6px 10px;margin-bottom:4px;
  background:var(--cell);border:1px solid var(--cellLine);text-decoration:none;color:var(--text);transition:background .12s}
.spieler-zeile:hover{background:var(--hover)}
.spieler-zeile img,.spieler-zeile .ohne{width:32px;height:32px}
.spieler-zeile .ohne{display:grid}
.ohne{background:var(--hover);display:grid;place-items:center;font:700 13px var(--schrift);color:var(--dim)}
.spieler-zeile b{display:block;font-weight:700;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.spieler-zeile span{font-size:12px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.platz{font:700 18px var(--schrift);color:var(--dim);text-align:right;font-variant-numeric:tabular-nums}
.platz.top{color:var(--accent)}
.verlauf-balken{display:grid;grid-template-columns:repeat(24,1fr);gap:3px;align-items:end;height:120px;margin-top:4px}
.verlauf-balken i{background:var(--accent);min-height:2px;opacity:.85}
.verlauf-balken i:hover{opacity:1}
.verlauf-achse{display:flex;justify-content:space-between;font:500 11px var(--schrift);color:var(--dim);margin-top:4px}
.fraktionen{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:14px}
.fraktion{position:relative;background:var(--cell);border:1px solid var(--cellLine);padding:16px 18px 16px 22px;display:grid;grid-template-columns:minmax(0,1fr) 72px;gap:6px 14px}
.fraktion::before{content:"";position:absolute;left:-1px;top:-1px;bottom:-1px;width:4px;background:var(--rand,var(--accent))}
.fraktion .art{grid-column:1/-1;font:600 11px var(--schrift);letter-spacing:.22em;color:var(--dim);text-transform:uppercase}
.fraktion h3{margin:0;font:700 24px/1.1 var(--schrift);text-transform:uppercase}
.fraktion img{width:72px;height:72px;object-fit:contain;grid-row:2 / span 2;grid-column:2}
.fraktion .text{grid-column:1/-1;color:var(--soft);font-size:15px}
.fraktion .text p{margin:0 0 8px}
.fraktion .text b{color:var(--text)}
.fraktion .zugang{grid-column:1/-1;border-top:1px solid var(--line);padding-top:8px;font-size:14px;color:var(--soft)}
.fraktion .zugang span{font:600 11px var(--schrift);letter-spacing:.22em;color:var(--dim);text-transform:uppercase;margin-right:8px}
.regel{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:16px;padding:14px 16px;margin-bottom:4px;background:var(--cell);border:1px solid var(--cellLine)}
.regel .nr{font:700 32px/1 var(--schrift);color:var(--accent);min-width:36px}
.regel h3{margin:0 0 4px;font:700 18px var(--schrift);text-transform:uppercase}
.regel p{margin:0;color:var(--soft)}
.bann-hinweis{position:relative;background:var(--cell);border:1px solid var(--cellLine);padding:12px 16px 12px 20px;margin-bottom:18px;color:var(--soft)}
.bann-hinweis::before{content:"";position:absolute;left:-1px;top:-1px;bottom:-1px;width:4px;background:var(--red)}
.bann-hinweis b{display:block;color:var(--red);font:600 11px var(--schrift);letter-spacing:.22em;text-transform:uppercase;margin-bottom:2px}
.profil-raster{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:34px}
.leerer-zustand{display:grid;place-items:center;gap:14px;text-align:center;padding:40px 16px;background:var(--cell);border:1px solid var(--cellLine)}
.leerer-zustand p{color:var(--soft);max-width:460px;margin:0}

/* ---------- Entbannungsantrag (Spieler) ---------- */
.entbannung{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:20px 34px;margin-bottom:34px;align-items:start}
.entbannung > .karte:last-child:nth-child(3){grid-column:1/-1}
.bann-karte{position:relative;background:var(--cell);border:1px solid var(--cellLine);padding:16px 18px 6px 22px}
.bann-karte::before{content:"";position:absolute;left:-1px;top:-1px;bottom:-1px;width:4px;background:var(--red)}
.karte h2.gross,.gross{font:700 32px/1.1 var(--schrift);text-transform:uppercase;border:0;padding:0;margin:0}
.zeile-kachel{position:relative;background:var(--cell);border:1px solid var(--cellLine);padding:10px 14px 10px 18px;margin-bottom:4px}
.zeile-kachel .k{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.zeile-kachel .t{margin-top:6px;color:var(--soft);white-space:pre-wrap}

/* ---------- Team-Bereich (Verwaltung) ---------- */
.im-team main{max-width:1600px}
.team-login{margin:4vh auto 0}
.team-login p{color:var(--soft);margin:0 0 22px}
.discord-knopf svg{width:22px;height:22px}
.team-tabs{display:flex;flex-direction:row;gap:4px;margin:0 0 22px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;position:static;top:auto;align-self:auto;max-height:none}
.team-tabs::-webkit-scrollbar{display:none}
.team-tabs a{position:relative;flex:none;display:flex;align-items:center;gap:10px;min-height:36px;padding:0 16px;background:var(--cell);border:1px solid var(--cellLine);
  color:var(--soft);text-decoration:none;font:500 13px var(--schrift);letter-spacing:.18em;text-transform:uppercase;transition:background .12s}
.team-tabs a .nr{display:none}
.team-tabs a .zaehler{font:700 12px var(--schrift);letter-spacing:0;color:var(--onAccent);background:var(--yellow);min-width:18px;height:18px;padding:0 5px;display:grid;place-items:center}
.team-tabs a:hover{background:var(--hover);color:var(--text)}
.team-tabs a.aktiv{background:var(--sel);border-color:var(--selLine);color:var(--text)}
.team-tabs a.aktiv::before{content:"";position:absolute;left:-1px;top:-1px;bottom:-1px;width:4px;background:var(--accent)}
.systemzeile{position:relative;display:flex;flex-wrap:wrap;gap:6px 24px;align-items:center;padding:10px 14px 10px 18px;margin-bottom:16px;background:var(--cell);border:1px solid var(--cellLine);
  font:600 11px var(--schrift);letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}
.systemzeile::before{content:"";position:absolute;left:-1px;top:-1px;bottom:-1px;width:4px;background:var(--accent)}
.systemzeile span:first-child{color:var(--text)}
.systemzeile a{color:var(--dim);text-decoration:none}
.systemzeile a:hover{color:var(--text)}
.systemzeile .warn{color:var(--yellow)}
.scroll-liste{max-height:300px;overflow-y:auto;margin-right:-6px;padding-right:6px}
.karte h2 a.rechts{color:var(--accent);text-decoration:none}
.verlinkt-zeile{display:block;color:inherit;text-decoration:none}
a.eintrag.verlinkt-zeile:hover{background:var(--hover)}
a.balken-zeile{display:grid;color:inherit;text-decoration:none}
a.balken-zeile:hover .name{color:var(--text)}
.balken-zeile.inaktiv .name{opacity:.55}
.eintrag .von{color:var(--dim);font-size:12px}
.eintrag .k b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60%}
.werkzeuge{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.werkzeuge input[type=search]{width:280px}
.werkzeuge .knopf{margin-left:auto}
.erklaerung{color:var(--soft);font-size:15px;margin:0 0 12px}
a.verlinkt{color:var(--text);text-decoration:none}
a.verlinkt:hover b{color:var(--accent)}
/* Reports & Anträge */
.report-liste{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:14px}
.report,.antrag{position:relative;background:var(--cell);border:1px solid var(--cellLine);padding:14px 16px 14px 20px}
.antrag{margin-bottom:14px}
.r-kopf{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;flex-wrap:wrap}
.r-name{font:700 18px var(--schrift);color:var(--text);text-decoration:none}
.r-name:hover{color:var(--accent)}
.r-text{white-space:pre-wrap;word-wrap:break-word;color:var(--soft);margin:10px 0}
.r-verlauf{display:flex;flex-direction:column;gap:2px;font-size:13px;color:var(--dim);margin-bottom:10px}
.r-verlauf b{color:var(--text)}

@media (max-width:1150px){
  .entbannung{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:980px){
  .kennzahlen{grid-template-columns:repeat(2,minmax(0,1fr))}
  .profil-raster{grid-template-columns:minmax(0,1fr)}
  .report-liste{grid-template-columns:minmax(0,1fr)}
}
.nur-schmal{display:none}
@media (max-width:700px){
  .portal-kopf{padding:10px var(--seitenrand);gap:10px}
  .portal-nav{order:3;flex-basis:100%}
  .konto{margin-left:auto}
  .konto a.name span{display:none}
  .portal main{padding:12px var(--seitenrand) 30px}
  .holo{padding:14px 0 22px}
  .holo-inhalt{grid-template-columns:minmax(0,1fr);gap:16px}
  .holo-zahl{text-align:left}
  .fraktionen{grid-template-columns:minmax(0,1fr)}
  .bottombar .team-zugang{margin-right:0}
  .werkzeuge input[type=search]{width:100%}
  .werkzeuge .knopf{margin-left:0}
  .nur-breit{display:none} .nur-schmal{display:inline}
  .bottombar{display:flex;flex-wrap:wrap;height:auto;padding:10px var(--seitenrand)}
}
@media (max-width:440px){ .kennzahlen{gap:8px} .kennzahlen .kachel{padding:10px 10px 10px 14px} }
.portal .bottombar{display:flex}
